Ir para conteúdo

[OTC] Adaptando seu OTC para aceitar a função doCreatureSetHideHealth


Skulls

Posts Recomendados

Boa noite galera,

 

Estou a alguns dias tentando resolver um problema que tive com o OTC: ao usar a função doCreatureSetHideHealth simplesmente o player trava e não consegue fazer nada até o hidehealth ser desfeito.

Isso ocorre porque, na source do OTC, a declaração de morte é feita baseada em porcentagem de vida e essa inexiste quando o hideHealth é acionado, somente a vida total e a vida máxima é que continuam com valores relevantes.

 

Então, o OTC simplesmente te considera como um morto vivo quando você usa hideHealth e você não pode realizar nenhuma ação no jogo a não ser deslogar.

 

Após alguns dias fuçando consegui finalmente resolver o problema e vim compartilhar a solução com vocês.

 

1) Na source do seu OTC vá em creatures.cpp.

 

Crie as funções abaixo:

double Creature::getLocalPlayerHealth()
{
    return g_game.getLocalPlayer()->getHealth();
}
 
bool Creature::isDead()
{
    if (!isLocalPlayer()) return m_healthPercent <= 0;
    double m_health = getLocalPlayerHealth();
    return m_health <= 0;
}

Substitua:

if(m_healthPercent < 1) // creature is dead
    return;

por

if(m_healthPercent < 1) // creature is dead
    if (!isLocalPlayer()) return;

2) Vá em creature.h e troque a declaração da função isDead() por:

bool isDead();

3) Em game.cpp troque a função proccessDeath por:

void Game::processDeath(int deathType, int penality)
{
    if (m_localPlayer->getHealth() > 0){
        m_dead = true;
        m_localPlayer->stopWalk();
         
        g_lua.callGlobalField("g_game", "onDeath", deathType, penality);
    }
}

Pronto, o seu OTC agora suporta a função doCreatureSetHideHealth (e de bônus você consegue enxergar o seu player com uma barra preta e seu nome, apesar dos outros não te verem).

 

Bom é simples, mas útil espero que ajude.

Abraços,

Link para o comentário
Compartilhar em outros sites

Pô muito bom @@Skulls, tá trazendo conteúdos bem legais, continue assim :D

com certeza irei usar quando começar a trabalhar com OTClient.

Obrigado! Começa sim, te abre um leque enorme de possibilidades!

 

Belo tutorial, parabéns Skulls.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

O que isso faz? Tem alguma imagem?

Não, pois na verdade é só um bug fix. Existe uma função no TFS chamada creatureHideHealth que faz com que a vida da criatura não apareça e que funciona bem para cipclient. Porém, o OTC para de responder quando usado com ela e só volta quando a vida da criatura voltar a aparecer. Isso pq ele considera que o player estava morto e, portanto, não responde a suas ações. Esse tópico resolve esse problema e torna o hidehealth funcional para otc.

Link para o comentário
Compartilhar em outros sites

Não, pois na verdade é só um bug fix. Existe uma função no TFS chamada creatureHideHealth que faz com que a vida da criatura não apareça e que funciona bem para cipclient. Porém, o OTC para de responder quando usado com ela e só volta quando a vida da criatura voltar a aparecer. Isso pq ele considera que o player estava morto e, portanto, não responde a suas ações. Esse tópico resolve esse problema e torna o hidehealth funcional para otc.

 

Ah sim, agora eu entendi, parabéns cara!

 

Saberia me dizer por que os mods que baixo, nenhum funciona? Apenas um "funcionou", mas tem um erro e por isso não funcionou.

Link para o comentário
Compartilhar em outros sites

 

Ah sim, agora eu entendi, parabéns cara!

 

Saberia me dizer por que os mods que baixo, nenhum funciona? Apenas um "funcionou", mas tem um erro e por isso não funcionou.

Bom, tem N fatores que podem fazer o mod não funcionar. É muito dificil dizer, ainda mais cada mod comportando de um jeito diferente. Apresentam algum erro ou algum comportamento diferente ou simplesmente não dão sinal de vida?

Link para o comentário
Compartilhar em outros sites

Bom, tem N fatores que podem fazer o mod não funcionar. É muito dificil dizer, ainda mais cada mod comportando de um jeito diferente. Apresentam algum erro ou algum comportamento diferente ou simplesmente não dão sinal de vida?

Simplesmente não da sinal de vida, nem erro da kkk

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...