Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Руководство пользователя
по работе с редактором миссий
1.Вступление. 2
2. Начало работ по созданию миссии. Выбор метода создания миссии. Преимущества и минусы 2 способов 2
3. Начало работ с редактором – ознакомление. Пункты меню и первоначальная настройка миссии 2
3.1 Меню 01.Mision. 3
3.2 Меню 02.Diplomacy. 5
3.3 Меню 03.Support. Настройка поддержек в миссии. 6
3.4 Меню 04.Camera. Варианты настройки камеры. 7
3.5 Меню 05.Lightning и меню 06.Weather – настройки погоды и освещения миссии. 9
3.6 Дополнительные информационные пункты меню – 07.Other и 08.Statistic. 12
4. Создание звукового антуража на карте и использование закладки Sounds. 12
5. Работа с редактором кампаний Подключение миссии, создание информационных сообщений и заданий. 14
6. Расстановка своих и вражеских юнитов. Создание групп. Настройка бекспексета, укомплектование командой. 17
6.1 Создание групп и юнитов. Меню настройки юнита, меню настройки группы. 18
6.2 Расстановка юнитов. 21
7. Плейсхолдеры.. 21
8. Начало работы с триггерами. Окно редактирования триггера и дерево триггеров. 22
9. Триггер Init 23
10. Триггер на запуск миномётов армии 2 – Mortar_g. 25
11. Триггер на уничтожение прорывов сквозь линию окопов – Def_Tank. 27
12. Триггер на высадку второй волны атаки – RunAtak2. 32
13. Триггер на запуск второй волны атаки – TankAttak. 34
14. Триггер на выигрыш - Mission_Win. 37
15. Триггер на проигрыш - Mission_Fail 38
16. Заключение. 40
1.Вступление.
Создание миссии в игре «Вторая Мировая» является процессом творческим и достаточно непростым. Более 50% процентов интересности геймплея игры зависит от дизайнеров миссий. Необходимо соблюдать баланс таким образом, чтобы миссия не стала непроходимой либо слишком лёгкой. Определенная сложность заключается в следовании (в случае дизайнеров игры) историческим данным. В этом документе мы попробуем подробно разобрать создание миссии с примерами приведения и объяснения триггеров, обобщив весь опыт работы на проекте «Вторая Мировая».
2. Начало работ по созданию миссии. Выбор метода создания миссии. Преимущества и минусы 2 способов.
Работы по созданию миссии, как правило, начинаются с определения – чего же мы хотим? Существует 2 варианта первоначального развития событий:
1) мы выбираем карту и в зависимости от ландшафта местности составляем в уме предположительный сценарий
2) мы придумываем желательный сценарий миссии и в зависимости от этого выбираем карту.
У обоих вариантов есть свои плюсы и минусы. В случае первоначального выбора карты мы можем быть уверены, что сможем использовать ландшафт максимально, но в этом случае, как правило, мы можем забыть об исторической достоверности такой миссии. При первоначальном создании в первую очередь сценария миссии мы можем быть уверенны, что создадим именно то, что нам так хотелось, но не всегда в этом случае мы сможем максимально использовать подошедшую нам карту.
2. Начало работ с редактором – ознакомление. Пункты меню и первоначальная настройка миссии.
Когда мы уже определились с картой и сценарием мы можем начинать создавать нашу миссию. После запуска редактора создаём новую миссию – нажатием иконки новой миссии на панели горячих клавиш (рис.1-1), либо выбрав соответствующий пункт из контекстного меню (рис. 1-2).

Рис. 1-1

Рис. 1-2
3.1 Меню 01.Mision

В правом окне редактора находится основное меню, с помощью которого мы далее будем работать с настройками миссии. Рассмотрим пункт меню 01.Mission (рис. 2-1).
Рис. 2-1
Обозначив название миссии (строка Name) и выбрав из выпадающего меню (строка Map) карту, которая нам подходит, мы можем приступить к более детальной настройке. В строке Campaign выбираем из списка (рис. 2-2) тип миссии или её принадлежность к кампании.

Где:
- пункт Single_Missions - одиночная миссия
- пункт Tutorial - обучающая миссия
- пункт MP_List - мультиплеерная миссия
- пункты Ally, France, Germany, Polish, USSR, Moscow - принадлежность к уже имеющимся в игре кампаниям
Рис. 2-2
Далее выбираем тип мультиплеерной миссии в строке MPType. В случае если миссия предназначена не для мультиплеера, стоит указать значение None.
В строке ManualComposition находится выпадающее меню с пунктами “False” и “True”. В случае указания пункта “True” будет включен режим выбора юнитов на нашей миссии.
Строка OutdateReserveDetachment также имеет выпадающее меню с пунктами “False” и “True”. В случае указания пункта “True” все войска, перешедшие игроку из предыдущих миссий, будут отмечены как устаревшие.
Далее нам следует выбрать территорию игровой зоны на нашей карте. Для этого существует несколько опциональных возможностей редактора.
Рис. 2-3
В пункте меню 01.Mission (рис. 2-1) существует подменю Territory (рис. 2-3).
Где:
- х - это координаты на карте по оси х
- у - это координаты на карте по оси у
- Width - ширина игровой зоны
- Height - длинна игровой зоны
- Color - цвет, которым в редакторе будет обозначена игровая зона
- Bottom и Right это информационные строки с координатами по осям х и у крайних точек игровой зоны

Другой вариант обозначения игровой зоны - выбор в закладке “Points, Rects, Arrays” нужной нам зоны – Territory (рис. 2-4).
Где:
- х - это координаты на карте по оси х
- у - это координаты на карте по оси у
- Width - это ширина игровой зоны
- Height - это длина игровой зоны
- Color - цвет, которым в редакторе будет обозначена игровая зона
- Bottom и Right - это информационные строки с координатами по осям х и у крайних точек игровой зоны
Рис. 2-4

Рис. 2-5
Последний вариант обозначения игровой зоны - это инструмент редактирования зон точек и пр. Иконка инструмента находится на панели горячих клавиш (рис. 2-5). Территория игровой зоны в данном случае меняется путём растягивания прямоугольника зоны на карте.
3.2 Меню 02.Diplomacy
Рассмотрим пункт меню 02.Diplomacy. Выбрав номер армии игрока в строке PlayerArmyIndex, мы можем приступить к настройке дипломатии в нашей миссии. Для этого должна быть создана армия противника (Army2 по умолчанию). Новую армию можно создать нажатием правой клавишей мыши на названии миссии в меню дерева миссии, либо нажав клавишу “Insert”, находясь в меню дерева миссии (рис. 2-6).

Рис. 2-6
После вызова меню редактирования дипломатии (рис. 2-7) в строке Diplomacy мы можем приступить к настройке. Выбрав одну из армий с помощью двойного щелчка в столбце Diplomacy, вы откроете выпадающее меню с вариантами дипломатических отношений.
Рис. 2-7
Где:
- Enemy - это враг
- Neutral - это нейтральные отношения
- Ally - это союзник
По умолчанию в строке Diplomacy стоит значение Neutral.
3.3 Меню 03.Support. Настройка поддержек в миссии.
В случае если в нашей миссии мы запланировали поддержки, то нам стоит внимательнее взглянуть на пункт 03.Support. Вызвав меню редактирования поддержек в строке Supports, мы можем создать новый тип поддержки, который будет доступен в нашей миссии, нажав на клавишу “Add”. Выбрав в колонке Members только что созданный тип поддержки, в правом столбце мы увидим меню его настройки (рис. 2-8).

Рис. 2-8
Где:
- Army - это номер армии, которой будет доступен данный тип поддержки (выпадающее меню с доступными вариантами)
- Preset - это список доступных типов поддержки с обозначением: типа поддержки (миномёты, истребители и тд); года, с которого использовался данный тип поддержки; армии, которой принадлежал данный тип поддержки (выпадающее меню)
- SpawnPoint - информационная строка о положении поддержки по координатам х и у, а также с указанием высоты
- х - точка координат нахождения поддержки по оси х
- у - точка координат нахождения поддержки по оси у
- h - высота нахождения поддержки
- Delay - задержка между вызовом поддержки и её запуском (в сек)
- Timeout - время, которое будет длиться поддержка (в сек)
- Calldown - время, через которое будет доступен повторный вызов (в сек)
- NumCalls - количество доступных вызовов данного типа поддержки (по умолчанию присвоено значение -1, что равняется 0)
Поддержка размещается далеко за пределами игровой зоны.
Так номер армии, которой принадлежит поддержка, чётко указывается в настройках, несколько армий (даже союзных) не могут использовать одну и ту же поддержку. Для каждой армии поддержка должна быть настроена индивидуально. Для каждой армии может быть создано несколько типов поддержки.
3.4 Меню 04.Camera. Варианты настройки камеры.
Рассмотрим меню 04.Camera (рис. 2-9). Существуют два основных варианта установки начального положения камеры в игре. При первом варианте камера устанавливается с помощью указания координаты точки, в которой будет находиться камера, и точки в которую она направлена (рис. 2-9).
Рис. 2-9
Где:
- CameraCurrentPosition - информационная строка с координатами точки, в которой находится камера по осям х, у, а также с указанной высотой
- СameraCurrentTarget - информационная строка с координатами точки, на которую направлена камера, по осям х, у, а также с указанием высоты.
- Type - тип начальной точки расположения (точки, на которую направлена камера) камеры, где Point_H это точка с указанными вручную координатами, NamedPoint_H - точка, созданная вручную, NamedRect_H - созданная вручную зона (рект). В данном случае значения должны быть установлены на “Point_H”.
- Point - информационная строка с указаниями координат точки по осям х и у
- х - координата по оси х, в которой находится точка
- у - координата по оси у, в которой находится точка
- Height - высота, на которой находится точка

