Ir para conteúdo

stringDev

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    stringDev recebeu reputação de ciroc em [BUG EM TODOS OS OTS] TFS 1.X, FIXED!   
    Muito boa essa soluçao emm luki, e concordo com o Ciroc, NAO É APENAS NO WALKBACK.LUA, é em teleports, tiles, etc.. Sendo um erro sim de source, passei por isso quase perdi meu servidor, a minha solução imediata foi tirar todos FROMPOST ou LASTPOS dos meus scripts kkk, mas agora vou corrigir dessa forma, muito obrigado
  2. Gostei
    stringDev deu reputação a Absolute em [BUG EM TODOS OS OTS] TFS 1.X, FIXED!   
    Fala meus lindos!
     
    Há alguns dias diversos servidores grandes como: Shadowcores, Fortera, Dolera, Inflame, Forsaken entre demais proprietários de servidores que conversaram comigo, me disseram o ocorrido e fui investigar o que realmente estava ocorrendo.
     
    Um engraçadinho descobriu a FALHA no TFS e estava realizando em todos os servidores pedindo dinheiro para revelar o bug, mas não sabia a solução.
     
    Então com permissão, tomei posse a servidor de um cliente INFLAME-GLOBAL para junto com ele ADM Henrique achar o temível bug que causava um crash no servidor, investigamos e ACHAMOS!
     
    Então resolvi conversar com meu amigo @Bruno Minervino para reporta-lo (pois muitos usam sua base VANAHEIM GLOBAL) e chegarmos logo ao fix problem.
     
    Então, não contente com a situação resolvemos fixar o mais rápido possível e vim trazer as INFORMAÇÕES do BUG e a SOLUÇÃO para quem ainda não arrumou.

    Entenda como o BUG é causado:
    https://www.youtube.com/watch?v=ube4b-q4Ncg&spfreload=10

     
    O player retorna para a from pos, quando ele realiza a ação... BUMP, ele fica dando um stack infinito, causando um LOOP infinito e por fim, o servidor é crashado (derrubado)
    Erro: [Error - MoveEvent::executeStep] Call stack overflor
    Ou seja, ele causa um STACK OVERFLOW, para quem não sabe este é um dos erros mais estúpidos, ele significa um ESTOURO DE PILHA... isso ocorre quando uma variável está tentando gravar mais informações do que é permitido na memória, quando o bug ocorre o loop infinito causa isto.
     
    Este erro está presente apenas nas atualização do novo TFS, Versão 1.1 e 1.2, portanto junto com Bruno estudamos e trazemos o FIX para quem usa 1.1 e 1.2.

    Vamos arrumar?
    É simples, siga comigo:
     
    Em suas sources, abra o arquivo creature.cpp procure por:
    void Creature::onCreatureAppear(Creature* creature, bool) Vamos adicionar um isLogin, ou seja substitua a linha a cima por:
    void Creature::onCreatureAppear(Creature* creature, bool isLogin)  
    Ainda no creature.cpp procure por:
    if (creature == this) { if (useCacheMap()) { isMapLoaded = true; updateMapCache(); } Logo abaixo pule uma linha e adicione:
    if (isLogin) { setLastPosition(getPosition()); }  

    Agora abra o seu creature.h
    Na linha 156 procure por:
    virtual void addList() = 0; Pule uma linha e adicione:
    const Position& getLastPosition() const { return lastPosition; } void setLastPosition(const Position& newLastPos) { lastPosition = newLastPos; } Ainda no creature.h procure por
     
    virtual void onCreatureAppear(Creature* creature, bool); Substitua a linha a cima por:
    virtual void onCreatureAppear(Creature* creature, bool isLogin); Procure por:
    Outfit_t defaultOutfit; Pule uma linha e adicione:
    Position lastPosition;  
     
    Agora abra o seu game.cpp e procure por:
    ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags /*= 0*/) { Logo abaixo adicione:
    creature->setLastPosition(creature->getPosition());  
    Agora por fim, abra seu movement.cpp procure por:
    LuaScriptInterface::pushPosition(L, fromPos); Substitua a linha a cima por:
    LuaScriptInterface::pushPosition(L, creature->getLastPosition());  
     
    Pronto pessoal, você está livre desse bug que pode ter lhe prejudicado muito.
     
    Ao engraçadinho que descobriu e saiu espalhando, que pena em jovem.
     
     
    Espero ter ajudado, não esqueçam de fixar em seu servidor!
     
     
    Até a próxima!

Informação Importante

Confirmação de Termo