Сицилия, 9 июля 1943 года. Обычное патрулирование превратилось в ожесточенную схватку с противником. Управляя двумя парами истребителей FW-190 дождаться подмоги с аэродрома, уничтожить, нападающие P-39, и сесть на аэродром.
Создание аэродрома
Первым делом создадим аэродром, на котором будет присутствовать еще две пары истребителей FW-190, готовых к взлету, и которые взлетят через 5 минут после начала боя. На этот же аэродром игроку надо будет приземлиться в конце миссии.
Перейдем в закладку «Landscape» и, воспользовавшись кнопкой «Select Object By Name» наберем, в появившемся окне «air». Выберем из результатов верхнюю строчку, закроем окно поиска и нажмем клавишу «Z» на клавиатуре, чтобы отцентрировать камеру на выделенном объекте.
Вернемся на закладку «Mission Editor» и, с помощью кнопки «Create box zone» создадим прямоугольник, размерами примерно с модель аэродрома, сориентировав ее в пространстве так, чтобы она совпадала с аэродромом. Выделим ее и, открыв окно свойств объекта, изменим имя на «airfield_zone».
Теперь создадим две шаровых зоны, с помощью кнопки «Create sphere zone», разместив одну в начале взлетной полосы, а другую в конце. Первую из них назовите «airfield_start», а вторую «airfield_end». На прямой между двумя этими зонами создайте еще четыре шаровых зоны, с именами «spawn01»-«spawn04».
Создание самолета игрока
Неподалеку от созданного нами аэродрома находится озеро. С помощью кнопки «Create unit», убедившись, что в поле справа от него выбрано «armada», создайте над озером, на высоте 3.000 метров самолет, назвав его «player_fw». В качестве самолета выберите «fw-190-a5» и выставьте ему оружие по умолчанию. Укажите в качестве «army» «1», количество самолетов установите равным «4», нажмите на кнопку «+numInWing» и укажите цифру «2» Откройте свойства миссии и в разделе «player_teamA» выберите самолет игрока.
Создание окружения
В окне свойств миссии откройте раздел «stars»и установите дату на 9 июля 1943 года, а время на 8 утра.
Откройте раздел «mission», и дайте название миссии, выберите карту, которая будет грузиться при старте миссии (Сицилия), укажите что это западная кампания, одиночная миссия, действие происходит утром, а погода хорошая.
Активация миссии
Создайте новый триггер «mission_start» с одним единственным «event»: «initMission».
Сохраните миссию и запустите ее, чтобы проверить, что все работает так, как задумано.
Создание самолетов противника
Прямо по курсу движения самолета игрока на расстоянии нескольких километров, над морем, создайте еще один самолет, назвав его «usa_aircobra», указав ему армию за индексом «2», количество самолетов равное «6» и количество самолетов в одном крыле «2».
Теперь нам необходимо усыпить эти самолеты, чтобы они не появились раньше времени. Для этого в триггер «mission_start» добавим новый «action», выбрав из списка «unitPutToSleep», указав в качестве «target» самолеты противника «usa_aircobra».
Создание маршрута полета
Цель полета игрока — патрулирование. Поэтому давайте дадим игроку точку маршрута, к которой он будет лететь, и так же первое задание — достичь этой точки.
Для этого, с помощью кнопки «Create point zone» создайте зону на побережье, на высоте 3.000 метров и задайте ей имя: «patrol_waypoint».
Теперь в каталоге, куда вы сохранили файл миссии, создайте новый файл с тем-же именем, что и файл миссии и расширением «csv». Создайте в нем строку «"doPatroll";"Follow to the checkpoint";"Проследуйте к отмеченной зоне"» и сохраните файл в кодировке «UTF-8».
Теперь в редакторе создайте новый «Mission Object» с именем «doPatroll», а в триггере «mission_start» добавьте новый «action»: «missionMarkAsWaypoint», указав в качестве «target» «patrol_waypoint», и включив галочки «visible» и «primary».
Проверка достижения точки маршрута
Для проверки достиг ли игрок точки маршрута создадим новый триггер «check_is_player_in_waypoint». Оставим включенной галочку «Enabled», так как мы уже в воздухе и летим к точке маршрута. Добавим условие проверки «condition», выбрав из списка «unitDistanceBetween» с параметрами:
- в поле «object» выберем «player»
- в поле «target» выберем «patrol_waypoint»
- в поле «value» установим 2500
- в поле «math» оставим «2D»
Таким образом, когда мы окажемся на расстоянии 2500 метров от точки патрулирования произойдет исполнение триггера. Теперь нам необходимо будет пометить задание выполненным. Для этого вызовем «action», выбрав из списка «moSetObjectiveStatus», в качестве «target» указав задание «doPatrol», и выбрав статус равный «2», что означает, что задание выполнено.
Так же нам необходимо спрятать путевую точку, чтобы она больше не отображалась на экране и карте. Для этого добавим новый «action» «missionMarkAsWaypoint», указав в качестве «target» «patrol_waypoint», и отключив галочку «visible».
Пробуждение истребителей противника
Пришла пора разбудить истребители противника и заставить их атаковать игрока. Для этого в триггере «check_is_player_in_waypoint» создадим «action» «unitWakeUp», указав в качестве «target» самолеты противника «usa_aircobra». Сразу же добавьте новый «action» «unitAttackTarget», где в качестве объекта выберите американский самолет, в качестве цели самолет противника, включите «fireRandom» и «playerAttracted», установив «playerAttractedCount» в «2». Это заставит самолеты противника атаковать самолеты игрока, причем как минимум 2 самолета будет всегда пытаться уничтожить самого игрока.
Выдача нового задания
Откройте «csv» файл миссии и добавьте в него строку «"holdOn";"Hold on agains enemy fighters, till reinforcement arrival";"Продержитесь до подхода самолетов подкрепления"», после чего сохраните его.
Перейдите в триггер «check_is_player_in_waypoint» и добавьте «action» «wait» на 3 секунды, сразу после чего добавьте в миссию новый «Mission Objective» с именем «holdOn», выключив ему галочку «enabled». Опять перейдите в триггер «check_is_player_in_waypoint» и добавьте «action», выбрав из списка «moAddObjectiveStatus», указав в качестве «target» задание «holdOn».
Выставление маркеров на истребители противника
После выдачи задания было бы хорошо указать игроку кого именно ему стоит бояться, пометив самолеты противника. Для этого в триггер «check_is_player_in_waypoint» добавляем «action» «unitSetIndication», в качестве «target» выбрав «usa_aircobra». Теперь над вражескими самолетами появились маркеры и их стало легче отслеживать.
Иконка подсчета самолетов противника
Так же было бы хорошо показать игроку количество самолетов противника, которые его атакуют и регулярно обновлять эту информацию.
Для этого необходимо создать новый триггер с именем «update_indicator», выключив ему галочку «Enabled». Для того, чтобы этот триггер не прекращал свою работу после первого выполнения необходимо выставить ему галочку «enableAfterComplete». Добавим в этот триггер «action» «missionSetTargetsIndicator» с параметрами:
- в поле «target» выбрать «usa_aircobra»
- в поле «icon» выбрать «air»
- в поле «icon_army» выбрать «2»
Теперь запустим этот триггер из триггера «check_is_player_in_waypoint» с помощью «triggerEnable».
Второстепенная задача
Настало время выдать игроку второстепенную задачу. Если основная его задача — продержаться до подхода подкрепления, то второстепенной можно назвать уничтожение всех самолетов противника.
Откроем «csv» файл миссии и добавим в него строку «"destroyAllEnemies";"Destroy all enemy fighters";"Уничтожте все вражеские истребители"». После этого создадим новый «Mission Objective» с именем «destroyAllEnemies». Снимем с него галочку «Enabled» и «isPrimary».
Теперь выдадим это задание в триггере «check_is_player_in_waypoint». Сначала добавим «action» «wait» на 3 секунды, чтобы сделать паузу между выдачей основного задание и второстепенного, а затем добавим «action» «moAddObjectiveStatus», указав в качестве «target» задание «destroyAllEnemies».
Проверка успеха второстепенного задания
Давайте сделаем проверку на выполнение второстепенного задания. Для этого добавим новый триггер «check_for_all_enemies_died», и снимем ему галочку «Enabled». Перейдем в триггер «check_is_player_in_waypoint» и добавим вызов триггера «check_for_all_enemies_died» с помощью «triggerEnable».
Вернемся в триггер «check_for_all_enemies_died» и добавим ему «condition» «unitWhenStatus», в качестве «object» указав «usa_aircobra», в качестве «object_type» - «isKilled» и в качестве «check_objects» выбрав «all». Теперь добавим «action», завершающий дополнительное задание. Выберите из списка «moSetObjectiveStatus», в качестве «target» указав задание «destroyAllEnemies», а в качестве «status» - «2», что позволит промаркировать задание, как выполненное успешно.
Включение таймера отсчета
Необходимо дать игроку некоторое время перед тем как в воздухе появятся самолеты поддержки. Для этого давайте заведем переменную, назвав ее «holdOnTimer». Выберем этой переменной тип «Integer». Выделив переменную изменим ее значение на «300». Значение переменной можно поменять в поле с именем переменной, расположенной ниже списка переменных миссии. Для того, чтобы изменять переменную нам необходимо создать новый триггер, с именем «hold_on_time_add», а так же выключить ему галочку «Enabled» и включить «enableAfterComplete». Добавим этому триггеру новый «action», выбрав из списка «varModify», и настроив ему параметры:
- в поле «var» выберите переменную «holdOnTimer»
- в поле «operator» выберите «add»
- в поле «value» оставьте «-1»
Таким образом каждую секунду значение нашей переменной будет уменьшаться на 1.
Перейдите в триггер «check_is_player_in_waypoint» и, в уже существующий «triggerEnable» добавьте вызов «hold_on_time_add».
Проверка завершения таймера отсчета
Создадим новый триггер с именем «check_for_hold_on_timer» и снимем галочку «Enabled». С помощью уже существующего «tirggerEnable» добавим вызов этого триггера в триггере «check_is_player_in_waypoint».
Добавим в «check_for_hold_on_timer» новый «condition» «varCompareInt», где в качестве «var_value» выберем переменную «holdOnTimer», а все остальные поля оставим без изменений. Первым же «action» добавим «triggerDisable» где запретим последующие вызовы триггера «hold_on_time_add».
На этом временно приостановим работу над триггером и займемся созданием истребителей поддержки.
Создание истребителей поддержки
С помощью кнопки «Create unit» создайте новый истребитель над тем же озером, над которым появлялся игрок, выставьте ему ту же армию, что у игрока, и настройте класс истребителя на «bf-109g-2». Измените ему имя на «support_fighters» и установите оружие по умолчанию. Так же укажите количество новых истребителей равное 8, а количество их в крыле равное 2.
Усыпление истребителей поддержки
Истребители создадутся с началом миссии, поэтому усыпим их. Для этого в триггере «mission_start» добавим к уже существующему «unitPutToSleep» только что созданные истребители.
Пробуждение истребителей поддержки
Истребители поддержки должны проснуться когда переменная «holdOnTimer» станет меньше нуля. Для отслеживания этого события у нас уже создан триггер «check_for_hold_on_timer». Откроем этот триггер и добавим в него «action» «unitWakeUp», указав в качестве «target» самолеты сопровождения «support_fighters».
Выдача истребителям поддержки задания
Теперь когда истребители пробудились надо дать им задание. Для этого в триггер «check_for_hold_on_timer» добавим «action», выбрав из списка «unitMoveTo», и настроив параметры:
- в поле «object» выбрать «support_fighters»
- в поле «target» выбрать «player_fw»
- поставить галочку «follow_target» и «shouldKeepFormation»
Проверка успеха основной миссии
Успех основной миссии произойдет в момент, когда самолеты сопровождения достигнут самолетов игрока. Для проверки этого события создадим новый триггер «check_for_support_near», и снимаем галочку «Enabled». В качестве «condition» добавляем «unitDistanceBetween» с параметрами:
- в поле «object» выбираем «support_fighters»
- в поле «target» выбираем «player_fw»
- в поле «value» выставляем «500»
- остальные поля оставляем без изменений
Добавляем вызов этого триггера в триггер «check_for_hold_on_timer» с помощью «triggerEnable».
Создание короткого ролика
Перед окончанием миссии давайте покажем игроку короткий ролик. Для этого в триггере «check_for_support_near» создадим «action», выбрав из списка «missionStartCutscene», с параметрами:
- в поле «target» выберите «support_fighters»
- в поле «second_target» выберите «player_fw»
- в поле «duration» поставьте 15 секунд
- в поле «camera_type» выберите «two_obj»
Сразу после него добавьте «action» «moSetObjectiveStatus», в качестве «target» указав «holdOn», а в качестве «status» - «2». Добавьте «wait» на 3 секунды и «missionCompleted».
Читайте также: