Lua Avionics - Авиационный скрипт

Ejik_Letchik

Участник
Автор темы
17
34
Версия SA-MP
  1. 0.3.7-R3
  2. 0.3.7-R5
  3. 0.3DL
blast.hk.png

Avionics - это авиационный скрипт для samp. По своей задумке является попыткой реализации авионики, которая была бы приближена к реальной в игре Grand Theft Auto San Andreas Multiplayer, насколько это возможно, с учётом игровых условностей и целесообразности реализации некоторых систем.

Данный скрипт позволяет выводить на экран информацию об основных параметрах полёта, вспомогательную информацию для самолётов и вертолётов, в нём реализованы:
  • система ППМ (поворотных пунктов маршрута), позволяющаяя строить план полёта, облегчать навигацию;
  • система посадки на любой из трёх международных аэродромов San Andreas. Выход на точку входа в глиссаду, контроль соблюдения профиля снижения, директорные маркера для выхода на осевую ВПП в сложных метеоусловиях;
  • система автопилота (самолётная и вертолётная), в том числе для полётов с подцепленным на магнит транспортом;
  • бортовая система наведения и целеуказания с возможностью приближения, фиксации на точке, получения координат точки, поворота камеры на ППМ, создания ППМ из точки фиксации, визуальным и инфракрасным каналами обзора;
  • система предупреждения об угрозе, с определением направления угрозы, индикацией угрозы на ИЛС, мини-карте, выводом основной необходимой информации, возможностью автоматического отброса ЛТЦ (для сервера SAMP WARS) и автоматического покидания самолёта при низком запасе прочности;
  • речевой информатор (РИТА/BETTY);
  • бортовая радиолокационная система с режимами воздух-воздух, воздух-земля, которая может подсвечивать воздушные или наземные цели, находящиеся в зоне видимости. Не видит сквозь стены и объекты, поэтому не является читом и может использоваться на большинстве серверов;
  • даталинк, позволяющий видеть цели, находящиеся вне зоны видимости РЛС, если их подсвечивает другой радар (реализовано через маркеры других игроков, samp сервер самостоятельно контроллирует какие маркеры какому игроку передавать);
  • бортовой прицельный комплекс, отображающий необходимую для точного прицеливания информацию, имеет возможность захвата одной воздушной цели с использованием нашлемного целеуказателя, с реализованной механикой потери контакта, если он скрылся за препятствием. Бортовой комплекс выводит важную информацию о цели, которая может быть использована как в воздушном бою, так и для перехвата цели, либо для удержания в строю при поётах в составе группы;
  • баллистический вычислитель траектории полёта бомб ФАБ и Mk (актуально для SAMP WARS реализации данных бомб);
  • совместимость со скриптом целеуказания SW.AAC, предназначенным для передачи координат целей группе;
  • система повреждений с возможностью выхода из строя части оборудования при повреждении самолёта;
  • крюк/магнит для транспортировки пустых автомобилей по воздуху;
  • быстрое переключение сетки в режим День/Ночь;
  • поддержка редактора планов полёта AvionicsEditor и онлайн-редактора sampmap.ru;
  • меню настроек скрипта.
Зависимости:
moonloader v.027.0-preview3 и выше, sampfuncs и библиотека cleo4 к нему, imgui

Установка:
  1. Установить на гта moonloader* и sampfuncs
  2. Скопировать с заменой папку moonloader из релизного архива в папку с игрой
*При установке moonloader, помимо "ASI Loader" не забудьте поставить галочку в пункте "Модули".

