Zubetto Posted December 13, 2016 Share Posted December 13, 2016 (edited) Этот небольшой скрипт случайным образом генерит воздушный трафик из набора различных маршрутов и типов ЛА. Возможно это будет полезным на карте Невады, например для придания жизни крупному аэропорту Мак-Карен. С заданной периодичностью скрипт произвольно выбирает группы ЛА, назначает им какие-либо маршруты и добавляет в игру, а также уничтожает группы завршившие свой маршрут. Можно задавать максимальное число юнитов трафика и временные интервалы следования по маршрутам, а также ряд других параметров. Во вложенных архивах: AirTraffic_Sochi_EditRoutes_Test02.miz -- пример миссии с воздушным трафиком для DCS 1.5 AirTraffic_test_03_EditRoutes.miz -- пример миссии с воздушным трафиком для DCS 2.0 zATR_URSS.miz -- пример миссии с маршрутами для DCS 1.5 zATR_KLAS.miz -- пример миссии с маршрутами для DCS 2.0 AirTraffic_031.lua -- основной скрипт для обработки трафика zzz0001_ATR_GameGUI.lua -- коллбэк по окончании загрузки миссии (нужен для создания своих маршрутов) Для задания своих маршрутов необходимо создать файлик с таблицами маршрутов и типами ЛА. Создать его можно с помощью редактора миссий и скрипта zzz0001_ATR_GameGUI.lua . Идеальным вариантом было бы добавить соответсвующие инструменты в редактор миссий, но этого я пока не умею((. Сейчас этот работает с использованием DCS Control API (чтобы узнать в какую папку нужно поместить API скрипт, можно посмотреть здесь C:\Program Files\Eagle Dynamics\DCS World\API\DCS_ControlAPI.html ; в последних версиях DCS необходимо создать папку "Hooks" в папке "Scripts"). Пошаговая инструкция: файл zzz0001_ATR_GameGUI.lua кладём в папку "Hooks" (например, у меня для версии DCS 2.2 это выглядит так: C:\Users\Zubetto85\Saved Games\DCS.openalpha\Scripts\Hooks\zzz0001_ATR_GameGUI.lua) запускаем DCS и заходим в редактор миссий; создаём группы, маршруты, практически всё как обычно; для трафика может быть использован только первый юнит группы; для первого юнита группы в поле БОРТОВОЙ (TAIL #) пишем ATUF или ATUB, если иное, то группа и её маршрут не будут использованы для трафика; ATUF означает, что по маршруту данной группы могут летать все группы, у которых также в поле бортовой указано ATUF; ATUB - что по маршруту данной группы может летать только эта же группа; иначе говоря, ставим ATUF, если хотим чтобы на данном маршруте были ЛА разных типов, и ATUB - только одного конкретного типа;; сохраняем миссию, имя файла должно обязательно начинаться с zATR , например zATR_My_Routes_01.miz; запускаем эту миссию; по окончании загрузки из миссии можно выйти; в папке "Hooks" (указанной в п.1) должен появиться файлик примерно с таким именем AT_ROUTES__My_Routes_01_001.lua , в котором будут лежать таблицы маршрутов и типы ЛА. если миссия не загрузилась, можно посмотреть логи (в логах искать по zzz0001) если ранее уже создавали файлы с таблицами маршрутов их нужно переделать с помощью нового zzz0001_ATR_GameGUI.lua (не раньше 24.12.2016), старые таблицы не будут работать с AirTraffic_03.lua Чтобы добавить воздушный трафик к уже имеющейся миссии нужен один триггер. В примерах миссий AirTraffic_Sochi_EditRoutes_Test02.miz и AirTraffic_test_03_EditRoutes.miz это самый первый триггер. Остальные триггеры добавлены только для демонстрации дополнительных возможностей (в игре F10 в радио меню). В AirTraffic_03.lua реализована замечательная идея от Stonehouse, теперь во время игры можно добавлять, заменять или удалять таблицы маршрутов и ЛА хранящиеся в разных файлах AT_ROUTES_*.lua, иначе говоря стало возможным распределить трафик по различным слоям и подключать/выключать нужный слой по мере необходимости. Данную возможность дает функция editRoutes('Name', chance) . Для того чтобы подключить новый слой AT_ROUTES_something.lua нужно два действия в триггере: DO SCRIPT FILE(AT_ROUTES_something.lua) DO SCRIPT ( zAirTraffic.editRoutes('Name', chance) zAirTraffic.ini() ) В приложенных примерах продемонстрированы все возможные действия с editRoutes('Name', chance). Вот некоторые пояснения к примерам: editRoutes('Name') -- добавляет слой под произвольным именем 'Name' и весом равным 1; или, если под этим именем уже имеется какой-либо слой, то только задаёт ему вес равный 1 editRoutes('Name', 100) -- заменяет все слои на данный editRoutes('Name', 0) -- удаляет слой с именем 'Name' editRoutes('Name', 72) -- добавляет слой под произвольным именем 'Name' и (или, если такой уже существует, только) задаёт ему вес в соответсвии со значением вероятности chance editRoutes(' ', 'equalize') -- задает всем слоям вес равный 1 Имена всех добавленных слоёв хранятся в таблице zAirTraffic.lotteryBag . Допустим у нас есть три слоя 'Layer01', 'Layer02', 'Layer03' с весами 1, 3, 1 соответственно, тогда zAirTraffic.lotteryBag = {'Layer01', 'Layer02', 'Layer02', 'Layer02', 'Layer03'} и вероятности что будет выбран первый или второй или третий слой соответственно равны 20%, 60%, 20% zAirTraffic.ini(report) -- запускает (или останавливает, если таблицы маршрутов пусты) воздушный трафик; если report==true то будет выведено сообщение о статусе трафика Параметры: zAirTraffic.country = 'ITALY' -- страна юнитов траффика, если nil то страна будет задаваться как и в Редакторе Миссий (в файле zATR*.miz) zAirTraffic.maxTot = 20 -- максимальное число юнитов траффика, которые могут быть на карте во время игры zAirTraffic.maxResp = 5 -- максимальное число юнитов траффика, которые могут появиться одновременно zAirTraffic.checkInt = 120 -- сек, интервал проверки стастуса юнитов траффика zAirTraffic.RespMinInt = 119 -- сек, минимальный интервал появления нового юнита zAirTraffic.RespMaxInt = 600 -- сек, максимальный интервал появления нового юнита zAirTraffic.DepChance = 50 -- %, вероятность того что будет выбран маршрут отправления zAirTraffic.DepMinInt = 240 -- сек, минимальный интервал следования по маршрутам отправления zAirTraffic.DepMaxInt = 1200 -- сек, задает время на завершение маршрута отправления zAirTraffic.ArrMinInt = 360 -- сек, минимальный интервал следования по маршрутам прибытия zAirTraffic.frequency = 251 Важные моменты при создании своих маршрутов: Скрипт трактует все маршруты либо как маршруты прибытия, либо как отправления. Если маршрут начинается в воздухе и заканчивается посадкой, то такой маршрут будет отнесен к маршрутам прибытия; во всех остальных случаях - к маршрутам отправления. Если в маршруте указаны точки взлёта и посадки, то считается что до взлёта юнит следует по маршруту отправления, а после взлёта - по маршруту прибытия (в AirTraffic_03.lua) Юнит следовавший по маршруту отправления считатеся завершившим свой маршрут, если с момента его вылета до настоящего прошло время большее чем zAirTraffic.DepMaxInt. Для маршрутов прибытия критерием завершения является низкая (<0.1 м/c) скорость юнита. Для гражданского трафика незаменимым будет этот потрясающий мод: https://forums.eagle.ru/showpost.php?p=3268436&postcount=89 Буду рад любой конструктивной активности! :book:AT_script_031.rarAT_test_missions.rar Edited April 9, 2018 by Zubetto В последних версиях DCS необходимо создать папку "Hooks" для Control API скриптов 4 Link to comment Share on other sites More sharing options...
Eponsky_bot Posted December 14, 2016 Share Posted December 14, 2016 А нет Миссии уже готовой ?:) Gigabyte Z690 UD DDR4 /i9-12900KF /64 Gb- G.SKILL Trident DDR4 4000 МГц / Palit GeForce RTX 3070 Ti GameRock 8GB /Corsair HX1200 1200W DCS A-10C Обучающий урок "Концепция HOTAS" (RU) DCS P-51D Руководство пилота Обучающие миссии для Ми-8 (Радиооборудование) Link to comment Share on other sites More sharing options...
Zubetto Posted December 14, 2016 Author Share Posted December 14, 2016 А нет Миссии уже готовой ?:) Во вложении два примера миссий, в которых добвлен воздушный трафик; в эих примерах собственно только трафик. Если требуется добавить трафик в уже готовую миссию, то нужно поставить ещё один триггер через редактор миссий, как в примерах. Link to comment Share on other sites More sharing options...
Eponsky_bot Posted December 14, 2016 Share Posted December 14, 2016 Во вложении два примера миссий, в которых добвлен воздушный трафик; в эих примерах собственно только трафик. Если требуется добавить трафик в уже готовую миссию, то нужно поставить ещё один триггер через редактор миссий, как в примерах. так это миссии? просто у них чето формат раровский... :huh: (сбило с толку). Ща глянем. Спасибо. Gigabyte Z690 UD DDR4 /i9-12900KF /64 Gb- G.SKILL Trident DDR4 4000 МГц / Palit GeForce RTX 3070 Ti GameRock 8GB /Corsair HX1200 1200W DCS A-10C Обучающий урок "Концепция HOTAS" (RU) DCS P-51D Руководство пилота Обучающие миссии для Ми-8 (Радиооборудование) Link to comment Share on other sites More sharing options...
Eponsky_bot Posted December 15, 2016 Share Posted December 15, 2016 Прикольная штука :thumbup: Прям реальная движуха на аэродроме. Gigabyte Z690 UD DDR4 /i9-12900KF /64 Gb- G.SKILL Trident DDR4 4000 МГц / Palit GeForce RTX 3070 Ti GameRock 8GB /Corsair HX1200 1200W DCS A-10C Обучающий урок "Концепция HOTAS" (RU) DCS P-51D Руководство пилота Обучающие миссии для Ми-8 (Радиооборудование) Link to comment Share on other sites More sharing options...
Zubetto Posted December 15, 2016 Author Share Posted December 15, 2016 Прикольная штука :thumbup: Прям реальная движуха на аэродроме. Спасибо! Link to comment Share on other sites More sharing options...
Gorynych Posted December 16, 2016 Share Posted December 16, 2016 Если кто понял , как делать, разжуйте пожалуйста на пальцах для "особо одаренных". А то - беда... :( Link to comment Share on other sites More sharing options...
Zubetto Posted December 16, 2016 Author Share Posted December 16, 2016 Если кто понял , как делать, разжуйте пожалуйста на пальцах для "особо одаренных". А то - беда... :( Вопрос в том как создать таблицу маршрутов или как добавить трафик в уже готовую миссию? Link to comment Share on other sites More sharing options...
Gorynych Posted December 17, 2016 Share Posted December 17, 2016 Скорее, второе. Редактор потихоньку осваиваю -раньше сам миссии не делал - чужими пользовался. Link to comment Share on other sites More sharing options...
Zubetto Posted December 17, 2016 Author Share Posted December 17, 2016 Скорее, второе. Редактор потихоньку осваиваю -раньше сам миссии не делал - чужими пользовался. В уже готовую миссию необходимо добавить один триггер (подробнее о триггерах лучше посмотреть в мануале). Можно просто настроить этот триггер как в приложенных примерах, тут не много вариантов. Триггер срабатывает один раз после начала миссии (в примерах спустя 4 сек) и выполняет скрипты, в том порядке как они указаны, сверху вниз: выполнить файл: AirTraffic.lua -- обязательное действие, здесь объявляются функции для работы с трафиком выполнить файл: AT_ROUTES__KLAS_002.lua -- обязательное действие, добавляются маршруты для трафика выполнить скрипт: ... -- это действие можно не ставить, я добавил его для удобства задания параметров выполнить файл: AirTraffic_ini.lua -- обязательное действие, запускается трафик Действие выполнить скрипт я добавил для удобства, здесь можно задать значения параметров. Дефолтные значения всех параметров задаются вначале AirTraffic.lua , поэтому если убрать третье действие выполнить скрипт, то будут использованы эти дефолтные значения. Если, скажем, я хочу изменить только максимальное число юнитов трафика, а значения других параметров оставить дефолтными, то перед всеми параметрами, кроме zAirTraffic.maxTot , надо поставить два дефиса (минуса) -- , т.е. закоментить эти строки, и выглядеть это будет так: --zAirTraffic.country = 'ITALY' zAirTraffic.maxTot = 100 --zAirTraffic.maxResp = 5 --zAirTraffic.checkInt = 120 --zAirTraffic.RespMinInt = 119 --zAirTraffic.RespMaxInt = 600 --zAirTraffic.DepChance = 50 --zAirTraffic.DepMinInt = 240 --zAirTraffic.DepMaxInt = 1200 --zAirTraffic.ArrMinInt = 360 --zAirTraffic.frequency = 251 Link to comment Share on other sites More sharing options...
Gorynych Posted December 17, 2016 Share Posted December 17, 2016 Спасибо. Буду постигать. Не хватит ума-буду задавать идиотские вопросы. Link to comment Share on other sites More sharing options...
milit Posted December 20, 2016 Share Posted December 20, 2016 Два вопроса: 1. Чтоб сделать трафик на другом филде (не Сочи) нужно выполнить п.п. 1-10 из первого поста? 2. Почему в AirTraffic.lua страна USA, а в воздухе Як-40 и Ил-76? =WRAG=345 R7 5800X @ 4,8 GHz; DDR4 32Gb RAM (+32Gb swap); Radeon RX 6800 16Gb; 3840x2160; Win10-64 Link to comment Share on other sites More sharing options...
Zubetto Posted December 20, 2016 Author Share Posted December 20, 2016 Два вопроса: 1. Чтоб сделать трафик на другом филде (не Сочи) нужно выполнить п.п. 1-10 из первого поста? Да 2. Почему в AirTraffic.lua страна USA, а в воздухе Як-40 и Ил-76? Страну можно указать любую. Для трафика скрипт будет использовать все ЛА, у которых в поле бортовой было задано ATUF или ATUB и будет добавлять эти ЛА за страну указанную в AirTraffic.lua 1 Link to comment Share on other sites More sharing options...
ED Team SL PAK Posted December 22, 2016 ED Team Share Posted December 22, 2016 (edited) А если создать на аэродроме солдатиков, чтобы ходили и техперсонал изображали? Можно использовать для трафика наземные юниты? zAirTraffic.RespMinInt = 119 -- сек, минимальный интервал появления нового юнита zAirTraffic.RespMaxInt = 600 -- сек, максимальный интервал появления нового юнита Сделал трафик в Неваде, а боты все рождаются одновременно и всё это похоже на постоянное дежавю. Все события в миссии методично повторяются из раза в раз. Не работает случайность интервалов. Настройки скриптовых параметров дефолтные из тестовой миссии. Edited December 22, 2016 by SL PAK йность Link to comment Share on other sites More sharing options...
eekz Posted December 22, 2016 Share Posted December 22, 2016 А если создать на аэродроме солдатиков, чтобы ходили и техперсонал изображали? Можно использовать для трафика наземные юниты? Вроде бы они ходить не умеют. Только бегать c автоматом наперевес :) Куплю B-17, можно B-24. B-29 не предлагать! Burning Skies =Burning Skies= @ Facebook Link to comment Share on other sites More sharing options...
Zubetto Posted December 22, 2016 Author Share Posted December 22, 2016 Сделал трафик в Неваде, а боты все рождаются одновременно и всё это похоже на постоянное дежавю. Все события в миссии методично повторяются из раза в раз. Не работает случайность интервалов. Настройки скриптовых параметров дефолтные из тестовой миссии. Надо глянуть файл миссии. А если создать на аэродроме солдатиков, чтобы ходили и техперсонал изображали? Можно использовать для трафика наземные юниты? В рамках этого скрипта, думаю, нет Link to comment Share on other sites More sharing options...
ED Team SL PAK Posted December 23, 2016 ED Team Share Posted December 23, 2016 Надо глянуть файл миссии. Рядом с ЛА игрока каждые 10 мин. спавнятся два бота (холодный старт) и улетают. И так из раза в раз. Хотелось бы чтоб каждый бот рождался через случайный промежуток времени из заданного диапазона. -- Так же заметил что некоторые боты исчезают не пройдя маршрут до конца (истекло время жизни). Возможно ли сделать исчезновение при истечении времени жизни по достижении скорости ноль? Если бот остановится на стоянке или остановится перед другим ботом.[MP] Nevada prop free fly 004.miz Link to comment Share on other sites More sharing options...
Zubetto Posted December 23, 2016 Author Share Posted December 23, 2016 Рядом с ЛА игрока каждые 10 мин. спавнятся два бота (холодный старт) и улетают. И так из раза в раз. Хотелось бы чтоб каждый бот рождался через случайный промежуток времени из заданного диапазона. -- Так же заметил что некоторые боты исчезают не пройдя маршрут до конца (истекло время жизни). Возможно ли сделать исчезновение при истечении времени жизни по достижении скорости ноль? Если бот остановится на стоянке или остановится перед другим ботом. Скрипт трактует все маршруты либо как маршрут прибытия либо как отправления. Если типом последней точки маршрута является "Land", то такой маршрут трактуется как маршрут прибытия, во всех остальных случаях - как отправления. В данной миссии у всех маршрутов были заданы и точки взлета и посадки, и все они были отнесены к маршрутам прибытия, где критерием завершения является низкая скорость ЛА. В файле с маршрутами я поменял принадлежность всех маршрутов, и теперь они относятся к маршрутам отправления (сами маршруты не трогал) и критерием их завершения является время в пути (от момента взлёта). В исправленной версии я не заметил особых проблем с исчезновением, а скорее наоборот, с заданным временем на прохождение маршрута отправления DepMaxInt = 1200 и периодом проверки checkInt = 120 в аэропорту Beatty прибывающие самолёты (т.е. те, которые завершали свой маршрут) доезжали до мест парковки и оставались там ещё довольно долго, так что при появлении новых ЛА на том же месте происходило наложение. Поэтому в данном случае я бы придерживался логики скрипта и разделял бы все маршруты на отправления и прибытия и по возможности каждому типу маршрута назначал бы свое парковочное место. В исправленной версии я также изменил количество ЛА, которые могут появиться за один раз maxResp = 3 и после этого случайность интервалов "заработала" или стала заметна. Во вложение я добавил и zzz0002_ATR_GameGUI.lua , чтобы маршруты как в этой миссии определялись бы как маршруты отправления.[MP] Nevada prop free fly 004Dep.mizzzz0002_ATR_GameGUI.lua Link to comment Share on other sites More sharing options...
ED Team SL PAK Posted December 23, 2016 ED Team Share Posted December 23, 2016 Поэтому в данном случае я бы придерживался логики скрипта и разделял бы все маршруты на отправления и прибытия и по возможности каждому типу маршрута назначал бы свое парковочное место. Чтобы все маршруты однозначно разделились на отправления и прибытия, надо не использовать маршруты типа взлёт-посадка? Или с новым GUI и такие маршруты всеравно правильно разделятся? Пробовал пару месяцев назад задавать ботам парковочное место прибытия и эта функция не работала - они рулили после посадки куда хотели, а не куда назначено. Link to comment Share on other sites More sharing options...
Zubetto Posted December 23, 2016 Author Share Posted December 23, 2016 Чтобы все маршруты однозначно разделились на отправления и прибытия, надо не использовать маршруты типа взлёт-посадка? Или с новым GUI и такие маршруты всеравно правильно разделятся? Пробовал пару месяцев назад задавать ботам парковочное место прибытия и эта функция не работала - они рулили после посадки куда хотели, а не куда назначено. На данный момент чтобы избежать проблемы исчезновений/наложений лучше не создавать маршруты типа взлёт-посадка. С ними будут проблемы как со старым GUI так и с новым (соответсвенно со старым они вообще не работают, а с новым надо искать подходящие значения параметров). Link to comment Share on other sites More sharing options...
Zubetto Posted December 25, 2016 Author Share Posted December 25, 2016 update: AirTraffic_03.lua | zzz0001_ATR_GameGUI.lua Link to comment Share on other sites More sharing options...
zOrg Posted January 2, 2017 Share Posted January 2, 2017 Хорошый скрипт.. вопрос, можно сделать трафик военный и с вооружением. Спасибо Попадания: (100%) приехали...... Link to comment Share on other sites More sharing options...
Zubetto Posted January 2, 2017 Author Share Posted January 2, 2017 Хорошый скрипт.. вопрос, можно сделать трафик военный и с вооружением. Спасибо Спасибо за комментарий. Честно говоря, я пока не пробовал использовать для трафика юниты с боевыми задачами, но вроде не вижу для этого принципиальных ограничений. Единственное, повторюсь, для трафика будет использован только первый юнит из группы и для того чтобы этот юнит не исчез раньше времени в его маршруте должна быть точка посадки. Link to comment Share on other sites More sharing options...
zOrg Posted January 2, 2017 Share Posted January 2, 2017 Для чего я это спросил... когда создаешь миссию то ставишь группы и знаешь когда , где как и сколько их будет..... в этом сучае они будут появляться внезапно... тем самым делать интерес к игре. Если не сложно подскажите как и где править скрипт? Попадания: (100%) приехали...... Link to comment Share on other sites More sharing options...
Zubetto Posted January 2, 2017 Author Share Posted January 2, 2017 Для чего я это спросил... когда создаешь миссию то ставишь группы и знаешь когда , где как и сколько их будет..... в этом сучае они будут появляться внезапно... тем самым делать интерес к игре. Если не сложно подскажите как и где править скрипт? Для того чтобы добавить трафик выполняющий какую-либо боевую задачу, править скрипт не надо. Группы создаются как обычно в Редакторе Миссий (пункты из первого поста). Если требуется чтобы группы добавлялись целиком, а не только первый юнит, то надо править функцию, которая собирает маршруты (в zzz0001_ATR_GameGUI.lua строка 77: function zATR.harvest(MissionTable, fromSide) ) а также функцию, которая добавляет группы во время игры (в AirTraffic_03.lua строка 75: function zAirTraffic.respATU) Link to comment Share on other sites More sharing options...
Recommended Posts