Рис. 2-10
Для установки камеры с помощью указания уже созданных точек, нам необходимо первоначально эти точки создать. Создать новую точку можно щелчком правой клавиши мыши на пункте “Points” в закладке “Points, Rects, Arrays”, либо нажатием клавиши “Insert”, находясь на этой закладке (рис. 2-10).
С помощью курсора мыши в режиме редактирования зон точек и пр (см рис. 2-5) мы можем передвинуть точки в нужное нам положение (рис. 2-11).

Где:
- Cam1 - это начальное положение камеры
- Cam2 - это точка, на которую направлена камера
Рис. 2-11
После установки точек мы можем вернуться в меню настройки камеры (рис. 2.12).
Рис. 2-12
Где:
- CameraCurrentPosition - информационная строка с названием точки, в которой находится камера по осям х, у, а также с указанной высотой
- CameraCurrentTarget - информационная строка с названием точки, на которую направлена камера, а также с указанием высоты
- Type - тип начальной точки расположения (точки, на которую
направлена камера) камеры, где Point_H - это точка с указанными вручную координатами, NamedPoint_H - точка, созданная вручную, NamedRect_H - созданная вручную зона (рект). В данном случае значение должно быть установлено на NamedPoint_H.
- MissionPoint - это обозначение точки, которую использует камера
- Height - высота, на которой находится точка
3.5 Меню 05.Lightning и меню 06.Weather – настройки погоды и освещения миссии.
Настала пора настроить погодные условия на карте. 2 необходимых нам для настройки меню – 05.Lighting и 06.Weather (рис. 2-13).

Рис. 2-13
Редактирование погоды на карте - тонкий процесс, поэтому для удобства использования опции настройки погоды существуют несколько вариантов, приведённых ниже (требуется ввести следующие значения в соответствующие строки).
Пасмурный дождливый день
Fog 0
Ambient
Diffuse 0
Specular
Horizont 0.0.0.
DrawSun False
DrawShadows True
CloudsHeight 400
StormWeather 5
DrawClouds True
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType rain
DropColor
Пасмурный день
Fog 0
Ambient
Diffuse
Specular
Horizont 0.0
DrawSun True
DrawShadows True
CloudsHeight 400
StormWeather 5
DrawClouds True
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType none
DropColor
Облачный день
Fog 100
Ambient
Diffuse
Specular
Horizont 040 058 0.80
DrawSun True
DrawShadows True
CloudsHeight 600
StormWeather 3
DrawClouds True
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType none
DropColor
Безоблачный день
Fog 0
Ambient
Diffuse
Specular
Horizont 040 058 0.80
DrawSun True
DrawShadows True
CloudsHeight 600
StormWeather 1
DrawClouds True
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType none
DropColor
Зимний безоблачный день
Fog00
Ambient
Diffuse
Specular
Horizont 032 046 0.71
DrawSun True
DrawShadows True
CloudsHeight 600
StormWeather 1
DrawClouds False
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType none
DropColor
Зимний снежный день
Fog 000
Ambient 0
Diffuse 0
Specular
Horizont 0 02 0.68
DrawSun False
DrawShadows True
CloudsHeight 400
StormWeather 5
DrawClouds True
CloudColorAmbient 0
CloudColorDiffuse 0
DroppingType snow
DropColor 0
После предварительной настройки погоды на вашей миссии попробуйте загрузить игру и посмотреть, правильно ли всё настроено. Поэкспериментируйте с разными вариантами погодных условий.
3.6 Дополнительные информационные пункты меню – 07.Other и 08.Statistic.
Пункты 07.Other и 08.Statistics являются информационными. В пункте 07.Other указан путь до файла с нашей миссией. Пункт 08.Statistics отвечает за статистические данные вашей миссии. Развернув все подпункты, мы сможем увидеть точное количество тех или иных юнитов, общее количество юнитов использующихся на миссии и тд.
4. Создание звукового антуража на карте и использование закладки Sounds.
Для создания антуража на карте используются звуковые эффекты. Если вы хотите создать атмосферу в вашей миссии, то при помощи закладки Sounds вы легко сможете это сделать.
Рис. 3-1
Для создания нового звукового эффекта нажмите правой клавишей мыши на пункте Ambience в закладке “Sounds”, либо нажмите клавишу Insert” находясь на этой закладке (рис. 3-1).
Рис. 3-2
После создания звукового эффекта можно приступать к его настройке. Выделив нужный нам эффект, мы откроем меню настройки звуковых эффектов (рис. 3-2).
Где:
- Sid - это уникальный номер (имя) звукового эффекта который присваивается вручную для использования триггера AmbientSoundOn(off)
- Preset - это выпадающее меню с перечислением доступных звуковых эффектов
- Position - это информационная строка с координатами нахождения на карте звукового эффекта по осям х и у, а также с указанием высоты, на которой находится эффект
- х - координата по оси х, в которой находится звуковой эффект
- у - координата по оси у, в которой находится звуковой эффект
- H - высота, на которой находится звуковой эффект
- Play - выпадающее меню с пунктами “True” и “False”. При задании значения “False” звуковой эффект не будет проигрываться.
- Formation - это название формации, по которой может быть построена группа эффектов. Название задаётся вручную.
- Count - это количество выделенных на данный момент звуковых эффектов
- Rows - это количество рядов в формации
- UnitOffsetX - это расстояние между эффектами по оси х в данной формации (в ширину)
- UnitOffsetY - это расстояние между эффектами по оси у в данной формации (в длину).
Не забывайте, что звук карканья ворон лучше помещать в группе деревьев на высоте кроны, а лай собаки - рядом с будкой на уровне земли и т. д.
Переместить звуки на карте можно с помощью курсора мыши, как в режиме редактирования юнитов, так и в режиме редактирования зон, точек и пр., предварительно

включив опцию “Show sounds”, нажав на кнопку данной функции на панели горячих клавиш (рис. 3-3).
Рис. 3-3
Поэкспериментируйте со звуками на вашей карте и убедитесь, что все звуковые эффекты расставлены верно.
5. Работа с редактором кампаний Подключение миссии, создание информационных сообщений и заданий.
С помощью редактора кампаний ваша миссия подключается к игре, также в редакторе прописываются брифинги созданных миссии, задания миссий, подключаются бриффинговые карты и пр. Рассмотрим основное меню редактора кампаний (рис. 4-1).
Рис. 4-1
Для перехода к редактору кампаний необходимо переключиться на закладку “CampaignEditor”, которая находится рядом с закладкой редактора миссий – “MissionEditor”. Откроется меню редактора кампаний.
Где:
- ALLY, FRANCE, GERMANY, MOSCOW, POLISH, USSR - это списки миссий включённых в одноимённые кампании, уже имеющиеся в игре
- MP_LIST - это список мультиплейерных миссий.
- SINGLE_MISSIONS - это список одиночных миссий
- TUTORIAL - это список обучающих миссий
При выделении любого списка миссий откроется окно редактирования кампаний (рис. 4-2).

Рис. 4-2
Где:
- Type - это тип группы миссий, а опции в выпадающем меню: MISSION_LIST – список одиночных миссий; CAMPAIGN – список миссий кампании; MP_LIST – список миссий для мультиплеера; TUTORIAL – список обучающих миссий.
- UserCampagne - информационная строка с вариантами “True” и “False”, где “True” это кампания созданная пользователем
- SID - это уникальное имя кампании
- DirName - информационная строка с именем директории, где лежат доступные миссии
- FullName - полное имя кампании (прим. кампания за Германию - Третий рейх ).
- Description - это текстовое описание кампании
- FileNameTexts - информационная строка с путём к документу, хранящему всю текстовую информацию кампании
- MovieVideo - путь к ролику кампании, вводится вручную
- MovieAudio - путь к аудио-заставке кампании, вводится вручную
При выборе одной из миссий, включённых в список кампании, открывается меню редактирования миссии (рис. 4-3).

