Ir para conteúdo
  • 0

[OTC] HideHealth torna o player imóvel


Skulls

Pergunta

Fala galera, tudo bem?

 

Bom eu queria fazer uma magia de invisibilidade e para isso estou usando a função: doCreatureSetHideHealth(cid, true).
Funciona normal no cliente padrão. Porém, quando testo no OTC, o player fica incapaz de fazer qualquer coisa até a vida aparecer novamente, como se estivesse morto ou num modo espectador.

 

Alguém sabe como resolver isso?

 

Abraços,

 

 

 

Editado por Skulls
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

@@Skulls

no caso vc quer usar o client da cip tbm mas se fosse so otclient dava pra tu fazer um module que executa-se uma funcao assim

local gameMap = modules.game_interface.getMapPanel()
gameMap:setDrawNames(false)
gameMap:setDrawHealthBars(false)

sobre o a funcao deixar o player imovel deve ter sido alguma limitação que os cara deve ter posto para previnir algum bug, fiquei ontem analisando a source do otc pra ve se achava algo e nao achei : (

Link para o comentário
Compartilhar em outros sites

  • 0

@@Skulls

no caso vc quer usar o client da cip tbm mas se fosse so otclient dava pra tu fazer um module que executa-se uma funcao assim

local gameMap = modules.game_interface.getMapPanel()
gameMap:setDrawNames(false)
gameMap:setDrawHealthBars(false)
sobre o a funcao deixar o player imovel deve ter sido alguma limitação que os cara deve ter posto para previnir algum bug, fiquei ontem analisando a source do otc pra ve se achava algo e nao achei : (

@UP

Resolvido:

 

Nas sources do otclient ir em creature.cpp e criar as funções:

 

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;
}
Ainda em creature.cpp alterar na função drawInformation a linha
if(m_healthPercent < 1) // creature is dead
return;
por
if(m_healthPercent < 1) // creature is dead
if (!isLocalPlayer()) return;
Em creature.h alterar a declaração de isDead para somente:
bool isDead();
Em game.cpp alterar a função processDeath 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);
}
}

 

Editado por Skulls
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...