Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Hp / Mp por porcentagem %%


Ir para solução Resolvido por Fir3element,

Posts Recomendados

Eae pessoas susa

 

alguem poderia me ajudar a deixar meu server com HP / MP por pocentagem vida / mana

 

REPP+ Concerteza.

 

Link para o post
Compartilhar em outros sites

 

protocolgame.cpp, procure por:

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

troque por:

    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);  
    }

procure por:

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

troque por:

    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);
    }

Vlw @fireelement,

deu sertinho ; < 3

REPP+

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Tem como ajudar ?

Uso TFS 1.0

Source do 10.76

------------------------------------------

Edited... Consegui editar!! Se alguem precisar igual eu precisei!!

Source TFS 1.0 pessoal! Usei nas source 10.76, mais acredito que qual quer source 1.0 funcione.

Apenas mudar seu : AddPlayerStats

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

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

    msg.add<uint32_t>(uint32_t(player->getFreeCapacity() * 100));
    msg.add<uint32_t>(uint32_t(player->getCapacity() * 100));

    msg.add<uint64_t>(player->getExperience());

    msg.add<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));
    msg.AddByte(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT));

    msg.AddDouble(0, 2);

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

    msg.AddByte(std::min<uint32_t>(0xFF, player->getMagicLevel()));
    msg.AddByte(std::min<uint32_t>(0xFF, player->getBaseMagicLevel()));
    msg.AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT));

    msg.AddByte(player->getPlayerInfo(PLAYERINFO_SOUL));

    msg.add<uint16_t>(player->getStaminaMinutes());

    msg.add<uint16_t>(player->getBaseSpeed() / 2);
    
    Condition* condition = player->getCondition(CONDITION_REGENERATION);
    msg.add<uint16_t>(condition ? condition->getTicks() / 1000 : 0x00);

    msg.add<uint16_t>(player->getOfflineTrainingTime() / 60 / 1000);
}
Editado por Marjer (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 months later...
  • 4 weeks later...

teria como modificar esse script para otx? pois quando eu coloquei o script deu tudo certo sem erros ai eu vou ir upa la nas hunts ai tudo bem,

mas quando eu pego x level ou x life a porcentagem sai e vai para 65497 L/M alguem sabe arruma?

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

 

Troca toda a função AddPlayerStats por essa:

void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg)
{
    msg->AddByte(0xA0);
    if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0)
    {
        msg->AddU16(uint16_t(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH)));
        msg->AddU16(100);
    }
    else
    {
        msg->AddU16(0);
        msg->AddU16(0);  
    }
    msg->AddU32(uint32_t(player->getFreeCapacity() * 100));
    uint64_t experience = player->getExperience();
    if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp
        msg->AddU32(0x7FFFFFFF);
    else
        msg->AddU32(experience);

    msg->AddU16(player->getPlayerInfo(PLAYERINFO_LEVEL));
    msg->AddByte(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT));
    if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0)
    {
        msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA) * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA));
        msg->AddU16(100);
    }
    else
    {
        msg->AddU16(0);
        msg->AddU16(0);
    }
    msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL));
    msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT));
    msg->AddByte(player->getPlayerInfo(PLAYERINFO_SOUL));
    msg->AddU16(player->getStaminaMinutes());
}

Teria como informar como fazer para tfs 1.2?

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 9 months later...

É um arquivo que contém as funções do jogo, arquivos .cpp e .h são os que tornam o seu executavel possivel, também conhecido como TFS.. esses respectivos arquivos ficam nas source.

 

Abraços

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
  • 3 months later...

eu coloquei no meu ot mais depois de uns resets o hp ta 65555 e a mana ta 100, meu ot é reset no lv 717217

 

Em 16/04/2015 ás 17:07, Fir3element disse:

protocolgame.cpp, procure por:


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

troque por:


    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);  
    }

procure por:


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

troque por:


    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);
    }

 

OT PURA DIVERSÃO | IP: otfun.servegame.com | 8.60 | Port: 7171

 

1584817_1.png

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo