Postado Junho 15, 2023 2 anos 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.😝
Postado Junho 15, 2023 2 anos 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 Junho 16, 2023 2 anos 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 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 Junho 16, 2023 2 anos 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.