Muito bom velho! Obrigado pela contribuição!
Uma dúvida: Você ou alguém já testou esse sistema pra ver se ele realmente está funcionando? Obrigado pela atenção!
Atenciosamente, Thiagobji.
Por LuckinhaSan, 21 de mar. de 2013 em Mods, funções e outros
Muito bom velho! Obrigado pela contribuição!
Uma dúvida: Você ou alguém já testou esse sistema pra ver se ele realmente está funcionando? Obrigado pela atenção!
Atenciosamente, Thiagobji.
info
Grupo: Conde
Registrado: 03/09/11
Posts: 703
Reputação: +191
Gênero: Masculino
Char no Tibia: Mirade

Sim Sim Thiago, Já Testaram. Até Agora Os
Resultados Foram Ótimos.
info
Grupo: Infante
Registrado: 25/01/12
Posts: 1.6k
Reputação: +330

ctrl+c e ctrl+ v
bom systema pena q n foi ti q fez ^^
info
Grupo: Conde
Registrado: 03/09/11
Posts: 703
Reputação: +191
Gênero: Masculino
Char no Tibia: Mirade

Não Sou Como Todos, Que Apenas Copiam e Colam.
Todos Os Tópicos Que Posto Aqui Que Não São
De Minha Autoria, Eu Leio, Entendo e Reformato,
Adaptando Para o Fórum.
info
Grupo: Visconde
Registrado: 27/02/13
Posts: 446
Reputação: +282
Gênero: Masculino

Parabéns, está mt legal.
Dois erros que achei no seu tutorial nos nomes dos arquivos dos scripts, que estão diferentes do nome da tag:
Crie um arquivo .lua com o nome de oneentere adicione isso -
Crie um arquivo .lua com o nome de onstratup e adicione isso -
Fora isso fui testar o sistema no meu servidor 8.60 e deu um erro:

info
Grupo: Campones
Registrado: 11/05/13
Posts: 97
Reputação: +4
Char no Tibia: Elite Of Avenger

Dois erros que achei no seu tutorial nos nomes dos arquivos dos scripts, que estão diferentes do nome da tag:
Crie um arquivo .lua com o nome de oneentere adicione isso -
Crie um arquivo .lua com o nome de onstratup e adicione isso -
Fora isso fui testar o sistema no meu servidor 8.60 e deu um erro:
Mesmo erro que o usuário de cima, perfeito aonde essa porcaria?
info
Grupo: Visconde
Registrado: 24/07/09
Posts: 356
Reputação: +28
Gênero: Masculino

Opa, Vou testar !
Obrigado por compartilhar..
Ae funcionou tudo certin.
Mais quando eu entro no tp.. não fala na tela. e os bixo não ta sendo sumonado..
E outra tipo coloquei para 1 pessoa entrar na arena dos zombie.. o tp tinha que sumir, não ?
info
Grupo: Campones
Registrado: 11/05/13
Posts: 97
Reputação: +4
Char no Tibia: Elite Of Avenger

Desgraça, o autor do tópico não da mais assistência nessa merda?
Já to brabo tentanto achar algum Zombie descente, 100% sem bugs..
info
Grupo: Campones
Registrado: 18/11/12
Posts: 11
Reputação: 0
Char no Tibia: ADM # Hero

Cara o event zombie que eu baxei não quer abri no rme ja fiz de tudo mais n quer abri se alguem poder me ajudar
do um rep pf me ajudem.
Abraço. Aguardando ...
http://img26.imageshack.us/img26/2826/erroscript.jpg
Estou com o mesmo erro aqui, alguém poderia nos ajudar ?
info
Grupo: Campones
Registrado: 12/10/13
Posts: 21
Reputação: +3
Char no Tibia: WizzHunteR

pq o meu aparece isso
Zombie Arena Event teleport is opened. We are waiting for -1 players to start.
Quanto tempo demora para começar a sumonar zombies?
info
Grupo: Cavaleiro
Registrado: 17/07/09
Posts: 153
Reputação: +3
Char no Tibia: Victorseksi

