• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

Wy?wietlanie procent?w zamiast hp i many

Odp: Wy?wietlanie procent?w zamiast hp i many

no niby nie trudno, pr?bowa?em, ale to nie to samo co od profesjonalisty ;D
dzi?ki za pomoc.
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Jak to zrobi? mam wzi??? utworzy? nowy czy w tym programie DEV-C++ otworzy? projekt i wyszuka? "TheForgottenServer" ?

Bo je?li tak to nie mam tego pliku...
 
Odp: Wy?wietlanie procent?w zamiast hp i many

W pliku protocolgame.cpp zamieniamy ca?a funkcj? AddPlayerStats na:

Potrzebujesz pliku protocolgame.cpp. Nie masz source - nic nie zdzia?asz.
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Update!

Version 1.1 Changelog:
  • Lekkie zmiany w kodzie
  • Dodano wersj? kodu
  • Poprawiono opisy dzia?ania kodu oraz jego implementacji
  • Poprawiono zdj?cie
  • Poprawy estetyczne w temacie
 
Odp: Wy?wietlanie procent?w zamiast hp i many

mi na tfs trunk.r3777

dzia?a taki
msg->put<char>(0xA0);
//msg->put<uint16_t>(player->getHealth());
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));
msg->put((uint16_t)std::ceil(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH)));
msg->put((uint16_t)100);
msg->put<uint32_t>(uint32_t(player->getFreeCapacity() * 100));
uint64_t experience = player->getExperience();
if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp
msg->put<uint32_t>(0x7FFFFFFF);
else
msg->put<uint32_t>(experience);

msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT));
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA));
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA));
msg->put((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)));
msg->put((uint16_t)100);
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_SOUL));
msg->put<uint16_t>(player->getStaminaMinutes());
 
Odp: Wy?wietlanie procent?w zamiast hp i many

@up
Polecam zalogowa? si? na account managera
 
Odp: Wy?wietlanie procent?w zamiast hp i many

a co je?li nie mam pliku protocolgame.cpp?
musisz stworzyc source z silkniak sowjego bo inaczje teog nierzrobisz, moze ktos ci pomoze ale malo tu osob pomocnych prfzy tymjesst troche roboty, nie mowie tylkotym skrypcie ale i o innych systemach na 7.6
 
Odp: Wy?wietlanie procent?w zamiast hp i many

@up
[CPP]msg->put((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA))); [/CPP]
Account Manager ma 0 many. Dzielenie przez zero jest niemo?liwe.

Daj czyst? funkcj? AddPlayerStats to zrobi? i przy okazji dodam do tematu.
 
Odp: Wy?wietlanie procent?w zamiast hp i many

@up
[CPP]msg->put((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA))); [/CPP]
Account Manager ma 0 many. Dzielenie przez zero jest niemo?liwe.

Daj czyst? funkcj? AddPlayerStats to zrobi? i przy okazji dodam do tematu.

ju? mam zrobi?em tak
void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg)
{
msg->put<char>(0xA0);
//msg->put<uint16_t>(player->getHealth());
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH));
//msg->put((uint16_t)std::ceil((float)player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH), 1)));
msg->put((uint16_t)std::ceil((float)player->getHealth() * 100 / std::max(player->getMaxHealth(), 1)));
msg->put((uint16_t)100);
msg->put<uint32_t>(uint32_t(player->getFreeCapacity() * 100));
uint64_t experience = player->getExperience();
if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp
msg->put<uint32_t>(0x7FFFFFFF);
else
msg->put<uint32_t>(experience);

msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT));
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA));
//msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA));
//msg->put((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)));
msg->put((uint16_t)std::ceil((float)player->getMana() * 100 / std::max(player->getMaxMana(), 1)));
msg->put((uint16_t)100);
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT));
msg->put<char>(player->getPlayerInfo(PLAYERINFO_SOUL));
msg->put<uint16_t>(player->getStaminaMinutes());
}
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Update!

Version 1.2 Changelog:
  • Dodano wersj? na The Forgotten Server 1.0 (10.31)
  • Zamieniono std::ceil na std::floor - 100% b?dzie tylko przy pe?nym zdrowiu/manie
  • Zmiana wersji na 1.2
 
Odp: Wy?wietlanie procent?w zamiast hp i many

niewiem gdzie mam ten protocolgane.cpp

---------- Tre?? dodana o 00:41 ----------

ej a ja niewiem gdzie te protocolgame.cpp

---------- Tre?? dodana o 00:41 ----------

ej a ja niewiem gdzie te protocolgame.cpp

---------- Tre?? dodana o 00:41 ----------

ej a ja niewiem gdzie te protocolgame.cpp
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Komenda: !hp na ilo??
talkactions.xml
[lua]<talkaction words="!hp;!mp" event="script" value="procentowo.lua"/>[/lua]
procentowo.lua
[lua]function onSay(cid, words, param, channel)
if getPlayerStorageValue(cid, 2800) <= os.time() then
local kk = os.time()+5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "HP: " .. getCreatureHealth(cid) .. " / " .. getCreatureMaxHealth(cid) .. " MP: " .. getPlayerMana(cid) .. " / " .. getPlayerMaxMana(cid) .. "")
setPlayerStorageValue(cid, 2800, kk)
else
doPlayerSendCancel(cid, "You are exhausted.")
end
return true
end[/lua]
##################################



Komenda: !hp na procenty (tak w razie jak kto? nie ma source)
talkactions.xml
[lua]<talkaction words="!hp;!mp" event="script" value="procentowo.lua"/>[/lua]
procentowo.lua
[lua]function onSay(cid, words, param, channel)
if getPlayerStorageValue(cid, 2800) <= os.time() then
local hpp = (getCreatureHealth(cid) * 100 / getCreatureMaxHealth(cid))
local mpp = (getPlayerMana(cid) * 100 / getPlayerMaxMana(cid))
local kk = os.time()+5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "HP: " .. hpp .. "% and " .. mpp .. "%")
setPlayerStorageValue(cid, 2800, kk)
else
doPlayerSendCancel(cid, "You are exhausted.")
end
return true
end[/lua]
 
Ostatnia edycja:
Odp: Wy?wietlanie procent?w zamiast hp i many

@up

Troch? nie w por? pisz?, ale po co dwie komendy, skoro mo?na zrobi? jedn?, kt?ra wy?wietli nam wi?cej rzeczy, jak np. nick, profesje, ilo?? hp/mp, ilo?? dni pacc, blessy itd.
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Fajny skrypcik, dzia?a, chocia? by? m?g? doda? pod trunk.r3777 te? w temacie :d
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Update!

Version 1.3 Changelog:
  • Dodano wersj? na chi?ski trunk 3777
  • Zmiana wersji na 1.3
 
Ostatnia edycja:
Odp: Wy?wietlanie procent?w zamiast hp i many

Update!

Version 1.4 Changelog:
  • Zmiana wersji na 1.4
  • Dodano mo?liwo?? zamiany mi?dzy procentami, a normalnym wy?wietlaniem.
  • Dodano komendy na zmian? mi?dzy procentami, a normalnym wy?wietlaniem.
  • Powy?sze zmiany nie dotycz? wersji pod klienta 7.6
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Jakim programem mozna to dodac ?
 
Odp: Wy?wietlanie procent?w zamiast hp i many

Kod trzeba doda? do source byle jakim edytorem tekstu, nast?pnie skompilowa?. Poradniki do kompilacji znajdziesz na forum.
 
Do góry