Ir para conteúdo
  • 0

Como adicionar delay nesse código? REP+


totonho18

Pergunta

É o seguinte, eu consegui sem problemas criar um código que teletransporta o player pro templo de sua cidade se ele não tiver com batlle, porém o tp é instantâneo, como eu faria pra add uma pausa nesse código? ou seja, pra ele levar x segundos antes de teleportar. Desde já agradeço, REP+

Eis o código

function onSay(cid, words, param, channel)
	
local pos = getPlayerTown(cid)
local fight = hasCondition(cid, CONDITION_INFIGHT)
local townpos = getTownTemplePosition(pos)

if fight == false then
	doPlayerSendTextMessage(cid, 29, "Voce foi teleportado com sucesso!")
	doTeleportThing(cid, townpos)
	doSendMagicEffect(getPlayerPosition(cid), 10)
	else	
		doPlayerSendTextMessage(cid, 29, "Espere o battle sair")	
		doSendMagicEffect(getPlayerPosition(cid), 2)		
end

	return true
end

É isso ai, me ajudem ai, sou programador clássico, mas to aprendendo a programar em lua agora, as vezes me perco um pouco! Abração...

Editado por Totonho18
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Olá,

Editado, ops não vi que tinha um efeito, estou no celular.

 

Basta substituir:

doTeleportThing(cid, townpos)

doSendMagicEffect(getPlayerPosition(cid), 10)

Por

addEvent(function()

doTeleportThing(cid, townpos)

doSendMagicEffect(getPlayerPosition(cid), 10)

end, Tempo, cid, townpos)

 

Abraços,

Editado por Skulls
Link para o comentário
Compartilhar em outros sites

  • 0

O código acima irá funcionar e servir o propósito, porém uma boa prática quando trabalhamos com functions no addEvent é re-checar os parâmetros que iremos utilizar do callback. Em outras palavras, se vamos utilizar o cid na function, temos que checar se ele ainda existe quando o addEvent for chamado.

addEvent(function()
   if isCreature(cid) then
      doTeleportThing(cid, townpos)
      doSendMagicEffect(getPlayerPosition(cid), 10)
   end
end, 5 * 1000, cid, townpos) -- 5 * 1000 representa 5 segundos ate teleportar.
Link para o comentário
Compartilhar em outros sites

  • 0

 

O código acima irá funcionar e servir o propósito, porém uma boa prática quando trabalhamos com functions no addEvent é re-checar os parâmetros que iremos utilizar do callback. Em outras palavras, se vamos utilizar o cid na function, temos que checar se ele ainda existe quando o addEvent for chamado.

addEvent(function()
   if isCreature(cid) then
      doTeleportThing(cid, townpos)
      doSendMagicEffect(getPlayerPosition(cid), 10)
   end
end, 5 * 1000, cid, townpos) -- 5 * 1000 representa 5 segundos ate teleportar.

Bem lembrado wolf, eu estava no celular ficou meio difícil fazer bonitinho.

Isso evita brechas que geram aqueles warnings chatos no console! ^^

Rep :)

Link para o comentário
Compartilhar em outros sites

  • 0

Ta ótimo, REP+ pros dois, achei interessante a função addEvent, eu já tinha visto muitas vezes mas não sabia a real função dela, essa função serve pra fazer callbacks de outras? outra coisa, eu posso colocar mais callbacks nela? Ex

addEvent(function()
   if isCreature(cid) then
	  doPlayerSendTextMessage(cid, 29, "Voce foi teleportado com sucesso!")
      doTeleportThing(cid, townpos)
      doSendMagicEffect(getPlayerPosition(cid), 10)
   end
end, pausa * 1000, cid, townpos,call4,call5........,calln) -- é permitido essa sintaxe?

obs usei call como uma chamada de instrução, e pode ela er qualquer comando

Link para o comentário
Compartilhar em outros sites

  • 0

Ta ótimo, REP+ pros dois, achei interessante a função addEvent, eu já tinha visto muitas vezes mas não sabia a real função dela, essa função serve pra fazer callbacks de outras? outra coisa, eu posso colocar mais callbacks nela? Ex

addEvent(function()
   if isCreature(cid) then
	  doPlayerSendTextMessage(cid, 29, "Voce foi teleportado com sucesso!")
      doTeleportThing(cid, townpos)
      doSendMagicEffect(getPlayerPosition(cid), 10)
   end
end, pausa * 1000, cid, townpos,call4,call5........,calln) -- é permitido essa sintaxe?

obs usei call como uma chamada de instrução, e pode ela er qualquer comando

Sim, isso mesmo, ela serve para fazer callbacks.

Você pode colocar a função que quiser nela. Ao invés de fazer como eu fiz, você pode criar uma função X e chamar ela pelo addEvent:

function X(a, b, c)

end

addEvent(X, tempo, a, b, c)

 

Você pode, ainda, chamar funções pre-definidas pelo addEvent:

addEvent(doSendMagicEffect, tempo, getPlayerPosition(cid), 10)

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...