Mana e vida em porcentagem 100/100

MathhCunha
em Scripts

MathhCunha

Beautiful Life #
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/07/13Posts: 50

Olá,


Olha ja entrei em alguns ots e vi isso nele, e gostei muito.


Eu gostaria que mostra-se o tanto de mana em porcentagem



Exemplo : Tenho 10000 mana, só que mostraria : 100


Tenho 5000 vida, só que mostraria : 100


035e.png



Igual a da imagem, só que na verdade eu teria vida e mana iguais as citadas ali em cima.



Ip do server : rebhigh.prots.eu


Versão : 8.6


De uma olhada neste server que você vai poder entender melhor.


Vou tenta gravar um vídeo e posta aqui para ajudar mais.



Obrigado


Beautiful Life #

Waterson

Não gosto compra outro :)
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/06/10Posts: 89

Eu saberia até fazer se fosse pelo OtClient, só que pela imagem é do client normal do Tibia então to por fora;

MathhCunha

Beautiful Life #
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/07/13Posts: 50

Eu saberia até fazer se fosse pelo OtClient, só que pela imagem é do client normal do Tibia então to por fora;

Sim, e pelo o proprio Tibia. Eu ja vi em uns 3 servers americanos e um brasileiro vai incrementar isso no server. So que sabe, o dono nao ajuda.

Beautiful Life #

Zaruss

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 31/08/13Posts: 93Char no Tibia: Evarin Thin

E na sources, eu vi isso ae em um outro forum so nao lembro qual =/ vo ve se acho aqui se eu acha posto aqui.

Nu77

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 29/11/07Posts: 496

Então, primeiramente encontre essa função em protocolgame.cpp:

void ProtocolGame::AddPlayerStats(NetworkMessage& msg)

Troque essas linha:

    msg->AddU16(player->getHealth());
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));

por:

    msg->AddU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));
    msg->AddU16(100);

depois essas:

    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA));
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXMANA));

por:

    msg->AddU16((uint16_t)std::ceil((float)player->getMana() * 100 / std::max(player->getMaxMana(), 1)));
    msg->AddU16(100);

Agora apenas compile.

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino
Suja, só por observação (eu não sei absolutamente nada de programação): na parte substituída de HP, não faltou um parênteses? Digo, tendo como base a parte de mana, devendo ser (uint16_t)std, e não (uint16_tstd?

OBS: Como eu já disse, não sei nada de programação. Talvez eu esteja errado.



msg->AddU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

Nu77

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 29/11/07Posts: 496

Já arrumei, obrigado zipter.

MathhCunha

Beautiful Life #
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/07/13Posts: 50

Então, primeiramente encontre essa função em protocolgame.cpp:

void ProtocolGame::AddPlayerStats(NetworkMessage& msg)

Troque essas linha:

    msg->AddU16(player->getHealth());
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));

por:

    msg->AddU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));
    msg->AddU16(100);

depois essas:

    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA));
    msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXMANA));

por:

    msg->AddU16((uint16_t)std::ceil((float)player->getMana() * 100 / std::max(player->getMaxMana(), 1)));
    msg->AddU16(100);

Agora apenas compile.

@SUJA Valeu pela ajudar. Me ajudou bastante. Eu sei que este topico e pra VIDA E MANA em porcentagem. Mais você poderia me ajudar a aumentar o level maximo?

 

 

Suja, só por observação (eu não sei absolutamente nada de programação): na parte substituída de HP, não faltou um parênteses? Digo, tendo como base a parte de mana, devendo ser (uint16_t)std, e não (uint16_tstd?
OBS: Como eu já disse, não sei nada de programação. Talvez eu esteja errado.
msg->AddU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));

 

@zipter98 Valeu por ver o erro e informar ao SUJA. se não fosse você eu teria colocar o errado e teria bugado o meu server. :)

Já arrumei, obrigado zipter.

@SUJA, ta dando erro na hora de compilar.

#msg->AddU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));

 

Ta dando erro nesta parte ai.

Beautiful Life #

Nu77

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 29/11/07Posts: 496

Seria mais fácil se você postasse o erro, mas... Tenta isso:

 

para health:

msg->addU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getPlayerInfo(PLAYERINFO_MAXHEALTH), 1)));

para mana:

msg->addU16((uint16_t)std::ceil((float)player->getPlayerInfo(PLAYERINFO_MANA) * 100 / std::max(player->getPlayerInfo(PLAYERINFO_MAXMANA), 1)));

PS: Sobre o aumento do level é totalmente impossível, já que você usa o client da cip... Pois o client precisa receber a mesma integer que é enviado do server.

MathhCunha

Beautiful Life #
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/07/13Posts: 50

Seria mais fácil se você postasse o erro, mas... Tenta isso:

 

para health:

msg->addU16((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getPlayerInfo(PLAYERINFO_MAXHEALTH), 1)));

para mana:

msg->addU16((uint16_t)std::ceil((float)player->getPlayerInfo(PLAYERINFO_MANA) * 100 / std::max(player->getPlayerInfo(PLAYERINFO_MAXMANA), 1)));

PS: Sobre o aumento do level é totalmente impossível, já que você usa o client da cip... Pois o client precisa receber a mesma integer que é enviado do server.

Já Arrumei o a health e mana bar. Mais Mesmo Assim Obrigado. Olha o negocio de aumentar o level, eu jogava um server que podia ir ate level 2kk. E ele não possuía client próprio, usava o próprio client da cip.

Beautiful Life #

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Bom, suponho que então, dúvida sanada. Sobre o aumento de level máximo, peço que faça outro tópico com tal pedido.

 

Sanado, movido.

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

aicilopmes123

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/05/15Posts: 20

eu fiz esse mesmo procedimento tudo certo, mais certo reset a vida vida 100 e mana 65k as vezes mana 100 e vida 65k