Команды и горячие клавиши скрипта:
  • /swavionics - Открыть меню скрипта
  • /avionix - Дублирующая команда, аналогично с /swavionics
  • /swav - Дублирующая команда, аналогично с /swavionics
  • /setppm [номер поворотного пункта маршрута] - Установить текущий ППМ (из добавленных в базу, добавляются автоматически через систему целеуказания, /bcomp, либо /addppm)
  • /setwpt - Дублирующая команда, аналогично с /setppm
  • /swcam - Переход в контейнер целеуказания (камеру)
  • /swmag - (Для вертолётов) Достать/убрать магнит
  • /addwpt [X] [Y] [Z] - Добавить поворотный пункт маршрута по координатам
  • /addppm - Дублирующая команда, аналогично /addwpt
  • /clearwpt - Удалить все ППМ
  • /clearppm - Дублирующая команда, аналогично /clearwpt
  • /autopilot - Включить автопилот (самолёт будет автоматически лететь между ППМ, если невозможно достигнуть ППМ, то кружиться вокруг текущего)
  • /swapt - Дублирующая команда, аналогично /autopilot
  • /swapto - Отключить автопилот (можно отключить просто перехватив управление самолётом, не вводя команду)
  • /wptcam - Зафиксировать камеру на текущем ППМ (камера повернёт на координаты маршрутной точки)
  • /ppmcam - Дублирует /wptcam
  • /tarcam - Дублирует /wptcam
  • /tarwpt - Автоматически добавить ппм из текущей зафиксированной точки (куда смотрит камера в режиме Fixed)
  • /tarppm - Дублирует /tarwpt
  • /vehwpt - Добавить ППМ из текущего местоположения самолёта
  • /vehppm - Дублирует /vehwpt
  • /swamode - [Номер режима] - Установить режим работы (0 - Навигация, 1 - БВБ 2 - ЗМЛ 3 - ДВБ)
  • /swam - Дублирует /swamode
  • /swazoom [Скорость] - Установить скорость приближения камеры /swcam на колесо мыши (по умолчанию 100)
  • /swaz - Дублирует /swzoom
  • /safp - Загрузить план полёта из файла (ложить в папку resource/avionics/flightplan). Редактор планов полёта можно найти тут.
  • /ldfp - Дублирует /safp
  • /savefp - Сохранить план полёта в файл (будет лежать в папке resource/avionics/flightplan). Редактор планов полёта можно найти тут.
  • /svfp - Дублирует /savefp
  • Клавиши управления: "[" и "]" можно использовать для переключения между предыдущим и следующим ППМ соответственно (горячие клавиши можно изменить в меню /swavionics)
  • Клавишу "Backspace" можно использовать для сброса захвата цели (горячие клавиши можно изменить в меню /swavionics)
  • Клавиши управления: "1" и "3" можно использовать для последовательного переключения режима работы авионики вперёд и назад
  • Другие команды можно найти в меню скрипта, в разделе "Список текстовых команд скрипта"

Скриншоты:

0.%20%D0%9E%D0%B1%D1%89%D0%B8%D0%B9%20%D0%B2%D0%B8%D0%B4%20-%20%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9.png
9.%20%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F%20-%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%20%D0%BF%D0%B8%D0%BB%D0%BE%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20RU.png

5.%20%D0%91%D0%92%D0%91%20-%20%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F.png

6.%20%D0%91%D0%92%D0%91%20-%20%D0%A0%D0%B0%D0%B4%D0%B0%D1%80%20(%D0%BC%D0%B8%D0%BD%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B0).png

17.%20%D0%91%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C.png

8.%20%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F%20-%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%20%D0%94%D0%92%D0%91.png

10.%20%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E%200.1.6-beta.0509.png

3.%20%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F%20-%20%D0%B8%D0%BD%D1%84%D1%80%D0%B0%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%20%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B.png

Обновление 0.1.7:

Основные возможности скрипта, версия 0.1.5:

Как работать с редактором планов полёта:

В плане красоты кода сейчас я местами написал бы иначе, но это в целом первый скрипт который я когда-либо писал для гта, равно как и которые я писал на языке Lua, поэтому о том что можно было написать иначе узнавал уже через некоторое время после того как сделал ту или иную систему, а рефакторинг ради рефакторинга может уйти в бесконечную рекурсию-_- Ну и проект открыт к сотрудничеству, если хотите внести свой вклад в развитие, можете сделать это через pull request на github странице проекта.

Подробное описание работы всех режимов работы и систем скрипта можно найти на WIKI по скрипту
Последнюю версию скрипта со всеми необходимыми библиотеками всегда можно скачать тут
 

Вложения

  • Avionics-0.1.6-blast.hk.zip
    2.3 MB · Просмотры: 44
  • Avionics-0.1.7-blast.hk.zip
    2.6 MB · Просмотры: 23
Последнее редактирование:

chromiusj

