Ir para conteúdo
  • 0

Onequip Rodando Duas Vezes


LuckOake

Pergunta

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?

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

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

Editado por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

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?

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

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 !!!!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...