В теме 6 сообщений

Дратути) Я хочу поделится с новичками одной штучкой,с помощью которой можно сделать спидометр.

 

Объявляем глобальные переменные.

new Text:speedtest;

В public OnPlayerConnect добавляем следующее.

speedtest = TextDrawCreate(506.599884394.742156"500 KM/H");// создаем текстдрав при подключении игрока (он не будет отображатся)

В конце мода создаем новую функцию.

forward getsp(playerid);
public getsp(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.0) + floatpower(floatabs(cord[2]), 2.0)) * 181.3;
    new str[25];
    format(str,sizeof(str),"KM/H %d",floatround(veloc));
    TextDrawSetString(speedtest,str);

    return 1;

}

Переходим в OnPlayerStateChange и добавляем следующее.

if(newstate == PLAYER_STATE_DRIVER)
{
    TextDrawShowForPlayer(playerid,speedtest);
    SetTimerEx("getsp"1true"%f", playerid);
}
if(newstate == PLAYER_STATE_ONFOOT)
{
    TextDrawHideForPlayer(playerid,speedtest);
}
ВСЁ!) Мы создали спидометр. Удачи вам в скриптинге!)

Отредактировано пользователем Cawfee
Причина: форматирование темы. Орфография и пунктуация автора сохранены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для корректной работы  пропишите 

TextDrawHideForPlayer(playerid, speedtest);

В OnPlayerConnect или OnPlayerDisconnect, так как человек может выйти из игры, находясь в машине и текстдрав для его ID не пропадёт, и зачем таймер на 1 миллисекунду? Это нагрудает сервер, поставьте 1000 или 500

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 1/25/2022 в 15:58, Sleash`en сказал:

Для корректной работы

Читать далее...  

 

По-хорошему здесь вообще стоит использовать PlayerTextDraw, а не TextDraw.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 1/25/2022 в 15:58, Sleash`en сказал:

Для корректной работы  пропишите 

TextDrawHideForPlayer(playerid, speedtest);

В OnPlayerConnect или OnPlayerDisconnect, так как человек может выйти из игры, находясь в машине и текстдрав для его ID не пропадёт, и зачем таймер на 1 миллисекунду? Это нагружает сервер, поставьте 1000 или 500

Читать далее...  

1 миллисекунда для того,чтобы плавно показывалась скорость. Не могу точно обьяснить,ну чтобы быстро показывалась скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Cawfee В общем смысле - да, но тут переменная 1 на всех, но не суть важно, ему предстоит это ещё понять, а я в основном пользуюсьсь массивом [MAX_PLAYERS] 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Sleash`en, а причем здесь это? Вся проблема заключается в том, что глобальные текстовые рисунки (TextDraw) имеют ограничение в 2048 штук на весь сервер. Если на сервер SAMP/CRMP 0.3.7 вы запустите 500 игроков, то отобразить больше 4 глобальных рисунков для них не получится: вы исчерпаете лимит. Предполагается, что они используются для отображения неизменяемых (или почти не изменяемых) данных вроде логотипа проекта.

 

Другое дело, если брать индивидуальные текстовые рисунки (PlayerTextDraw). Их ограничение составляет 256 штук на каждого игрока. Очевидно, это более, чем просто достаточно. Предполагается, что они используются для отображения динамических данных, зависящих от игрока (игровое имя, строка состояния и так далее).

 

Поэтому второй раз уже обращаю внимание автора на проблему неправильного использования текстовых рисунков, но он упорно продолжает игнорировать. Либо он очень пессимистичный человек и заведомо точно знает, что лимит в 2048 штук на весь сервер он никогда не исчерпает, потому что, помимо него, на сервере больше никого не будет :bk:

 

@Sleash`en, здесь, кстати, та же проблема наблюдается. Если повыкидывать всякие логотипы проекта, ссылки и прочую муть, получается, что при текущем обстоятельстве дел одновременно в сапер поиграет 10-15 человек – не больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • RASTAMAN
      От RASTAMAN
      Plantinum RolePlay
      Скачать файл Для того чтобы дать пароль нужно быть администратором 10 lvl после того пишем в чат /passadm
       
      Система казино Система домов Система авто И многие другие системы!

      Особых багов не найдено.

      В моде присутствует 25 фракции.
      Есть Textdraw на спавне!
      Добавил RASTAMAN Добавлено 10.10.2017 Категория Моды Автор неизвестен  
    • RASTAMAN
      От RASTAMAN
      Для того чтобы дать пароль нужно быть администратором 10 lvl после того пишем в чат /passadm
       
      Система казино Система домов Система авто И многие другие системы!

      Особых багов не найдено.

      В моде присутствует 25 фракции.
      Есть Textdraw на спавне!
    • Michov Andr
      От Michov Andr
      Re:samp RP — проект в разработке
      Re:samp RP — это SA-MP в стиле RP-проект, который в данный момент находится в активной разработке. Мы создаём сервер с бонусной системой, где механики будут, и игроки смогут развивать свои персонажи, зарабатывать деньги и взаимодействовать с окружающим миром. Однако, главное — это ролевой процесс. Вы сами выбираете, хотите ли вы заниматься бизнесом и фармом или погружаться в глубокую ролевую игру. Всё зависит от того, какой путь вы хотите пройти.
      Мы стремимся к тому, чтобы на сервере не было скучного фарма и бесконечных рутинных задач. Всё будет сбалансировано так, чтобы каждый игрок мог выбрать свой стиль игры и наслаждаться процессом, будь то отыгрыш роли, развитие персонажа или участие в экономике.
      Что касается доната — на сервере будет доступна возможность покупки привилегий, включая покупку админки. Мы не планируем делать донат обязательным для прогресса, и он не будет влиять на геймплей, но те, кто хотят ускорить процесс или получить дополнительные возможности, смогут воспользоваться такими предложениями. Всё сделано так, чтобы не нарушать баланс и не превращать сервер в платный путь к успеху.
      Re:samp RP — это сервер, где каждый игрок может найти для себя интересное занятие и, главное, где всегда будет место для качественной ролевой игры. Мы не навязываем никаких обязательных механик, и все решения остаются за вами. Стартовый бонус, донат, админки — это всё дополнительные возможности, но не основа игры. 
      Discrod:https://discord.gg/ernRMjyEJy
       
             
      на логотип не смотрим да признаюсь взял с самп рп() но уж больно он норм)
    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }