Olá pessoal, hoje venho postar o meu primeiro evento do ano ^^. Ele é para ots que gostam de comemorar datas especiais, como o ano novo. Vou explicar como ele funciona:
Como funciona tio SmiX?
O evento só começa se tiver "x" players registrados. Como eu vejo muitos scripts de pokémon legais por ai, pensei; "Por que não adpitar um deles para Tibia"?. O evento é chamado de "Monster War Arena". Ela sai invocando monstros em uma "arena" e os players serão teleportado para ela, para killar todos os mostros. Semelhante ao "Golden Arena" da PXG.
Vamos instala-lo?
Não >.<
Vá em (globalevents/scripts) e crie um arquivo chamado "event1.lua" e cole o seguinte código dentro:
function doSummonMonsterInEvent(cid) summonMonster = getGlobalStorageValue(29474) summonMonsterInPos = math.random(arenaPositionInitial, arenaPositionEnd) for g = 1, #monstersPositions do monster = doSummonCreature(levels[summonMonster][g], monstersPositions[g]) doSendMagicEffect(getThingPos(monster), 21) local sto = getGlobalStorageValue(29474) == -1 and 0 or getGlobalStorageValue(29474) setGlobalStorageValue(29474, sto+1) for _, sid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(sid, playerstoragewararena) == 1 then doPlayerSendTextMessage(sid, 21, "The "..summonMonster.." level monsters appeared.") doPlayerSendTextMessage(sid, 28, "The "..summonMonster.." level monsters appeared.") end end end addEvent(doSummonMonsterInEvent, 30000, cid) end function getPlayerInEvent(cid) if getGlobalStorageValue(wararenastor) >= minPLayers then for _, poid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(poid, playerstoragewararena) == 1 then doPlayerSendTextMessage(poid, 25, "Prepare your weapons warrior. The monsters will spawn in 30 seconds.") doTeleportThing(poid, math.random(arenaPositionInitial, arenaPositionEnd), false) addEvent(doSummonMonsterInEvent, 30 * 1000, cid) end end end end function onTimer(cid, interval, lastExecution) setGlobalStorageValue(29474, 1) doBroadcastMessage("The Monster War Arena will start 5 minuts.") addEvent(getPlayerInEvent, 5 * 1000 * 60, cid) end
A tag:
<globalevent name="Event1" time="2:50;7:50;11:50;16:50;21:50" event="script" value="event1.lua"/>
Agora vamos em lib e criemos um arquivo chamado "eventArena.lua" e cole isto dentro:
wararenastor = 10101 -- Global storage playerstoragewararena = 10102 -- Npc storage minPLayers = 5 -- Minimo de players arenaPositionInitial = { x = 1, y = 1, z = 1 } -- Posição da ponta inferior direita da arena arenaPositionEnd = { x = 1, y = 1, z = 1 } -- Posição da ponta superior esquerda da arena, formando assim um quadrado; -------- | *| | | |* | -------- local monstersPositions = { { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 },-- posição aonde os monstros vão nescer { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, { x = 1, y = 1, z = 1 }, } local levels = { [1] = {monsters = {"Rat", "Cave rat", "Rotworm", "Assassin", "Rat", "Cave rat", "Rotworm", "Assassin", "Zombie", ""}}, --/\ Caso não queira colocar os dez monstros deixe um espaço nas aspas }
agora vamos em data/talkactions/scripts, crie um arquivo chamado "event1.lua" e colemos isso dentro:
function onSay(cid, words, param, channel) if param and (param == "register" or param == "Register") then if getPlayerStorageValue(cid, playerstoragewararena) < 1 then if getGlobalStorageValue(wararenastor) > minPLayers then setPlayerStorageValue(cid, playerstoragewararena, 1) doPlayerSendTextMessage(cid, 27, "You are a registred in the event. Good luck!") end end end return true end
tag:
<talkaction words="/event" event="script" value="event1.lua"/>
Acho que eu esqueci algo, vale lembrar que eu não testei. Preciso da ajuda de vocês para isso. Obrigado.