Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- firestorm Variables
- fsJoinedCountGlobalStorage = 18900 --Player joined event count / recuento de players.
- fsJoinStorage = 18901 --player join storage / storage del jugador a unirse.
- fsMinPlayers = 2 --min players needed when time runout / minimo de players necesarios para comenzar el evento.
- fsMaxPlayers = 5 --max players to join / maximo de players.
- fsTrophy = 7369 --trophy itemid / itemid del premio(que no sea stackable).
- fsEventCountGlobalStorage = 18902 --firestorm Count (no move/no moverle).
- fsWaitMinutes = 1 --when event has opened, how long until it starts? / cuantos minutos tarde el evento en empezar.
- fsWaitingRoomPos = Position(1016, 940, 7) --middle of waiting room / punto medio de el cuarto de espera.
- fsArena = Position(991, 930, 7) --when even start where should player be teleported in the arena? / punto donde seran transportados los players.
- fsArenaFromPosition = Position(984, 925, 7) --pos of top left corner / posicion de esquina superior izquierda.
- fsArenaToPosition = Position(998, 935, 7) --pos of bottom right corner /posicion de esquina inferior derecha.
- fsMiddleEventArena = Position(991, 930, 7) --Middle pos of the arena / punto medio de la arena
- fsWaitingRoomRadiusX = 8 --depends how big the waiting room is 20sqm to x / depende de lo grande la sala de espera en x
- fsWaitingRoomRadiusY = 8 --depends how big the waiting room is 20sqm to y / depende de lo grande la sala de espera en y
- fsEventArenaRadiusX = 15 --Depends how big the firestorm arena is 50sqm to x / depende de lo grande de la arena en x
- fsEventArenaRadiusY = 15 --Depends how big the firestorm arena is 50sqm to y / depende de lo grande de la arena en y
- fsStartedGlobalStorage = 18903 -- Value: 0 == false, 1 == true, 2 == started --State of the event
- fsCreateTeleportPosition = Position(1000, 1000, 7) --Where should the teleport be created? / posicion donde sera creado el teleport?
- function startfirestorm()
- local specs = Game.getSpectators(fsWaitingRoomPos, false, true, 0, fsWaitingRoomRadiusX, 0, fsWaitingRoomRadiusY)
- if Game.getStorageValue(fsJoinedCountGlobalStorage) <= fsMinPlayers then
- for i = 1, #specs do
- specs[i]:teleportTo(specs[i]:getTown():getTemplePosition(), false)
- specs[i]:setStorageValue(fsJoinStorage, 0)
- end
- resetfsVariables()
- Game.broadcastMessage('firestorm Event failed to start, because of to little players joined the event!', MESSAGE_STATUS_WARNING)
- return true
- end
- for i = 1, #specs do
- local rX, rY, rZ
- rX = math.random(fsArenaFromPosition.x, fsArenaToPosition.x)
- rY = math.random(fsArenaFromPosition.y, fsArenaToPosition.y)
- rZ = math.random(fsArenaFromPosition.z, fsArenaToPosition.z)
- specs[i]:teleportTo(Position(rX, rY, rZ))
- end
- Game.broadcastMessage("firestorm Event has started, good luck to all participant.", MESSAGE_STATUS_WARNING)
- Game.setStorageValue(fsStartedGlobalStorage, 2)
- doStartfirestorm()
- end
- function doStartfirestorm()
- if Game.getStorageValue(fsJoinedCountGlobalStorage) > fsMaxPlayers then return false end
- if Game.getStorageValue(fsStartedGlobalStorage) == 2 then
- local specs = Game.getSpectators(fsArena, false, true, 0, 10, 0, 10)
- for i = 1, #specs do
- local randX, randY, randZ
- randX = math.random(fsArenaFromPosition.x, fsArenaToPosition.x)
- randY = math.random(fsArenaFromPosition.y, fsArenaToPosition.y)
- randZ = math.random(fsArenaFromPosition.z, fsArenaToPosition.z)
- local randfire = Position(randX, randY, randZ)
- local randX1, randY1, randZ1
- randX1 = math.random(fsArenaFromPosition.x, fsArenaToPosition.x)
- randY1 = math.random(fsArenaFromPosition.y, fsArenaToPosition.y)
- randZ1 = math.random(fsArenaFromPosition.z, fsArenaToPosition.z)
- local randfire1 = Position(randX1, randY1, randZ1)
- local creature, players = nil, Game.getPlayers()
- for i = 1, #players do
- creature = players[i]
- doSendDistanceShoot(fsArenaFromPosition, randfire, 4)
- doSendDistanceShoot(fsArenaToPosition, randfire, 4)
- doSendDistanceShoot(Position(998, 925, 7), randfire, 4)
- doSendDistanceShoot(Position(984, 935, 7), randfire, 4)
- doAreaCombatHealth(creature.uid, COMBAT_HOLYDAMAGE, randfire,randfire, -9999, -1000000,7)
- end
- end
- addEvent(doStartfirestorm, 500)
- end
- end
- function resetfsVariables()
- Game.setStorageValue(fsEventCountGlobalStorage, 0)
- Game.setStorageValue(fsJoinedCountGlobalStorage, 0)
- Game.setStorageValue(fsStartedGlobalStorage, 0)
- end
- [/code]
- [size=16]continue with Creaturescripts/scripts[/size]
- [code]dofile('data/firestorm_event.lua')
- function onPrepareDeath(player, killer)
- local winner = 0
- if player:getStorageValue(fsJoinStorage) >= 1 then
- Game.setStorageValue(fsJoinedCountGlobalStorage, Game.getStorageValue(fsJoinedCountGlobalStorage)-1)
- player:teleportTo(player:getTown():getTemplePosition())
- player:setStorageValue(fsJoinStorage, 0)
- player:addHealth(player:getMaxHealth())
- if Game.getStorageValue(fsJoinedCountGlobalStorage) <= 1 then --Event ended, someone won!
- local pla, play = nil, Game.getPlayers()
- for i = 1, #play do
- pla = play[i]
- if pla:getStorageValue(fsJoinStorage) == 1 then
- winner = pla:getId()
- break
- end
- end
- winner = Player(winner)
- if winner then
- winner:teleportTo(winner:getTown():getTemplePosition())
- winner:addHealth(winner:getMaxHealth())
- local trophy = winner:addItem(fsTrophy, 1)
- if trophy then
- trophy:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, '['.. winner:getName() ..'] has won the firestorm Event.')
- end
- Game.broadcastMessage(string.format('%s is the winner of firestorm Event', winner:getName()), MESSAGE_STATUS_WARNING)
- end
- resetfsVariables()
- end
- return false
- end
- return true
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement