Ir para conteúdo

Tutorial Addevent E Stopevent


noobinhu

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
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
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
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
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
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
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
Compartilhar em outros sites

×
×
  • Criar Novo...