Создание миссий типа "Превосходство"

Z Warthunder Wiki CZ
Přejít na: navigace, hledání

Миссия типа"Превосходство"(AFD миссия) - миссия, главной задачей которой является захват и удержание аэродромов. Для того, чтобы бомбардировщикам было чем заняться, рекомендуется также добавлять наземные цели.
ВНИМАНИЕ!Создание пользовательских миссий такого типапокане поддерживается.

Типы миссий

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


Рекомендации по созданию миссий

  • Все триггера желательно именовать так, чтобы любой человек, открывший миссию мог разобраться в ней ориентируясь на названия. Это же касается названий переменных и идентификаторов заданий.
  • Расстояние между двумя крайними аэродромами должно составлять 10 км.
  • Расстояние от места появления игрока до ближайшего аэродрома должно быть минимум в два (но лучше больше) раза меньше, до дальнего.
  • Места появления команд должны располагаться зеркально, чтобы все игроки были в одинаковых условиях.
  • Расстояние от спавна команды до ближайшего аэродрома должно составлять около 3 км.
  • Пути следования наземных юнитоы должны пересекаться для того, чтобы включался скрипт уничтожения наземки.
  • Наземным юнитам лучше не участвовать в захвате аэродромов, иначе необходимо тщательно настраивать скорости их движения и позиции, чтобы добиться синхронного захвата зон. Если не добиться синхронного захвата, одна из команд будет чаще выигрывать.
  • Количество очков, отнимаемых за уничтожение всех наземных юнитов должно составлять примерно треть от общего количества очков команды. Остальное отнимается с помощью захвата аэродромов.


Обязательные поля миссии

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

Для миссий типа Превосходство существует несколько обязательных полей, который должны быть заполнены надлежащим образом. Эти поля находятся в настройках миссии.

  • сhapter))). Всегда должно быть со значениемairfield_dom, Это поле указывает на то в каком разделе игры будет видна эта миссия.
  • ctaCaptureZoneEq))). Указывает скорость убывания очков команд, если каждая владеет одинаковым количеством аэродромов. Для миссий с двумя аэродромами должно быть равно0.4, Для миссий с тремя аэродромами -0.55,


Создание миссии на примере stalingrad_w_AfD

Если вы дошли до этой главы подразумевается, что вы уже читалибазовый документ и имеете представление о том, как работать с редактором.
Крайне рекомендуется перед созданием CTA миссий сделать несколько одиночных миссий с различными заданиями: штурмовкой наземной техники, прикрытием и уничтожением бомбардировщиков и т.п.


Расположение аэродромов

Аэродромы необходимо располагать на относительно ровных участках. Далеко не все локации в игре являются ровными, хоть и кажутся таковыми на первый взгляд. Когда вы разместите аэродром и используете кнопкуDrop objekt, Убедитесь, что никакая часть аэродрома не обрезается ландшафтом. Ровнять локацию могут только художники, при этом подвергшаяся правке местность будет изменена во всех миссиях. Поиск места для размещения аэродрома может занять некоторое время.
Также при расположении аэродромов стоит обращать внимание на общее визуальное впечатление от мест, где они будут находиться. Желательно, чтобы какие-нибудь лэндмарки (уникальные места ландшафта) находились недалеко от аэродромов и в пространстве между ними.

1. Выберите место для расположения аэродромов.
2. Создайте на месте, куда вы хотите поставить первый аэродром, сущность типаobjectGroupи выберите в списке ее настроек нужный аэродром. Для большинства локаций отлично подойдетdynAF_kh_gol_airfield_gumrak.
3. После того, как аэродром размещен, используйте копкуDrop objektс основной панели инструментов редактора. Перемещениями и вращениями аэродрома добейтесь того, чтобы через взлетную полосу не показывалась геометрия уровня. Не забывайте после каждого изменения положения или угла поворота аэродрома приподнимать его над землей и использоватьDrop objekt, Иначе вы рискуете увидеть в миссии, что ваш аэродром зарыт под землю.
4. После того как вы определились с окончательным местоположением аэродрома, создайте сферу радиусом в 9-10 километров и разместите ее так, чтобы одна из границ этой сферы проходила по краю аэродрома.
5. В случае, если вы хотите разместить в миссии больше двух аэродромов, то их взаимное расположение может быть достаточно сложным. Но в данном конкретном случае мы делаем миссию с двумя аэродромами, поэтому размещаем второй аэродром зеркально по отношению к первому на другой стороне сферы.
6. Возможно, вам придется двигать оба аэродрома для того, чтобы добиться их зеркального расположения, и чтобы они при этом не зарывались в ландшафт.
7. Измените название одного аэродрома на«Airfield_01», А второго на«Airfield_02»,


