Jump to content

Работа с редактором миссий


Recommended Posts

Под спойлером.
Спасибо большое, всё работает! Очень хорошая функция, т.к. респить ботов плохой вариант для сетевой игры - приводит к заметному фризу, а запускать отложенно - то, что надо!

"Рыцарь онлайна - капризный слепыш"

Ryzen 5800x3d, 64Gb ddr4 3600Mhz Cl16, RTX3080 12Gb, Acer Predator XB271HK 2160p

Link to comment
Share on other sites

Спасибо большое, всё работает! Очень хорошая функция, т.к. респить ботов плохой вариант для сетевой игры - приводит к заметному фризу, а запускать отложенно - то, что надо!

 

К слову, все, что есть в окне триггерных действий юнита (скриншот 2 предыдущего сообщения) - все те команды, что там есть, можно завязывать на триггерные события в миссии. Допустим, там же можешь добавить "неуязвимость юнита: ВКЛ." и "Неуязвимость юнита: ВЫКЛ". И поставить, к примеру:

"ГРАНИЧНОЕ УСЛОВИЕ - ЮНИТ (юнит) В ЗОНЕ (зона) - ПОСТАВИТЬ ЗАДАЧУ ИИ (Юнит, Неуязвимость ВКЛ.)"

"ГРАНИЧНОЕ УСЛОВИЕ - ЮНИТ (юнит) ВНЕ ЗОНЫ (зона) - ПОСТАВИТЬ ЗАДАЧУ ИИ (Юнит, Неуязвимость ВЫКЛ.)"

И таким образом, как только юнит пересекает зону, то он либо становится неуязвим, либо наоборот - уязвим. Команд там много разных. И все их можно завязать на триггерные события в миссии.

 

Здравствуйте, очень нужна команда для редактора "Отмена последнего действия", есть ли сейчас такая и если нет то хотелось чтобы её внедрили.

 

+

Как в различных редакторах, команды "вперед\назад" и тем самым мотать события, если случайно что-то не то сделал, чтобы можно было вернуть. Допустим, расставил все юниты как нужно, затем случайно передвинул головной юнит, а с ним вместе и все остальные.

Link to comment
Share on other sites

Такой вопрос сделал миссию,сохранил и там 4 файла

папка l10n и файлы warehouses,options,mission

Запустил миссию в онлайне и появились след.папки

ABRIS,MODS,R_828,R_863,Scripts,Jadro-1a

 

Для чего они создаются?Или такого не должно быть?

 

Спасибо!

 

P.S даже после самой простой без триггеров


Edited by Kvasok

I5 9600K 4.8(soft oc),GIGABYTE Z390 AORUS PRO,PALIT GameRock 2080 Super,ADATA 8200SX PRO 512GB,32GB Kingston Predator (Dual Rank) 3466 MHZ(14 17 17 36),БП Super Flower Leadex II Gold 750W

Link to comment
Share on other sites

Сам отвечу на свой вопрос.Может кто-нибудь столкнется с подобным)

Ответ лежит в руководстве.А я как то пропустил этот момент.

 

Команда ПОДГОТОВКА МИССИИ запускает игру в специальном режиме для

подготовки данных АБРИС и навигационной обстановки. Этот режим

используется при работе с миссией в случае необходимости ввести в

миссию данные АБРИС и сохранить навигационную обстановку (состояние

спутниковой группировки ГЛОНАСС – GPS, набор каналов АРК, данные

АБРИС).

При выходе из режима и сохранении миссии в файл миссии

(представляющий из себя ZIP архив) в этот архив будут записаны файлы:

1. Каналы АРК - Mission\Scripts\Aircrafts\ka-50\Cockpit\ARK.lua

2. Спутниковая группировка - Mission\Scripts\World\GPS_GNSS.lua

3. Дополнительная информация АБРИС -

Mission\ABRIS\Database\ADDITIONAL.lua

4. Навигационная БД - Mission\ABRIS\Database\NAVIGATION.lua

5. Маршруты АБРИС - Mission\ABRIS\Database\ROUTES.lua

 

