• 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!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

Zombie event - NEW version, bug free, updated

I don't like scripts where teleports appear, because something (player,monster, m-wall...) can block this position and teleport doesn't appear :(

--------------------------------------------------------------

Yes :)
Create ../data/globalevents/scripts/zombie/onstartup_autostart.lua and paste:
Lua:
function onStartup()
	doSetStorage(45267, os.time()+300)
	doSetStorage(45268, 0)
	return true
end

Create ../data/globalevents/scripts/zombie/onthink_autostart.lua and paste:
Lua:
local autoStartInterval = 60 -- time between arenas in minutes, default 60 = 1 hour

function onThink(interval, lastExecution, thinkInterval)
	if(getStorage(ZE_STATUS) ~= 2) then
		if(getStorage(45267)+autoStartInterval*60 <= os.time() and getStorage(45268) ~= 1) then
			doSetStorage(45268, 1)
			removeZombiesEventBlockEnterPosition()
			doSetStorage(ZE_STATUS, 1)
			doBroadcastMessage("Zombie Arena Event teleport will be opened for 2 minutes. We are waiting for " .. getZombiesEventPlayersLimit() - #getZombiesEventPlayers() .. " players to start.")
		elseif(getStorage(45267)+autoStartInterval*60+120 <= os.time() and getStorage(45268) == 1) then
			addZombiesEventBlockEnterPosition()
			doSetStorage(45268, 0)
			doSetStorage(ZE_STATUS, 2)
			doSetStorage(45267, os.time())
			doBroadcastMessage("Zombie Arena Event started.")
		end
	end
	return true
end

In ../data/globalevents/globalevents.xml add:
XML:
<globalevent name="ZombieGlobalThink_AutoStart" interval="5" event="script" value="zombie/onthink_autostart.lua"/>
<globalevent name="ZombieGlobalStartup_AutoStart" type="start" event="script" value="zombie/onstartup_autostart.lua"/>

Dont work good in 0.4... can you edit it for 0.4 rep++
 
Im clueless.. Gives no errors or anything.
Code:
[B]Zombie Arena Event teleport is opened. We are waiting for 1 players to start.[/B]

But then nothing happends.. it only removes the blocking item (the tree) and doesnt add a tp or anything.
It does not notice the players in the arena if I tp them in either.

Edit: fixed by adding 5555 to the aid of the portal
 
Last edited:
I don't like scripts where teleports appear, because something (player,monster, m-wall...) can block this position and teleport doesn't appear :(

--------------------------------------------------------------

Yes :)
Create ../data/globalevents/scripts/zombie/onstartup_autostart.lua and paste:
Lua:
function onStartup()
	doSetStorage(45267, os.time()+300)
	doSetStorage(45268, 0)
	return true
end

Create ../data/globalevents/scripts/zombie/onthink_autostart.lua and paste:
Lua:
local autoStartInterval = 60 -- time between arenas in minutes, default 60 = 1 hour

function onThink(interval, lastExecution, thinkInterval)
	if(getStorage(ZE_STATUS) ~= 2) then
		if(getStorage(45267)+autoStartInterval*60 <= os.time() and getStorage(45268) ~= 1) then
			doSetStorage(45268, 1)
			removeZombiesEventBlockEnterPosition()
			doSetStorage(ZE_STATUS, 1)
			doBroadcastMessage("Zombie Arena Event teleport will be opened for 2 minutes. We are waiting for " .. getZombiesEventPlayersLimit() - #getZombiesEventPlayers() .. " players to start.")
		elseif(getStorage(45267)+autoStartInterval*60+120 <= os.time() and getStorage(45268) == 1) then
			addZombiesEventBlockEnterPosition()
			doSetStorage(45268, 0)
			doSetStorage(ZE_STATUS, 2)
			doSetStorage(45267, os.time())
			doBroadcastMessage("Zombie Arena Event started.")
		end
	end
	return true
end

In ../data/globalevents/globalevents.xml add:
XML:
<globalevent name="ZombieGlobalThink_AutoStart" interval="5" event="script" value="zombie/onthink_autostart.lua"/>
<globalevent name="ZombieGlobalStartup_AutoStart" type="start" event="script" value="zombie/onstartup_autostart.lua"/>
all works perfect but not this part auto start.. not in 0.4
 
gives me this error when we are everywhere and have no place to resp, spawn still no end that you can not win because even as they did 20 hp and took them on a hit to their resp after 20-30 over and slowed server

lzpi00ejGP.png

TFS 0.4 3884

My lib

Code:
-- CONFIG
ZE_DEFAULT_NUMBER_OF_PLAYERS = 1
ZE_ACCESS_TO_IGNORE_ARENA = 3
-- POSITIONS
ZE_blockEnterItemPosition = {x= 1034, y=978, z=7}
ZE_enterPosition = {x = 1257, y = 693, z = 8}
ZE_kickPosition = {x=1003, y=1000, z=7}
ZE_spawnFromPosition = {x = 1244, y = 697, z = 8}
ZE_spawnToPosition = {x = 1276, y = 717, z = 8}
-- ITEM IDS
ZE_blockEnterItemID = 5315
-- STORAGES
-- - player
ZE_isOnZombieArea = 39970
-- - global
ZE_STATUS = 39970 -- =< 0 - off, 1 - waiting for players, 2 - is running
ZE_PLAYERS_NUMBER = 39971
ZE_ZOMBIES_TO_SPAWN = 39972
ZE_ZOMBIES_SPAWNED = 39973
 
-- FUNCTION
 
function setZombiesEventPlayersLimit(value)
    doSetStorage(ZE_PLAYERS_NUMBER, value)
end
 
function getZombiesEventPlayersLimit()
    return getStorage(ZE_PLAYERS_NUMBER)
end
 
function addPlayerToZombiesArea(cid)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    doTeleportThing(cid, ZE_enterPosition, true)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then
        setPlayerZombiesEventStatus(cid, os.time())
    end
end
 
function kickPlayerFromZombiesArea(cid)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    doTeleportThing(cid, ZE_kickPosition, true)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    setPlayerZombiesEventStatus(cid, 0)
end
 
function getPlayerZombiesEventStatus(cid)
    return getCreatureStorage(cid, ZE_isOnZombieArea)
end
 
function setPlayerZombiesEventStatus(cid, value)
    doCreatureSetStorage(cid, ZE_isOnZombieArea, value)
end
 
function getZombiesEventPlayers()
    local players = {}
    for i, cid in pairs(getPlayersOnline()) do
        if(getPlayerZombiesEventStatus(cid) > 0) then
            table.insert(players, cid)
        end
    end
    return players
end
 
function getZombiesCount()
    return getStorage(ZE_ZOMBIES_SPAWNED)
end
 
function addZombiesCount()
    doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1)
end
 
function resetZombiesCount()
    doSetStorage(ZE_ZOMBIES_SPAWNED, 0)
end
 
function getZombiesToSpawnCount()
    return getStorage(ZE_ZOMBIES_TO_SPAWN)
end
 
function setZombiesToSpawnCount(count)
    doSetStorage(ZE_ZOMBIES_TO_SPAWN, count)
end
 
function addZombiesEventBlockEnterPosition()
    if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then
        doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition)
    end
end
 
function removeZombiesEventBlockEnterPosition()
    local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID)
    if(item.uid ~= 0) then
        doRemoveItem(item.uid)
    end
end
 
function spawnNewZombie()
    local posx = {}
    local posy = {}
    local posz = {}
    local pir = {}
    for i=1, 5 do
        local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x)
        local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y)
        local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z)
        local pir_tmp = 0
        local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false)
        if(spec and #spec > 0) then
            for z, pid in pairs(spec) do
                if(isPlayer(pid)) then
                    pir_tmp = pir_tmp + 1
                end
            end
        end
        posx[i] = posx_tmp
        posy[i] = posy_tmp
        posz[i] = posz_tmp
        pir[i] = pir_tmp
    end
    local lowest_i = 1
    for i=2, 5 do
        if(pir[i] < pir[lowest_i]) then
            lowest_i = i
        end
    end
    local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false, false, false)) == 'number')
    if(ret) then
        addZombiesCount()
    end
    return ret
end
 
gives me this error when we are everywhere and have no place to resp, spawn still no end that you can not win because even as they did 20 hp and took them on a hit to their resp after 20-30 over and slowed server

lzpi00ejGP.png

TFS 0.4 3884

My lib

Code:
-- CONFIG
ZE_DEFAULT_NUMBER_OF_PLAYERS = 1
ZE_ACCESS_TO_IGNORE_ARENA = 3
-- POSITIONS
ZE_blockEnterItemPosition = {x= 1034, y=978, z=7}
ZE_enterPosition = {x = 1257, y = 693, z = 8}
ZE_kickPosition = {x=1003, y=1000, z=7}
ZE_spawnFromPosition = {x = 1244, y = 697, z = 8}
ZE_spawnToPosition = {x = 1276, y = 717, z = 8}
-- ITEM IDS
ZE_blockEnterItemID = 5315
-- STORAGES
-- - player
ZE_isOnZombieArea = 39970
-- - global
ZE_STATUS = 39970 -- =< 0 - off, 1 - waiting for players, 2 - is running
ZE_PLAYERS_NUMBER = 39971
ZE_ZOMBIES_TO_SPAWN = 39972
ZE_ZOMBIES_SPAWNED = 39973
 