Рис. 4-3
Где:
- Number - это порядковый номер миссии в списке кампании
- SID - это уникальное имя миссии
- DirName - информационная строка с названием директории, где хранятся файлы миссии
- FullName - полное название миссии
- Country- страна, к которой принадлежат войска игрока в миссии
- Description - описание миссии (те брифинг)
- Layer - путь к файлу, который содержит информацию о карте брифинга миссии
- Success - уникальное имя миссии, к которой следует перейти в случае выигрыша
- Failed - уникальное имя миссии, к которой следует перейти в случае проигрыша
- FullDirName - информационная строка с полным путём к директории миссии
При создании новая миссия попадает в тот список миссий, к которому вы поставили принадлежность. Те если вы указали что создали одиночную миссию, то вам следует искать вашу миссию в меню кампании SINGLE_MISSIONS. Миссия автоматически не подключается к кампании. В списке кампании название не подключённой миссии обозначается как – “_Not_In_List_название миссии”.

Подключить миссию к кампании можно щелчком правой кнопки мыши на названии миссии (рис. 4.4).
Рис. 4-4
Развернув меню миссии, мы получаем доступ к дополнительным пунктам настройки миссии: submissions – задания миссии, Stringtable – информационные сообщения. Создав новое задание щелчком правой кнопкой мыши по пункту submissions, мы можем приступить к его настройке. После выделения нужного нам задания откроется меню настройки задания миссии (рис. 4-5).
Рис. 4-5
Где:
- Number - порядковый номер задания в миссии
- SID - уникальное имя задания в миссии
- Objectives - основная цель задания
- State - это состояние задания на момент начала миссии, где ACTIVE – активно, HIDE – спрятано, FAIL – проиграно, WIN – выиграно.
- EXP - количество опыта, присуждаемое юнитам игрока после выполнения задания
- Description - описание задания
- Success - сообщение, которое будет выведено при выигрыше задания
- Failed - сообщение, которое будет выведено при проигрыше задания
- Layer - путь к файлу, который содержит информацию о карте задания миссии
Также мы можем создавать независимые от заданий текстовые сообщения в миссиях (прим для получения подкрепления). После выделения подпункта Stringtable откроется меню информации о сообщениях. Открыв с помощью меню окно редактирования сообщений (рис. 4-6), и создав новое с помощью кнопки “ADD” мы можем редактировать сообщение.

Где:
- SID - уникальное имя (номер) сообщения
- Message – текст сообщения
Рис. 4-6
6. Расстановка своих и вражеских юнитов. Создание групп. Настройка бекспексета, укомплектование командой.
После того, как мы частично настроили миссию, можно приступить к расстановке юнитов на карте.

Рис. 5-1
Рассмотрим меню настроек армий миссии и пр. (рис. 5-1).
Где:
- Army1 и Army2 - это присутствующие в миссии армии (количество армий не ограничено)
- подпункт Army1 Deployment - это действующие в миссии юниты игрока (считая подкрепления)
- подпункт Army1 Reserves - это юниты, доступные для выбора в режиме выбора юнитов
- подпункты Army2 – Group8, Group9, Group11 и пр. группы юнитов включённые в состав армии
- подпункт ArmyComposition Outdated -
список фильтров устаревшей техники
- Permission - список фильтров на наличие у игрока того или иного типа юнитов
- Placeholders - список плейсхолдеров
6.1 Создание групп и юнитов. Меню настройки юнита, меню настройки группы.
Рис. 5-2
Создать новую группу юнитов или новый юнит можно щелчком правой кнопкой мыши на подпункте меню армии (для армии игрока), либо на названии армии (для армии, управляемой ИИ).

Рассмотрим меню настройки группы (рис. 5-3).
Где:
- Name - название группы, причисляемое группе автоматически при создании (название может быть изменено в данной строке)
- Sleep - строка состояния группы с подпунктами “True” и “False”. При установленном значении “True” группа находится в спящем режиме, и далее может быть вызвана на карту с помощью триггера ReinforsementLand
Рис. 5-3
Рис. 5-4
Рассмотрим подпункт 01.Unit меню настройки юнита (рис. 5-4).
Где:
- Name - имя юнита присеваемое автоматически в зависимости от типа юнита при его создании (может быть изменено в данной строке вручную)
- UnitID - информационная строка с присвоенным юниту при его создании уникальным номером
- Country - страна, к которой принадлежит юнит
- Classification - тип юнита: Human, Tank и тд
- Unit - специализация юнита: снайпер, танкист и пр
- Job - должность юнита (прим. командир отряда)
Рис. 5-5
Рассмотрим подпункт 02.Human меню настройки юнита (рис. 5-5).
Где:
- Person - общие сведения об имени-фамилии юнита (применимо к людям)
- PresetName - тип используемого набора рандомных имён (прим. *****s. Male – набор русских имён, Name. Pol. Male – набор польских имён) (пока в строчке прописано значение, имя будет выбираться автоматически)
- Name - перечень допустимых имён юнита, занесённых в базу
- PresetLastName - тип используемого набора рандомных фамилий (прим. *****s. Male – набор русских фамилий, LastName. Pol. Male – набор
польских фамилий), (пока в строчке прописано значение, фамилия будет выбираться автоматически)
- Last Name - перечень допустимых фамилий юнита, занесённых в базу
- PresetFace - тип используемого набора случайных текстур для лиц (пока в строчке прописано значение, лицо будет присуждаться автоматически)
- Face - перечень текстур лиц, занесённых в базу
- Skills - информационная строка с уровнем опытности юнита и его званием (применимо к людям)
- Leadership, Driver, Gunlayer, Accuracy, Scout, Intelligence – скиллы юнита. При значении -1 скилл принуждается случайно и автоматически, в зависимости от установленного уровня опытности
- Rank - звание
- Level - уровень опытности где: novice – новичок, regular – опытный, veteran – ветеран, elite - элита
- ExperienceBonus - бонус опыта

Рис. 5-6
Рассмотрим пункты 03.Backpack, 04.Location, 07.Skin, 08.Other, Formation меню настройки юнита (рис. 5-6).
Где:
- BackpackSet - название набора оружия, находящегося у юнита
- подпункты Group1, Group2, Group3 - информационные строки с указанием максимального количества определённого типа оружия в инвентаре
- data/items/magazinez/… - информационные строки с указанием максимального количества комплектов патрон в инвентаре к тому или иному типу оружия
- Point - информационная строка с указанием координат по осям х и у
- x - координата юнита по оси х
- y - координата юнита по оси у
- Azimut - азимут юнита
- HumanSkin - список доступных скинов юнита
- FullName - информационная строка с полным названием юнита
- Formation - это название формации, по которой может быть построена группа юнитов. Название задаётся вручную.
- Count - это количество выделенных на данный момент юнитов
- Rows - это количество рядов в формации
- UnitOffsetX - это расстояние между юнитами по оси х в данной формации (в ширину)
- UnitOffsetY - это расстояние между юнитами по оси у в данной формации (в длину).
При создании техники и артиллерии не забывайте указывать им бекпэксет в подменю настройки юнита 03.BackpackSet, а также назначать им команду. Команду можно создать с помощью нажатия правой кнопкой мышки на юните (рис. 5-7). Каждый член созданного экипажа является отдельным юнитом и имеет собственное меню настройки.

Рис. 5-7
6.2 Расстановка юнитов
После того, как юнит создан, он отображается на карте. Цвет обозначения юнита зависит от цвета армии, к которой он принадлежит. Перемещать юниты удобнее всего, выбрав режим редактирования юнитов на панели горячих клавиш (рис. 5-8).

Рис. 5-8
7. Placeholders
Для того чтобы войска игрока появлялись в заведомо известном месте, для каждого юнита необходимо на карте установить Placeholder (метку).
Рис. 6-1
Для создания нового Placeholders нажмите правой клавишей мыши на пункте Placeholders в меню настроек армии, либо нажмите клавишу “Insert” находясь на этой закладке (рис. 6-1). Также можно создать плейсхолдер щелчком правой клавиши мыши на карте в режиме расстановки юнитов.
В случае если вы создаёте Placeholders для отряда пехоты, то следует создавать detachment placeholder.
Для армии управляемой AI и для подкреплений плейсхолдеры не требуются, юниты появятся на карте именно в том месте, куда вы их установили.

Рис. 6-2
Рассмотрим меню настройки Placeholder.
Где:
- Formation - это название формации, по которой может быть построена группа Placeholders. Название задаётся вручную.
- Count - это количество выделенных на данный момент Placeholders
- Rows это количество рядов в формации
- UnitOffsetX - это расстояние между юнитами по оси х в данной формации (в ширину)
- UnitOffsetY - это расстояние между юнитами по оси у в данной формации (в длину).
- Index - уникальный номер Placeholder’a
- Name - информационная строка с именем плейсхолдера. Задаётся вручную
- ClassificationList - список фильтров, применимых к Placeholders
- [0] - информационная строка о фильтре 0, где Classification – тип юнитов допускаемых к использованию плейсхолдера (если строка пуста, то к использованию Placeholder’a допускаются все типы юнитов), Country – принадлежность к стране юнитов, допускаемых к использованию плейсхолдера (если строка пуста, то к использованию плейсхолдера допускают все юниты, вне зависимости от принадлежности к той или иной стране), Name – юнит допускаемый к использованию данного плесхолдера (прим t_34_mod_41), (если строка пуста, то к использованию плейсхолдера допускают все юниты).
- Point - информационная строка с указанием координат плейсхолдера по осям х и у
- x - координата плейсхолдера по оси х
- y - координата плейсхолдера по оси у
- Azimut - азимут плейсхолдера
8. Начало работы с триггерами. Окно редактирования триггера и дерево триггеров.
Рис. 7-1
После того, как войска предварительно расставлены, мы можем приступить к созданию задуманного нами сценария. Для удобства работы с триггерами в редакторе существует “Дерево триггеров” (рис. 7-1) – закладка “Triggers”. В дереве триггеров перечислены все триггеры, которые используются в нашей миссии. Для вызова окна редактирования триггера необходимо щелкнуть на его названии дважды.
Дополнительным инструментом, для удобства работы с триггерами является Диаграмма триггеров, которая открывается при переходе на соответствующую закладку – TriggerDiagramm (рис. 7-2). Диаграмма отображает все связи, существующие между созданными триггерами. Для вызова окна редактирования триггера необходимо щелкнуть на его названии дважды.

Рис. 7-2
Рис. 7-3
Для проверки корректности работы триггеров необходимо пользоваться компилятором, встроенным в редактор (рис. 7-3). Кнопка сохранения миссии и одновременной компиляции триггеров находится в правом верхнем углу окна редактирования триггеров.
9. Триггер Init.
Триггер Init является стартовым триггером миссии. В нём запускаются все последующие триггера, активируются режимы расстановки войск, выдаются стартовые задачи миссии. Рассмотрим существующий вариант триггера Init.
Общий вид триггера:
PingShow ( "Ping_01" , 1 , POINT, "Obj1" )
QuestActivate ( "Mission1" )
DELAY ( 1000 )
RunTrigger ( "Mission_Fail" )
RunTrigger ( "DefTank" )
ActivateDispositionMode ( "disposition" )
DELAY ( 2000 )
SetWorkArmy ( Army, 1 )
MortarSupportChangeState ( 1 , ENABLE )
DELAY ( 1000 )
RunTrigger ( "RunAtak2" )
DELAY ( 1000 )
RunTrigger ( "Mortar_g" )
Halt
Далее мы разберём каждую часть в отдельности, с пояснениями. Первоначально, при старте миссии, выдаётся её основное задание:
PingShow ( "Ping_01" , 1 , POINT, "Obj1" )
QuestActivate ( "Mission1" )
Первый триггер – PingShow ( "Ping_01" , 1 , POINT, "Obj1" ) отвечает за указатель задания на миникарте. Где: “Ping_01” – уникальное имя указателя; 1 – номер задания, который будет отображён на информационном указателе; POINT – обозначение того, что указатель будет размещён в точке; “Obj1” - это имя точки, в которой будет отображено задание (точка создаётся на карте вручную). Триггер QuestActivate ( “ Mission1” ) запускает само задание, где “ Mission1” уникальное имя. Задание описывается в редакторе кампаний, в подменю миссии “Submissions”.
DELAY ( 1000 )
RunTrigger ( "Mission_Fail" )
RunTrigger ( "DefTank" )
Обратите внимание, что между запуском триггеров необходимо делать промежутки. За это отвечает триггер DELAY ( 1000 ), где 1000 - это время, указанное в миллисекундах.
Команда RunTrigger ( “DefTank” ) отвечает за запуск отдельных триггеров, где DefTank уникальное имя запускаемого триггера.
ActivateDispositionMode ( "disposition" )
Если вы хотите, чтобы игрок имел возможность расставить свои юниты перед началом миссии, то для этого вам следует использовать триггер ActivateDispositionMode ( “disposition” ), где “ disposition ” - имя заранее созданного прямоугольника (ректа). Обратите внимание, что размеры прямоугольника не должны превышать 400м*400м.
DELAY ( 2000 )
SetWorkArmy ( Army, 1 )
MortarSupportChangeState ( 1 , ENABLE )
Триггер SetWorkArmy ( ARMY, 1 ) является обязательным к запуску перед началом отдачи той или иной команды, касающейся юнитов или армии. Номер армии должен совпадать с номером армии, юнитам которой отдаётся задание.
Триггер MortarSupportChangeState (1, ENABLE) активирует миномёты для армии 1, где 1 – номер армии (для этого в меню создании поддержек для армии 1 должен быть создан миномётный обстрел).
DELAY ( 1000 )
RunTrigger ( "RunAtak2" )
DELAY ( 1000 )
RunTrigger ( "Mortar_g" )
Halt
В этом куске поочерёдно, с промежутками, созданными с помощью команды DELAY ( 1000 ), запускаются 2 триггера – “RunAtak2” и “Mortar_g”, где RunAtak2 и Mortar_g - уникальные имена запускаемых триггеров.
Обратите внимание, каждый триггер должен быть окончен завершающей командой HALT.
10. Триггер на запуск миномётов армии 2 – Mortar_g.
Триггер Mortar_g отвечает за запуск миномётных атак противника. Атаки будут запускаться в том случае, если пехота игрока зайдёт в определённые области на карте. Рассмотрим один из существующих вариантов триггера. Просьба обратить внимание, на форматирование и отступы внутри триггера.
Общий вид триггера:
DELAY ( 10000 )
SetWorkArmy ( ARMY, 1 )
set @num_mor1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom1" )
set @num_mor2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom2" )
if ( @num_mor1 > 5 OR @num_mor2 > 5 ) THEN
CreateRectByObject ( RECT, "Rus_INF1" , 50 , Army, 1 , HUMAN, 20 )
SetWorkArmy ( ARMY, 2 )
MortarSupportChangeState ( 2 , ENABLE )
DELAY ( 1000 )
MortarSupportCall ( 2 , RECT, "Rus_INF1" )
DELAY ( 10000 )
CreateRectByObject ( RECT, "Rus_INF2" , 50 , Army, 1 , HUMAN, 20 )
DELAY ( 2000 )
MortarSupportCall ( 2 , RECT, "Rus_INF2" )
Halt
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 10000 )
SetWorkArmy ( ARMY, 1 )
В данном случае триггер цикличен, те повторяется через определённый промежуток времени. Команда DELAY ( 10000 ) носит в себе значение промежутка времени, через которое будет повторяться цикл.
Далее указана команда SetWorkArmy ( ARMY, 1 ), которая как уже говорилась, обязательна к указанию.
set @num_mor1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom1" )
set @num_mor2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom2" )
В этой части триггера мы задаём переменные, с которыми дальше будем работать, для упрощения триггеров. Командой set @num_mor1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom1" ) мы задаём переменную с уникальным именем @num_mor1 (любое имя переменной должно начинаться со знака @). Переменная @num_mor1 в данном случае носит в себе проверку на количество людей в заранее созданном прямоугольнике (ректе) (все разъяснения касательно других условий проверок в триггерах могут быть получены в документе “Описание триггеров для миссии”, путь к документу - …\WWIIRTS\MissionEditor\Mission_Triggers. chm). Где 1 номер армии, HUMAN условие проверки по людям (члены экипажа, сидящие в танках, также засчитываются), “minom1” уникальное имя прямоугольника, по которому ведётся проверка.
Командой set @num_mor2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "minom2" ) мы задаём переменную с уникальным именем @num_mor2. Переменная @num_mor2 в данном случае носит в себе проверку на количество людей в заранее созданном прямоугольнике (ректе). Где 1 номер армии, HUMAN условие проверки по людям (члены экипажа, сидящие в танках, также засчитываются), “minom2” уникальное имя прямоугольника, по которому ведётся проверка.
if ( @num_mor1 > 5 OR @num_mor2 > 5 ) THEN
CreateRectByObject ( RECT, "Rus_INF1" , 50 , Army, 1 , HUMAN, 20 )
SetWorkArmy ( ARMY, 2 )
MortarSupportChangeState ( 2 , ENABLE )
DELAY ( 1000 )
MortarSupportCall ( 2 , RECT, "Rus_INF1" )
DELAY ( 10000 )
CreateRectByObject ( RECT, "Rus_INF2" , 50 , Army, 1 , HUMAN, 20 )
DELAY ( 2000 )
MortarSupportCall ( 2 , RECT, "Rus_INF2" )
Halt
ENDIF
В данной части триггера описывается условия, при которых будет запущена миномётная атака противника. В случае если дальнейшие условия не будут выполнены, триггер вернётся к своему начала и повторится через временной интервал, указанный в первой команде DELAY. Взглянем на триггер if ( @num_mor1 > 5 OR @num_mor2 > 5 ) THEN… . Внутри скобок описаны условия, в данном случае, если значение переменной @num_mor1 (те наличие у игрока пехоты в ректе “monom1”) больше 5 или – OR значение переменной @num_mor2 (те наличие у игрока пехоты в ректе “monom2”) более 5, то – THEN запускается следующая последовательность действий.
CreateRectByObject ( RECT, "Rus_INF1" , 50 , Army, 1 , HUMAN , 20 ) – пехотой игрока создаётся динамический прямоугольник (рект). Где: RECT – обозначение типа создаваемой области; “Rus_INF1” – уникальное имя создаваемого прямоугольника (ректа); 50 – длинна сторон выстраиваемого ректа; 1 – номер армии, чьими войсками создаётся рект; HUMAN – тип юнитов создающих рект; 20 – длинна отступа от края ректа (желательно указывать значение от 10 до х, во избежание ошибок).
SetWorkArmy ( ARMY, 2 ) – переключает рабочую армию с 1 на 2 перед следующим триггером.
MortarSupportChangeState ( 2 , ENABLE ) активирует миномёты для армии 2.
Командой DELAY ( 1000 ) делается небольшой перерыв, затем триггером
MortarSupportCall ( 2 , RECT, "Rus_INF1" ) армией противника вызывается миномётный обстрел. Где: 2 номер армии вызывающей обстрел; RECT – тип области, по которой ведётся обстрел; “Rus_INF1” – уникальное имя созданного пехотой игрока динамического прямоугольника (ректа).
Через значительный промежуток времени - DELAY ( 10000 ), с помощью триггера CreateRectByObject ( RECT, "Rus_INF2" , 50 , Army, 1 , HUMAN, 20 ) пехотой игрока создаётся новый динамический рект с уникальным именем “Rus_INF2”, по которому через 2000 миллисекунд - DELAY ( 2000 ) армией противника ведётся повторный обстрел - MortarSupportCall ( 2 , RECT, "Rus_INF2" ). В конце последовательности прописывается значение HALT. Так как триггер цикличен, значение HALT следует прописывать после окончания последовательности, но до её закрытия. В противном случае триггер лишается цикличности. Для закрытия последовательности, после выполнения условий, в обязательном порядке, должно быть прописано значение ENDIF. Благодаря значению ENDIF, после выполнения последовательности, отсчёт команд возвращается к началу триггера.
11. Триггер на уничтожение прорывов сквозь линию окопов – Def_Tank.
Триггер Def_Tank отвечает за уничтожение прорывов армии игрока сквозь линию обороны противника. Прорывы будут уничтожаться в том случае, если войска игрока (пехота или техника) войдут в определённые области на карте. Просьба обратить внимание на форматирование и отступы внутри триггера.
Общий вид триггера:
DELAY ( 1000 )
set @flag = 0
DELAY ( 2000 )
Label begin
DELAY ( 5000 )
SetWorkArmy ( ARMY, 1 )
set @check_R = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY )
set @check_Inf_R1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R1" )
set @check_Inf_R2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R2" )
set @check_Inf_R3 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R3" )
set @check_RT_R1 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R1" , OK_WEAPON , OK_ENGINE, NOT_EMPTY )
set @check_RT_R2 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R2" , OK_WEAPON , OK_ENGINE, NOT_EMPTY )
set @check_RT_R3 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R3" , OK_WEAPON , OK_ENGINE, NOT_EMPTY )
SetWorkArmy ( ARMY, 2 )
set @check_GT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, OK_ENGINE, NOT_EMPTY )
if ( @check_GT = 0 ) then
Halt
ENDIF
if ( @check_R = 0 ) then
HALT
ENDIF
if ( @check_RT_R1 > 0 OR @check_RT_R2 > 0 OR @check_RT_R3 > 0 ) then
goto Tank
ENDIF
if ( @check_Inf_R1 > 1 OR @check_Inf_R2 > 1 OR @check_Inf_R3 > 1 ) then
goto Inf
ELSE
goto begin
ENDIF
LABEL Tank
CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS, 20 , OK_WEAPON, OK_ENGINE, NOT_EMPTY )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_RT" )
set @flag = 1
Delay ( 100000 )
goto begin
LABEL Inf
CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN, 20 )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_Inf" )
set @flag = 1
Delay ( 100000 )
goto begin
if ( @check_Inf_R1 = 0 and @check_Inf_R2 = 0 AND @check_Inf_R3 = 0 AND @check_RT_R1 = 0 AND @check_RT_R2 = 0 AND @check_RT_R3 = 0 AND @flag = 1 ) then
RunCommand ( GROUP, "Group17" , RETREAT, RECT, "Retr" )
set @flag = 0
Delay ( 10000 )
goto begin
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 1000 )
set @flag = 0
DELAY ( 2000 )
После небольшого промежутка времени в DELAY ( 1000 ) мы задаём глобальную переменную - set @flag = 0. Где переменной, с уникальным именем @flag задаётся значение равное 0. Перед началом основной части триггера следует временной промежуток в 2 секунды - DELAY ( 2000 ).
Label begin
DELAY ( 5000 )
SetWorkArmy ( ARMY, 1 )
set @check_R = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY )
set @check_Inf_R1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R1" )
set @check_Inf_R2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R2" )
set @check_Inf_R3 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R3" )
set @check_RT_R1 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R1" , OK_WEAPON, OK_ENGINE, NOT_EMPTY )
set @check_RT_R2 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R2" , OK_WEAPON, OK_ENGINE, NOT_EMPTY )
set @check_RT_R3 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R3" , OK_WEAPON, OK_ENGINE, NOT_EMPTY )
Триггер “DefTank” является достаточно сложным по своей структуре, поэтому для простоты переключения между его структурными частями используется команда Label. Она является неким “флажком”, отделяющим одну часть триггера от другой. Командой Label begin мы задаём первую точку отсчёта триггера.
Далее следует обязательная к указанию команда SetWorkArmy ( ARMY, 1 ), обозначающая рабочую армию как 1.
Введём переменную - set @check_R = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY ). Переменная с уникальным именем @check_R отвечает за количество всех типов юнитов армии игрока. Благодаря условиям OK_WEAPON и NOT_EMPTY считаются только юниты с исправным орудием и наличием команды.
Тк данный триггер отвечает за прорывы обороны противника, то первоначально на карте, за линией окоп нами создаётся несколько прямоугольников (рис. 8-1).