Наверное по аналогии папки R_828,R_863,Jadro-1a имеют ту же причину возникновения и схожее назначение.

I5 9600K 4.8(soft oc),GIGABYTE Z390 AORUS PRO,PALIT GameRock 2080 Super,ADATA 8200SX PRO 512GB,32GB Kingston Predator (Dual Rank) 3466 MHZ(14 17 17 36),БП Super Flower Leadex II Gold 750W

Link to comment
Share on other sites

  • 1 month later...

Подскажите пожалуйста.

Средствами редактора в 2.1.1 Нормандия:

1. Возможно погрузить наземную технику на ЖД платформы для перевозки и дальнейшем их разгрузке в нужном месте.

2. Поставить на ЖД платформу ПВО для защиты на маршруте.

Link to comment
Share on other sites

  • 1 month later...

Теперь у меня свежий DCS, миссия с древней версии запускается и работает вроде корректно, это радует. Но появились фризы раз в 1-2 сек, такое подтормаживание всю дорогу (

Есть у кого-нибудь идеи как эти фризы победить?

И вот ещё какое то новшество произошло, миссия сделанная в крайней версии запускается с дефолтными текстурами земли, а моя старая миссия запускается с модифицированными текстурами земли, почему так?

 

апд

Ещё хотел спросить, на форуме мелькали скриншоты с прямоугольными триггерными зонами, это чьи-то хотелки или такое сделали в редакторе?


Edited by B3OP

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

И вот ещё какое то новшество произошло, миссия сделанная в крайней версии запускается с дефолтными текстурами земли, а моя старая миссия запускается с модифицированными текстурами земли, почему так?

 

 

Время года в миссиях совпадает точно?

GreyCat_SPb

Link to comment
Share on other sites

Время года в миссиях совпадает точно?

 

Да.

Только после того как удалил папки с мод текстурами стало одинаково.

Это всё странно.

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

  • ED Team

апд

Ещё хотел спросить, на форуме мелькали скриншоты с прямоугольными триггерными зонами, это чьи-то хотелки или такое сделали в редакторе?

Пока только хотелки.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

Да.

Только после того как удалил папки с мод текстурами стало одинаково.

Это всё странно.

 

Ничего странного. Оно читает из распакованного, а не из архива.

GreyCat_SPb

Link to comment
Share on other sites

Ничего странного. Оно читает из распакованного, а не из архива.

 

Но как тогда объяснить что новая миссия берёт файлы из дефолтного архива, а не из папок?

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

  • ED Team
Но как тогда объяснить что новая миссия берёт файлы из дефолтного архива, а не из папок?

Тут на форуме народ шумел что применение модов поломалось. Видел и в английском разделе тему. Наверно с этим связано.

Link to comment
Share on other sites

Сезоны работают так:

нобрь - уже зима

март - ещё зима

июнь - ещё весна

остальное как положено, длинновата зима на Кавказе получается, как в Мурманске :)

Если моды распакованы, то иногда сезон может подхватить текстуры полей или деревья, или нойс от предидущего сезона, если меняются архивы целиком, такое случается довольно реже.

Так что требуется полный перезапуск мира...


Edited by =K=Atom

i7-4790k, 32ggb, 2070, 2560x1440, TrackIR5, Win10, всё в синей изоленте, и чуток SSD.

Link to comment
Share on other sites

  • 2 weeks later...

В редакторе не отображаются здания в населённых пунктах — это надеюсь временно?

Как работает ЗОНА РАЗРУШЕНИЯ ОБЪЕКТОВ КАРТЫ? Поставил эту зону и указал процент но ничего не произошло. Правда Ми-8 после того как завалил МЗА разрядил по городу оставшиеся НАРы (кстати с ОФП2 восьмёрка стабильно валит МЗА). Зона разрушения объектов карты работает как-то с ботами?

Ещё из новшеств нашел возможность в редакторе ставить метки на карте, это весьма круто. Особенно в паре с РАКЕТОЙ В ЗОНЕ, теперь можно отследить пуск ПЗРК и тут же обозначить нп меткой — тут был буск ПЗРК )

