Lua BrightBinder - настраиваемое меню биндов с подстановкой игрока под прицелом

TheLeftExit

Участник
Автор темы
24
8
Мой первый проект на MoonLoader LUA (разрабатывал чисто для себя).

Скрипт позволяет загрузить .TXT файл как меню биндов в игровом диалоге. Поддерживаются подстановка ID/ника игрока под прицелом, ввод нескольких команд подряд и комментарии, отображаемые в меню вместо самих команд (с цветовым форматированием SAMP).

Меню пользователю придётся писать с нуля. Я предлагаю лишь простой доступ к уже имеющимся биндам. При этом скрипт способен заменить большинство RP-хелперов с хардкодными меню отыгровок.

Принцип работы:
  • В папке moonloader пользователем создаётся папка brightbinder, в которую помещаются файлы биндов в формате .TXT
    • Не знаю, как у других, но у меня неверно выводится кириллица в любой кодировке, кроме Windows 1251
  • Каждая строка в файле является отдельным биндом; при загрузке файла все бинды выводятся в одно меню выбора (DIALOG_STYLE_LIST)
  • Синтаксис строки:
    • В качестве символа-разделителя используется вот такая кавычка: `
    • Один разделитель делит строку на несколько, вводимых подряд с интервалом 500 мс (меняется в коде скрипта)
    • Два разделителя означают комментарий: в игре будет отображаться только текст после ``
    • Все вхождения @i заменяются на ID игрока под прицелом, @p - на его ник (см. ниже)
  • Первый способ вызова скрипта: навести прицел на игрока (достаточно держать ПКМ) и нажать Left ALT
    • Будут открыты строки из файла default.txt
  • Второй способ: ввести /bb [ID] [имя_файла]
    • Если ID не указан или равен -1, подставляется ник игрока, на которого направлен прицел (актуально только при вводе через AHK)
    • Если ID не указан или равен -1, а сама команда вызвана из меню другого файла, будет использован ID из предыдущего меню
      • А вот тут уже можно создавать свои вложенные менюшки!
    • Имя файла указывается без расширения; в папке должен присутствовать файл .txt с данным именем
    • Если имя файла не указано, будет загружен default.txt
    • Таким образом наведение прицела и нажатие Left ALT эквивалентно вводу /bb без аргументов
  • Небольшие детали:
    • В заголовке окна указывается Nick_Name[ID] выбранного игрока, если он есть
    • Если скрипт вызван без указания ID и прицел не был наведён, меню всё равно откроется (в заголовке отобразится None)
      • При выборе бинда, содержащего подстановки @i/@p (кроме /bb), будет открыт диалог для ввода ID
    • Файлы биндов можно менять во время игры, так как они загружаются заново при каждом вызове скрипта; это должно упростить составление биндов
    • Если загружен несуществующий файл, скрипт выведет соответствующее сообщение
Примеры:
СтрокаОтображение в менюДействие при выборе
Привет!Привет!Вводится "Привет!"
Привет, @p!`/hi @iПривет, @p!`/hi @iВводится "Привет, Nick_Name!",
через 300 мс вводится "/hi 0"
(вместо Nick_Name и 0 подставляются ник и ID цели)
Привет!`/hi`Как жизнь?``ПоздороватьсяПоздороватьсяВводится "Привет!",
через 300 мс вводится "/hi",
через 300 мс вводится "Как жизнь?"
/bb su``{0000FF}Выдать розыск
/bb -1 su``{0000FF}Выдать розыск
/bb @i su``{0000FF}Выдать розыск
Выдать розыскОткрывается меню su.txt для выбранной цели
(если не выбрана, меню открывается без цели)
``{FF0000}Заголовок разделаЗаголовок разделаНет
/togphone`/bb``Включить/выключить телефонВключить/выключить телефонВводится "/togphone",
затем открывается меню default.txt для выбранной цели
(если не выбрана, меню открывается без цели)
preview.png
 

Вложения

  • brightbinder.lua
    7.5 KB · Просмотры: 69
Последнее редактирование:

TheLeftExit

Участник
Автор темы
24
8
Не проще скачать MVD Helper?
Если нужен чисто его функционал, конечно проще. Большому количеству пользователей этот скрипт просто не зайдёт из-за наличия более простых альтернатив. Всё же, вдруг кому-то понадобится.

Глянул этот хелпер, действительно фунционал почти один в один. 🤷‍♂️
 

TheLeftExit

