Bom, vi milhares de "explicacoes", post etç sobre como fazer a Arena.
Pois bem, aqui voce vai entender tudo direitinho.
Vou utilizar os scripts postador por Tibiaa4e.
estou só ajudando aqueles que não entenderam, assim como eu que tive que aprende na raça. Boa sorte para voçês em seus ot
:forward: Observação :back: , sem querer eu coloquei o todo texto do post no meio, e pode ter afetado os textos para criar os arquivos, e estou sem tempo para arruma denovo, deu trabalho fazer isso.
Voçês tem 2 escolhas ou entra na pagina do post (original) do tibiaa4e, para ir pegando os aquivos ou baixar eles aqui
Mas o tutorial de como criar a arena esta valendo.
Link do post tibiaa4e http://www.xtibia.com/forum/Arena-Quest-V4...und-t96282.html
Ou Baixar aqui arquivos.rar
Pesso mil desculpas.....mesmo :withstupidsmiley:
Ah outra coisa, o arquivo movements que vai em movements/lib/, tirem os traços --------, pois eles dao erro no ot, isso se der erro, porque aqui deu erro com eles.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Criando Arena em seu ot (não copiando mapa ja com tudo pronto)
Esta arena é v4 conforme nosso amigo tibiaa4e postou
detalhes da arena:
Creditos: Tibiaa4e
Changelog Arena 3.0 to 4.0
-Fixados
- Fixado bug dos baus na qual alguns abriam e outros diziam que você fez a quest sem ter feito.
- Fixado bug dos trofeus, agora todos estão funcionando.
- Fixado erro que permitia o player fazer a arena varias vezes, sem pegar a recompensa.
- Fixado erro da porta de permissão, na qual mostrava a frase, mesmo ele passando.
- Fixado erro da porta ao checar players nas arena (GMs não é considerado player, ou seja, se houver 1 a porta abre normalmente).
- Fixado bug que deixava o player pegar o item a mostra na sala de recompensa.
-Adicionado
- Frase especial no Trofeu igual tibia real.
- Mapa melhorado, não estando igual ao real.
- Adicionado actionid para o player escapar da arena e não pode-la fazer denovo até comprar outra
- Player não pode comprar permissão do nivel, se já terminou ele.
- Função DoMakeEffect para diminuir script.
- Arena é agora area de não logout para evitar macetes de players.
- Npc agora é para TFS 0.3.0 Alpha 3
- Arena, Arena1 e Trofeu compactados e adicionados para apenas um arquivo (Que esse ficou menor que o antigo Arena1)
- Diminuição das coordenadas, se usar o mapa postado (podendo apenas decora-lo, não mudando ordem de tiles).
Actionid usadas
5000 a 5012
5100 a 5111
Storages ids
5000 a 5002
5005 a 5007
5010 a 5012
5015 a 5017
Uniqueid
5300 a 5314 para recompensas
-A fazer
- Adicionar montros reais, e não aqueles ridiculos da SVN.
- Corrigir (Se houver) bugs da versão 4.0
--------------------------------------------------------------------------------------------------


