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

Ejik_Letchik

Участник
Автор темы
12
25
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 0.26 и выше, sampfuncs и библиотека cleo4 к нему, imgui

Установка:
  1. Установить на гта moonloader и sampfuncs
  2. Скопировать с заменой папку moonloader из релизного архива в папку с игрой
Команды и горячие клавиши скрипта:
  • /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


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

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

Вложения

  • Avionics-0.1.6-blast.hk.zip
    2.3 MB · Просмотры: 30

chromiusj

Известный
Модератор
5,650
3,951
а в чем прикол,тут закомпиленно, на гх код открыт же
 

Ejik_Letchik

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

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

Rei

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

Ejik_Letchik

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