-- Zombie Variables
zeZombieName = 'Zombie Event' --Zombie Name
zombieSpawnInterval = 5 --how many seconds until a new zombie spawns
zeMaxZombies = 50 --max zombies in the arena?
zeJoinedCountGlobalStorage = 60009 --Player joined event count
-- Players Variables
zeJoinStorage = 60010 --player join storage
zeMinPlayers = 1 --min players needed when time runout
zeMaxPlayers = 5 --max players to join
zeTrophy = 7369 --trophy itemid
zeJoinedCountGlobalStorage = 60011 --Zombie spawned Count
-- Other Variables
zeWaitMinutes = 2 --when event has opened, how long until it starts?
zeWaitingRoomPos = Position(31959, 32369, 6) --middle of waiting room
zeZombieArena = Position(31959, 32365, 7) --when even start where should player be teleported in the zombie arena?
zeArenaFromPosition = Position(31896, 32322, 7) --pos of top left corner
zeArenaToPosition = Position(32016, 32469, 7) --pos of bottom right corner
zeMiddleZombieArena = Position(31955, 32400, 7) --Middle pos of the arena
zeWaitingRoomRadiusX = 11 --depends how big the waiting room is 20sqm to x
zeWaitingRoomRadiusY = 15 --depends how big the waiting room is 20sqm to y
zeZombieArenaRadiusX = 103 --Depends how big the zombie arena is 50sqm to x
zeZombieArenaRadiusY = 149 --Depends how big the zombie arena is 50sqm to y
zeStartedGlobalStorage = 60012 -- Value: 0 == false, 1 == true, 2 == started --State of the event
zeCreateTeleportPosition = Position(32243, 32206, 7) --Where should the teleport be created?
function startZombie()
local specs = Game.getSpectators(zeWaitingRoomPos, false, true, 0, zeWaitingRoomRadiusX, 0, zeWaitingRoomRadiusY)
if Game.getStorageValue(zeJoinedCountGlobalStorage) < zeMinPlayers then
for i = 1, #specs do
specs[i]:teleportTo(specs[i]:getTown():getTemplePosition(), false)
specs[i]:setStorageValue(zeJoinStorage, 0)
end
resetVariables()
Game.broadcastMessage('Zombie Event failed to start, because of to little players joined the event!', MESSAGE_STATUS_WARNING)
return true
end
for i = 1, #specs do
specs[i]:teleportTo(zeZombieArena)
end
Game.broadcastMessage("Zombie Event has started, good luck to all participant.", MESSAGE_STATUS_WARNING)
Game.setStorageValue(zeStartedGlobalStorage, 2)
doStartZombieEvasion()
end
function doSummonZombie()
if Game.getStorageValue(zeZombieCountGlobalStorage) > zeMaxZombies then
return false
end
local zombie = Game.createMonster(zeZombieName, {x = math.random(zeArenaFromPosition.x, zeArenaToPosition.x), y = math.random(zeArenaFromPosition.y, zeArenaToPosition.y), z = math.random(zeArenaFromPosition.z, zeArenaToPosition.z)})
if zombie then
Game.createMonster(zeZombieName, {x = math.random(zeArenaFromPosition.x, zeArenaToPosition.x), y = math.random(zeArenaFromPosition.y, zeArenaToPosition.y), z = math.random(zeArenaFromPosition.z, zeArenaToPosition.z)})
end
Game.setStorageValue(zeZombieCountGlobalStorage, Game.getStorageValue(zeZombieCountGlobalStorage) + 1)
end
function doStartZombieEvasion()
if Game.getStorageValue(zeStartedGlobalStorage) == 2 then
doSummonZombie()
addEvent(doStartZombieEvasion, 5 * 1000)
end
end
function resetVariables()
Game.setStorageValue(zeJoinedCountGlobalStorage, 0)
Game.setStorageValue(zeZombieCountGlobalStorage, 0)
Game.setStorageValue(zeStartedGlobalStorage, 0)
end
function doClearZombieArena()
local specs = Game.getSpectators(zeMiddleZombieArena, false, false, 0, zeZombieArenaRadiusX, 0, zeZombieArenaRadiusY)
for i = 1, #specs do
if specs[i]:getName() == zeZombieName then
specs[i]:remove()
end
end
end