Good evening, while looking for a solution to the problem related to displaying the level above 65535, I found a certain code, I will enter it in bbcode below. After adding it - it actually changes the lines after the limit, but there is a problem with the level progress bar and the display of mana in percentage, what am I doing wrong? what is missing? I am using OTXServer2 under protocol 7.6. Thank you for all your help
Code :
Code :
C++:
void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg)
{
msg->put<char>(0xA0);
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);
}
msg->put<uint16_t>(int32_t(player->getFreeCapacity()));
if (player->getLevel() >=0xFFFF) {
msg->put<uint32_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));
msg->put<uint16_t>(0);
} else {
if(player->getExperience() > 0x7FFFFFFF) {
msg->put<uint32_t>(0x7FFFFFFF);
} else {
msg->put<uint32_t>(player->getExperience());
}
msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));
}
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);
}
msg->put<char>(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT));
#ifdef _MULTIPLATFORM76
msg->put<char>(player->getPlayerInfo(PLAYERINFO_SOUL));
#endif
}