Primeira parte:
O Cenario, entendendo:
Para esta parte, se voce ja tem o mapa ou se vai criar preste atencao no chao, deixe ele sem bordas na parte onde vai as actionid. como mostra a foto abaixo.
Preste atencao nesse ponto, nao deixe bordas ao redor de cada arena, (bordas no chao). pois em cada sqm que o jogador vai pisar vai ter uma action, que representa arenas 1 a 10. Ta explicado, cuidado com o chao de cada arena, nao deixei bordas onde voce vai colocas o action ids.
Segunda parte, começando:
Primeiro coloque esse script dentro da pasta movements/scripts, crie arquivo arena.lua e cole isto
--Function by Ta4e 07/11/2008----90% Arena quest in tibia rl--
--Version 4.0--
--This script make create a globet, summons monsters and create and delete teleports--
function onStepIn(cid, item, position, fromPosition)
getele = getThingfromPos(arenaroom)
getele1 = getThingfromPos(arenache1)
getele2 = getThingfromPos(arenache2)
getele3 = getThingfromPos(arenache3)
getele4 = getThingfromPos(arenache4)
getele5 = getThingfromPos(arenache5)
getele6 = getThingfromPos(arenache6)
getele7 = getThingfromPos(arenache7)
getele8 = getThingfromPos(arenache8)
getele9 = getThingfromPos(arenache9)
getele10 = getThingfromPos(arenache10)
greenhornstatus = getPlayerStorageValue(cid,5000)
scrapperstatus = getPlayerStorageValue(cid,5001)
warlordstatus = getPlayerStorageValue(cid,5002)
-----------------------------------------------------------------------------------------------------------------
if item.itemid == 1387 and item.actionid == 5110 then
doTeleportThing(getele.uid,arenapos,0)
doSendMagicEffect(arenapos,10)
if warlordstatus == 1 then
doSummonCreature(bossw1, monsterpos1)
setPlayerStorageValue(cid,5002,2)
elseif scrapperstatus == 1 then
doSummonCreature(bosss1, monsterpos1)
setPlayerStorageValue(cid,5001,2)
elseif greenhornstatus == 1 then
doSummonCreature(bossg1, monsterpos1)
setPlayerStorageValue(cid,5000,2)
else
doPlayerSendCancel(cid,"You need talk to halvar")
end
elseif item.itemid == 1387 and item.actionid == 5100 then
doTeleportThing(getele1.uid,arenapos2,0)
doSendMagicEffect(arenapos2,10)
getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
doCreateItem(1354,1,arenache1)
doRemoveItem(getrem1.uid,1)
if warlordstatus == 2 then
doSummonCreature(bossw2, monsterpos2)
elseif scrapperstatus == 2 then
doSummonCreature(bosss2, monsterpos2)
elseif greenhornstatus == 2 then
doSummonCreature(bossg2, monsterpos2)
end
elseif item.itemid == 1387 and item.actionid == 5101 then
doTeleportThing(getele2.uid,arenapos3,0)
doSendMagicEffect(arenapos3,10)
local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
doRemoveItem(getrem2.uid,1)
doCreateItem(1354,1,arenache2)
if warlordstatus == 2 then
doSummonCreature(bossw3, monsterpos3)
elseif scrapperstatus == 2 then
doSummonCreature(bosss3, monsterpos3)
elseif greenhornstatus == 2 then
doSummonCreature(bossg3, monsterpos3)
end
elseif item.itemid == 1387 and item.actionid == 5102 then
doTeleportThing(getele3.uid,arenapos4,0)
doSendMagicEffect(arenapos4,10)
local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
doRemoveItem(getrem3.uid,1)
doCreateItem(1354,1,arenache3)
if warlordstatus == 2 then
doSummonCreature(bossw4, monsterpos4)
elseif scrapperstatus == 2 then
doSummonCreature(bosss4, monsterpos4)
elseif greenhornstatus == 2 then
doSummonCreature(bossg4, monsterpos4)
end
elseif item.itemid == 1387 and item.actionid == 5103 then
doTeleportThing(getele4.uid,arenapos5,0)
doSendMagicEffect(arenapos5,10)
local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
doRemoveItem(getrem4.uid,1)
doCreateItem(1354,1,arenache4)
if warlordstatus == 2 then
doSummonCreature(bossw5, monsterpos5)
elseif scrapperstatus == 2 then
doSummonCreature(bosss5, monsterpos5)
elseif greenhornstatus == 2 then
doSummonCreature(bossg5, monsterpos5)
end
elseif item.itemid == 1387 and item.actionid == 5104 then
doTeleportThing(getele5.uid,arenapos6,0)
doSendMagicEffect(arenapos6,10)
local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
doRemoveItem(getrem5.uid,1)
doCreateItem(1354,1,arenache5)
if warlordstatus == 2 then
doSummonCreature(bossw6, monsterpos6)
elseif scrapperstatus == 2 then
doSummonCreature(bosss6, monsterpos6)
elseif greenhornstatus == 2 then
doSummonCreature(bossg6, monsterpos6)
end
elseif item.itemid == 1387 and item.actionid == 5105 then
doTeleportThing(getele6.uid,arenapos7,0)
doSendMagicEffect(arenapos7,10)
local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
doRemoveItem(getrem6.uid,1)
doCreateItem(1354,1,arenache6)
if warlordstatus == 2 then
doSummonCreature(bossw7, monsterpos7)
elseif scrapperstatus == 2 then
doSummonCreature(bosss7, monsterpos7)
elseif greenhornstatus == 2 then
doSummonCreature(bossg7, monsterpos7)
end
elseif item.itemid == 1387 and item.actionid == 5106 then
doTeleportThing(getele7.uid,arenapos8,0)
doSendMagicEffect(arenapos8,10)
local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
doRemoveItem(getrem7.uid,1)
doCreateItem(1354,1,arenache7)
if warlordstatus == 2 then
doSummonCreature(bossw8, monsterpos8)
elseif scrapperstatus == 2 then
doSummonCreature(bosss8, monsterpos8)
elseif greenhornstatus == 2 then
doSummonCreature(bossg8, monsterpos8)
end
elseif item.itemid == 1387 and item.actionid == 5107 then
doTeleportThing(getele8.uid,arenapos9,0)
doSendMagicEffect(arenapos8,10)
local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
doRemoveItem(getrem8.uid,1)
doCreateItem(1354,1,arenache8)
if warlordstatus == 2 then
doSummonCreature(bossw9, monsterpos9)
elseif scrapperstatus == 2 then
doSummonCreature(bosss9, monsterpos9)
elseif greenhornstatus == 2 then
doSummonCreature(bossg9, monsterpos9)
end
elseif item.itemid == 1387 and item.actionid == 5108 then
doTeleportThing(getele9.uid,arenapos10,0)
doSendMagicEffect(arenapos9,10)
local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
doRemoveItem(getrem9.uid,1)
doCreateItem(1354,1,arenache9)
if warlordstatus == 2 then
doSummonCreature(bossw10, monsterpos10)
elseif scrapperstatus == 2 then
doSummonCreature(bosss10, monsterpos10)
elseif greenhornstatus == 2 then
doSummonCreature(bossg10, monsterpos10)
end
elseif item.itemid == 1387 and item.actionid == 5109 then
doTeleportThing(getele10.uid,rewardpos,0)
doSendMagicEffect(rewardpos,10)
local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
doRemoveItem(getrem10.uid,1)
doCreateItem(1354,1,arenache10)
if warlordstatus == 2 then
setPlayerStorageValue(cid,5002,3)
setPlayerStorageValue(cid,5007,1)
elseif scrapperstatus == 2 then
setPlayerStorageValue(cid,5001,3)
setPlayerStorageValue(cid,5006,1)
elseif greenhornstatus == 2 then
setPlayerStorageValue(cid,5000,3)
setPlayerStorageValue(cid,5005,1)
end
elseif item.itemid == 1387 and item.actionid == 5111 then
if warlordstatus == 2 then
setPlayerStorageValue(cid,5002,0)
elseif scrapperstatus == 2 then
setPlayerStorageValue(cid,5001,0)
elseif greenhornstatus == 2 then
setPlayerStorageValue(cid,5000,0)
end
elseif item.itemid == 426 then
if item.actionid == 5010 then
doTransformItem(item.uid, 425)
if getPlayerStorageValue(cid,5017) == -1 then
local golden = doCreateItem(8698,1,globet1)
doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
doSendMagicEffect(globet1,10)
setPlayerStorageValue(cid,5017,1)
else
doSendMagicEffect(globet1,2)
end
elseif item.actionid == 5011 then
doTransformItem(item.uid, 425)
if getPlayerStorageValue(cid,5016) == -1 then
local golden = doCreateItem(7370,1,globet2)
doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
doSendMagicEffect(globet2,10)
setPlayerStorageValue(cid,5016,1)
else
doSendMagicEffect(globet2,2)
end
elseif item.actionid == 5012 then
doTransformItem(item.uid, 425)
if getPlayerStorageValue(cid,5015) == -1 then
local golden = doCreateItem(7371,1,globet3)
doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
doSendMagicEffect(globet3,10)
setPlayerStorageValue(cid,5015,1)
else
doSendMagicEffect(globet3,2)
end
end
end
return TRUE
end
function onAddItem(moveitem, tileitem, position)
if moveitem.itemid == 7349 and tileitem.actionid == 5000 then
local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
doRemoveItem(getrem1.uid,1)
doCreateItem(1387,1,arenache1)
doMakeEffect(arenache1,13)
local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
doSetItemActionId(getrem1.uid,5100)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5001 then
local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
doRemoveItem(getrem2.uid,1)
doCreateItem(1387,1,arenache2)
doMakeEffect(arenache2,13)
local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
doSetItemActionId(getrem2.uid,5101)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5002 then
local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
doRemoveItem(getrem3.uid,1)
doCreateItem(1387,1,arenache3)
doMakeEffect(arenache3,13)
local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
doSetItemActionId(getrem3.uid,5102)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5003 then
local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
doRemoveItem(getrem4.uid,1)
doCreateItem(1387,1,arenache4)
doMakeEffect(arenache4,13)
local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
doSetItemActionId(getrem4.uid,5103)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5004 then
local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
doRemoveItem(getrem5.uid,1)
doCreateItem(1387,1,arenache5)
doMakeEffect(arenache5,13)
local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
doSetItemActionId(getrem5.uid,5104)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5005 then
local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
doRemoveItem(getrem6.uid,1)
doCreateItem(1387,1,arenache6)
doMakeEffect(arenache6,13)
local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
doSetItemActionId(getrem6.uid,5105)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5006 then
local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
doRemoveItem(getrem7.uid,1)
doCreateItem(1387,1,arenache7)
doMakeEffect(arenache7,13)
local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
doSetItemActionId(getrem7.uid,5106)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5007 then
local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
doRemoveItem(getrem8.uid,1)
doCreateItem(1387,1,arenache8)
doMakeEffect(arenache8,13)
local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
doSetItemActionId(getrem8.uid,5107)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5008 then
local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
doRemoveItem(getrem9.uid,1)
doCreateItem(1387,1,arenache9)
doMakeEffect(arenache9,13)
local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
doSetItemActionId(getrem9.uid,5108)
elseif moveitem.itemid == 7349 and tileitem.actionid == 5009 then
local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
doRemoveItem(getrem10.uid,1)
doCreateItem(1387,1,arenache10)
doMakeEffect(arenache10,13)
local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
doSetItemActionId(getrem10.uid,5109)
end
end
Primeiro pegue o scripts e nomei ele de movements.lua, e coloque dentro da pasta movements/lib/ -->
arenapos={x=1172, y=925, z=7} --posição do meio da primeira arena--rewardpos={x=1208, y=899, z=6} --posicao que ele ira ao matar o ultimo boss--
arenaroom={x=1205,y=934, z=7, stackpos =253} - posição do teleport que ira para a primeira arena--
--posicao que criara os trofeus--
globet1 = {x=1215, y=869, z=7, stackpos = 1} -- warlord
globet2 = {x=1215, y=876, z=7, stackpos = 1} --scrapper
globet3 = {x=1215, y=883, z=7, stackpos = 1} --greenhorn
--Bosses of Warlord Arena--
bossw1 = "webster"
bossw2 = "darakan the executioner"
bossw3 = "norgle glacierbeard"
bossw4 = "the pit lord"
bossw5 = "svoren the mad"
bossw6 = "the masked marauder"
bossw7 = "gnorre chyllson"
bossw8 = "fallen mooh'tah master ghar"
bossw9 = "deathbringer"
bossw10 = "the obliverator"
--Bosses of Scrapper Arena--
bosss1 = "avalanche"
bosss2 = "kreebosh the exile"
bosss3 = "The Dark Dancer"
bosss4 = "the hag"
bosss5 = "slim"
bosss6 = "Grimgor Guteater"
bosss7 = "drasilla"
bosss8 = "spirit of earth"
bosss9 = "spirit of water"
bosss10 = "spirit of fire"
--Bosses of Greenhorn Arena--
bossg1 = "frostfur"
bossg2 = "bloodpaw"
bossg3 = "bovinus"
bossg4 = "achad"
bossg5 = "colerian the barbarian"
bossg6 = "the hairy one"
bossg7 = "axeitus headbanger"
bossg8 = "rocky"
bossg9 = "cursed gladiator"
bossg10 = "Orcus the cruel"
--Posicoes de chegada--
arenapos2={x=arenapos.x-12, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos3={x=arenapos.x-24, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos4={x=arenapos.x-36, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos5={x=arenapos.x-30, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos6={x=arenapos.x-18, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos7={x=arenapos.x-6, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos8={x=arenapos.x-12, y=arenapos.y-25, z=arenapos.z, stackpos = 1}
arenapos9={x=arenapos.x-24, y=arenapos.y-25, z=arenapos.z, stackpos = 1}
arenapos10={x=arenapos.x-18, y=arenapos.y-38, z=arenapos.z, stackpos = 1}
--Posicoes de teleport--
arenache1={x=arenapos.x-5, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache2={x=arenapos.x-17, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache3={x=arenapos.x-29, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache4={x=arenapos.x-41, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache5={x=arenapos.x-35, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache6={x=arenapos.x-23, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache7={x=arenapos.x-11, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache8={x=arenapos.x-17, y=arenapos.y-25, z=arenapos.z, stackpos = 253}
arenache9={x=arenapos.x-29, y=arenapos.y-25, z=arenapos.z, stackpos = 253}
arenache10={x=arenapos.x-23, y=arenapos.y-38, z=arenapos.z, stackpos = 253}
--Posição de Sumonar monstros--
monsterpos1={x=arenapos.x+1, y=arenapos.y-3, z=arenapos.z, stackpos =1}
monsterpos2={x=arenapos2.x+1, y=arenapos2.y-3, z=arenapos2.z, stackpos =1}
monsterpos3={x=arenapos3.x+1, y=arenapos3.y-3, z=arenapos3.z, stackpos =1}
monsterpos4={x=arenapos4.x+1, y=arenapos4.y-3, z=arenapos4.z, stackpos =1}
monsterpos5={x=arenapos5.x+1, y=arenapos5.y-3, z=arenapos5.z, stackpos =1}
monsterpos6={x=arenapos6.x+1, y=arenapos6.y-3, z=arenapos6.z, stackpos =1}
monsterpos7={x=arenapos7.x+1, y=arenapos7.y-3, z=arenapos7.z, stackpos =1}
monsterpos8={x=arenapos8.x+1, y=arenapos8.y-3, z=arenapos8.z, stackpos =1}
monsterpos9={x=arenapos9.x+1, y=arenapos9.y-3, z=arenapos9.z, stackpos =1}
monsterpos10={x=arenapos10.x+1, y=arenapos10.y-3, z=arenapos10.z, stackpos =1}
function doMakeEffect(pos,effect)
pos1={x=pos.x+1, y=pos.y, z=pos.z}
pos2={x=pos.x+1, y=pos.y+1, z=pos.z}
pos3={x=pos.x+1, y=pos.y-1, z=pos.z}
doSendMagicEffect(pos,effect)
doSendMagicEffect(pos1,effect)
doSendMagicEffect(pos2,effect)
doSendMagicEffect(pos3,effect)
end
Explicando a segunda parte:
*Posição do meio da primeira arena, vai ser a posicao onde o jogador vai aparecer quando entra na arena, ou seja o meio fica entre a pedra e o portal abaixo. veja a foto:
È ai que o jogador vai aparece, e apartir dai que vai entra todo um esquema de teletransporte para cada nivel da arena.
*posicao que ele ira ao matar o ultimo boss, Facil neh, aonde o jogador vai aparece depois de ter concluido a arena, onde ele vao escolher seus premium.
*posição do teleport que ira para a primeira arena, È o local de onde vai fica o seu teleporte, o teleporte só vai usar a action 5110, esta codernada fica por conta de levar o jogador ate a primeira sala da arena
*posicao que criara os trofeus, esta sera a posicao de onde vai aparece o trofeu, ou seja emcima da mesa. PS: coloque o piso que tem igual nos depot que afundam, e coloque a id para cada premio, 5010 trofeu ouro, 5011 trofeu de prata e 5012 trofeu de bronze.
*Bosses of Warlord Arena, somente o nome dos bosses de cada nivel da arena.
Agora explicando outras coisas que entra nessa parte:
*Posicoes de chegada e Posicoes de teleport.
Esta parte vou explicar, pois esta é a parte chata e que ninguem explicou.
Aqui são as coodernadas de acordo com as coodernadas que voçê colocou para a primeira arena (primeira arena eu me refiro a primeira sala), e para fazer isto é muito simples, veja exemplo com a foto logo depois:
posicoes de chegada
arenapos5={x=arenapos.x-30, y=arenapos.y-12, z=arenapos.z, stackpos = 1} <-(5º Arena)
Este é o exemplo quando o jogador passou de uma arena para outra, neste caso ele ja esta na quinta arena, ai voçê abre a calculadora e começa o seu trabalho. Pois aqui entra um esquema que supondo que a posicao que o jogador chega na arena seje x=200 y=200 z=5, a posicao do meio da arena. Voçê vai pegar a coordenadas da primeira arena, aonde o jogador aparece e vai calcular ou contar sqm po sqm (fica a seu criterio) só que voce vai contar ou calcular um sqm depois, se for X vai ser 1sqm a parti da esquerda, se for Y vai ser 1sqm para cima.
Veja foto para entender,
Legenda: Troquei o amarelo pelo vermelho representa X (facilitar a vizualização)
Azul vai representa Y
A posicao inicial do jogador entra em acao, quando ele passa de uma arena para outra,
no caso é simples de entender, voçê vai contar apartir da primeira posição, supondo que voçê quer arrumar as coordernadas da 5º arena.
Primeiro, a coodernada X, voçê conta 1sqm depois do sqm da posição inicial, ate a linha de onde esta a posição do meio da arena que voçê quer, no caso ali é a quinta.
Segundo, a coodernada Y, voçê conta 1sqm depois do sqm da posição inicial, ate linha de onde esta a posição do meio da arena que voçê quer.
exemplo, da posicao inicial, supondo que este seja a primeira arena x200 y200 e z7, quando voce mata o boss, a pedra vai sair normal dando lugar ao portal,já nas outras arenas entra a posição de chegada e posições do teleporte, para nao da erro de posição. Este exemplo vale tanto para uma quanto para a outra.
continuando, assim que voçê for passar da primeira arena para outra esses 2 entram, e funciona assim, se a posição inicial for x200...o esquema é contar ou calcular quantos sqm ate a proxima arena, conta da forma como ta na foto acima, mesmo se a arena for 10 voçê vai contar da arena 1 quantos sqm a esquerda (X) chega ate na linha de onde esta o meio da arena 10.
se for conta é mole, leia o que eu falei. Se for calcular, diminua...supondo que arena 10 o seu meio seja x220 e y220 voçê pega 1sqm x esquerda, y acima, ou seja x219 y 219, na calculadora diminua x200 posição inicial pelo x219 posição arena 10, 200-219 = 19, ai voçê coloca o resultado na posição de chegada de acordo com a arena, colocar -19 (quer dizer, -19 x para a esquerda). Simples não, isto vale tanto para a posição de chegada quanto posicoes de teleporte. O Z não se preocupe porque nem precisa mecher, já que arena "deve" fica no mesmo andar.
*Posição de Sumonar monstros
Aqui voce nao precisa mecher, aqui ja é automatico, se voçê configuro tudo certo acima.
Colocando as IDs nos pisos e no teleporte para entrar na arena:
È o seguinte, como eu explique la começo o esquema do chao, aqui vai entra as ids, voçê vai fazer o seguinte, colocar as id respectiva a arena, colocar em todo piso que abrange cada arena, embaixo do portal nao precisa, mas da pedra precisa.
Os ids começam do 5000 e vai ate 5009, 10 arenas. Veja a foto de onde colocar.
Em cada arena voçê vai colocar em todo piso sua actionid, exemplo actionid 5000, em todo piso daquela arena voçê coloca em actionid o 5000, por isso nao pode ter bordas perto do chão onde vai coloca o actionid...
E o actionid do teleporte para entra na arena é 5110, coloque no teleporte a actionid e nao utilize coodernadas. A codernada voçê vai colocar no arquivo movements.lua que esta dentro do movements/lib
Adicione isto em movements.xml
Script:
<movevent event="AddItem" tileitem="1" actionid="5000" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5001" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5002" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5003" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5004" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5005" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5006" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5007" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5008" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5009" script="arena.lua"/>
<movevent event="StepIn" actionid="5010" script="arena.lua"/>
<movevent event="StepIn" actionid="5011" script="arena.lua"/>
<movevent event="StepIn" actionid="5012" script="arena.lua"/>
<movevent event="StepIn" actionid="5100" script="arena.lua"/>
<movevent event="StepIn" actionid="5101" script="arena.lua"/>
<movevent event="StepIn" actionid="5102" script="arena.lua"/>
<movevent event="StepIn" actionid="5103" script="arena.lua"/>
<movevent event="StepIn" actionid="5104" script="arena.lua"/>
<movevent event="StepIn" actionid="5105" script="arena.lua"/>
<movevent event="StepIn" actionid="5106" script="arena.lua"/>
<movevent event="StepIn" actionid="5107" script="arena.lua"/>
<movevent event="StepIn" actionid="5108" script="arena.lua"/>
<movevent event="StepIn" actionid="5109" script="arena.lua"/>
<movevent event="StepIn" actionid="5110" script="arena.lua"/>
Adicione em Action/scripts crie aquivo reward.lua e cole isto,
--Function by Ta4e 07/11/2008----90% Arena quest in tibia rl--
--Version 4.0--
function onUse(cid, item, frompos, item2, topos)
--Storages values when you win a reward--
warlord = 5012
scrapper = 5011
greenhorn = 5010
--Caution when modify--
--------------------------------------------------------------------------------------------------
--ARENA warlord--
if item.uid == 5300 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 39.00 then
doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre.")
doPlayerAddItem(cid,7429,1)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre. Weighing 39.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5301 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 92.00 then
doPlayerSendTextMessage(cid,24,"You have found a Royal Axe.")
doPlayerAddItem(cid,7434,1)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a Royal Axe. Weighing 92.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5302 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 50.00 then
doPlayerSendTextMessage(cid,24,"You have found a justice seeker.")
doPlayerAddItem(cid,7390,1)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a justice seeker. Weighing 50.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5303 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 20.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 6558, 1) --panda
doAddContainerItem(container, 6574, 1) --chocolate
doAddContainerItem(container, 6569,10) --candy
doAddContainerItem(container, 7372, 1) --ice cream
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 20.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5304 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 110.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 2268, 50)
doAddContainerItem(container, 2273, 50)
doAddContainerItem(container, 7440, 1)
doAddContainerItem(container, 7439, 1)
doAddContainerItem(container, 6529, 100)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 110.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
--ARENA scrapper--
elseif item.uid == 5305 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 78.00 then
doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher.")
doPlayerAddItem(cid,4715,1)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher. Weighing 78.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5306 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 61.00 then
doPlayerSendTextMessage(cid,24,"You have found a heroic axe.")
doPlayerAddItem(cid,7751,1)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a heroic axe. Weighing 61.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5307 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 35.00 then
doPlayerSendTextMessage(cid,24,"You have found a mystic blade.")
doPlayerAddItem(cid,7765,1)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a mystic blade. Weighing 35.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5308 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 15.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 7184, 1)
doAddContainerItem(container, 6574, 1) --chocolate
doAddContainerItem(container, 6569,10) --candy
doAddContainerItem(container, 7372, 1) --ice cream
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 15.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5309 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 158.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 2304, 50)
doAddContainerItem(container, 2311, 50)
doAddContainerItem(container, 7365, 100)
doAddContainerItem(container, 2457, 100)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
--ARENA greenhorn--
elseif item.uid == 5310 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 158.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 7364, 100)
doAddContainerItem(container, 7365, 100)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5311 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 54.00 then
doPlayerSendTextMessage(cid,24,"You have found a orcish maul.")
doPlayerAddItem(cid,7392,1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a orcish maul. Weighing 54.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5312 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 59.00 then
doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword.")
doPlayerAddItem(cid,7406,1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword. Weighing 59.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5313 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 73.80 then
doPlayerSendTextMessage(cid,24,"You have found a HeadChopper.")
doPlayerAddItem(cid,7380,1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a HeadChopper. Weighing 73.80 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
elseif item.uid == 5314 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 18.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 2114, 1)
doAddContainerItem(container, 6570, 1)
doAddContainerItem(container, 6574, 1)
doAddContainerItem(container, 2668,10)
doAddContainerItem(container, 7372, 1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 18.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end
end
return 1
end
Em Action/scripts crie arquivo door.lua e cole isto,
--Function by Ta4e 28/09/2008----90% Arena quest in tibia rl--
--Version 4.0--
function onUse(cid, item, fromPosition, itemEx, toPosition)
--Storages of Arena NPC--
greenhorn = 5000
scrapper = 5001
warlord = 5002
starting={x=1132, y=882, z=7, stackpos=253}
ending={x=1176, y=929, z=7, stackpos=253}
trash= {x=1169, y=725, z=13}
---------------------------------------------------------------------------------------------------------------------
greenhornstatus = getPlayerStorageValue(cid,greenhorn)
scrapperstatus = getPlayerStorageValue(cid,scrapper)
warlordstatus = getPlayerStorageValue(cid,warlord)
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
if item.itemid == 5132 and item.actionid == 60000 then
if warlordstatus == 1 or scrapperstatus == 1 or greenhornstatus == 1 then
players=0
totalmonsters=0
monster = {}
repeat
creature= getThingfromPos(checking)
if creature.itemid > 0 then
if getPlayerAccess(creature.uid) == 0 then
players=players+1
end
if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then
totalmonsters=totalmonsters+1
monster[totalmonsters]=creature.uid
end
end
checking.x=checking.x+1
if checking.x>ending.x then
checking.x=starting.x
checking.y=checking.y+1
end
until checking.y>ending.y
if players==0 then
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters
doTransformItem(item.uid, 5133)
doTeleportThing(cid, toPosition, TRUE)
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need permission of Halvar to enter in Arena.")
end
end
end
Explicando script door.lua:
starting={x=1132, y=882, z=7, stackpos=253} Coloque aqui a posição maxima de onde começa a arena ending={x=1176, y=929, z=7, stackpos=253}
Coloque aqui a posição maxima de onde termina a arena trash= {x=1169, y=725, z=13}
???? lixo, coloque bem escondido
Veja a foto explicando o Starting e Ending. Tando faz se for de cima pra baixo, quanto de baixo pra cima
Use isto se der erro, abra o arquivo door.lua dentro da pasta others.
Troque este
if isInArray(questDoors, item.itemid) == TRUE thenif getPlayerStorageValue(cid, item.actionid) ~= -1 then
por este
if isInArray(questDoors, item.itemid) == TRUE and itemEx.actionid < 59999 thenif getPlayerStorageValue(cid, item.actionid) >= 1 then
Abra action.xml e adicione isto:
<action uniqueid="5300" script="Reward.lua" />
<action uniqueid="5301" script="Reward.lua" />
<action uniqueid="5302" script="Reward.lua" />
<action uniqueid="5303" script="Reward.lua" />
<action uniqueid="5304" script="Reward.lua" />
<action uniqueid="5305" script="Reward.lua" />
<action uniqueid="5306" script="Reward.lua" />
<action uniqueid="5307" script="Reward.lua" />
<action uniqueid="5308" script="Reward.lua" />
<action uniqueid="5309" script="Reward.lua" />
<action uniqueid="5310" script="Reward.lua" />
<action uniqueid="5311" script="Reward.lua" />
<action uniqueid="5312" script="Reward.lua" />
<action uniqueid="5313" script="Reward.lua" />
<action uniqueid="5314" script="Reward.lua" />
<action actionid="60000" script="arena door.lua"/>
O npc:
<npc name="Halvar" script="data/npc/scripts/arena.lua" floorchange="0" access="5">
<health now="150" max="150"/>
<look type="143" head="2" body="112" legs="78" feet="116" addons="2" corpse="2212"/>
<parameters>
<parameter key="message_greet" value="Hello competitor! Do you want to {fight} in the arena or shall I explain the {rules} first "/>
</parameters></npc>
script
local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'fight') then
selfSay('So you agree to the rules and want to participate in the challenge? Which difficulty do you choose, {Greenhorn}, {Scrapper} or {Warlord}?', cid)
talkState[talkUser] = 2
elseif msgcontains(msg, 'rules') then
selfSay('What do you want to know? Something about the three different {DIFICULTIES}, the {GENERAL} rules or the {PRICES}? Maybe you also want to know what happens when you die?', cid)
talkState[talkUser] = 1
elseif talkState[talkUser] == 1 then
if msgcontains(msg, 'dificulties') then
selfSay('We have three difficulty. The easiest are Greenhorn, the medium are scrapper and the hardest are warlord.', cid)
talkState[talkUser] = 0
elseif msgcontains(msg, 'general') then
selfSay('Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack.If you enter in arena or you win or you go to temple.', cid)
talkState[talkUser] = 0
elseif msgcontains(msg, 'prices') then
selfSay('A greenhorn cost 1000 gold, scrapper cost 5000 golds and a great warlord cost 10000 golds.', cid)
talkState[talkUser] = 0
end
elseif talkState[talkUser] == 2 then
if msgcontains(msg, 'greenhorn') then
selfSay('The fee is 1000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse andyour backpack. Do you really want to participate in the arena in the easiest difficulty?', cid)
talkState[talkUser] = 3
elseif msgcontains(msg, 'scrapper') then
selfSay('The fee is 5000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the medium difficulty?', cid)
talkState[talkUser] = 4
elseif msgcontains(msg, 'warlord') then
selfSay('The fee is 10000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the hardest difficulty?', cid)
talkState[talkUser] = 5
end
elseif talkState[talkUser] == 3 then
if msgcontains(msg, 'yes') then
if getPlayerStorageValue(cid,5005) == -1 then
if(doPlayerRemoveMoney(cid, 1000) == TRUE) then
setPlayerStorageValue(cid,5000,1)
selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
end
else
selfSay('You already win this arena!', cid)
end
else
selfSay('Then not. Get away and don\'t waste my time!', cid)
end
elseif talkState[talkUser] == 4 then
if msgcontains(msg, 'yes') then
if getPlayerStorageValue(cid,5006) == -1 then
if(doPlayerRemoveMoney(cid, 5000) == TRUE) then
setPlayerStorageValue(cid,5001,1)
selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
end
else
selfSay('You already win this arena!', cid)
end
else
selfSay('Then not. Get away and don\'t waste my time!', cid)
end
elseif talkState[talkUser] == 5 then
if msgcontains(msg, 'yes') then
if getPlayerStorageValue(cid,5007) == -1 then
if(doPlayerRemoveMoney(cid, 10000) == TRUE) then
setPlayerStorageValue(cid,5002,1)
selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
end
else
selfSay('You already win this arena!', cid)
end
else
selfSay('Then not. Get away and don\'t waste my time!', cid)
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
talkState[talkUser] = 0
selfSay('Ok then.', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Para quem quer adicionar actionid a porta para pessoa só passa se tiver comprando o "passe" da arena segue as actionsid:
5000,5001 e 5002 (greenhorn, scrapper e warlord)
As actionid das recompensa não vou passar, pois duas ou mais estao erradas, ai voçês arrumam e colocam seus premio.
Fim de tuto xD
Lembrando que isto é para ajudar a entender.
Te mais povo, hehe minha primeira explicação.