PDA

Просмотр полной версии : [Вопрос] Прогресс бар



verteich
27.07.2019, 20:21
Добрый вечер, делал прогресс бар здоровья игрока, но такая дичь он отображается некорректно
new
Float:Health,
Float:Armour;
GetPlayerHealth(target, Health);
GetPlayerArmour(target, Armour);
368 = полная полоска
PlayerTextDrawTextSize(playerid, PTarget[playerid][1], Health*3.68, 0.0000);
PlayerTextDrawTextSize(playerid, PTarget[playerid][2], Armour*3.68, 0.0000);
Отображалось все некорректно, полоска выходила за свои границы и с ней был хауос
Я понял то что это из за того что ХП и бронь игрока плавающее значение, решил пофиксить таким макаром:
PlayerTextDrawTextSize(playerid, PTarget[playerid][1], floatround(Health, floatround_round)*3.68, 0.0000);
PlayerTextDrawTextSize(playerid, PTarget[playerid][2], floatround(Armour, floatround_round)*3.68, 0.0000);
Посмотрел, такая же дичь, и удивился
Решил задебажить эти значения и понял, то что если не умножать, то floatround выводит как надо число
Почему так и как можно это профиксить?

DeimoS
27.07.2019, 23:35
floatround тут вообще не нужен. У тебя же и число, на которое умножается здоровье/броня, вещественное, и размер текстдрава так же указывается вещественным числом.

Не изобретай велосипед и просто возьми, например, этот инклуд (https://github.com/Southclaws/samp-progress/blob/master/playerprogress.inc). Там же можешь увидеть как происходят расчёты размера (макрос "pb_percent"). Код, конечно, не идеальный, но всегда можно его "доработать напильником".