Onequip Rodando Duas Vezes

LuckOake
em Scripts

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Olá pessoal. Eu recentemente fiz um sistema que usa onEquip, mas acontece que ele está rodando duas vezes. Se não entendeu, fiz um script de testes para melhor compreensão.

 

 

function onEquip(cid, item, slot)

print('Test')

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")

return true

end

 

function onDeEquip(cid, item, slot)

print('Test')

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")

return true

end

 

 

Ao equipar:

 

 

Player:

 

22:44 Test
22:44 Test

 

Console:

 

[24/08/2012 22:44:03] Test
[24/08/2012 22:44:03] Test

 

 

Ao desequipar:

 

 

Player:

 

22:44 Test

 

Console:

 

[24/08/2012 22:44:03] Test

 

 

Alguma solução para corrigir isso?

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

Isso é um bug nas sources, mas dá pra bloquear que o evento aconteça 2x usando lua mesmo, teste:

 

 

local blockDoubleExecution = {}

function onEquip(cid, item, slot)

if blockDoubleExecution[cid] then
	blockDoubleExecution[cid] = nil
	return true
else
	blockDoubleExecution[cid] = true
end

print('Test')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")

return true
end

function onDeEquip(cid, item, slot)
print('Test')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")
return true
end

 

 

Eu to com muita preguiça de testar, então se esse não funcionar, talvez esse funcione:

 

 

local canTrigger = {}

function onEquip(cid, item, slot)

canTrigger[cid] = not canTrigger[cid]
if not canTrigger[cid] then return true end

print('Test')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")

return true
end

function onDeEquip(cid, item, slot)
print('Test')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Test")
return true
end

 

 

Mas sei lá, provável que os dois funcionem, testa ai pra mim

5303fg1.png

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Certim, a primeira funcionou, então nem preciso testar a outra. Amanhã te dou REP +, hoje to sem.

 

E se possível, não tem como fazer uma função que sirva para todos os onEquip, para não ter que ficar colocando esse code?

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

Infelizmente só se você tiver as sources...

5303fg1.png

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Bom, eu tenho. Se alguma alma generosa puder aparecer aqui pra dar uma help, né, que faça, por favor.

mapperpro

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/01/11Posts: 15

Eu gostaria de saber se tem como eu direcionar um item no move events para algum script, e os seus atributos continuarem funcionando.

Exemplo:

eu tenho uma armor de knight, e gostaria que ela me desse skills ao ser usada:

então eu fui até o items.xml e atribui o skill de sword em +1 ao player que for usá-la.

No entanto, eu preciso adicionar essa armadura no moveevents.xml para que ela funcione, então:

 

 

<movevent type="Equip" itemid="id da armadura" slot="armor" level="8" event="function" value="onEquipItem"/>

<movevent type="DeEquip" itemid="12640" slot="armor" level="8" event="function" value="onDeEquipItem">

<vocation id="4"/>

<vocation id="8" showInDescription="0"/>

</movevent>

 

no entanto, eu preciso usar um script que vai permitir que apenas o comprador do item possa usá-lo, então:

 

<movevent type="Equip" itemid="id da armadura" slot="armor" level="8" event="script" value="scriptdocomprador.lua"/>

 

só que se eu fizer isso, ao usar a armadura, o player nao recebe o atributo do skill +1... Então minha dúvida é: como fazer para que eu consiga direcionar a tag para o script e, ao mesmo tempo, o item funcione atribuindo +1 de skill ao player?

 

P.S.: o script possui a function onEquip(cid, item, slot) e ainda assim não é atribuído o skill.

 

Por favor, aguardo respostas !!!!