Создание точек спавна

1. После того, как вы определились с финальным местоположением аэродромов, необходимо разместить точки появления команд. У вас уже есть сфера, центр которой находится в логическом центре миссии. Сделайте дубликат этой сферы с радиусом 6500 метров. После этого поднимите сферу на 1 километр над поверхностью и назовите ее«Fighters_area», Разверните сферу так, чтобы от одного из ее лучей до ближайшего аэродрома оказалось что-то около 3 километров. Для лучшего понимания взгляните на скриншот из редактора:

 (КАРТИНКА)

2. После того как вы разместили сферу, необходимо создать точки появления истребителей. Для этого создайте две дополнительные сферы с радиусами по 150 метров и разместить их на той-же высоте, что и«Fighters_area», Передвиньте сферы к узлам основной сферы так, чтобы они располагались друг напротив друга. Назовите эти сферы как«T1_fighters_spawn»и«T2_fighters_spawn», Для лучшего понимания взгляните на скриншот из редактора:

 (КАРТИНКА)

3. Создайте копию сферы«Fighters_area», Увеличьте ее радиус до 10.000 метров. Поднимите эту сферу на 3000 метров выше высоты сферы для истребителей и в ее узлах разместите две новые точки появления с радиусами по 150 метров. Назовите их«T1_bombers_spawn»и«T2_bombers_spawn»,


Создание зон захвата

1. Создайте две одинаковые зоны в форме параллелепипеда и разместите их так, чтобы каждый аэродром находился внутри такой зоны. Нижняя граница зоны должна оказаться ниже аэродрома. Высоту каждой зоны установите равной 300-400 метров.
2. Зону, находящуюся возле«Airfield_01», Стоит назвать«Capture_zone_01», А зону, находящуюся возле«Airfield_02», Стоит назвать«Capture_zone_02».

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


Создание триггера начала миссии

1. Чтобы заставить миссию работать необходимо создать логику миссии. Для этого создайте новый триггер и назовите его«Start_mission», Тут-же изменитеudálostмиссии на«InitMission», Чтобы триггер выполнился на старте миссии.
2. Для каждой точки спавна создайте«MissionMarkAsrespawnPoint», Где в качествеcílováукажите точку спавна, в качествеloc_nameукажите«Missions/fighters_spawn»для точек спавна истребителей или«Missions/bombers_spawn»для точек спавна бомбардировщиков.
3. Для каждой точки спавна необходимо указать, самолеты какой команды будут на ней появляться. Кроме того, в поле"štítek"необходимо отключить возможность появления бомбардировщиков на спавне для истребителей, и аналогично запретить возможность появления истребителей на спавне бомбардировщиков.
4. Теперь создадим логику для зон захвата. Для этого используем две функции«MissionMarkAsCaptureZone», В качестве"cílová"первой из них укажем«Capture_zone_01», Выставим ей полеarmádaравным нулю, чтобы по-умолчанию зона считалась нейтральной. Включим флаг«CanCaptureOnGround», Чтобы зону могли захватывать истребители, севшие на землю внутри зоны. Выключим флаг«CanCaptureInAir», Чтобы самолеты игроков не могли захватывать зону, находясь в воздухе над ней. Значение флага«CanCaptureByGM»зависит от того, хотим ли мы чтобы наземная техника принимала участие в захвате зоны, или нет.
5. Очень важным моментом является то, что необходимо заполнить поле«Letiště»и указать в нем«Airfield_01», Это делается для того, чтобы связать зону захвата с аэродромом. Теперь после того как зона будет захвачена, на аэродроме будут ремонтироваться самолеты команды, захватившей зону. Технически не обязательно размещать зону там же, где находится аэродром, что открывает простор для создания новых типов миссий (например? захваченный город включает аэродром, расположенный неподалеку) .
6. Скорость захвата зоны (ппарметрtimeMultiplier) Задайте равным 0,14, что это позволит игрокам захватывать аэродромы без долгого простоя.
7. Заполните самостоятельно вторую функцию «missionMarkAsCaptureZone».


Добавление наземки

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

