Ir para conteúdo
  • 0

Repetir Effects Varias vezes


HeelSpy

Pergunta

Um amigo tinha me passado uma função na lib que fazia o efeito se repetir por varias vezes, só lembro que era assim



O efeito ficava se repetindo varias vezes a cada 1 seg



Função(cid, effect, tempo)



Alguém pode fazer pra mim ?




Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

 

function repeatEff(cid, eff, tempo)
   if not isCreature(cid) or tempo == 0 then return end
   doSendMagicEffect(getThingPos(cid), eff)
   addEvent(repeatEff, 1000, cid, eff, tempo-1)
end

 

exemplo:

 

repeatEff(cid, 21, 15)

 

no caso vai repetir o efeito a cada 1s por 15segundos...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz assim:

 

function doRepeatEffect(cid, effect, vezes, intervalo)
if not effect then
return
end
if not vezes then
return
end
if not intervalo then
intervalo = 1000
end
    local pos = getThingPos(cid)
    for i = 1, vezes do
        addEvent(doSendMagicEffect, i*intervalo, pos, effect)
    end
end

Lembrando que o intervalo deve ser em Milesegundos.

doRepeatEffect(cid, 3, 10, 1000)

Abraços

 

Tem que cuidar que o player pode deslogar.

 

Outra coisa é que ele chama vários addEvents, se você usasse recursividade, se alguma das condições desse errada, ele já parava por ali.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Tem que cuidar que o player pode deslogar.

 

Outra coisa é que ele chama vários addEvents, se você usasse recursividade, se alguma das condições desse errada, ele já parava por ali.

Realmente, testei aqui agora, tem alguns problemas. Vou tirar e talvez eu poste novamente quando resolver.

Abraço ;]

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente, testei aqui agora, tem alguns problemas. Vou tirar e talvez eu poste novamente quando resolver.

Abraço ;]

 

Não precisa tirar, a sua função ta certa, só alguns detalhes que daria pra mudar.

 

Anyway, não sei se vai fugir muito do que o slicer postou.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Não precisa tirar, a sua função ta certa, só alguns detalhes que daria pra mudar.

 

Anyway, não sei se vai fugir muito do que o slicer postou.

Vou arrumar a questão do Logout e se o player andar também, o efeito fica na antiga posição. Ai depois posto.

Abraços...

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado a ambos.

 

@Slicer

 

Vlw mesmo cara, funcionou mas teria como de algum modo mudar a posição do efeito ? para que não saia torto ? com:

 

{x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}

Link para o comentário
Compartilhar em outros sites

  • 0

da pra fazer, mas o problema de efeitos tortos é q tu tem q arrumar pra cada efeito, isso q eh foda kk'

 

oq podes fazer eh por isso na lib:

local effsTortos = {
   --[eff] = {valores para corrigi-los},
   [21] = {x= 1, y= 0}, --soh exemplo 
   [23] = {x= 0, y= -1},
}
function repeatEff(cid, eff, tempo)
   if not isCreature(cid) or tempo == 0 then return end
   local p = getThingPos(cid)
   if effsTortos[eff] then
      p = {x= p.x+(effsTortos[eff].x), y= p.y+(effsTortos[eff].y), z= p.z}
   end
   doSendMagicEffect(p, eff)
   addEvent(repeatEff, 1000, cid, eff, tempo-1)
end

os valores da tabela sao soh exemplos... no caso tu bota os effs tortos do teu serv e bota os valores de x e y para corrigi-los...

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

  • 0

da pra fazer, mas o problema de efeitos tortos é q tu tem q arrumar pra cada efeito, isso q eh foda kk'

 

oq podes fazer eh por isso na lib:

local effsTortos = {
   --[eff] = {valores para corrigi-los},
   [21] = {x= 1, y= 0}, --soh exemplo 
   [23] = {x= 0, y= -1},
}
function repeatEff(cid, eff, tempo)
   if not isCreature(cid) or tempo == 0 then return end
   local p = getThingPos(cid)
   if effsTortos[eff] then
      p = {x= p.x+(effsTortos[eff].x), y= p.y+(effsTortos[eff].y), z= p.z}
   end
   doSendMagicEffect(p, eff)
   addEvent(repeatEff, 1000, cid, eff, tempo-1)
end

os valores da tabela sao soh exemplos... no caso tu bota os effs tortos do teu serv e bota os valores de x e y para corrigi-los...

 

Aqueles efeitos maiores que 64x64 têm que envia-los em outra posição pra sair no lugar certo?

Link para o comentário
Compartilhar em outros sites

  • 0

n sei dizer kk' eh q pelo menos alguns da pxg o cara tem q botar em outras posis pra eles sairem corretos... mas nem todos q tem esse problema sao grandes...

Link para o comentário
Compartilhar em outros sites

  • 0

Adicionei uns 192x192, mas saem errados. Estou procurando uma solução pra isso mellow.png

Offset para efeitos, é possível editando o otclient do mesmo modo que o tibia possui offset para criaturas... Eu também não gosto do jeito que efeitos grande são "tratados", gambiarra total... Você ia precisar editar também, a estrutura do dat e com isso os editores...

Link para o comentário
Compartilhar em outros sites

  • 0

Offset para efeitos, é possível editando o otclient do mesmo modo que o tibia possui offset para criaturas... Eu também não gosto do jeito que efeitos grande são "tratados", gambiarra total... Você ia precisar editar também, a estrutura do dat e com isso os editores...

 

Não é possível fazer offset negativo pra criaturas. Acredito que pra efeitos também. Buga toda a renderização. Objetos com offset negativo ficam por baixo dos grounds anteriores.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...