- 0

вместо целого числа миллионы. Спидометр
Asked by
Antoxa39
,
Question
Лучший ответ
@Antoxa39, %f используется при передаче вещественных чисел. Для передачи целочисленных, коим и является ID игрока (playerid), используют %d или %i. Также обращаю ваше внимание на то, что интервал для вызова таймера задается в миллисекундах. Боюсь, каждую миллисекунду вызывать таймер для расчета скорости - перебор. Поменяю это значение на половину секунды (1000 миллисекунд = 1 секунда).
SetTimerEx("getspeed", 0.5 * 1000, true, "%i", playerid);
Следующая проблема состоит в том, что вы имеете вещественное число, но выводите его как целое. Следует либо округлить соответствующей функцией, либо все же выводить вещественное число. Но, коль уж вы ожидаете увидеть целочисленное, выполним округление.
public getspeed(playerid) {
new Float:cord[3];
GetVehicleVelocity(GetPlayerVehicleID(playerid),cord[0], cord[1], cord[2]);
new Float:veloc = floatsqroot(floatpower(floatabs(cord[0]), 2.0) + floatpower(floatabs(cord[1]), 2.5) + floatpower(floatabs(cord[2]), 2.0)) * 181.3;
new str[25];
format(str,sizeof(str),"KM/H %d",floatround(veloc));
PlayerTextDrawSetString(playerid,speed[playerid],str);
return 1;
}
Сходу больше не вижу проблем.

This topic is now closed to further replies.
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
By Brabus06
Я захожу через сборку и у меня появляется такая ошибка:
-
Posted · Report post
вот код паблика
вот OnPlayerStateChange(function)
if(newstate == PLAYER_STATE_DRIVER)
{
PlayerTextDrawShow(playerid,speed[playerid]);
SetTimerEx("getspeed", 1, true, "%f", playerid);
}
if(newstate == PLAYER_STATE_ONFOOT)
{
PlayerTextDrawHide(playerid,speed[playerid]);
}
тд:
new PlayerText:speed[MAX_PLAYERS];
Share this post
Link to post