- 0
вместо целого числа миллионы. Спидометр
Вопросы
Лучший ответ
@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;
}
Сходу больше не вижу проблем.
Эта тема закрыта для публикации ответов.
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От Helados
Короче, мы протестировали наш GTA на другом хостинге — голосовой чат там работает, всё включается нормально. Также проверили на другом хостинге с нашим игровым модом — voice chat тоже работает.
Но на нашем личном хостинге, который мы купили на OVH и установили панель, не получается запустить голосовой чат. Похоже, проблема связана с портами. После перезапуска сервер почему-то случайным образом выбирает порты сам и мы не можем это исправить.
Если кто-то знает человека, который может помочь разобраться с этой проблемой, буду благодарен.
-
Antoxa39 Dance 80-90, mmm Nice) 24
вот код паблика
вот 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];
Поделиться сообщением
Ссылка на сообщение