1. Создадим под местом спавна истребителей команды А танк. Укажем танку, что он принадлежит команде А, и выставим его численность в необходимое количество. С помощью точек пути проложим его путь по необходимой нам траектории. Можно продублировать этот танк, создав несколько танковых групп. Создайте каждой танковой группе прикрытие из зенитных пулеметов и так-же проложите им траекторию движения.
2. Аналогично, создайте технику для второй команды. Не забудьте, если пути наземных юнитов противоположных команд будут пересекаться, они смогут вступить в бой.
3. Создайте новый сквад«T1_tanks_squad»и поместите в него все танки команды А. Затем создайте сквад«T1_aaa_squad»и поместите в него все зенитки команды А. Для второй команды сделайте тоже самое.
4. В триггере«Start_mission»с помощью функции«SetUnitsProperties»выставьте значение«Accuaracy»танков равным 0, чтобы они не могли уничтожить друг друга. Зениткам снимите галочку с поля«TargetGnd», А поле«Accuarcy»и«EffShootingrate»выставьте в 0,3, чтобы зенитки не атаковали наземных юнитов, и не отличались особой точностью при стрельбе по самолетам.


Включение наземных юнитов в логику игры

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

1. Cоздадим сквад«T1_land_squad»и поместим в него сквады«T1_tanks_squad»и«T1_aaa_squad», Создадим сквад«T1_quest_units_squad»и поместим в него«T1_land_squad», Таким образом, изменяя содержимое«T1_land_squad»мы будем автоматически менять содержимое«T1_quest_units_squad»,
2. Теперь создадим дополнительные сквады, которые понадобятся нам после того, как мы подключим шаблон, отвечающий за логику движения юнитов. Создайте сквад«T1_heavy_units_squad», И поместите в него«T1_tanks_squad», Аналогично, создайте сквад«T1_light_units_squad»и поместите в него«T1_aaa_squad», Создайте еще один сквад«T1_movable_units_squad»и поместите в него«T1_heavy_units_squad»и«T1_light_units_squad».
3. Аналогичную операцию проделайте с наземными юнитами второй команды.
4. Чтобы игроки видели маркеры над той техникой, которую они должны уничтожить, добавьте в первый триггер функцию«UnitSetIndication», В качестве"cílová"укажите«T1_land_squad», И установите, что индикация включается для команды Б. По аналогии сделайте индикацию юнитов второй команды для команды А.


Добавление шаблонов

В настройках миссии раскройте поле«Dovoz»и добавьте в миссию три шаблона:«Base_logic_template.blk»,«Land_units_death_template.blk»и«Land_units_move_template.blk»
При попытке сохранить миссию сейчас появится очень много ошибок из-за отсутствия большого количества переменных. Давайте добавим их:

  • players_counter))). Тип переменной: celé číslo. Значение выставляем в 0
  • destroy_timer_cur))). Тип переменной: real. Значение выставляем в 0
  • destroy_timer_max))). Тип переменной: real. Значение выставляем в 310
  • deaths_counter))). Тип переменной: celé číslo. Значение выставляем в 2
  • t1_land_death_counter))). Тип переменной: celé číslo. Значение выставляем в 0
  • t2_land_death_counter))). Тип переменной: celé číslo. Значение выставляем в 0
  • nearDamageDistance))). Тип переменной: real. Значение выставляем в 250
  • distance_timer_destroy))). Тип переменной: real. Значение выставляем в 2500
  • mission_timer))). Тип переменной: celé číslo. Значение выставляем в 0
  • all_land_units_count))). Тип переменной: celé číslo. Значение выставляем в 0
  • t1_land_unit_count))). Тип переменной: celé číslo. Значение выставляем в 0
  • t2_land_unit_count))). Тип переменной: celé číslo. Значение выставляем в 0
  • arcade_destroy_timer))). Тип переменной: real. Значение выставляем в 1140
  • historical_destroy_timer))). Тип переменной: real. Значение выставляем в 1800

Описание переменных и зачем они нужны смотрите в соответствующем документе.


Заключение

Миссия завершена. Не забудьте добавить брифинг миссии, укажите локацию, в которой будет запускаться миссия, дайте миссии уникальное название. Укажите, какие страны участвуют в миссии, для того, чтобы АИ знал какие самолеты ему выбирать. Параметр«DeathPenaltyMul»выставьте в 0, чтобы за убийство игроков не отнимались очки.

Так-же не забудьте указать поля в«Player_teamA»и«Player_teamB», Сущности для этих полей находятся внутри шаблона«Base_logic_template.blk», Но вам необходимо создать сущность типа«Armáda»с именем«T1_player01»и разместить его в центре локации. Для лучшего понимания смотрите скриншот из редактора:

 КАРТИНКА