BO

TFS 0.4 ERRO Call stack overflow.

Por boxxer321, 06 de jun. de 2020 em Scripts

4
1.6k
boxxer321B
06 de junho de 2020 às 23:20

Galera, estou usando esse script

  Ocultar conteúdo
function onStepIn(cid, item, position, fromPosition)
         local storage = 89301 --storage gravada
         local delay = 2--tempo configuravel do delay
         if (getPlayerStorageValue(cid, storage) <= os.time()) then
            setPlayerStorageValue(cid, storage, os.time()+delay)
            return true
         else
             doTeleportThing(cid, fromPosition, false)
             doPlayerSendCancel(cid, "Espere um momento para usar esta escada.")
         end
   return true 
end

 

 

e quando eu subo uma escada, da esse erro no console e debug no client:

[Error - MoveEvent::executeStep] Call stack overflow.

e quando removo o script, o erro some e sem debug.

 

alguem pra ajudar?

Yan LiimaY
07 de junho de 2020 às 14:32

Esse erro ocorre porque você está utilizando um script de onStepIn, na pos Y que retorna você pra outra posição(X), na posição X o onStepIn te retorna pra posição Y. Isso causa um loop infinito e ai vem o erro stack overflow...

 

Tu poderia utilizar da seguinte maneira:

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
         local storage = 89301 --storage gravada
         local delay = 2--tempo configuravel do delay
         if (getPlayerStorageValue(cid, storage) <= os.time()) then
            setPlayerStorageValue(cid, storage, os.time()+delay)
         else
             doTeleportThing(cid, fromPosition, true)
             doPlayerSendCancel(cid, "Espere um momento para usar esta escada.")
         end
   return true 
end

Não tenho certeza se o debug irá ser corrigido. Porém, ainda irá retornar o erro de stack overflow(se você persistir em ir na escada enquanto ainda tem delay). Acho melhor você retirar esse script. Vi gente com problemas assim no TFS 1.X, parece que fizeram uma alteração lá, mas não sei se realmente vale apena.

Editado Junho 7 por Yan Liima

boxxer321B
07 de junho de 2020 às 21:53
7 horas atrás, Yan Liima disse:

Esse erro ocorre porque você está utilizando um script de onStepIn, na pos Y que retorna você pra outra posição(X), na posição X o onStepIn te retorna pra posição Y. Isso causa um loop infinito e ai vem o erro stack overflow...

 

Tu poderia utilizar da seguinte maneira:

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
         local storage = 89301 --storage gravada
         local delay = 2--tempo configuravel do delay
         if (getPlayerStorageValue(cid, storage) <= os.time()) then
            setPlayerStorageValue(cid, storage, os.time()+delay)
         else
             doTeleportThing(cid, fromPosition, true)
             doPlayerSendCancel(cid, "Espere um momento para usar esta escada.")
         end
   return true 
end

Não tenho certeza se o debug irá ser corrigido. Porém, ainda irá retornar o erro de stack overflow(se você persistir em ir na escada enquanto ainda tem delay). Acho melhor você retirar esse script. Vi gente com problemas assim no TFS 1.X, parece que fizeram uma alteração lá, mas não sei se realmente vale apena.

agora eu uso a escada e nunca mais consigo usar :(

boxxer321B
08 de junho de 2020 às 03:54

@Yan Liima