manow add no msn la preciso d ajuda
- Fórum
- OTServ
- Tutoriais
- Tutoriais de Scripting
- Addevent(Sem Bugs)
info
Grupo: Campones
Registrado: 19/09/08
Posts: 39
Reputação: 0
Char no Tibia: nohave

info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Tutorial simples mais pego a parte legal.
Os argumentos da função do addEvent utiliza (....) por isso fica os parâmetros da função normal ![]()
Tutorial Aprovado
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

a única coisa do addEvent que muda é só um parâmetro que no caso é o delay times em primeiro lugar e depois segue a ordem normal
exemplos:
vou usar delay sendo como 1 segundo (1000)
doCreatureAddMana(cid, mana) --> parâmetros: cid e mana
addEvent(doCreatureAddMana, 1000, cid, mana)
doBroadcastMessage(message, type) --> parâmetros: message e type
addEvent(doBroadcastMessage, 1000, message, type)
doShowTextDialog(cid, itemid, text) --> parâmetros: cid, itemid, text
addEvent(doShowTextDialog, 1000, cid, itemid, text)
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Lembrando que, quando você usa a seguinte estrutura:
addEvent(print, 10000, getPlayerPosition(cid).x)
vai ser printado a posição x que ele estava no momento em que o addEvent foi executado e não a posição de 10 segundos depois.
Para printar a posição x que o player vai estar em 10 segundos, deve-se usar a seguinte estrutura:
addEvent(function() print(getPlayerPosition(cid).x) end, 10000)
Editado Outubro 22 por Demonbholder
info
Grupo: Campones
Registrado: 26/10/07
Posts: 25
Reputação: +1
Char no Tibia: Hayden Almeida

Aqui não funcionou não sei pq... ![]()
info
Grupo: Campones
Registrado: 06/05/09
Posts: 52
Reputação: 0

cara, isso me ajudou muito!²
obrigado! ![]()
Ta errado seu exemplo cara,
Isso também vai dar erro cara, tu ta usando addevent dentro da função auxiliar, voce ta verificando se é criatura e executando a função addeventTipo: Tutorial.
function doTeleportThing2(cid, toPos, time) if isCreature(cid) then addEvent(doTeleportThing, time * 1000, cid, toPos) end return true endfunction onSay(cid, words, param) local pos = {x = 1, y = 2, z = 3} if getPlayerStorageValue(cid, 12345) > 0 then doTeleportThing2(cid, pos, 10) setPlayerStorageValue(cid, 12345, 0) end return true end
Voce tem que usar o addevent, com a função nele contida verificando e teleportando, ou fazendo a ação que for imediatamente, ou seja sem usar addEvent dentro da função auxiliar
function doTeleportThing2(cid, toPos, time)
if isCreature(cid) then
doTeleportThing(cid, toPos)
end
return true
end
function onSay(cid, words, param)
local pos = {x = 1, y = 2, z = 3}
local time = 10
if getPlayerStorageValue(cid, 12345) > 0 then
addEvent(doTeleportThing2, time * 1000, cid, pos, 10)
setPlayerStorageValue(cid, 12345, 0)
end
return true
end
Assim que deveria ser




info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit
Tipo: Tutorial.
Autor: Skymagnum(Skyforever).
Encina: Como usar corretamente o addEvent sem bugs e erros no console.
Creio que todos vocês conheçam a função addEvent senão vou explicar, ela funciona da seguinte maneira
addEvent(function, seconds, ...).
Bom se você usar a função doSendMagicEffect(position, effect) ela vai soltar o efeito na hora correto?
com addEvent você pode fazer o efeito soltar depois se usar corretamente
exêmplo de uso incorreto:
agora veremos do jeito certo:
.
O addEvent se baseia em
addEvent(função, tempo, aqui você segue os parâmetros da função normalmente como se fosse sem o addEvent).
Como vocês já sabem se o addEvent envolver cid e a pessoa logar/morrer pode dar vários erros no console mais acalme-se para isso há uma solução você somente deve criar uma função e nela colocar:
Exêmplo de um script que irá dar erro se a pessoa logar/morrer.
function onSay(cid, words, param) local pos = {x = 1, y = 2, z = 3} if getPlayerStorageValue(cid, 12345) > 0 then addEvent(doTeleportThing, 10 * 1000, cid, pos) setPlayerStorageValue(cid, 12345, 0) end return true end.
Se a pessoa logar/morrer nesse período estipulado no addEvent irá dar erro no console de creature not found.
Agora um jeito de arrumar seria criando uma função e colocando if isCreature(cid) then nela ficando assim:
function onSay(cid, words, param) local pos = {x = 1, y = 2, z = 3} if getPlayerStorageValue(cid, 12345) > 0 then doTeleportThing2(cid, pos, 10) setPlayerStorageValue(cid, 12345, 0) end return true endBom é meu primeiro tutorial então espero que gostem.
Editado Outubro 22 por Skymagnum