Ir para conteúdo

Featured Replies

Postado

Olá, um amigo está montando um servidor e estou tentando ajudá-lo a resolver os problemas....
Sou leigo no asssunto, mas pesquiso para encontrar respostas...
Pesquisei muito antes de chegar aqui, e só cheguei porque não encontrei respostas.
O problema é que a barra de vida e de mana, está mostrando por porcentagem 100life/100mana
E a gente quer aquela contagem normal, tipo level 8 185life/35mana 

Se alguem puder ajudar, ele falou algo sobre source.
E está no Linux.
 

Esse é meu primeiro post no fórum, caso tenha postado no lugar errado apenas mova para o lugar certo, por favor.
Desde já agradeço.
Kradula,
Um abraço!

P.s: engraçado só achei gente querendo mudar do normal pra porcentagem, o meu caso é o contrário.😝

  • Respostas 5
  • Visualizações 354
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • https://tibiaking.com/forums/topic/55507-resolvidopedido-hp-mp-por-porcentagem/ só ver como ta o script na source, e fazer ao contraio, modificando o script de que faz a contagem pelo script padrão.

  • Só reverter o processo... Em protocolgame.cpp procure por:   msg->put<uint16_t>(player->getHealth()); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO

Posted Images

Postado
2 minutos atrás, Kradula disse:

E a gente quer aquela contagem normal, tipo level 8 185life/35mana 

https://tibiaking.com/forums/topic/55507-resolvidopedido-hp-mp-por-porcentagem/
só ver como ta o script na source, e fazer ao contraio, modificando o script de que faz a contagem pelo script padrão.

Postado

Só reverter o processo...


Em protocolgame.cpp procure por:

 

msg->put<uint16_t>(player->getHealth());

msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));

 

Substitua

:

if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0)
    {
        msg->put<uint16_t>(uint16_t(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH)));
        msg->put<uint16_t>(100);
    }
    else
    {
        msg->put<uint16_t>(0);
        msg->put<uint16_t>(0);  
    }


Mude Para:

 

if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0)
{
    msg->put<uint16_t>(player->getHealth());
    msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));
}
else
{
    msg->put<uint16_t>(0);
    msg->put<uint16_t>(0);
}

 

 

Depois procure por:

msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA));

msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA));

 

Substitua:


 if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0)
    {
        msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA) * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA));
        msg->put<uint16_t>(100);
    }
    else
    {
        msg->put<uint16_t>(0);
        msg->put<uint16_t>(0);
    }

 

 

Muda Para:

 

 

if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0)
{
    msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA));
    msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA));
}
else
{
    msg->put<uint16_t>(0);
    msg->put<uint16_t>(0);
}
 

 

Agora é só compilar sua sourcer

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Postado
  • Autor

Olá, obrigado pelos feedbacks...
mas a principio o que mandou procurar no protocolgame.cpp não achou...
detalhe: a versão do Tibia é a 8.6

Ele procurou tudo q falava de maxhealth e mana e o resultado foi esse:

 

void ProtocolGame::AddPlayerStats(NetworkMessage &msg) {
    msg.addByte(0xA0);

    if (oldProtocol) {
        msg.add<uint16_t>(std::min<int32_t>(player->getHealth(), std::numeric_limits<uint16_t>::max()));
        msg.add<uint16_t>(std::min<int32_t>(player->getMaxHealth(), std::numeric_limits<uint16_t>::max()));
    } else {
        msg.add<uint32_t>(std::min<int32_t>(player->getHealth(), std::numeric_limits<uint16_t>::max()));
        msg.add<uint32_t>(std::min<int32_t>(player->getMaxHealth(), std::numeric_limits<uint16_t>::max()));
    }
if (!oldProtocol) {
        msg.add<uint32_t>(std::min<int32_t>(player->getMana(), std::numeric_limits<uint16_t>::max()));
        msg.add<uint32_t>(std::min<int32_t>(player->getMaxMana(), std::numeric_limits<uint16_t>::max()));
    } else {
        msg.add<uint16_t>(std::min<int32_t>(player->getMana(), std::numeric_limits<uint16_t>::max()));
        msg.add<uint16_t>(std::min<int32_t>(player->getMaxMana(), std::numeric_limits<uint16_t>::max()));

msg.add<uint32_t>(std::min<int32_t>(player->getHealth(), std::numeric_limits<uint16_t>::max()));
    msg.add<uint32_t>(std::min<int32_t>(player->getMaxHealth(), std::numeric_limits<uint16_t>::max()));
    msg.add<uint32_t>(std::min<int32_t>(player->getMana(), std::numeric_limits<uint16_t>::max()));
    msg.add<uint32_t>(std::min<int32_t>(player->getMaxMana(), std::numeric_limits<uint16_t>::max()));
NetworkMessage msg;
    msg.addByte(0x8C);
    msg.add<uint32_t>(cid);
    msg.addByte(std::min<uint8_t>(100, healthPercent));
    writeToOutputBuffer(msg);
NetworkMessage msg;
    msg.addByte(0x8B);
    msg.add<uint32_t>(cid);
    msg.addByte(11); // mana percent
    msg.addByte(std::min<uint8_t>(100, manaPercent));
    writeToOutputBuffer(msg);

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.1k

Informação Importante

Confirmação de Termo