Newtonnotwen 80 Postado Setembro 7, 2012 Share Postado Setembro 7, 2012 Como eu faço para usar a função stop event após certo tempo depois de ativar o script? Ex: Ativei o script, depois de 10 segundos ativa a função stop event: stopEvent (função) Após 10 segundos, valeu. Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/ Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Setembro 7, 2012 Share Postado Setembro 7, 2012 (editado) local event = addEvent(doPlayerAddItem, 1000, cid, 2160, 100) addEvent(stopEvent(event), 10000) Provavelmente é assim. Editado Setembro 7, 2012 por LuckOake Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334166 Compartilhar em outros sites More sharing options...
0 Newtonnotwen 80 Postado Setembro 7, 2012 Autor Share Postado Setembro 7, 2012 Não funcionou. Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334174 Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Setembro 7, 2012 Share Postado Setembro 7, 2012 (editado) function stopThat() stopEvent(abc) return true end abc = addEvent(doPlayerAddItem, 1000, cid, 2160, 100) addEvent(stopThat, 10000) Try this. OBS: Dependendo de como você tá usando a função, não vai funcionar mesmo. Qualquer coisa, posta o script aqui. Editado Setembro 7, 2012 por LuckOake Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334177 Compartilhar em outros sites More sharing options...
0 Newtonnotwen 80 Postado Setembro 7, 2012 Autor Share Postado Setembro 7, 2012 Não funcionou, eu quero fazer isso: Tem uma talkaction que utilizo que faz varias funções: Player fala this, então ativa o script e no script tem uma função assim: addEvent(doCreatureExecuteTalkAction, 1000, cid, 'this', true) Ou seja ela vai ficar ativando o script infinitamente, só que desejo parar essa função após certo tempo, assim o script iria parar de repetir. Desejo então usar a função stop event nessa função após 10 segundos: addEvent(doCreatureExecuteTalkAction, 1000, cid, 'this', true) Parando então de repetir o script. Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334187 Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Setembro 8, 2012 Share Postado Setembro 8, 2012 (editado) Fiz uma engenhoca aqui. Tô achando que não vai funfar, mas caso algum milagre aconteça, comemore. function onSay(cid, words) local atime = 10 -- Tempo até o evento parar em segundos function this() addEvent(doCreatureExecuteTalkAction, 1000, cid, 'this', true) addEvent(this, 1000) end function stopThis() stopEvent(this) end this() addEvent(stopThis, atime*1000) return true end Qualquer coisa eu altero o script depois. Eu ainda tô aprendendo a mexer nesses scripts de repetição infinita, entãããão, né. Editado Setembro 8, 2012 por LuckOake Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334349 Compartilhar em outros sites More sharing options...
0 Newtonnotwen 80 Postado Setembro 8, 2012 Autor Share Postado Setembro 8, 2012 Não está funcionando, acho que você está mandando realizar essa função novamente, porque toda vez que uso meu computador trava, creio que fique adicionando mesmo script 2 vezes por isso trava, ou seja não está encerrando a função mas sim adicionando a mesma. Obrigado. Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334364 Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Setembro 8, 2012 Share Postado Setembro 8, 2012 (editado) Rapaz, depois tenho que ver com o Mestre sobre como resolvo isso. Ou então ele aparece aqui no tópico e resolve seu problema. Mas enquanto a vida não te dá limões, faça uma laranjada. Ou um suco de abacaxi. Substitua: addEvent(this, 1000) Por isso: thisa = addEvent(this, 1000) E isso: stopEvent(this) Por isso: stopEvent(thisa) Editado Setembro 8, 2012 por LuckOake Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334375 Compartilhar em outros sites More sharing options...
0 Newtonnotwen 80 Postado Setembro 8, 2012 Autor Share Postado Setembro 8, 2012 Em fim cara, modifica ai no script, ele ta aqui: function onSay(cid, words) local ppos = getCreaturePosition(cid) local arear1 = {x=ppos.x+7, y=ppos.y+5, z=ppos.z} local arear2 = {x=ppos.x-7, y=ppos.y-5, z=ppos.z} local arear3 = {x=ppos.x+7, y=ppos.y-5, z=ppos.z} local arear4 = {x=ppos.x-7, y=ppos.y+5, z=ppos.z} local arear5 = {x=ppos.x+7, y=ppos.y, z=ppos.z} local arear6 = {x=ppos.x-7, y=ppos.y, z=ppos.z} local arear7 = {x=ppos.x, y=ppos.y+5, z=ppos.z} local arear8 = {x=ppos.x, y=ppos.y-5, z=ppos.z} addEvent(magic, 2000, p1, p2, efeito) doSendDistanceShoot(arear1, arear2, 3) doSendDistanceShoot(arear2, arear1, 3) doSendDistanceShoot(arear3, arear4, 3) doSendDistanceShoot(arear4, arear3, 3) doSendDistanceShoot(arear5, arear6, 3) doSendDistanceShoot(arear6, arear5, 3) doSendDistanceShoot(arear7, arear8, 3) doSendDistanceShoot(arear8, arear7, 3) doSendDistanceShoot(arear1, arear2, 4) doSendDistanceShoot(arear2, arear1, 4) doSendDistanceShoot(arear3, arear4, 4) doSendDistanceShoot(arear4, arear3, 4) doSendDistanceShoot(arear5, arear6, 4) doSendDistanceShoot(arear6, arear5, 4) doSendDistanceShoot(arear7, arear8, 4) doSendDistanceShoot(arear8, arear7, 4) doSendDistanceShoot(arear1, arear2, 28) doSendDistanceShoot(arear2, arear1, 28) doSendDistanceShoot(arear3, arear4, 28) doSendDistanceShoot(arear4, arear3, 28) doSendDistanceShoot(arear5, arear6, 28) doSendDistanceShoot(arear6, arear5, 28) doSendDistanceShoot(arear7, arear8, 28) doSendDistanceShoot(arear8, arear7, 28) addEvent(doCreatureExecuteTalkAction, 1000, cid, 'test4', true) return true end Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334385 Compartilhar em outros sites More sharing options...
0 brun123 369 Postado Setembro 8, 2012 Share Postado Setembro 8, 2012 (editado) Assim: local myEvent = {} local function stopMyEvent(cid) if not myEvent[cid] then return end stopEvent(myEvent[cid]) myEvent[cid] = nil end function onSay(cid, words) local ppos = getCreaturePosition(cid) local arear1 = {x=ppos.x+7, y=ppos.y+5, z=ppos.z} local arear2 = {x=ppos.x-7, y=ppos.y-5, z=ppos.z} local arear3 = {x=ppos.x+7, y=ppos.y-5, z=ppos.z} local arear4 = {x=ppos.x-7, y=ppos.y+5, z=ppos.z} local arear5 = {x=ppos.x+7, y=ppos.y, z=ppos.z} local arear6 = {x=ppos.x-7, y=ppos.y, z=ppos.z} local arear7 = {x=ppos.x, y=ppos.y+5, z=ppos.z} local arear8 = {x=ppos.x, y=ppos.y-5, z=ppos.z} addEvent(magic, 2000, p1, p2, efeito) doSendDistanceShoot(arear1, arear2, 3) doSendDistanceShoot(arear2, arear1, 3) doSendDistanceShoot(arear3, arear4, 3) doSendDistanceShoot(arear4, arear3, 3) doSendDistanceShoot(arear5, arear6, 3) doSendDistanceShoot(arear6, arear5, 3) doSendDistanceShoot(arear7, arear8, 3) doSendDistanceShoot(arear8, arear7, 3) doSendDistanceShoot(arear1, arear2, 4) doSendDistanceShoot(arear2, arear1, 4) doSendDistanceShoot(arear3, arear4, 4) doSendDistanceShoot(arear4, arear3, 4) doSendDistanceShoot(arear5, arear6, 4) doSendDistanceShoot(arear6, arear5, 4) doSendDistanceShoot(arear7, arear8, 4) doSendDistanceShoot(arear8, arear7, 4) doSendDistanceShoot(arear1, arear2, 28) doSendDistanceShoot(arear2, arear1, 28) doSendDistanceShoot(arear3, arear4, 28) doSendDistanceShoot(arear4, arear3, 28) doSendDistanceShoot(arear5, arear6, 28) doSendDistanceShoot(arear6, arear5, 28) doSendDistanceShoot(arear7, arear8, 28) doSendDistanceShoot(arear8, arear7, 28) if not myEvent[cid] then addEvent(stopMyEvent, 10 * 1000, cid) end myEvent[cid] = addEvent(doCreatureExecuteTalkAction, 1000, cid, 'test4', true) return true end Detalhe 1: sua script podia ser bem reduzida '' 2: se o player loga antes de executar a próxima talkaction (atráves do comando doCreatureExecuteTalkAction), vai dar erros no console. '' 3: se o player usar o comando continuadamente, irá acumular efeitos e apenas o efeito do primeiro irá ser finalizado, os outros vão continuar rodando infinitamente '' 4: o player fica repetindo as palavras da talkaction durante 10 segundos '' 5: tem uma função no meio com callback "magic" que não existe, vai dar erros no console Um jeito de se fazer que vai evitar muitos problemas: local function myCustomFunction(cid, turn) if not isCreature(cid) or (turn and turn <= 0) then return true end local t = turn or 10 local ppos = getCreaturePosition(cid) local arear1 = {x=ppos.x+7, y=ppos.y+5, z=ppos.z} local arear2 = {x=ppos.x-7, y=ppos.y-5, z=ppos.z} local arear3 = {x=ppos.x+7, y=ppos.y-5, z=ppos.z} local arear4 = {x=ppos.x-7, y=ppos.y+5, z=ppos.z} local arear5 = {x=ppos.x+7, y=ppos.y, z=ppos.z} local arear6 = {x=ppos.x-7, y=ppos.y, z=ppos.z} local arear7 = {x=ppos.x, y=ppos.y+5, z=ppos.z} local arear8 = {x=ppos.x, y=ppos.y-5, z=ppos.z} addEvent(magic, 2000, p1, p2, efeito) doSendDistanceShoot(arear1, arear2, 3) doSendDistanceShoot(arear2, arear1, 3) doSendDistanceShoot(arear3, arear4, 3) doSendDistanceShoot(arear4, arear3, 3) doSendDistanceShoot(arear5, arear6, 3) doSendDistanceShoot(arear6, arear5, 3) doSendDistanceShoot(arear7, arear8, 3) doSendDistanceShoot(arear8, arear7, 3) doSendDistanceShoot(arear1, arear2, 4) doSendDistanceShoot(arear2, arear1, 4) doSendDistanceShoot(arear3, arear4, 4) doSendDistanceShoot(arear4, arear3, 4) doSendDistanceShoot(arear5, arear6, 4) doSendDistanceShoot(arear6, arear5, 4) doSendDistanceShoot(arear7, arear8, 4) doSendDistanceShoot(arear8, arear7, 4) doSendDistanceShoot(arear1, arear2, 28) doSendDistanceShoot(arear2, arear1, 28) doSendDistanceShoot(arear3, arear4, 28) doSendDistanceShoot(arear4, arear3, 28) doSendDistanceShoot(arear5, arear6, 28) doSendDistanceShoot(arear6, arear5, 28) doSendDistanceShoot(arear7, arear8, 28) doSendDistanceShoot(arear8, arear7, 28) addEvent(myCustomFunction, 1000, cid, t - 1) end function onSay(cid, words) myCustomFunction(cid, 10) return true end Editado Setembro 8, 2012 por brun123 Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334404 Compartilhar em outros sites More sharing options...
0 Newtonnotwen 80 Postado Setembro 8, 2012 Autor Share Postado Setembro 8, 2012 (editado) Valeu brun123, primeiramente obrigado pelas dicas e em segundo por aperfeiçoar e corrigir o script, REP+. LuckOake, para essa semana que vem ti dou REP+, estou "devendo" 4, inclusive um deles é seu. Obrigado pela compreensão. Duvida Sanada por: brun123. Reportado para moverem. Editado Setembro 8, 2012 por Newtonnotwen Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334408 Compartilhar em outros sites More sharing options...
0 Critical 70 Postado Setembro 8, 2012 Share Postado Setembro 8, 2012 Dúvida sanada, tópico movido. Atenciosamente, Critical. Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334420 Compartilhar em outros sites More sharing options...
0 juan500 5 Postado Setembro 8, 2012 Share Postado Setembro 8, 2012 nuss esse brun123 sabe mt de script to ate empresionado!!!! Link para o comentário https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/#findComment-1334441 Compartilhar em outros sites More sharing options...
Pergunta
Newtonnotwen 80
Como eu faço para usar a função stop event após certo tempo depois de ativar o script?
Ex:
Ativei o script, depois de 10 segundos ativa a função stop event:
stopEvent (função)
Após 10 segundos, valeu.
Link para o comentário
https://xtibia.com/forum/topic/193661-d%C3%BAvida-stop-event/Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados