Question

вот код паблика

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",veloc);
    PlayerTextDrawSetString(playerid,speed[playerid],str);
    return 1;

}

вот 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];

new PlayerText:speed[MAX_PLAYERS];
// в onplayerconnect
speed[playerid] = PlayerText:CreatePlayerTextDraw(playerid,68.750000163.333328"KM/H");

 

Share this post


Link to post

5 answers to this question

  • 1

@Antoxa39%f используется при передаче вещественных чисел. Для передачи целочисленных, коим и является ID игрока (playerid), используют %d или %i. Также обращаю ваше внимание на то, что интервал для вызова таймера задается в миллисекундах. Боюсь, каждую миллисекунду вызывать таймер для расчета скорости - перебор. Поменяю это значение на половину секунды (1000 миллисекунд = 1 секунда).

SetTimerEx("getspeed"0.5 * 1000true"%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;
}

Сходу больше не вижу проблем.

Share this post


Link to post
  • 2

@Antoxa39, %.1f - точность (количество цифр после запятой). По аналогии, например, %03d означает, что целое число должно быть представлено как минимум 3 разрядами. В случае нехватки добавляются незначащие нули в целой или дробной частях. Например,

printf("%.1f"37.1234); // 37.1
printf("%.4f"37.1234); // 37.1234
printf("%.6f"37.1234); // 37.123400
printf("%03d"7); // 007
printf("%09d"7); // 000000007
printf("%03d"7000); // 7000 

 

Share this post


Link to post
  • 0
format(str,sizeof(str),"KM/H %.1f",veloc);

 

Share this post


Link to post
  • 0

@Klebitz извиняюсь,а можно обьяснение?) что значит %.1

@Cawfee я пытался округлить в переменной но не вышло. Сейчас затещу)

Share this post


Link to post
  • 0

@Cawfee спасибо за ответ))) удачи в скриптинге!

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • shedexx
      By shedexx
      PERFONSE RP | 2025
      Скачать файл Всем привет. Возвращаюсь в сферу Pawno-разработчика и ютубера по сампу. Ранее Вы могли узнать меня по нику "Minekaev Play", но теперь мой новый ник - shedexx.
       
      Perfonse Role Play:
      Уже не помню у кого я брал основу, этот мод должен был работать только через специальный addon-ключ, который использует лаунчер Arizona RP. Я убрал систему этого лаунчера / ключа, и мод заработал на обычном SAMP лаунчере. Я даже открывал проект с этим модом, но к сожалению или к счастью, никто не хотел у нас играть. Разработка мода велась где-то в начале 2025 года.
       
      Уникальный этот мод тем, что в нём есть система Air-Drop'а, система крафта аксессуаров на TextDraw, система выбора семейных автомобилей на TextDraw. В общем, у меня уже были загружены скрины с этого мода, я их выложил на imgur, и Вы сможете сами посмотреть визуально, что в этом моде имеется.
       
      Строчек в моде: [ 57.370 ]
      Быстрая компиляция: [ Да ]
      Варнингов: [ 3 шт. ] - Не влияют на работу мода.
       
      Скриншоты: *кликабельно*
      Видео-Слив: *кликабельно*
      Добавил shedexx Добавлено 17.03.2025 Категория Моды Автор shedexx  
    • shedexx
      By shedexx
      Всем привет. Возвращаюсь в сферу Pawno-разработчика и ютубера по сампу. Ранее Вы могли узнать меня по нику "Minekaev Play", но теперь мой новый ник - shedexx.
       
      Perfonse Role Play:
      Уже не помню у кого я брал основу, этот мод должен был работать только через специальный addon-ключ, который использует лаунчер Arizona RP. Я убрал систему этого лаунчера / ключа, и мод заработал на обычном SAMP лаунчере. Я даже открывал проект с этим модом, но к сожалению или к счастью, никто не хотел у нас играть. Разработка мода велась где-то в начале 2025 года.
       
      Уникальный этот мод тем, что в нём есть система Air-Drop'а, система крафта аксессуаров на TextDraw, система выбора семейных автомобилей на TextDraw. В общем, у меня уже были загружены скрины с этого мода, я их выложил на imgur, и Вы сможете сами посмотреть визуально, что в этом моде имеется.
       
      Строчек в моде: [ 57.370 ]
      Быстрая компиляция: [ Да ]
      Варнингов: [ 3 шт. ] - Не влияют на работу мода.
       
      Скриншоты: *кликабельно*
      Видео-Слив: *кликабельно*
    • Sams0n0v
      By Sams0n0v
      Приветствую! Есть ```SetPlayerChatBubble```, оно выводит какой либо текст над головой ИГРОКА, и этот текст абсолютно динамичен, он следует всем движениям игрока, включая анимации. Так вот вопрос, а как сделать так, но с NPC (Актером), чтобы не обычный каменный статичный 3д текст, а чтобы было наподобии текста над головой при отправке сообщения в чат. Надеюсь, меня поняли, с нетерпением жду ответа, этот форум, моя последняя надежда) Спасибо!