Aqui não sumona os Zombies, como arruma ?
info
Grupo: Conde
Registrado: 03/09/11
Posts: 703
Reputação: +191
Gênero: Masculino
Char no Tibia: Mirade
Mapa para Zombie Event - Download Via SpeedyShare
OBS - Antes de falarem que já existe no fórum, teste os outros scripts.
Então começando por informações basícas :
Vamos ao evento!
Como implementar em seu site -
Vá ate "C:/xampp/htdcos/" crie um arquivo chamado Zombieevent.php dentro coloque isso -
Depois vá na pasta do xampp/htdocs, abra o index.php e em baixo disso -
case "buypoints": $topic = "Buy Points"; $subtopic = "buypoints"; include("buypoints.php"); break;Adicione isso -
case "zombieevent": $topic = "Zombie event"; $subtopic = "zombieevent"; include("zombieevent.php"); break;Agora vá em "C:/xampp/htdcos/layout/tibiacom/" abra o arquivo layout.php, depois disso -
Cole isso -
Vamos Ao Script!
Vá em data/creaturescripts/scripts e crie uma pasta com o nome de zombie.
Cria um arquivo .lua com o nome de onattack e adicione isso -
function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true endAinda na pasta zombie, crie um arquivo .lua com o nome de ondeath e adicione isso -
Agora crie um arquivo .lua com nome de onthink e adicione isso -
Agora vá em data/globalevents/scripts e também crie uma pasta com o nome de zombie.
Crie um arquivo .lua com o nome de onstratup e adicione isso -
function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true endCrie um arquivo .lua com o nome de onthink e adicione isso -
Agora va na pasta data/lib e crie um arquivo .lua chamado zombie_event, adicione isso -
-- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- 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() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ 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 = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" endAgora va em data/movements/scripts crie uma pasta chamada zombie.
Crie um arquivo .lua com o nome de oneenter e adicione isso -
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true endVá em data/talkactions/scripts e crie uma pasta com o nome de zombie.
Crie um arquivo .lua com o nome de onsay e adicione isso -
function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true endVá na pasta data/monster e crie um arquivo .xml com o nome de zombie_event, e adicione isso -
Agora as tags -
Vá em data/creaturescripts, abra creaturescripts.xml e adicione as tag's -
Vá em data/globalevents, abra globalevents.xml e adicione as tag's -
Vá em data/movements, abra movements.xml e adicione a tag -
Vá em data/talkactions, abra talkactions.xml e adicione a tag -
Vá em data/monster, abra monster.xml e adicione a tag -
Tutorial de como configurar zombie event!
data/creturescripts/scripts/zombie/onattack.lua
function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") endPartes configuraveis no script no caso são os avisos do evento que não recomendo mudar na verdade os premios que no caso são esses:
doPlayerAddItem(winner, 2157, 5, true) --/ 2157= ID do item no caso golden nugguets mais você pode por o que quiser, 5= Quatidade do item a ser dado. True= no caso creio que seja para deixar essa premiação ativa ou não true = verdadeira no caso ativa para deixar a premiação inativa apenas mude o true por false ou remova a tag... Para adicionar mais premios e só adicionar mais tags como tá ai no script o outro premio no caso ali e uma boh.
Explicando - data/lib/zombie_event.lua
-- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 –- Não precisa mexer. ZE_ACCESS_TO_IGNORE_ARENA = 4 –- Não precisa mexer. -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de)/ aqui vc pega no rme na area do seu evento o primeiro tile da arena </\ e copia a position. ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) e aqui a mesma coisa mais o tile de\/> só lembrando e o ultimo tile da arena do lado de fora não o ultimo tile do mapa. http://imageshack.us/scaled/landing/854/semttulophp.pngÉ isso ai, espero que tenham gostado!
Créditos - Fausto32/Isbigo/AnneMotta
Editado Março 21 por LuckinhaSan