Ir para conteúdo

Posts Recomendados

Bom, este tutorial ajudará muitas pessoas que têm dúvidas nessas functions, que são bem simples, basta prestar um pouco de atenção, enviar os parâmetros corretamente para a nova function a ser feita e usá-los.

 

Primeiramente:

 

addEvent(function, time, parameters)

 

Explicação:

function - function a ser executada

time - o tempo em millisegundos para executar a função (1000 = 1 segundo)

parameters - parâmetros a ser passados da function normal para a outra

 

Exemplo de uso:

 

function onStepIn(cid, item, pos)

parameters = {cid=cid, item=item, pos=pos} -- enviar todos parâmetros necessários dentro de um array

addEvent(talk, 1000, parameters)

end

 

 

function talk(parameters)

doSendAnimatedText(parameters.pos, 'Teste de addEvent', 180)

end

Note como usar a variável pos que foi passada dentro de um array, ainda é usada como se estivesse no array, parameters.pos, assim você deve acessar todos parâmetros que foram passados, estes parâmetros são como variáveis e guardam os mesmos valores que tinham na function onStepIn, para acessar cid e pos, seria parameters.cid e parameters.pos

 

Agora explicado o addEvent, explicarei o stopEvent, usado para parar a execução de uma function de addEvent.

 

stopEvent(eventID)

 

eventID - variável contendo o addEvent

 

Exemplo de uso:

 

function onStepIn(cid, item, pos)

parameters = {cid=cid, item=item, pos=pos} -- enviar todos parâmetros necessários dentro de um array

addEvent(talk, 1000, parameters)

end

 

 

function talk(parameters)

doSendAnimatedText(parameters.pos, 'Teste de addEvent', 180)

variavel_addEvent = addEvent(talk, 5000, parameters)

end

 

function onStepOut(cid, item, pos)

stopEvent(variavel_addEvent)

end

 

Note novamente como usar a variável pos que foi passada dentro de um array, ainda é usada como se estivesse no array, parameters.pos, assim você deve acessar todos parâmetros que foram passados, estes parâmetros são como variáveis e guardam os mesmos valores que tinham na function onStepIn, para acessar cid e pos, seria parameters.cid e parameters.pos

 

O mesmo script, porém neste script agora, primeiramente após pisar no tile e esperar 1 segundo exibirá uma mensagem e enquanto não sair de 5 em 5 segundos aparecerá a mesma mensagem. Após sair do tile, o addEvent será parado e então as mensagens não serão mais exibidas.

 

Ambas functions são muito úteis se usadas corretamentes em sistemas diferentes.

 

Exercício:

 

Descubra o erro nesta function:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

parameters = {cid = cid, fromPosition = fromPosition}

addEvent(magicEffect, 1000, parameters)

end

 

function magicEffect(parameters)

doSendMagicEffect(fromPosition, 1)

end

 

Esta function seria ativada ao usar o item e um segundo depois apareceria o efeito de número 1 de onde o player estava, porém não funciona, o erro é muito bobo, apesar de ser um dos erros mais cometidas nestas functions.

 

Resposta no spoiler em negrito:

function onUse(cid, item, fromPosition, itemEx, toPosition)

parameters = {cid = cid, fromPosition = fromPosition}

addEvent(magicEffect, 1000, parameters)

end

 

function magicEffect(parameters)

doSendMagicEffect(parameters.fromPosition, 1)

end

 

Um erro muito bobo e comum, que no início poderá ocorrer diversas vezes.

 

Depois deste tutorial, espero que as dúvidas sobre estas functions tenham acabado. :)

 

Mais dúvidas? Postem!

Editado por noobinhu
Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/
Compartilhar em outros sites

  • 3 weeks later...

to querendo fazer uma talkaction com addEvent

como seria o msm script so q pra talk action

function onStepIn(cid, item, pos)

parameters = {cid=cid, item=item, pos=pos} -- enviar todos parâmetros necessários dentro de um array

addEvent(talk, 1000, parameters)

end

 

 

function talk(parameters)

doSendAnimatedText(parameters.pos, 'Teste de addEvent', 180)

end

 

 

PS: noobinhu, nao recebi nenhuma aceitação aki no MSN

alexsndf@homail.com

Editado por alex0007
Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-656597
Compartilhar em outros sites

cara nao tem error, so q o script ta pra movements eu queria um pra talkaction

pra isso precisa mudar algumas coisas

 

exemplo:

function onStepIn

 

para:

function onSay

 

mais tentei mudar aki mais n deu certo e to pedindo sua ajuda

e novamente nao apareceu nenhuma soliçitação aki no msm

 

me passa o seu

Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-656621
Compartilhar em outros sites

achei um pequeno erro, você chamou a função antes dela ser declarada...

declare ela primeiro e depois chame, da mais certo.

ou melhor ainda, coloque a função como local. :-)

Editado por Eventide
Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-656671
Compartilhar em outros sites

Olá. Isto me ajudou bastante. Mas eu não entendi muito bem este negócio de parameters. Você podiaq me mandar uma mensagem me explicando um pouco melhor? Obrigado.

Atenciosamente,

Felipe.

Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-660429
Compartilhar em outros sites

Eventide, isto não importa em LUA acho, eu também faço assim.

 

Felp~

Os parâmetros são as variáveis que estavam na function de destino (principal) e você quer usar na function que foi usado o addEvent, me fale melhor o que você não entendeu, mais tarde eu respondo melhor.

Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-660433
Compartilhar em outros sites

  • 4 weeks later...
  • 3 weeks later...

Cara...to tendo um problemao....

 

eu tentei usa esses "addeevent" num script... soh q eu quero fazer funcionar 2 ao mesmo tempo...

 

ex: uma bomba... eu clico no item e ele começa...3..2..1..boom

 

soh q qndo eu ativo 2 juntos eles parecem que se unem...

nao sei o que fazer...

Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-692701
Compartilhar em outros sites

  • 1 month later...

Esse tutorial esta muito bom so que....

eu quero pedir um favor

pra vc ensinar como colocar ele num script exemplo!!!

aki esta o script da shovel se der pra termina ele pra mim eu agradeço.

 

local holes = {468, 481, 483, 489}

function onUse(cid, item, fromPosition, itemEx, toPosition)

parameters = {cid=cid, item=item, pos=pos}

if isInArray(holes, itemEx.itemid) == TRUE then

doTransformItem(itemEx.uid, itemEx.itemid + 1)

doDecayItem(itemEx.uid)

elseif itemEx.itemid == 231 then

local rand = math.random(1, 100)

if rand == 1 then

doCreateItem(2159, 1, toPosition)

elseif rand > 95 then

doSummonCreature("Scarab", toPosition)

end

doSendMagicEffect(toPosition, CONST_ME_POFF)

 

elseif itemEx.itemid == 4526 and itemEx.actionid == 3334 then -- AKI ESTA A PARTE QUE NAO FUNCIONA!!!

doTransformItem(itemEx.uid, 469)

doDecayItem(itemEx.uid)

addEvent(back,1*60*1000,parameters)

else

return FALSE

end

return TRUE

end

 

function back(parameters)

doTransformItem(itemEx.uid, 4526)

 

end

Link para o comentário
https://xtibia.com/forum/topic/101129-tutorial-addevent-e-stopevent/#findComment-711924
Compartilhar em outros sites

×
×
  • Criar Novo...