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

Skulls
Por Skulls
em Tutoriais de Clients
  • 1
  • 2

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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,

Caronte

Ex-Moderador de Scripting
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 25/09/10Posts: 1341Gênero: Masculino

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

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

Furabio

Why be a king.. when you can be a god
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 962Gênero: Masculino

Belo tutorial, parabéns Skulls.

EQD4Qy4.gif

 

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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!

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

@Skulls

Parabens pelo conteudo!

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

@Skulls

Parabens pelo conteudo!

Obrigado! Vou aprendendo, ai trago coisas mais complexas mais pra frente! :p

Sirarcken

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/11/15Posts: 174Char no Tibia: Takeiflexa Saikoreno

Cara ,fico impressionado vocês são muito fodas ,parabéns.

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Obrigado! Vou aprendendo, ai trago coisas mais complexas mais pra frente! :p

Qualquer coisa man e so chamar q eu ajudo com oq eu souber

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

Qualquer coisa man e so chamar q eu ajudo com oq eu souber

O cara muito obrigado, pode deixar que precisando vou te amolar sim :p

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

O que isso faz? Tem alguma imagem?

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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.

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

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.

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

 

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?

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

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

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

Piores erros de se diagnosticar é os que não acontecem nada =/

  • 1
  • 2