Ir para conteúdo

Evento Zumbi


fredpadua

Posts Recomendados

Iae galera, numca fiz um pedido desses, então se nao for a area certa por favor movam.

 

Estou precisando de um script do "Evento Zumbi" mas preciso que editam o post mostrando tudo que

precisar editar pra colocar o evento no meu OT (Mapa proprio). Por exemplo, peguei um script esses dias

mas quando coloquei no server.. não funcionou pois as coordenadas não batiam e os "Zumbis" nasciam no meio de uma hunt la.. Então é isso ai galera

 

Estou dando 2 REP+ pra quem me ajuda.

Link para o comentário
Compartilhar em outros sites

Script "globalevents".

 

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 = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be created
   teleportToPosition = {x = 1190, y = 1076, 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 = 1186, y = 1072, z = 7}, -- top left cornor of the playground
   toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground
   }

function onTimer()
   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

 

Script "movements"

 

local config = {
   playerCount = 2001, -- Global storage for counting the players in the event
   maxPlayers = 15, -- Max players who can participate

   }

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
   if getGlobalStorageValue(config.playerCount) < config.maxPlayers then
       setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)
       if getGlobalStorageValue(config.playerCount) == config.maxPlayers then
           doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")
       else    
           doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)
       end    
   else
       addEvent(tpBack, 1000, cid, fromPosition)
       doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")
       return false
   end
   print(getStorage(config.playerCount) .. " Players in the zombie event.")
   return true
end

function tpBack(cid, fromPosition)
   doTeleportThing(cid, fromPosition, true)
   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
end

 

Script "creaturescripts"

 

local config = {
   playerCount = 2001, -- Global storage for counting the players left/entered in the event

   goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
   rewards = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
   --        {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
   moneyReward = {2160, 10, 1},

   -- Should be same as in the globalevent!
   -- The zombies will spawn randomly inside this area
   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
   }

function onStatsChange(cid, attacker, type, combat, value)
   if isPlayer(cid) and isMonster(attacker) then
       if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
           if getGlobalStorageValue(config.playerCount) >= 2 then
               doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)
               local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
               doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
               doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
               doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
               doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
               setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
           elseif getGlobalStorageValue(config.playerCount) == 1 then
               if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                   doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)
                   local goblet = doPlayerAddItem(cid, config.goblet, 1)
                   doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")
                   local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
                   doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
                   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                   doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                   for _,items in ipairs(config.rewards) do
                       doPlayerAddItem(cid, items, 1)
                   end
                   if config.moneyReward[3] == 1 then
                       doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
                   end
               end

               for x = config.fromPosition.x, config.toPosition.x do
                   for y = config.fromPosition.y, config.toPosition.y do
                       for z = config.fromPosition.z, config.toPosition.z do
                           areapos = {x = x, y = y, z = z, stackpos = 253}
                           getMonsters = getThingfromPos(areapos)
                           if isMonster(getMonsters.uid) then
                               doRemoveCreature(getMonsters.uid)
                           end
                       end
                   end
               end
           end
           return false
       end
   end
return true
end

 

 

 

Só pra constar, esse script consegui aqui no xTibia

e não consegui entender muitos values, uniques ids, actions ids e coordenadas.

Se puder me ajudar, ganha meu REP+ por 1 semana.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...