-- FUNCTION
 
function setZombiesEventPlayersLimit(value)
    doSetStorage(ZE_PLAYERS_NUMBER, value)
end
 
function getZombiesEventPlayersLimit()
    return getStorage(ZE_PLAYERS_NUMBER)
end
 
function addPlayerToZombiesArea(cid)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    doTeleportThing(cid, ZE_enterPosition, true)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then
        setPlayerZombiesEventStatus(cid, os.time())
    end
end
 
function kickPlayerFromZombiesArea(cid)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    doTeleportThing(cid, ZE_kickPosition, true)
    doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
    setPlayerZombiesEventStatus(cid, 0)
end
 
function getPlayerZombiesEventStatus(cid)
    return getCreatureStorage(cid, ZE_isOnZombieArea)
end
 
function setPlayerZombiesEventStatus(cid, value)
    doCreatureSetStorage(cid, ZE_isOnZombieArea, value)
end
 
function getZombiesEventPlayers()
    local players = {}
    for i, cid in pairs(getPlayersOnline()) do
        if(getPlayerZombiesEventStatus(cid) > 0) then
            table.insert(players, cid)
        end
    end
    return players
end
 
function getZombiesCount()
    return getStorage(ZE_ZOMBIES_SPAWNED)
end
 
function addZombiesCount()
    doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1)
end
 
function resetZombiesCount()
    doSetStorage(ZE_ZOMBIES_SPAWNED, 0)
end
 
function getZombiesToSpawnCount()
    return getStorage(ZE_ZOMBIES_TO_SPAWN)
end
 
function setZombiesToSpawnCount(count)
    doSetStorage(ZE_ZOMBIES_TO_SPAWN, count)
end
 
function addZombiesEventBlockEnterPosition()
    if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then
        doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition)
    end
end
 
function removeZombiesEventBlockEnterPosition()
    local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID)
    if(item.uid ~= 0) then
        doRemoveItem(item.uid)
    end
end
 