Стань той переменой, которую хочешь увидеть в мире
Модератор
5,734
4,040
а в чем прикол,тут закомпиленно, на гх код открыт же
 

Ejik_Letchik

Участник
Автор темы
17
34
а в чем прикол,тут закомпиленно, на гх код открыт же
Код открыт. Тут скорее "защита от дурака", чтобы избежать ошибок связанных с модификацией скрипта, при отладке багов. Но никто не мешает взять код с гита и положить в папку. К тому же заметил что скомпилированные файлы меньше весят, по логике в интерпретируемом языке это означает что они должны быстрее читаться. Но это не точно.

В версии для либерти есть все библиотеки, в версии для бласт нет imgui из-за лимита по размерам загружаемого файла. К тому же на том сайте я ещё не обновлял архив, так что на данный момент самая новая версия скрипта на гите, бласте и гтаинсайд. Как дойдут руки сделать на ют видео с описанием обновы, обновлю и на либерти
 
Последнее редактирование:

Rei

Известный
Друг
1,617
1,677
Не разобрался как перегрузку считать в гта?
 

Ejik_Letchik

Участник
Автор темы
17
34
Не разобрался как перегрузку считать в гта?
Пока были идеи только через контроль изменения вектора скорости, но не стал реализовывать это в скрипте из-за лишних расчётов в единицу времени, которые слабо помогут во время полёта. Как я понял из таквью, в гта по дефолту персонаж всегда берет предельный для режима угол атаки и выходит на максимальные перегрузки. Контроллить это можно только с джойстика и не уверен что полет на джойстике не с максимальной перегрузкой даёт хоть какое-то преимущество в бвб, так что пока мне кажется что скорость и ускорение более важные показатели
 

Ejik_Letchik

Участник
Автор темы
17
34
Скрипт обновлён до версии 0.1.7-beta.2001.
  • !Изменилась зависимость от версии moonloader! Теперь для работы нужна версия v.027.0-preview3, или выше
  • Добавлена индикация пеших целей в режиме "воздух-земля" (с возможностью выключить, индикация нужна чтобы компенсировать низкую дальность прорисовки скинов)
  • Добавлена команда /idppm [id игрока] /idwpt [ид игрока] - для установки игрока с введённым id в качестве цели (для режима ДВБ)
  • Добавлена возможность локализации скрипта, в дополнение к ру создана локализация для английского языка, предусмотрена возможность создания собственной локализации для любого языка, для этого необходимо зайти в папку resource/avionics/localization и по аналогии с уже имеющимеся там файлами, перевести с оригинала построчно, с сохранением в новый файл
  • Добавлен баллистический вычислитель режима воздух-земля - для пушки. Вычислитель представляет собой прицельное приспособление для более точной стрельбы по небольшим целям
  • Добавлена возможность управления работой баллистических вычислителей (включение/отключения каждого из них)
  • Добавлена возможность устанавливать характеристики бомб для расчёта баллистическим вычислителем
  • Добавлена команда /raceppm /racewpt - для создания ППМ из координат активного чекпоинта/серверного маркера
  • Добавлена команда /markppm /markwpt - для создания ППМ из координат синглплеерного (клиентского) маркера на карте
  • Изменена система регистрации текстовых команд, для устранения зависимости библиотеки sampfuncs, поддержка которой на данный момент прекратилась разработчиками (данное изменение было введено до выхода новой версии sf)
  • Продолжена работа по векторизации всех растровых изображений, часть индикации переведена в векторный формат
  • Исправлен баг с отображением марок и меток при повороте камеры на 180 градусов от цели
  • Исправлен баг с отображением марок вектора скорости для целей в режиме БВБ
  • Работа по оптимизации - удалены некоторые старые мусорные функции, которые нигде в коде уже не используются
Подробное текстовое описание обновления, с картинками можно найти тут.

Обновлённая версия в закрепе первого сообщения.
 

Ejik_Letchik

Участник
Автор темы
17
34
Связанно больше с тем что уже после релиза вылеза проблема, v026 не знает что такое lua file system (lfs). Сходу не смог найти либу которая бы проходила вирустотал на 0/64 и за которую можно было бы официально поручиться в документации, поэтому решил увеличить требования к версии moonloader, на новой такой проблемы нет, лфс находит сходу.
 
  • Ха-ха
