Ir para conteúdo
Banner com Efeitos

carlos123456

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    carlos123456 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!
  2. Obrigado
    carlos123456 deu reputação a Osupremo em RME [ERROR] Failed to Load House - Failed to Load Spawn   
    Então pessoal, eu estava sofrendo com este problema das houses e spawn... Então eu coloquei os arquivos que estavam na área de trabalho, no ( disco C: ) do meu pc, e agora ta funcionado, espero ajudar alguém.
  3. Gostei
    carlos123456 deu reputação a Cat em Resolvendo problema de logar com mount   
    Fala galera, um membro estava com um bug no servidor, que o player morria e logava montado. O problema não tinha sido resolvido mas logo após de mover o tópico o membro me enviou uma mensagem então postarei como resolver para vocês.
    Créditos: Jamison
     
    Vá em DATA/Creaturescripts/scripts/Crie um arquivo.xml ou copie outro e renomeie para unmount, adicione:
    function onLogin(cid) doPlayerSetMounted(cid, mounting, 1) return true end Em DATA/Creaturescripts/Scripts/Login.lua adicione
    registerCreatureEvent(cid, "unmount") Em DATA/Creaturescripts/Creaturescripts.xml Adicione:
    <event type="login" name="unmount" event="script" value="unmount.lua"/> Abra DATA/XML/Mounts.xml e logo no início adicione:
    <mount id="0" clientId="0" name="Unmount" premium="no" /> É isso galera, quem tiver algum problema é só falar que pode dar erro em alguns servidores. Até a próxima.
  4. Obrigado
    Fala galerinha Vim aqui trazer pra vocês um negocio bem simples, Mais creio que vai ser bem útil pra quem usa tfs 0.3.6, Bom oque isso faz ?, Ao invés da sua barra de vida e mana ficar com aqueles números gigantes, Vai ficar por porcentagem %%, independente do level do personagem vai ficar 100/100 % MAX, Então vamos lá vocês vão ter que ter as souces que você usa em seu servidor, Abra elas com Deve C++, Agora vá em protocolgame.cpp, Em seguida:
     
    PROCURE POR:
     
    msg->AddU16(player->getHealth());
     
    AGORA SUBSTITUA POR:
     
    msg->AddU16((uint16_t)std::ceil(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH)));
     
    NO MESMO ARQUIVO PROCURE POR:
     
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));
     
    SUBSTITUA POR:
     
    msg->AddU16((uint16_t)100);
     
    PROCURE POR:
     
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA));
     
    SUBSTITUA POR:
     
    msg->AddU16((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)));
     
    POR ULTIMO NO MESMO ARQUIVO PROCURE POR:
     
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXMANA));
     
    AGORA SUBSTITUA POR:
     
    msg->AddU16((uint16_t)100);
     
    Simples né ?, Agora só salvar e compilar!, Então é isso pessoal, Eu decidi postar isso aqui porque um dia procurei muito e não achei aqui pelo TK, Para versão 0.3.6, Então espero que esse simples tutorial ajude muita gente (...), FLLW's
     
    OBS: Se estiver na área errada peço desculpas, É peço que algum moderador movam pra área correta pls.
     
  5. Curtir
    carlos123456 deu reputação a Hugoo222222 em (Resolvido)Não consigo logar no meu próprio OT!   
    CONSEGUI RESOLVER GALERA, VOU EDITAR ESSA RESPOSTA EXPLICANDO COMO!

    ALGUEM ADICIONA A TAG! NAO SEI SE TEM
     
    UHUUUUUUUUUUUUUUUUUUUUUUUL!!!!
     
     
     
     
    Abra o arquivo hosts (C: / Windows / system32 / drivers / etc / hosts no Windows).   Eu recomendo usar o Notepad ++ para fazer isto, pois se usar programa de edição de texto como o bloco de notas padrão do Windows, ele irá transformar o arquivo hosts em um arquivo .txt, em seguida, não vai funcionar.   ATENÇÃO: Se você não consegue salvar o arquivo hosts, verifique se ele está aberto apenas uma vez e lembre-se de executar o Notepad ++ como administrador.     No arquivo hosts escreva seu endereço IPv4 do lado o seu IP fixo.
    Em seguida, adicione o seu IP fixo no config.lua e agora, diferente de antes use o seu IP fixo em seu IP Changer para conectar-se ao seu servidor. Quando tiver o mesmo problema ao se conectar de um computador diferente da mesma rede, você pode fazer a mesma coisa lá, com o endereço IPv4 do PC host.   Pra quem não lembra, o IPv4 é esse:       Nota: Se você tentou acessar este e outras pessoas não podem se conectar após isso, remova a entrada, use seu IP global no config.lua (ou novo ip fixo) e tente se conectar com o seu endereço IPv4 em seu IP Changer.  
     
    Créditos: Limos (OT Land)
    Ele resolveu pra mim pelo TeamViewer e estou repassando aqui no TK.

    Valeu gente!

Informação Importante

Confirmação de Termo