function spawnNewZombie()
    local posx = {}
    local posy = {}
    local posz = {}
    local pir = {}
    for i=1, 5 do
        local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x)
        local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y)
        local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z)
        local pir_tmp = 0
        local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false)
        if(spec and #spec > 0) then
            for z, pid in pairs(spec) do
                if(isPlayer(pid)) then
                    pir_tmp = pir_tmp + 1
                end
            end
        end
        posx[i] = posx_tmp
        posy[i] = posy_tmp
        posz[i] = posz_tmp
        pir[i] = pir_tmp
    end
    local lowest_i = 1
    for i=2, 5 do
        if(pir[i] < pir[lowest_i]) then
            lowest_i = i
        end
    end
    local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false, false, false)) == 'number')
    if(ret) then
        addZombiesCount()
    end
    return ret
end
 
Code:
[8:31:28.849] [Error - GlobalEvent Interface]
[8:31:28.849] data/globalevents/scripts/zombie/onthink.lua:onThink
[8:31:28.849] Description:
[8:31:28.849] (luaDoCreateMonster) Cannot create monster: Zombie Event

Help with this plis!
 
12/11/2011 17:29:44] [Error - GlobalEvent Interface]
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:eek:nThink
[12/11/2011 17:29:44] Description:
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: bad argument #2 to 'random' (interval is empty)
[12/11/2011 17:29:44] stack traceback:
[12/11/2011 17:29:44] [C]: in function 'random'
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: in function 'spawnNewZombie'
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:6: in function <data/globalevents/scripts/zombie/onthink.lua:1>
[12/11/2011 17:29:44] [Error - GlobalEvents::think] Couldn't execute event: ZombieGlobalThink

Can anyone help me with this?
 
12/11/2011 17:29:44] [Error - GlobalEvent Interface]
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:eek:nThink
[12/11/2011 17:29:44] Description:
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: bad argument #2 to 'random' (interval is empty)
[12/11/2011 17:29:44] stack traceback:
[12/11/2011 17:29:44] [C]: in function 'random'
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: in function 'spawnNewZombie'
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:6: in function <data/globalevents/scripts/zombie/onthink.lua:1>
[12/11/2011 17:29:44] [Error - GlobalEvents::think] Couldn't execute event: ZombieGlobalThink

Can anyone help me with this?

ii need this mean
 
12/11/2011 17:29:44] [Error - GlobalEvent Interface]
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:eek:nThink
[12/11/2011 17:29:44] Description:
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: bad argument #2 to 'random' (interval is empty)
[12/11/2011 17:29:44] stack traceback:
[12/11/2011 17:29:44] [C]: in function 'random'
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: in function 'spawnNewZombie'
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:6: in function <data/globalevents/scripts/zombie/onthink.lua:1>
[12/11/2011 17:29:44] [Error - GlobalEvents::think] Couldn't execute event: ZombieGlobalThink

Can anyone help me with this?


/\ i have this error.. i need concert.. help me?! thankss (sorry for language but im br s2)
 
12/11/2011 17:29:44] [Error - GlobalEvent Interface]
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:eek:nThink
[12/11/2011 17:29:44] Description:
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: bad argument #2 to 'random' (interval is empty)
[12/11/2011 17:29:44] stack traceback:
[12/11/2011 17:29:44] [C]: in function 'random'
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: in function 'spawnNewZombie'
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:6: in function <data/globalevents/scripts/zombie/onthink.lua:1>
[12/11/2011 17:29:44] [Error - GlobalEvents::think] Couldn't execute event: ZombieGlobalThink

Can anyone help me with this?



please help meee in this error /\ :X:ninja:
 
12/11/2011 17:29:44] [error - globalevent interface]
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:eek:nthink
[12/11/2011 17:29:44] description:
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: Bad argument #2 to 'random' (interval is empty)
[12/11/2011 17:29:44] stack traceback:
[12/11/2011 17:29:44] [c]: In function 'random'
[12/11/2011 17:29:44] data/lib/zombie_event.lua:104: In function 'spawnnewzombie'
[12/11/2011 17:29:44] data/globalevents/scripts/zombie/onthink.lua:6: In function <data/globalevents/scripts/zombie/onthink.lua:1>
[12/11/2011 17:29:44] [error - globalevents::think] couldn't execute event: Zombieglobalthink

can anyone help me with this?
bump
 
Back
Top