Tournament PVP V2.0

Roksas
Por Roksas
em Lixeira Pública

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Sistema de Torneio V2.0

 

divisor.png

Saudações galera, tudo de bão e do mió? :)

Recebi alguns pedidos e vim trazer hoje para vocês o V2.0 do meu sistema de Torneio.

 

Changelog:

 

V2.0: Arrumado alguns BUGS.
V2.0: Agora temos sala de espera.
V2.0: Funciona também em Naruto, Pokemon & seus derivados!

 

Instalação:

 

divisor.png

Siga para data/lib, nessa mesma pasta crie um arquivo chamado tournament.lua e adicione dentro:

 

 

torneio = {
awardTournament = 2148,
awardAmount = 2,
playerTemple = {x = 1008, y = 1018, z = 7},
tournamentFight = {x = 1017, y = 1026, z = 7},
area = {fromx = 1008, fromy = 1018, fromz = 7, tox = 1024, toy = 1033, toz= 7},
waitPlace = {x = 1017, y = 1044, z = 7},  
waitArea = {fromx = 1010, fromy = 1040, fromz = 7, tox = 1024, toy = 1050, toz= 7},
startHour = "17:40:00",
endHour = "17:50:00",
price = 10000,
revivePoke = 2494,
}

function getPlayersInArea(area)

local players = {}

for x = area.fromx,area.tox do
for y = area.fromy,area.toy do
for z = area.fromz,area.toz do

local m = getTopCreature({x=x, y=y, z=z}).uid

if m ~= 0 and isPlayer(m) then
table.insert(players, m)
end
end
end
end
return players
end

 

 

Em data/npc/ crie um arquivo chamado Tournament.xml e adicione dentro:

 

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Tournament" script="tournament.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/>]
<parameters>
<parameter key="message_greet" value="Hello |PLAYERNAME|. If you want to participate in the tournament say: {torneio} or {enter}."/>
</parameters>
</npc>

 

 

Entre na pasta scripts dentro de data/npc/ e crie um arquivo chamado tournament.lua e adicione dentro:

 

 

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, 'torneio') or msgcontains(msg, 'enter') then

if getPlayerItemCount(cid, torneio.revivePoke) >= 1 then
selfSay('You can not enter the tournament with {revives}, please throw them out.', cid)
return true
end

selfSay('You want to participate in the tournament by '..torneio.price..' gps / dollars?', cid)
talkState[talkUser] = 2


elseif talkState[talkUser] == 2 then

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then

if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
selfSay('Registration for the tournament finished, come back later.', cid)
return true
end

if doPlayerRemoveMoney(cid, torneio.price) then
doTeleportThing(cid, torneio.waitPlace)
doPlayerSendTextMessage(cid, 21, "Welcome, this is the waiting room, you wait here while the tournament does not start. Start time: {"..torneio.endHour.."}.")
else

selfSay('You do not have enough money ('..torneio.price..').', cid)
end
else
selfSay('Sure you do not want to participate? Okay, see you next time!', cid)
talkState[talkUser] = 0
end
end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Agora vá para a pasta data/globalevents/scripts, dentro dela crie um arquivo chamado tournament.lua e adicione dentro:

 

 

function onTime ()

if #getPlayersInArea(torneio.area) > 1 then
doBroadcastMessage("The tournament this time had no winner, try next time!") return true end

for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do
doTeleportThing(pid, torneio.tournamentFight)
doPlayerSendTextMessage(pid, 21, "The tournament started, and the best will win warrior! Hahaha.")
end
return true
end

 

 

Em globalevents.xml adicione essa tag:

 

<globalevent name="TournamentStart" time="17:47" event="script" value="tournament.lua"/>

 

Em data/actions/scripts, crie um arquivo chamado tournament.lua e adicione dentro:

 

 

function onUse(cid, item)

if #getPlayersInArea(torneio.area) > 1 then
doPlayerSendTextMessage(cid, 20 ,"Finish with others first, young warrior!") return true end

doTeleportThing(cid, torneio.playerTemple)
doPlayerSendTextMessage(cid, 21, "Young warrior Congratulations, you won the tournament, and won one "..getItemNameById(torneio.awardTournament).." as a reward.")
doPlayerAddItem(cid, torneio.awardTournament, torneio.awardAmount)
return true
end

 

 

Abra com o bloco de notas o arquivo actions.xml e adicione a seguinte tag:

 

<action uniqueid="18279" event="script" value="tournament.lua"/>

 

 

 

 

 

 

 

 

 

Configuração:

 

divisor.png

O arquivo que instalamos na pasta data/lib (tournament.lua), abra-o com o bloco de notas e vamos configurar esta parte:

 

torneio = {
awardTournament = 2148,
awardAmount = 2,
playerTemple = {x = 1008, y = 1018, z = 7},
tournamentFight = {x = 1017, y = 1026, z = 7},
area = {fromx = 1008, fromy = 1018, fromz = 7, tox = 1024, toy = 1033, toz= 7},
area2 = {x = 1008, y = 1018, z = 7}, {x = 1024, y = 1033, z = 7},
waitPlace = {x = 1017, y = 1044, z = 7},  
waitArea = {fromx = 1010, fromy = 1040, fromz = 7, tox = 1024, toy = 1050, toz= 7},
startHour = "17:40:00",
endHour = "17:50:00",
price = 10000,
revivePoke = 2494,
}

  • awardTournament colocamos o ItemID da recompensa do vencedor do torneio, awardAmount a quantidade.

  • playerTemple colocamos as coordenadas do templo de alguma cidade, é para lá que ele vai ser teleportado ao vencer. tournamentFight colocamos as coordenadas do CENTRO da Arena de Torneios.

  • Em area colocamos: (fromx, fromy e fromz) as coordenadas do canto superior esquerdo da Arena, (tox, toy e toz) colocamos as coordenadas do canto inferior direito da Arena.

  • Em waitPlace colocamos as coordenadas do CENTRO, da Sala de Espera para começar o Torneio! Já o waitArea é a mesma coisa do "area" só que nesse é os cantos superior esquerdo e inferior direito da Sala de Espera.

  • startHour colocamos a hora em que o NPC começa a vender entradas para o Torneio, é a hora do dia, com hora/minutos/e segundos, no formato "00:00:00", lá tem que ficar entre aspas! Já o endHour é a hora que ele para de vender as entradas e que começa o Torneio pra valer!

  • Galera, o revivePoke, se seu OTServer for de Tibia, não MEXAM! Agora, se for Pokétibia, você muda o valor do revivePoke para o Item ID dos revives, isso serve para o player não levar revives pro Torneio.

  • Em globalevents.xml na tag:

<globalevent name="TournamentStart" time="17:47" event="script" value="tournament.lua"/>
  • Aqui time="17:47" coloque o horário TERMINA as inscrições para o Torneio, é o mesmo do que endHour do lib. Mas aqui você só pode por em formato horas:minutos (00:00)

Prontinho, agora é só ir no RME Map Editor e colocar UNIQUE ID 18279 em uma alavanca ou item dentro da Arena, isso serve para o player que ganhar ir embora com seu prêmio :)

 

 

 

 

 

 

 

Finalizações:

 

divisor.png

 

Bom galera, é isso por hoje, espero que façam um bom e ótimo uso. Estou disposto a aceitar DICAS/SUGESTÕES/CRÍTICAS & BUGS! Muito obrigado pela atenção!

 

 

 

 

divisor.png

 

f0wvoi.jpg

 

 


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Luquinh4

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 19/02/13Posts: 285

Poem algumas fotos de como é, e se possível um mapa bom pro evento .

 

parabéns !

Dp9Y7vq.png

 

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Muito obrigado cara, o download do mapa já está no final do tópico :)


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Gears

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 11/01/13Posts: 576Char no Tibia: Darashia del Shee

function onTime ()
   if #getPlayersInArea(torneio.area) > 1 then
   doBroadcastMessage("The tournament this time had no winner, try next time!") return true end
    for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do
	    doTeleportThing(pid, torneio.tournamentFight)
	    doPlayerSendTextMessage(pid, 21, "The tournament started, and the best will win warrior! Hahaha.")
    end
    return true
   end

Action.