А вот УСТАНОВИТЬ БРИФИНГ вызвал краш DCS, возможно потому что я там не указал картинку ( Но это нововведение просто революционно, теперь видимо можно динамический брифинг делать :thumbup:

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

Зона разрушения работает пока только в 2.1.1, проверял на Неваде (в Лас-Вегасе не работает), В начале (старте) миссии назначить тригерную зону - радиус на город или поселок, установить процент разрушений.

При подлете к установленной зоне, видим разрушения в городе или поселке.

А вот про метки от ПЗРК поподробней можно..

Брифинг (обновление) работает только для офлайна и уже давненько. Если вылетает, значит нет картинки - это точно.

https://www.digitalcombatsimulator.com/ru/files/2626957/


Edited by =K=Atom

i7-4790k, 32ggb, 2070, 2560x1440, TrackIR5, Win10, всё в синей изоленте, и чуток SSD.

Link to comment
Share on other sites

Зона разрушения работает пока только в 2.1.1, проверял на Неваде (в Лас-Вегасе не работает), В начале (старте) миссии назначить тригерную зону - радиус на город или поселок, установить процент разрушений.

При подлете к установленной зоне, видим разрушения в городе или поселке.

Ясненько.

 

А вот про метки от ПЗРК поподробней можно..

Не метки от ПЗРК.

Имел в виду что есть триггер РАКЕТА В ЗОНЕ, с помощью него отслеживаешь пуск ПЗРК.

Есть действие МЕТКА ДЛЯ ВСЕХ (а также красных или синих), она ставится в центре триггерной зоны. Ну вот, ставишь ПЗРК, а у меня они в окрестностях НП, ставишь триггерную зону так чтобы ПЗРК попадал в неё. Нужно иметь в виду что триггеры обсчитываются один раз в 1сек, поэтому размер зоны должен быть достаточным чтобы ракета не успела вылететь из неё как минимум в течении пару-тройку секунд. Я ставлю зону так чтобы её центр находился в центре НП. Далее триггером отслеживается факт пуска, и поднимается флаг, а при поднятии этого флага ставится метка в центре посёлка — "Блабла бла, в НП Гадюкино обнаружен пуск ПЗРК". И я делаю метку с отсрочкой по времени, она появляется через пару минут, а не моментально и по метки не ясно где именно ПЗРК, игроку известно что в районе этого посёлка есть расчёт ПЗРК. Отсрочку я делаю потому что я ненавижу когда всякие надписи появляются моментально, например разбомбил цель и тебе в сию секунду надпись — "Цель уничтожена, ты молодец" ))

 

Брифинг (обновление) работает только для офлайна и уже давненько. Если вылетает, значит нет картинки - это точно.

https://www.digitalcombatsimulator.com/ru/files/2626957/

А я по техническим причинам давненко не обновлялся, сидел на устаревшем DCS )

Ясно, меня как раз офлайн интересует.

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

  • 4 weeks later...
  • ED Team

Как заставить работать аргументы кабины

 

Один англичанин спросил как сделать озвучку запуска вертолёта, как это сделано в кампании "Нефтепромысел". Я то ему написал, но решил что будет полезно и тем, кто хочет пользовать аргументы кабины в миссиях. На данном примере можно понять как это работает и как этим пользоваться. Выкладываю:

Как заставить работать аргументы кабины.pdf

StartUp UH-1H.miz

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Один англичанин спросил как сделать озвучку запуска вертолёта, как это сделано в кампании "Нефтепромысел". Я то ему написал, но решил что будет полезно и тем, кто хочет пользовать аргументы кабины в миссиях. На данном примере можно понять как это работает и как этим пользоваться. Выкладываю:

 

Благодарю!

Таким же методом можно проверить и выставленную частоту на радиостанции?

Чтобы допустим выставить необходимую частоту и потом через радоменю послать сообщение, если частота не соответствует то сообщение не отправилось.

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

А как провернуть такую штуку, хочу реализовать интерактивный радиоэфир, ну чтобы игрок мог отправлять сообщения и какие-то доклады через радиоменю но предварительно выставив правильную частоту.

Вот, проблема в том что адресат может быть в тени и тогда сообщение ему не должно прийти.

Как проверить что адресат может слышать игрока?

Т.е. нужно избежать ситуации когда игрок отправил сообщение и там его приняли, а так как они были в тени и прямой связи меду абонентами нет то игрок не услышит ответ и соответственно это выльется в хреновую ситуёвину. Например пытается выйти на связь с наземной группой, делает запрос, триггер срабатывает потому что частота совпадает и группа ему отвечает, но игрок этого не слышит и начинаются непонятки.

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

  • ED Team

Пока адресат не подтвердит получение информации триггер от него не отстанет.

 

 

Попробуй для проверки установленный частоты такое:

 

Проверка частоты у радиостанции:

Х:КАБИННЫЙ ПАРАМЕТР РАВЕН

VHF_AM_FREQ

130.0

Link to comment
Share on other sites

Пока адресат не подтвердит получение информации триггер от него не отстанет.

Не ясно, как ИИ может подтвердить?

 

доп.

Т.е.

Игрок запрашивает — "305й заставе"

Поднялся флаг.

По этому флагу застава начинает отвечать — "Застава, 305му, ответил".

Игрок не слышит этого.

 

Видимо надо делать так чтобы застава спамила пока игрок не окажется в зоне радиостанции?

И когда игрок услышит то отвечает — "305, заставе, блаблабла"

Поднимает другой флаг и событие запускается.

Наверно как то так.


Edited by B3OP

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

Слышал что можно как-то выяснить факт посадки на аэродром.

А можно выяснить что вертолёт (Ми-8) приземлился на грунт?

Местность сложная, перепады высот, место посадки на выбор игрока.

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

Слышал что можно как-то выяснить факт посадки на аэродром.

А можно выяснить что вертолёт (Ми-8) приземлился на грунт?

Местность сложная, перепады высот, место посадки на выбор игрока.

Посмотри вот тут сообщение 31 и далее, ребята рассуждают:

https://forums.eagle.ru/showthread.php?t=176639&page=2

Link to comment
Share on other sites

Посмотри вот тут сообщение 31 и далее, ребята рассуждают:

https://forums.eagle.ru/showthread.php?t=176639&page=2

 

Благодарю, там оказывается сокровища зарыты )

 

Продублирую здесь.

Вобщем посадка и всё что с этим связано.

 

я обычно использую несколько условий

 

1. объект в зоне

2. Высота объекта менее чем (высота места посадки над уровнем моря в метрах +1 м)

3. Объект , скорость ниже чем (1)

4. Объект вертикальная скорость ниже чем (min= -1; max=0 )

 

Высоту определяю (самое верное ИМХО) это предварительно сажаю (даю команду на посадку) бота (не в редакторе, а непосредственно в миссии...) на ту точку которая интересует и смотрю в нижней строке какая у него высота получается.

 

к этой высоте + 1...3 м

 

 

Кроме того можно еще добавить условия опускания РОШа на упоры (который определяется опусканием шага винта по прибору УП-21 менее 1..2 град. )

это - кабинный аргумент в диапазоне 36 (min= 0; max= 0,05)

 

Еще можно добавить условие постановки на колесный тормоз (это если надо выгрузить или погрузить десант,например)

это - кабинный аргумент в диапазоне 881 (min= 0,8; max= 1)

 

Ну и не мешает добавить показания вариометра на нулевой отметке (на случай если вдруг... что маловероятно, но все же, если РОШ будет опущен и тормоз нажат еще в полете)

это - кабинный аргумент в диапазоне 16 (min= -0,025; max= 0,025)

 

Eponsky_bot, а не подскажешь, где можно посмотреть все кабинные аргументы?

Знаю, что можно сделать так, чтобы номер этого аргумента выводился в ярлычке при наведении курсором на тумблер, кнопку и т.д. Для этого нужно править какой-то файл LUA.

 

ну там целая процедура.

 

Покажу на примере (картинка ниже)

 

з/ы: для показаний приборов, аналогичным образом надо курить файл mainpanel_init.lua (тут гемора чуть побольше)

 

 