Участник
Автор темы
24
8
Можешь скинуть готовый бинд как на скрине?
На скрине старый скрипт. Тут больше цветов и есть многострочные бинды.
default.txt:
Приветствую, я офицер SFPD Джозеф Брайт`/do На форме значок: Joseph Bright | Officer HP | Police SF``[1] Представиться
/me снял с пояса наручники и надел их на @p`/cuff @i``[2] {BBBBBB}Одеть наручники {333333}/cuff
/me схватил нарушителя за руку и начал вести за собой`/follow @i``[3] {BBBBBB}Повести за собой {333333}/follow
/me отпустил нарушителя`/follow @i``[4] {BBBBBB}Прекратить вести за собой {333333}/follow
/me открыл дверь и поместил нарушителя в автомобиль`/cput @i``[4] {BBBBBB}Поместить в машину {333333}/cput
/me открыл дверь и вытащил нарушителя из автомобиля`/ceject @i``[5] {BBBBBB}Вытащить из машины {333333}/ceject
/me пристегнул наручники к столу`/follow @i``[6] {BBBBBB}Прицепить наручниками к столу {333333}/follow
/bb @i su12``[7] {AAAA00}Подача в розыск (1-2 уровень)
/bb @i su36``[8] {AAAA00}Подача в розыск (3-6 уровень)
/ps @i``[9] Начать погоню
/me достал из кармана блокнот, выписал штраф и передал листок нарушителю``[10] {00FFFF}Выписать штраф
/m Водитель, немедленно примите вправо и остановите движение!``[11] {FFFF00}Первое предупреждение в мегафон
/m Последнее предупреждение! Остановитесь, или мы будем вынуждены применить силу!``[12] {FFFF00}Второе предупреждение в мегафон
Вы задержаны за нарушение Уголовного кодекса штата Legacy.`Вы имеете право хранить молчание. Вам гарантированы услуги адвоката.``[13] Зачитать права
su12.txt:
``{FFFF00}Very Low | 1 уровень розыска
/su @i 1 1.1``1.1 "Хулиганство"
/su @i 1 1.2``1.2 Угроза
/su @i 1 1.3``1.3 Вымогательство
/su @i 1 1.4``1.4 Ограбление
/su @i 1 1.5``1.5 Угон
/su @i 1 1.6``1.6 Провокация
/su @i 1 1.7``1.7 Мошенничество
/su @i 1 1.8``1.8 Неуплата штрафа
/su @i 1 1.9``1.9 Дача ложных показаний
/su @i 1 1.10``1.10 Браконьерство
/su @i 1 1.11``1.11 Попрошайничество
/su @i 1 1.12``1.12 Гонка
/su @i 1 1.13``1.13 Проституция
``{FFFF00}Low | 2 уровень розыска
/su @i 2 2.1``2.1 Неподчинение
/su @i 2 2.2``2.2 Оскорбление
/su @i 2 2.3``2.3 Избиение
/su @i 2 2.4``2.4 Митинг
/su @i 2 2.5``2.5 Нелегальное ношение оружия
/su @i 2 2.6``2.6 Хранение наркотиков
/su @i 2 2.7``2.7 Хранение материалов
/su @i 2 2.8``2.8 Торговля наркотиками/материалами
/su @i 2 2.9``2.9 Изготовление наркотиков
/su @i 2 2.10``2.10 Изготовление/покупка/продажа нелегальным оружием
/su @i 2 2.11``2.11 Продажа гос. имущества
/su @i 2 2.12``2.12 Ношение/хранение военной формы
/su @i 2 2.13``2.13 Уничтожение/порча имущества
/su @i 2 2.14``2.14 Помеха
/su @i 2 2.15``2.15 Кража гос. имущества
/su @i 2 2.16``2.16 Агитация в день выборов
su36.txt:
``{FFFF00}Medium | 3 уровень розыска
/su @i 3 3.1``3.1 Проникновение
/su @i 3 3.2``3.2 Попытка скрыться/Скрылся
/su @i 3 3.3``3.3 Убийство
/su @i 3 3.4``3.4 Бандитизм
/su @i 3 3.5``3.5 Хранение ключей
/su @i 3 3.6``3.6 Изнасилование
/su @i 3 3.7``3.7 Взяточничество {888888}(х3)
``{FFFF00}Medium High | 4 уровень розыска
/su @i 4 4.1``4.1 Нападение {888888}(ООП, ЛнО)
/su @i 4 4.2``4.2 Подделка {888888}(x3)
/su @i 4 4.3``4.3 Убийство военнослужащего {888888}(ЛнО)
``{FFFF00}High | 5 уровень розыска
/su @i 5 5.1``5.1 Убийство офицера полиции {888888}(ООП, ЛнО)
``{FFFF00}Very High | 6 уровень розыска
/su @i 6 6.1``6.1 Теракт {888888}(ООП, ЛнВ, ЛнО)
/su @i 6 6.2``6.2 Похищение/Захват заложников {888888}(ООП, ЛнО)
/su @i 6 6.3``6.3 Убийство агента ФБР {888888} (ООП, ЛнО)
``{FFFF00}Special Situations | 6 уровень розыска
/su @i 6 7.1``7.1 Уход
/su @i 6 7.2``7.2 Побег из места заключения