Tutorial Addevent E Stopevent

noobinhu
em Tutoriais de Scripting

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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!

tesla

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 26/11/08Posts: 19

Muito bom, realmente vai ajudar

Aprovado

Fuck it all. I Love Capitalism.

RedZL

Never mind, I'll find someone like you.
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/11/06Posts: 850Char no Tibia: Xearius Thor

Aprovado, parabéns!

alex008

Im Hoster
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/07/08Posts: 55Char no Tibia: Alex Terceiro

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

alex008

Im Hoster
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/07/08Posts: 55Char no Tibia: Alex Terceiro

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

Eventide

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/10/08Posts: 189

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. :-)



?

 

 

1440522_2.png

 

Felp321

Helloween Rulez \o/
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/01/08Posts: 192Char no Tibia: Felp Guardian

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.

"Elapsam semel occasionem non ipse potest Iuppiter reprehendere"

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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.

2573165

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 07/09/07Posts: 6

Parabens cara!

Eu realmente estava precisando dessa função e não tinha idéia de como usá-la!

Adorei!!

Hospedagem de sites e servidores VPS para jogos!

Preços baratos e ótimo suporte técnico!

http://www.wgnhost.com.br/

 

------

Filha, te amo <3

2nb6qg1_th.gif

Lwkass

~ Sem Noção ~
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/10/08Posts: 5Char no Tibia: Nenhum

Valeu, me ajudo com duvidas que tinha sobre essa função :smile_positivo:

Naruto + Tibia = Combinação Perfeita.



Eu sou:






Qualquer dia vou postar um trabalho meu aqui no xTibia, só me falta idéias.





Contato: lucas_alvesm@hotmail.com (não dou suporte).

Skyblade

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/06/08Posts: 76Char no Tibia: Yahuu

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

ºº A erva é mais importante pra quem não conhece ela ºº

ºº Nós olhamos pra ela e falamos... A erva...ºº

Bob Marley



ATS Com sistemas unicos como:

Carros,Skate, Quests únicas

Forja de items, mais de 15 sports para jogar

areas de treino e de caça

Items totalmente editados

Tutoriais explicando como jogar no site

Eventos Diários.

Entre agora mesmo!



Esperamos Você la!

robson10

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/02/06Posts: 18

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