то есть

 

на примере шага винта

 

-- Rotor Pitch

 

RotorPitch = CreateGauge()

RotorPitch.arg_number = 36

RotorPitch.input = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0}

RotorPitch.output = {0.0, 0.07, 0.14, 0.21, 0.29, 0.35, 0.43, 0.5, 0.57, 0.64, 0.71, 0.79, 0.86, 0.93, 1.0}

RotorPitch.controller = controllers.RotorPitch

 

15 град на приборе - 15 позиций в строчке RotorPitch.output, ну и между ними смотреть диапазоны.

 

 

 

 

 

0_138de2_6d6ef2e0_orig

 

В модельвьювере справа-сверху есть окошко для ввода аргумента. А левее ползунок, перемещая который можно увидеть анимацию элемента кабины этого аргумента и значения в нужных для проверки положениях.

 

Аргументы ламп спрятаны глубже - ищите поиском lamps.lua. Можно сделать проверку на загорание/потухание всяких индикаторов.

 

Это часть скрипта. Как самое простое, без учета нужной зоны (аэродрома):

 

 

local _name = 'Вертол. группа'
local _plane = Group.getByName(_name):getUnit(1)
local fl
local customEventHandler = {}
function customEventHandler:onEvent(event)
if not fl and world.event.S_EVENT_LAND == event.id and event.initiator == _plane then
	trigger.action.setUserFlag(10, 1)
	fl = true
end
end
world.addEventHandler(customEventHandler)

 

_name = 'Вертол. группа' - имя группы из редактора

trigger.action.setUserFlag(10, 1) - 10 это имя флага, который нужно установить

В редакторе: триггер (один раз) - время более (2) - выполнить скрипт.

И в поле вставить этот код.

Или код сохранить в файл (например, land.lua) и в редакторе: триггер (один раз) - время более (2) - выполнить файл скрипт (указать нужный файл). Тогда он будет в контейнере миссии.

 

Миссии примеры прилагаю.

 

 

29S! Спасибо большое! Нет опыта работы с такими инструментами, как скрипт. Но получилось привязать его к триггерной зоне. Поэкспериментировал: Поменял в нём значение local _name = 'верт.группа' на своё, и флаг в строке еtrigger.action.setUserFlag(5, 1) . Время после флага 5 поставил во втором триггере : - 10. Всё срабатывает чётко. Вне зоны молчок, как положено. Может, кому пригодится. Вложение "скрипт land" не сам скрипт, а его текст.

 

Без лишнего триггера можно привязать скрипт к конкретному аэродрому/площадке, если необходимо. Прямо в скрипт пару строк добавить. Чуть позже напишу.

 

Вот:

 

 

Если нужно только один конкретный аэродром, площадку:

 

local _name = 'Вертол. группа'
local _plane = Group.getByName(_name):getUnit(1)
local fl

local customEventHandler = {}
function customEventHandler:onEvent(event)
if not fl and world.event.S_EVENT_LAND == event.id and event.initiator == _plane and Airbase.getName(event.place) == 'Gudauta' then
	trigger.action.setUserFlag(10, 1)
	fl = true
end
end
world.addEventHandler(customEventHandler)

 

Флаг установиться, если посадка будет в Гудауте. Вместо 'Gudauta' указать название любого аэродрома или имя вертолетной площадки.

 

 

Если несколько. Тут чуть сложнее:

 

local _name = 'Вертол. группа'
local _plane = Group.getByName(_name):getUnit(1)
local fl

local Airbases_Table = {'Gudauta','Anapa','Верт. площадка'}

function GetAirbase(name)
for k, value in pairs(Airbases_Table) do
	if name == value then return true end
end
end

local customEventHandler = {}
function customEventHandler:onEvent(event)
if not fl and world.event.S_EVENT_LAND == event.id and event.initiator == _plane and GetAirbase(Airbase.getName(event.place)) then
	trigger.action.setUserFlag(10, 1)
	fl = true
end
end
world.addEventHandler(customEventHandler)

 