Рис. 8-1
Попадание войск игрока в прямоугольники R1, R2, R3 будет считаться прорывом линии обороны. Для такой схемы триггера нам необходимо ввести 6 переменных. Командами set @check_Inf_R1 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R1" ), set @check_Inf_R2 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R2" ) и set @check_Inf_R3 = GetnUnitsInArea ( ARMY, 1 , HUMAN, "R3" ) мы вводим переменные с уникальными именами @check_Inf_R1, @check_Inf_R2 и @check_Inf_R3, которые отвечают за наличие пехоты армии 1 в ректах R1, R2 и R3 соответственно.
Командами set @check_RT_R1 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R1" , OK_WEAPON, OK_ENGINE, NOT_EMPTY ), set @check_RT_R2 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R2" , OK_WEAPON, OK_ENGINE, NOT_EMPTY ) и set @check_RT_R3 = GetnUnitsInArea ( ARMY, 1 , TANKS, "R3" , OK_WEAPON, OK_ENGINE, NOT_EMPTY ) мы вводим переменные с уникальными именами @check_RT_R1, @check_RT_R2 и @check_RT_R3, которые отвечают за наличие танков армии 1 в ректах R1, R2 и R3 соответственно. Благодаря условиям проверки OK_WEAPON, OK_ENGINE и NOT_EMPTY считаются только танки с исправной ходовой частью, исправным орудием и наличием команды.
SetWorkArmy ( ARMY, 2 )
set @check_GT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, OK_ENGINE , NOT_EMPTY )
Командой SetWorkArmy ( ARMY, 2 ) переключаем рабочую армию на 2, тк собираемся работать с юнитами этой армии.
set @check_GT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, OK_ENGINE, NOT_EMPTY ) – создаёт переменную с уникальным именем @check_GT, которая отвечает за наличие у войск противника танков с исправным орудием, исправной ходовой и с наличием команды.
if ( @check_GT = 0 ) then
Halt
ENDIF
В данной части, во избежание ошибок, задаётся одно из условий, при котором действие триггера будет остановлено. if ( @check_GT = 0 ) then – если значение переменной @check_GT будет равно 0, то действие триггера DefTank будет остановлено командой Halt. Последовательность закрывается командой ENDIF.
if ( @check_R = 0 ) then
HALT
ENDIF
Эта часть триггера также отвечает за одно из условий, при котором триггер будет остановлен. if ( @check_R = 0 ) then – если значение переменной @check_R будет равно 0, то следует останавливающая команда HALT. ENDIF - последовательность закрывается.
if ( @check_RT_R1 > 0 OR @check_RT_R2 > 0 OR @check_RT_R3 > 0 ) then
goto Tank
ENDIF
При выполнении данного условия триггер, без дополнительных последующих проверок, сразу перейдёт к следующему “флажку” триггера. if ( @check_RT_R1 > 0 OR @check_RT_R2 > 0 OR @check_RT_R3 > 0 ) then – если значение переменной @check_RT_R1 или переменной @check_RT_R2, или @check_RT_R3 будет более 0, то запускается команда goto Tank. Команда заставляет триггер DefTank сразу перейти к точке отсчёта триггера под уникальным именем Tank. Последовательность закрывается необходимой к указанию командой ENDIF.
if ( @check_Inf_R1 > 1 OR @check_Inf_R2 > 1 OR @check_Inf_R3 > 1 ) then
goto Inf
ELSE
goto begin
ENDIF
При выполнении данного условия триггер, без дополнительных последующих проверок, сразу перейдёт к следующему “флажку” триггера. if ( @check_Inf_R1 > 1 OR @check_Inf_R2 > 1 OR @check_Inf_R3 > 1 ) then – если значение переменной @check_Inf_R1 или переменной @check_Inf_R2, или @check_Inf_R3 будет более 0, то запускается команда goto Inf. Команда заставляет триггер DefTank сразу перейти к точке отсчёта триггера под уникальным именем Inf. Команда ELSE указывает, что после выполнения предыдущей последовательности действий, следует ещё одна. В данном случае - goto begin. Команда заставляет триггер DefTank сразу перейти к точке отсчёта триггера под уникальным именем begin – в данном случае, самой первой установленной точке отсчёта. Последовательность закрывается необходимой к указанию командой ENDIF.
LABEL Tank
CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS, 20 , OK_WEAPON, OK_ENGINE, NOT_EMPTY )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_RT" )
set @flag = 1
Delay ( 100000 )
goto begin
Команда LABEL Tank устанавливает точку отсчёта в триггере с уникальным именем Tank.
CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS , 20 , OK_WEAPON , OK_ENGINE, NOT_EMPTY ) – танками игрока создаётся динамический рект, длинна сторон которого 200м и обязательный к указанию запасом в 20м, с уникальным именем Rus_RT. Благодаря условиям OK_WEAPON, OK_ENGINE, NOT_EMPTY засчитываются только танки с исправным орудием, исправной ходовой и не являющиеся пустыми.
Через Delay ( 1000 ) командой SetWorkArmy ( Army, 2 ) рабочая армия обозначается как 2.
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_RT" ) - группе войск с именем Group17 отдаётся команда штурмовать определённый участок, с уникальным именем Rus_RT.
set @flag = 1 – изменяет значение глобальной переменной @flag, приравнивая её к 1. Через значительный промежуток - Delay ( 100000 ) команда goto begin заставляет триггер DefTank сразу перейти к точке отсчёта триггера под уникальным именем begin.
LABEL Inf
CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN, 20 )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_Inf" )
set @flag = 1
Delay ( 100000 )
goto begin
Команда LABEL Inf устанавливает точку отсчёта в триггере с уникальным именем Inf.
CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN , 20 ) – людьми игрока создаётся динамический рект длинна сторон которого 200м и обязательный к указанию запасом в 20м, с уникальным именем Rus_Inf.
Через Delay ( 1000 ) командой SetWorkArmy ( Army, 2 ) рабочая армия обозначается как 2.
RunCommand ( GROUP, "Group17" , STORM, Rect, "Rus_Inf" ) - группе войск с именем Group17 отдаётся команда штурмовать определённый участок, с уникальным именем Rus_Inf.
set @flag = 1 – изменяет значение глобальной переменной @flag, приравнивая её к 1. Через значительный промежуток - Delay ( 100000 ) команда goto begin заставляет триггер DefTank сразу перейти к точке отсчёта триггера под уникальным именем begin.
if ( @check_Inf_R1 = 0 and @check_Inf_R2 = 0 AND @check_Inf_R3 = 0 AND @check_RT_R1 = 0 AND @check_RT_R2 = 0 AND @check_RT_R3 = 0 AND @flag = 1 ) then
RunCommand ( GROUP, "Group17" , RETREAT, RECT, "Retr" )
set @flag = 0
Delay ( 10000 )
goto begin
ENDIF
В данной части триггера описаны условия, при которых были уничтожены все прорывы, и дальнейшее отступление танков противника на первоначальные позиции. if ( @check_Inf_R1 = 0 and @check_Inf_R2 = 0 AND @check_Inf_R3 = 0 AND @check_RT_R1 = 0 AND @check_RT_R2 = 0 AND @check_RT_R3 = 0 AND @flag = 1 ) then – если значения переменных @check_Inf_R1, @check_Inf_R2, @check_Inf_R3, @check_RT_R1, @check_RT_R2 и @check_RT_R3 равны 0, то запускается последовательность действий. RunCommand ( GROUP, "Group17" , RETREAT, RECT, "Retr" ) - группе войск с именем Group17 отдаётся команда отступать определённый участок, с уникальным именем Retr.
Командой set @flag = 0 глобальной переменной @flag устанавливается первоначальное значение Через значительный промежуток Delay ( 10000 ) даётся команда goto begin, на возвращение триггера DefTank к точке отсчёта, с уникальным именем begin. Последовательность закрывается командой ENDIF.
12. Триггер на высадку второй волны атаки – RunAtak2.
Триггер RunAtak2 отвечает за высадку дополнительных войск противника, используемых во второй волне атаки. Рассмотрим существующий вариант:
Общий вид триггера:
DELAY ( 5000 )
SetWorkArmy ( Army, 1 )
set @check1 = GetnUnits ( Army, 1 , ALL , NOT_EMPTY, OK_WEAPON )
SetWorkArmy ( Army, 2 )
set @check2 = GetnUnits ( Army, 2 , ALL , NOT_EMPTY, OK_WEAPON, OK_ENGINE )
if ( @check1 < 2 ) then
halt
ENDIF
if ( @check2 < 5 ) then
DELAY ( 1000 )
QuestWin ( "Mission1" )
PingHide ( "Ping_01" , 1 , POINT, "Obj1" )
DELAY ( 2000 )
PingShow ( "Ping_02" , 2 , POINT, "Obj1" )
QuestActivate ( "Mission2" )
DELAY ( 1000 )
ReinforcementLand ( GROUP, "Group18" )
DELAY ( 2000 )
RunTrigger ( "TankAttak" )
DELAY ( 10000 )
RunTrigger ( "Mission_Win" )
Halt
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 5000 )
Данный триггер цикличен и повторяется через промежуток времени DELAY ( 5
SetWorkArmy ( Army, 1 )
set @check1 = GetnUnits ( Army, 1 , ALL, NOT_EMPTY, OK_WEAPON )
Перед началом создания переменной для упрощения вида триггера, мы обозначаем командой SetWorkArmy ( Army, 1 ) рабочую 1 армию. Далее командой set @check1 = GetnUnits ( Army , 1 , ALL, NOT_EMPTY, OK_WEAPON ) мы создаём переменную с уникальным именем @check1, которая проверяет наличие всех типов юнитов в армии 1. Благодаря условиям NOT_EMPTY и OK_WEAPON учитываются только юниты с исправным орудием и не пустые (для техники, артиллерии).
SetWorkArmy ( Army, 2 )
set @check2 = GetnUnits ( Army, 2 , ALL, NOT_EMPTY, OK_WEAPON, OK_ENGINE )
Тк в предыдущей части триггера рабочей армией была назначена армия 1, а переменная, которую мы будем создавать далее, работает с юнитами принадлежащими армии 2, мы переключаем рабочую армию с 1 на 2 командой SetWorkArmy ( Army, 2 ). Следующей командой set @check2 = GetnUnits ( Army, 2 , ALL, NOT_EMPTY, OK_WEAPON, OK_ENGINE ) создаётся переменная с уникальным именем @check2, которая отвечает за наличие в армии 2 всех типов юнитов. Благодаря условиям проверки NOT_EMPTY, OK_WEAPON и OK_ENGINE учитываются только юниты с исправным орудием, исправной ходовой частью и не пустые (все проверки действительны для техники).
if ( @check1 < 2 ) then
halt
ENDIF
Во избежание некорректной работы триггеров и ошибок создаётся условие, при котором триггер RunAtak2 будет отключён. Если (if) значение переменной @check1 (наличие юнитов в армии игрока) менее 2 то (then) триггер останавливается командой HALT. Последовательность завершается командой ENDIF. Благодаря значению ENDIF, после выполнения последовательности, отсчёт команд возвращается к началу триггера.
if ( @check2 < 5 ) then
DELAY ( 1000 )
QuestWin ( "Mission1" )
PingHide ( "Ping_01" , 1 , POINT, "Obj1" )
DELAY ( 2000 )
PingShow ( "Ping_02" , 2 , POINT, "Obj1" )
QuestActivate ( "Mission2" )
DELAY ( 1000 )
ReinforcementLand ( GROUP, "Group18" )
DELAY ( 2000 )
RunTrigger ( "TankAttak" )
DELAY ( 10000 )
RunTrigger ( "Mission_Win" )
Halt
ENDIF
В данной части триггера описаны условия, при которых будет произведена высадка войск противника и дальнейшая последовательность команд. If ( @check2 < 5 ) then -если(If) значение переменной @check2 (наличие у противника всех типов юнитов) менее 5, то(then) следуют дальнейшие команды. Через 1 секунду - DELAY ( 1000 ) запускается команда QuestWin ( "Mission1" ) на выигрыш задания миссии с уникальным именем Mission1, а также убирается целеуказатель задания - PingHide ( "Ping_01" , 1 , POINT, "Obj1" ). Через DELAY ( 2000 ) активируется 2 задание миссии - QuestActivate ( "Mission2" ) с уникальным именем Mission2. После промежутка DELAY ( 1000 ), указанного для корректной работы триггеров следует команда ReinforcementLand ( GROUP, "Group18" ), отвечающая за высадку группы войск с уникальным именем “Group18”. Спустя 2 секунды - DELAY ( 2000 ) запускается RunTrigger ( "TankAttak" ) – триггер с уникальным именем TankAttak. Через более длительный промежуток - DELAY ( 10000 ) запускается RunTrigger ( "Mission_Win" ) - триггер с уникальным именем Mission_Win. В конце последовательности прописывается значение HALT, после чего последовательность закрывается командой ENDIF.
13. Триггер на запуск второй волны атаки – TankAttak.
Триггер TankAttak отвечает за начало второй волны атаки противника. Рассмотрим существующий вариант:
Общий вид триггера:
DELAY ( 5000 )
SetWorkArmy ( ARMY, 1 )
set @num_tanks = GetnUnits ( ARMY, 1 , TANKS, OK_WEAPON, NOT_EMPTY )
set @num_inf = GetnUnits ( ARMY, 1 , HUMAN )
set @num = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY )
if ( @num = 0 ) then
HALT
ENDIF
if ( @num_tanks > 0 ) then
SetWorkArmy ( ARMY, 1 )
CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS, 20 , OK_WEAPON, NOT_EMPTY )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group18" , STORM, Rect, "Rus_RT" )
DELAY ( 120000 )
ENDIF
if ( @num_inf > 0 ) then
SetWorkArmy ( ARMY, 1 )
CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN, 20 )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group18" , STORM, Rect, "Rus_Inf" )
DELAY ( 120000 )
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 5000 )
SetWorkArmy ( ARMY, 1 )
set @num_tanks = GetnUnits ( ARMY, 1 , TANKS, OK_WEAPON, NOT_EMPTY )
set @num_inf = GetnUnits ( ARMY, 1 , HUMAN )
set @num = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY )
Триггер цикличен, и повторяется через DELAY ( 5Перед назначением переменных командой SetWorkArmy ( ARMY, 1 ) обозначается рабочая армия 1. Командой set @num_tanks = GetnUnits ( ARMY, 1 , TANKS, OK_WEAPON, NOT_EMPTY ) назначается переменная с уникальным именем @num_tanks. Переменная проверяет наличие танков у армии 1, благодаря условиям проверки считаются только танки с исправным орудием и не пустые. set @num_inf = GetnUnits ( ARMY, 1 , HUMAN ) – назначается переменная с уникальным именем @num_inf, которая отвечает за количество людей в армии игрока. Командой set @num = GetnUnits ( ARMY, 1 , ALL, OK_WEAPON, NOT_EMPTY ) назначается переменная с уникальным именем @num. Переменная отвечает за количество всех типов юнитов в армии 1, благодаря условиям проверки считаются только юниты с исправным орудием (OK_WEAPON) и не пустующие (NOT_EMPTY).
if ( @num = 0 ) then
HALT
ENDIF
В данной части триггера мы задаём условия, при которых триггер остановится. if ( @num = 0 ) then – если значение переменной @num равняется 0, то триггер прекращает своё действие с помощью заданной команды HALT. Условие завершается командой ENDIF.
if ( @num_tanks > 0 ) then
SetWorkArmy ( ARMY, 1 )
CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS, 20 , OK_WEAPON, NOT_EMPTY )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group18" , STORM, Rect, "Rus_RT" )
DELAY ( 120000 )
ENDIF
В данной части триггера задается условие и дальнейшая последовательность действий, при которой вторая волна атаки, в приоритетном порядке, будет атаковать технику игрока. if ( @num_tanks > 0 ) then – если значение переменной @num_tanks более 0, то следует последовательность команд. Первоначально командой SetWorkArmy ( ARMY , 1 ) задаётся рабочая армия 1. Команда CreateRectByObject ( RECT, "Rus_RT" , 200 , Army, 1 , TANKS, 20 , OK_WEAPON, NOT_EMPTY ) создаёт с помощью танков игрока динамический рект. Где: RECT тип создаваемого объекта; Rus_RT уникальное имя создаваемого динамического ректа; 200 – длинна сторон ректа; 1 – номер армии, чьими войсками создаётся рект; TANKS – тип юнитов, создающих рект; 20 – обязательный к указанию отступ; OK_WEAPON и NOT_EMPTY условия, при которых засчитываются только юниты, которые не пусты и у которых исправно орудие. После промежутка Delay ( 1000 ) командой SetWorkArmy ( Army, 2 ) рабочая армия переключается на 2. RunCommand ( GROUP , "Group18" , STORM , Rect, "Rus_RT" ) – команда, дающая юнитам противника задание на шторм в указанном направлении. Где: Group18 уникальное имя группы войск, которые производят атаку; STORM – команда, принуждающая войска штурмовать; Rect – тип штурмуемого участка; Rus_RT – уникальное имя штурмуемого ректа. Тк данная часть триггера также является цикличной, в конце последовательности командой DELAY ( 120000 ) указано время повтора внутреннего цикла части. Последовательность действий закрывается командой ENDIF.
if ( @num_inf > 0 ) then
SetWorkArmy ( ARMY, 1 )
CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN, 20 )
Delay ( 1000 )
SetWorkArmy ( Army, 2 )
RunCommand ( GROUP, "Group18" , STORM, Rect, "Rus_Inf" )
DELAY ( 120000 )
ENDIF
В данной части триггера задается условие и дальнейшая последовательность действий, при которой вторая волна атаки, в приоритетном порядке, будет атаковать пехоту игрока. if ( @num_inf > 0 ) then – если значение переменной @num_inf более 0, то следует последовательность команд. Первоначально командой SetWorkArmy ( ARMY , 1 ) задаётся рабочая армия 1. Команда CreateRectByObject ( RECT, "Rus_Inf" , 200 , Army, 1 , HUMAN, 20 ) создаёт с помощью пехоты игрока динамический рект. Где: RECT тип создаваемого объекта; Rus_INF уникальное имя создаваемого динамического ректа; 200 длинна сторон ректа ; 1 – номер армии, чьими войсками создаётся рект; HUMAN – тип юнитов, создающих рект; 20 обязательный к указанию отступ. После промежутка Delay ( 1000 ) командой SetWorkArmy ( Army, 2 ) рабочая армия переключается на 2. RunCommand ( GROUP , "Group18" , STORM , Rect, "Rus_INF" ) – команда, дающая юнитам противника задание на шторм в указанном направлении. Где: Group18 уникальное имя группы войск, которые производят атаку; STORM – команда, принуждающая войска штурмовать; Rect – тип штурмуемого участка; Rus_INF – уникальное имя штурмуемого ректа. Тк данная часть триггера также является цикличной, в конце последовательности командой DELAY ( 120000 ) указано время повтора внутреннего цикла части. Последовательность действий закрывается командой ENDIF.
14. Триггер на выигрыш - Mission_Win.
Триггер Mission_Win отвечает за выигрыш миссии. Рассмотрим один из существующих вариантов триггера:
Общий вид триггера:
DELAY ( 5000 )
SetWorkArmy ( ARMY, 2 )
set @check_winHum = GetnUnits ( ARMY, 2 , HUMAN )
set @check_winT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, NOT_EMPTY, OK_ENGINE )
set @check_winHmg = GetnUnits ( ARMY, 2 , HMG, NOT_EMPTY )
set @check_winA = GetnUnits ( ARMY, 2 , ARTILLERY, NOT_EMPTY )
set @check_wis = UnitsIsVisible ( ARMY, 1 , GROUP, "Group18" , ALL )
if ( @check_winHum < 4 AND @check_winT = 0 AND @check_winHmg = 0 AND @check_winA = 0 AND @check_wis = "FALSE" ) then
QuestWin ( "Mission2" )
DELAY ( 1000 )
DestroyTrigger ( "Mission_Fail" )
DELAY ( 1000 )
MissionWinButton ( "ACTIVATE" )
DELAY ( 120000 )
MissionWin ( )
Halt
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 5000 )
SetWorkArmy ( ARMY, 2 )
Тк данный триггер цикличен, в начале обязательно прописывается команда DELAY. DELAY ( 5000 ) – временной промежуток, через который повторяется дальнейшая проверка. Далее указан обязательный параметр SetWorkArmy ( ARMY, 2 ). Тк далее мы будем работать с проверками на наличие юнитов в армии противника, рабочей армией назначается армия 2.
set @check_winHum = GetnUnits ( ARMY, 2 , HUMAN )
set @check_winT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, NOT_EMPTY, OK_ENGINE )
set @check_winHmg = GetnUnits ( ARMY, 2 , HMG, NOT_EMPTY )
set @check_winA = GetnUnits ( ARMY, 2 , ARTILLERY, NOT_EMPTY )
set @check_wis = UnitsIsVisible ( ARMY, 1 , GROUP, "Group18" , ALL )
В данной миссии у противника несколько типов юнитов. Мы задаём переменные на проверку их наличия и исправности. Командой set @check_winHum = GetnUnits ( ARMY, 2 , HUMAN ) мы назначаем переменную @check_winHum, которая проверяет количество людей в армии 2. Командой set @check_winT = GetnUnits ( ARMY, 2 , TANKS, OK_WEAPON, NOT_EMPTY, OK_ENGINE ) мы назначаем переменную @check_winT, которая проверяет количество танков в армии 2. Благодаря условиям проверки OK_WEAPON, NOT_EMPTY, OK_ENGINE считаются только танки, с исправной ходовой, исправным орудием и наличием команды. Командой set @check_winHmg = GetnUnits ( ARMY, 2 , HMG, NOT_EMPTY ) мы назначаем переменную @check_winHmg, которая проверяет наличие у противника станковых пулемётов. Благодаря условию проверки - NOT_EMPTY, считаются только пулемёты с наличием команды. Следующей назначенной переменной - set @check_winA = GetnUnits ( ARMY, 2 , ARTILLERY, NOT_EMPTY ) мы проверяем наличие у армии 2 артиллерии, с условием, что артиллерия не пуста (в наличии команда). Командой set @check_wis = UnitsIsVisible ( ARMY, 1 , GROUP, "Group18" , ALL ) задаётся переменная с уникальными именем @check_wis. Переменная делает проверку на количество видимых юнитов армией 1 из группы войск армии противника - Group18. Благодаря условию проверки ALL считаются все типы юнитов.
if ( @check_winHum < 4 AND @check_winT = 0 AND @check_winHmg = 0 AND @check_winA = 0 AND @check_wis = "FALSE" ) then
QuestWin ( "Mission2" )
DELAY ( 1000 )
DestroyTrigger ( "Mission_Fail" )
DELAY ( 1000 )
MissionWinButton ( "ACTIVATE" )
DELAY ( 120000 )
MissionWin ( )
Halt
ENDIF
В этой части триггера задаются условия выигрыша. В триггере if ( @check_winHum < 4 AND @check_winT = 0 AND @check_winHmg = 0 AND @check_winA = 0 AND @check_wis = "FALSE" ) then… внутри скобок описаны условия, при которых будут выполняться дальнейшие команды. Если (if) значение переменной @check_winHum (количество пехоты в армии 2) менее 4 и (AND) значения переменных @check_winT (количество танков в армии 2), @check_winHmg (количество станковых пулемётов в армии 2), @check_winA (количество артиллерии в армии 2) равно 0, и (AND) значение переменной @check_wis(видимость группы войск противника армией игрока) отрицательно (FALSE) то(then)... QuestWin ( "Mission2" ) – выполняется задание миссии под индивидуальным именем Mission2. Через короткий промежуток времени DELAY ( 1000 ) уничтожается триггер на проигрыш миссии DestroyTrigger ( "Mission_Fail" ). Во избежание возможных ошибок триггера на проигрыш и выигрыш миссии должны взаимно уничтожаться. Далее следует опять небольшой промежуток времени, для более корректной работы триггеров - DELAY ( 1После промежутка запускается команда на открытия окна с возможностью выигрыша миссии - MissionWinButton ( "ACTIVATE" ). После значительного промежутка времени в 2 минуты - DELAY ( 120000 ) следует команда на выигрыш миссии MissionWin ( ). В конце последовательности прописывается значение HALT, после чего последовательность закрывается командой ENDIF.
15. Триггер на проигрыш - Mission_Fail.
Триггер Mission_Fail отвечает за проигрыш миссии. Рассмотрим один из существующих вариантов триггера:
Общий вид триггера:
DELAY ( 5000 )
SetWorkArmy ( Army, 1 )
set @check_h = GetnUnits ( Army, 1 , HUMAN )
set @check_t = GetnUnits ( Army, 1 , TANKS, NOT_EMPTY, OK_WEAPON, OK_ENGINE )
if ( @check_h < 4 AND @check_t < 1 ) then
DELAY ( 5000 )
QuestFail ( "Mission1" )
PingHide ( "Ping_01" , 1 , POINT, "Obj1" )
DELAY ( 2000 )
DestroyTrigger ( "RunAtak2" )
DELAY ( 1000 )
DestroyTrigger ( "Mission_Win" )
DELAY ( 1000 )
MissionFail ( )
HALT
ENDIF
Далее мы разберём каждую часть в отдельности, с пояснениями.
DELAY ( 5000 )
SetWorkArmy ( Army, 1 )
В данном случае триггер цикличен, те повторяется через определённый промежуток времени. Команда DELAY ( 5000 ) носит в себе значение промежутка времени, через которое будет повторяться цикл. Далее указана команда SetWorkArmy ( Army, 1 ), которая как уже говорилась, обязательна к указанию.
set @check_h = GetnUnits ( Army, 1 , HUMAN )
set @check_t = GetnUnits ( Army, 1 , TANKS, NOT_EMPTY, OK_WEAPON , OK_ENGINE )
В этой части триггера мы задаём переменные, с которыми дальше будем работать, для упрощения триггеров. Командой set @check_h = GetnUnits ( Army, 1 , HUMAN ) мы задаём переменную с уникальным именем @check_h. Переменная @check_h в данном случае носит в себе проверку на количество людей в армии 1. Где 1 номер армии, HUMAN условие проверки по людям. Командой set @check_t = GetnUnits ( Army, 1 , TANKS, NOT_EMPTY, OK_WEAPON, OK_ENGINE ) мы задаём переменную с уникальным именем @check_t. Переменная @check_t в данном случае носит в себе проверку на количество танков в армии 1, которые находятся на ходу, не пусты, с исправным орудием. Где: 1 - номер армии; TANKS – условие проверки по танкам; NOT_EMPTY – условие, при котором считается только не пустующая техника; OK_WEAPON - условие, при котором считается только техника с исправным орудием; OK_ENGINE - условие, при котором считается только техника с исправным двигателем и гусеницами/колёсами.
if ( @check_h < 4 AND @check_t < 1 ) then
DELAY ( 5000 )
QuestFail ( "Mission1" )
PingHide ( "Ping_01" , 1 , POINT, "Obj1" )
DELAY ( 2000 )
DestroyTrigger ( "RunAtak2" )
DELAY ( 1000 )
DestroyTrigger ( "Mission_Win" )
DELAY ( 1000 )
MissionFail ( )
HALT
ENDIF
В данной части триггера описывается условия, при которых будет засчитано поражение игрока. Взглянем на триггер if ( @check_h < 4 AND @check_t < 1 ) then… . Внутри скобок описаны условия, в данном случае если значение переменной @check_h (те наличие у игрока пехоты) меньше 4 и – AND значение переменной @check_t (те наличие у игрока исправных танков) менее 1, то – THEN запускается следующая последовательность действий. DELAY ( 5000 ) – промежуток времени, через которое запустится команда на проигрыш задания миссии - QuestFail ( "Mission1" ), сразу после проигрыша задания выключается целеуказатель задания триггером PingHide ( "Ping_01" , 1 , POINT, "Obj1" ). После обозначенного временного промежутка DELAY ( 2000 ) (напомним, временные промежутки желательны во избежание потери FPS на миссии) уничтожается триггер на запуск второй волны атаки. Далее опять следует небольшой временной промежуток DELAY ( 1000 ) после которого следует уничтожение триггера на выигрыш DestroyTrigger ( "Mission_Win" ) (как уже было указано ранее, триггера на проигрыш и выигрыш миссии желательно взаимоуничтожать, во избежание возможных ошибок в миссии). Опять небольшой промежуток времени DELAY ( 1000 ) перед запуском триггера на проигрыш миссии - MissionFail ( ). В конце последовательности прописывается значение HALT. Так как триггер цикличен, значение HALT следует прописывать после окончания последовательности, но до её закрытия. В противном случае триггер лишается цикличности. Для закрытия последовательности, после выполнения условий, в обязательном порядке, должно быть прописано значение ENDIF.
16. Заключение.
Данный мануал по редактору миссий является разбором существующей миссии в кампании “Битва за Москву”. Документ, возможно, будет улучшаться и дополняться. Надеемся, что с помощью данного руководства вы сможете реализовать свои идеи и создадите немало интересных миссий.