Реакции: Vespan

chapo

tg/inst: @moujeek
Модератор
9,064
12,019
Связанно больше с тем что уже после релиза вылеза проблема, v026 не знает что такое lua file system (lfs). Сходу не смог найти либу которая бы проходила вирустотал на 0/64 и за которую можно было бы официально поручиться в документации, поэтому решил увеличить требования к версии moonloader, на новой такой проблемы нет, лфс находит сходу.
а как вообще версия муна влияет на лфс? да и лфс на крайняк можно было самому собрать
 
  • Нравится
Реакции: Vespan

Ejik_Letchik

Участник
Автор темы
17
34
а как вообще версия муна влияет на лфс? да и лфс на крайняк можно было самому собрать
Там ведь выше написано что понятно стало после релиза что на v0.62 мун просит эту либу, а на v.027.0-preview3 находит сразу из коробки. Честно говоря не понимаю чем плоха версия 027, что к ней возникает столько вопросов. Собрать можно, но у меня сейчас нет на это времени, равно как и гарантий что собранная библиотека будет проходить VT на 0/64, а это обязательное требование для некоторых сайтов, размещающих у себя скрипты. Ручаться за либу собранную другим человеком я не могу. Чем думать над другими средствами доставки библиотеки конечному пользователю после релиза, проще сменить версию moonloader. Вероятно, это временное решение, пока нет времени этим заниматься.
p.s. если принципиально не хочется ставить 027, можете самостоятельно найти библиотеку lfs и поставить её на moonloader последней стабильной версии. Но делайте это самостоятельно, на свой страх и риск, с пониманием возможных последствий. Я не копался в дллках из паблика достаточно глубоко, было достаточно что они не удовлетворяют одному из обязательных требований. Поэтому в документации и в релизе написал оптимальный, на мой взгляд, вариант, если вы хотите сделать иначе - исходный код открыт, разумные правки приветствуются.
 
Последнее редактирование:
  • Bug
  • Ха-ха
Реакции: Vespan и trefa

chapo

tg/inst: @moujeek
Модератор
9,064
12,019
Там ведь выше написано что понятно стало после релиза что на v0.62 мун просит эту либу, а на v.027.0-preview3 находит сразу из коробки. Честно говоря не понимаю чем плоха версия 027, что к ней возникает столько вопросов. Собрать можно, но у меня сейчас нет на это времени, равно как и гарантий что собранная библиотека будет проходить VT на 0/64, а это обязательное требование для некоторых сайтов, размещающих у себя скрипты. Ручаться за либу собранную другим человеком я не могу. Чем думать над другими средствами доставки библиотеки конечному пользователю после релиза, проще сменить версию moonloader. Вероятно, это временное решение, пока нет времени этим заниматься.
p.s. если принципиально не хочется ставить 027, можете самостоятельно найти библиотеку lfs и поставить её на moonloader последней стабильной версии. Но делайте это самостоятельно, на свой страх и риск, с пониманием возможных последствий. Я не копался в дллках из паблика достаточно глубоко, было достаточно что они не удовлетворяют одному из обязательных требований. Поэтому в документации и в релизе написал оптимальный, на мой взгляд, вариант, если вы хотите сделать иначе - исходный код открыт, разумные правки приветствуются.
кстати, зачем вообще тянуть лфс? Судя по коду, лфс ты юзаешь только для поиска всех файлов в папке, так почему бы не использовать муновские функции?
Lua:
Filesearch handle, string name = findFirstFile(string mask)
string file = findNextFile(Filesearch handle)
findClose(Filesearch handle)
 

Ejik_Letchik

Участник
Автор темы
17
34
кстати, зачем вообще тянуть лфс? Судя по коду, лфс ты юзаешь только для поиска всех файлов в папке, так почему бы не использовать муновские функции?
Lua:
Filesearch handle, string name = findFirstFile(string mask)
string file = findNextFile(Filesearch handle)
findClose(Filesearch handle)
Найс, в следующей версии поменяю, либо можешь на гите рек в репо сделать, если есть желание. Когда писал решение с lfs нашлось быстрее, вот и всё.