Здесь есть таблица (Airbases_Table), в которую через запятую указывать нужные аэродромы, площадки.

 

 

 

Список аэродромов Кавказа:

 

 

['Anapa'] = 'Анапа-Витязево',

['Batumi'] = 'Батуми',

['Beslan'] = 'Беслан',

['Vaziani'] = 'Вазиани',

['Gelendzhik'] = 'Геленджик',

['Gudauta'] = 'Гудаута',

['Kobuleti'] = 'Кобулети',

['Krasnodar-Pashkovsky'] = 'Краснодар-Пашковский',

['Krasnodar-Center'] = 'Краснодар-Центральный',

['Krymsk'] = 'Крымск',

['Kutaisi'] = 'Кутаиси',

['Maykop-Khanskaya'] = 'Майкоп-Ханская',

['Mineralnye Vody'] = 'Минеральные Воды',

['Mozdok'] = 'Моздок',

['Nalchik'] = 'Нальчик',

['Novorossiysk'] = 'Новороссийск',

['Senaki-Kolkhi'] = 'Сенаки-Колхи',

['Soganlug'] = 'Соганлуг',

['Sochi-Adler'] = 'Сочи-Адлер',

['Sukhumi-Babushara'] = 'Сухуми-Бабушара',

['Tbilisi-Lochini'] = 'Тбилиси-Лочини'

 

В скрипт писать то, что между скобками []

 

 

Замечательно! Как понял,устанавливаешь любую верт. площадку, называешь её. например Верт пл. 1, вписываешь в скрипт её или несколько подобных. Скрипт сработает именно при посадке на одну из них, но никак, если приземлиться на поляне где-нибудь?. Спасибо большое. Eponsky bot подсказал с кабинным аргументом-тоже очень точно срабатывает.Пойду тестировать)).

 

Да, скрипт работает только при посадке на аэродромы, площадки. Если нужно вообще на любой кусок земли, тоже нужно пару-тройку строк добавлять. Ту да же.

Все зависит от конечной цели.

 

Забыл добавить. В скрипте есть переменная (fl) - служит для однократного срабатывания скрипта. Если ее убрать, скрипт будет срабатывать каждый раз при посадке. Главное, не забывать по ходу миссии и флаг убирать (в моем примере - 10).

 

С проверкой на любом участке земли.

 

 

 

local _name = 'Вертол. группа'
local _plane = Group.getByName(_name):getUnit(1)
local fl

local Airbases_Table = {'Gudauta','Anapa','Верт. площадка'}

function GetAirbase(name)
for k, value in pairs(Airbases_Table) do
	if name == value then return true end
end
end

local customEventHandler = {}
function customEventHandler:onEvent(event)
if not fl and world.event.S_EVENT_LAND == event.id and event.initiator == _plane and GetAirbase(Airbase.getName(event.place)) then
	trigger.action.setUserFlag(10, 1)
	fl = true
end
end
world.addEventHandler(customEventHandler)


timer.scheduleFunction(function()

if not fl then
	local _planeVelocity = _plane:getVelocity()
	local _planeSpeed = math.floor((math.sqrt((_planeVelocity.x^2) + (_planeVelocity.y^2) + (_planeVelocity.z^2)*3.6)))
	if not _plane:inAir() and _planeSpeed <= 0 then
		trigger.action.setUserFlag(11, 1)
		fl = true
	end
end


return timer.getTime() + 5
end, {}, timer.getTime() + 1)

 

timer.scheduleFunction - таймер, в примере проверяет состояние ЛА (в воздухе/на земле, скорость)

Тут другой флаг ставится - 11.

Срабатывание таймера - каждые 5 секунд (timer.getTime() + 5).

 

 

В данном случае, флаг 11 установится, когда объект окажется на земле и скорость будет равна 0.

 

Без разрыва шаблонов — нет прогресса.

Link to comment
Share on other sites

Благодарю, там оказывается сокровища зарыты )

.

Со мной поведешься, и не такого наберешься!

Сам я ничего не знаю, не умею, и не имею, но

знаю людей, которые все знают, умеют, и имеют.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...