function onUse(cid, item)

   if #getPlayersInArea(torneio.area) > 1 then
       doPlayerSendTextMessage(cid, 20 ,"Finish with others first, young warrior!")
       return true
   end
       doTeleportThing(cid, torneio.playerTemple)
       doPlayerSendTextMessage(cid, 21, "Young warrior Congratulations, you won the tournament, and won one "..getNameById(torneio.awardTournament).." as a reward.")
       doPlayerAddItem(cid, torneio.awardTournament, torneio.awardAmount)
       return true
   end

 

Acho meio que 'bobeira' adicionar variaveis globais na lib, mas isso ai, melhorou da v1.

Estagiário 24/01/2013

pedido para sair : 23/02/2013

Volta como estagiário: 11/04/2013

Pedido para sair: 10/05/2013

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Obrigado cara, mas não foi bobeira, na versão anterior tinha que configurar arquivo por arquivo ;p


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

KaboFlow29

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 22/11/12Posts: 267Gênero: MasculinoChar no Tibia: ADM Kabo

as schedules do not put my plus 1?

13662475_1132536336789432_1129366659_o.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

I do not understand, you're in doubt at times? You can ask at will! startHour is the time it starts and endHour ending.


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

WebTutoriais

Estudando Linux !
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 15/03/13Posts: 126Char no Tibia: No Have

Cara Quando Eu Acho Que Você ja Me Impressionou Você Vem Com Outra . Por Isso Sou Seu Fã!


¿

KaboFlow29

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 22/11/12Posts: 267Gênero: MasculinoChar no Tibia: ADM Kabo

Error...

 

 

 

[24/04/2013 00:10:41] [Error - LuaScriptInterface::loadFile] cannot open data/actions/scripts/default.lua: No such file or directory

[24/04/2013 00:10:41] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/default.lua)

[24/04/2013 00:10:41] cannot open data/actions/scripts/default.lua: No such file or directory

[24/04/2013 00:10:41] [Warning - Actions::registerEvent] Duplicate registered item uid: 5015

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament1.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament2.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament3.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament4.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament5.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament6.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament7.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament8.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament9.lua)

[24/04/2013 00:10:45] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament10.lua)

13662475_1132536336789432_1129366659_o.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Why tournament1.lua created until tournament10.lua? In tag team globalevents.xml must be = "" instead of interval = "."


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

AwakeGamer

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/02/13Posts: 77

Roksas fiz tudo certinho coloquei as posições certas so que os player estão esperando na area de espera certinho quando da o horario eles nao estao sendo mandado para a area do torneio . Porque ?

 

esseerro ao carregar [25/04/2013 14:55:38] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/tournament.lua)

529296_444197488987607_340554321_n.jpg

PMO Online o serve que vai revolucionar os poketibia !

 

Qualquer Duvida Adiciona Skype : andersoonssena

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Cara verifica se o arquivo que você pos em globalevents/scripts, a primeira linha dele é:

 

function onTimer()


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

AwakeGamer

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/02/13Posts: 77

Sim mano e esse mesmo

 

Instalei de novo agora nao da mais nenhum erro na distro mais ainda os player nao estao sendo teleportado para area do torneio

 

@Edit tentei de novo e for teleportado , Mais ele manda todos os player para a mesma posição ? nao teria como escolhe mais posição para os player ficar ?

 

e so arrumar esse erro [25/04/2013 15:41:15] [Error - Action Interface]

[25/04/2013 15:41:15] data/actions/scripts/tournament.lua:onUse

[25/04/2013 15:41:15] Description:

[25/04/2013 15:41:15] data/actions/scripts/tournament.lua:7: attempt to call global 'getNameById' (a nil value)

[25/04/2013 15:41:15] stack traceback:

[25/04/2013 15:41:15] data/actions/scripts/tournament.lua:7: in function <data/actions/scripts/tournament.lua:1>

529296_444197488987607_340554321_n.jpg

PMO Online o serve que vai revolucionar os poketibia !

 

Qualquer Duvida Adiciona Skype : andersoonssena

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Posso ver isso na V3 :)

 

Já o erro, reinstale o da pasta data/actions/scripts


Atenciosamente,
Eduardo Nunes - Scripter Lua!