Сообщение от
m1n1vv
А вот просто использовать переменную pInfo[playerid][pHealth] ненадежно?
Надёжно, но тогда если где-нибудь сверить хп в переменной и только что узнанное хп, то они не будут совпадать даже будучи реально равными. Если такая проверка где-то будет, то вот пример, как сделать чтобы она работала корректно:
Код:
//Где-нибудь
SetPlayerHealth(playerid, 10000);
pInfo[playerid][pHealth] = 10000;
Код:
new Float:hp;
GetPlayerHealth(playerid, hp);
while(pInfo[playerid][pHealth] > hp + 255) hp += 256;
//нужные нам проверки
//(теперь переменная с новым хп "hp" будет с правильным значением)
//Ну и если это какой-нибудь таймер и нам нужно обновить старое хп, просто делаем следующее
pInfo[playerid][pHealth] = floatround(hp, floatround_tozero);
Таким образом если хп в статистике будет больше 255, то новое хп будет "подгонять" под правильное значение.
Возможно есть побочные эффекты, вроде если резко игрок умрёт и новое хп изменится на реальный 0, тогда возможно система будет всё также думать, что хп у игрока за 255, тем самым будет выдавать неправильное значение. Наверное всё-же своя система урона или что-то вроде этого - это лучший вариант.