• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved Zombile event

H7BGa3Hh.png
 
Make sure these positions are correct.
Code:
  fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground
  toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground
 
fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
yes its correct
 
lSWQT6ER7.png
RdxTmaEVl.png


when events cancel player don't tp to temple and tp don't disappear :S
 
Last edited by a moderator:
Code:
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
    zombieCount = 2002, -- Global storage for counting the zombies in the event
    teleportActionId = 2000, -- Action id of the teleport needed for the movement script
    teleportPosition = {x = 999, y = 1002, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1050, y = 1919, z = 7}, -- Where the teleport will take you
    teleportId = 1387, -- Id of the teleport
    timeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
    timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
    zombieName = "event zombie", -- Name of the zombie that should be summoned
    playersNeededToStartEvent = 5, -- Players needed before the zombies can spawn.
  
    -- Should be the same as in the creaturescript!
    -- The zombies will spawn randomly inside this area
     fromPosition = {x = 978, y = 1870, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1077, y = 1954, z = 7}, -- bottom right cornor of the playground
    }

function onThink(interval, lastExecution, thinkInterval)
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
    doItemSetAttribute(tp, "aid", config.teleportActionId)
    doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
    setGlobalStorageValue(config.playerCount, 0)
    setGlobalStorageValue(config.zombieCount, 0)
    addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
    print(getGlobalStorageValue(2001))
end

function startEvent()
    local get = getTileItemById(config.teleportPosition, config.teleportId).uid
if get > 0 then
     doRemoveItem(get, 1)
end
  
    local fromp, top = config.fromPosition, config.toPosition

    if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
      
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getTopCreature(areapos)
                    if isPlayer(getPlayers.uid) then
                        doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                    end
                end
            end
        end
    else
        doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getTopCreature(areapos)
                    if isPlayer(getPlayers.uid) then
                        doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                        doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                    end
                end
            end
        end
    end
end

function spawnZombie()
    if getGlobalStorageValue(config.playerCount) >= 2 then
        pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
        doSummonCreature(config.zombieName, pos)
        doSendMagicEffect(pos, CONST_ME_MORTAREA)
        setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
        doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
    end
end
 
The only other position check is getPlayerPosition, but this won't be loaded if the thing is not a player and if the thing is a player it can't give such error.
Did you save the right script and restarted the server?
 
yes
<globalevent name="zombieevent" interval="700000" event="script" value="bigfoot.lua"/>

and lua name is bigfoot

i coped and past event but chnaged something u told me to do
local get = getThingfromPos(config.teleportPosition)
if get.itemid == config.teleportId then
doRemoveItem(get.uid, 1)
end
To this
Code:

local get = getTileItemById(config.teleportPosition, config.teleportId).uid
if get > 0 then
doRemoveItem(get, 1)
end


and

getPlayers = getThingfromPos(areapos)
To
Code:

getPlayers = getTopCreature(areapos)
 
Last edited by a moderator:
I know, but the script you posted there is no function left that can give this error.

Btw, what do you see in your console if you add this under getPlayers = getTopCreature(areapos)
Code:
print(getPlayers.uid)
 
Just edited my post with something you can use to test.
Try to add print there, or with a textmessage like this.
Code:
print("test")
 
I mean, do you see this message in you console? You can also add print with test above areapos = {x = x, y = y, z = z, stackpos = 253}.
Code:
print("test")
Look if you get that message in your console.
You can also add a broadcastmessage.
Code:
doBroadcastMessage("test")
Look if you get any of these messages.
 
Back
Top