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!