• 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 Bug with zombie event tfs 0.4

vvglex

New Member
Joined
Jan 2, 2015
Messages
162
Reaction score
2
Hey i have a zombie event on my server but it does not work .... i get this error when it should start.
Code:
> Broadcasted message: "Zombie event starting in 5 minutes! The teleport will be closed when the event start!".
0
[Error - GlobalEvents::timer] Couldn't execute event: zombieevent

My script look like this in globalevents.

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 = 904, y = 994, z = 6, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1164, y = 951, 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 = 4, -- 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 = 1142, y = 947, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1167, y = 968, z = 7}, -- bottom right cornor of the playground
    }

function onTime()
    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 = getThingfromPos(config.teleportPosition)
    if get.itemid == config.teleportId then
        doRemoveItem(get.uid, 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 = getThingfromPos(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 = getThingfromPos(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
@Limos

@Limos i should be so happy if you could help me with this :)
 
Last edited by a moderator:
In the globalevent script change

Code:
function onTimer()

for

function onThink(interval, lastExecution, thinkInterval)

And in globalevent.xml

Code:
<globalevent name="zombieevent" time="15:00" event="script" value="zombie event/globalevent.lua"/>

for

<globalevent name="zombieevent" interval="[B]XXXX[/B]" event="script" value="zombie event/globalevent.lua"/>

XXXX - time (1000 - 1 second)
 
In the globalevent script change

Code:
function onTimer()

for

function onThink(interval, lastExecution, thinkInterval)

And in globalevent.xml

Code:
<globalevent name="zombieevent" time="15:00" event="script" value="zombie event/globalevent.lua"/>

for

<globalevent name="zombieevent" interval="[B]XXXX[/B]" event="script" value="zombie event/globalevent.lua"/>

XXXX - time (1000 - 1 second)
but i want the event to run at 18:00 and 22:00

it does still not work it says the same
Code:
0
[Error - GlobalEvents::think] Couldn't execute event: zombieevent

@Limos does you know why it wont work?
 
Last edited by a moderator:
You can also use function onTime, it also needs return true like function onThink.
The reason it gives this error: "Couldn't execute event: zombieevent" is because of the missing return true.
 
thank you so much you so much you are the best!!
@Limos

sorry but i have an other problem ... when i have my mod (team event) enabled and zombie event is about to start but its not enough players in the zombie event it says "team event cant start not enough players" but i should be zombie event thats gonna try start :/ but if i disable team event mod , it says not enough players to start zombie event . is it about same storage id or something?

@Limos

u know that problem? :) @Limos
 
Last edited by a moderator:
The functions in both scripts are probable both called startEvent, so change the name in 1 of the mods to for example startEventx, don't forget to also change it where it's used then.
 
The functions in both scripts are probable both called startEvent, so change the name in 1 of the mods to for example startEventx, don't forget to also change it where it's used then.
so can i just search for all Startevent and change them to starteventx?
 
Yes, in 1 of the mods, doesn't have to be startEventx, you can change it to anything as long as the functions in both mods don't have the same name.
 
Back
Top