WarCraft 3: Редактор триггеров

Триггер состоит из трех частей: события, условия и действия. Действие триггера произойдет, если при совершении одного из указанных в нем событий будут выполнены указанные в нем условия.

События

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

Условия

Условия - это специальные требования, без удовлетворения которых не произойдут указанные в триггере действия. Чтобы они произошли, условия должны быть "истинными". Надо внимательно отнестись к данному утверждению, поскольку можно задать условие вроде "ЛОЖЬ равно ЛОЖЬ" - условие, которое всегда будет истинным. В триггере по умолчанию "Инициализация сражения" изначально не содержится никаких условий; давайте его добавим. Нажмите Ctrl + D, затем выберите пункт "Сравнение скорости игры". После этого в окне появится синий текст: "Текущая скорость игры равно Средняя." Если вы оставите условие в таком виде и запустите карту из Редактора, триггер "Инициализация сражения" будет работать стандартным образом при условии, что больше ничего в нем изменено не было. Однако при изменении значения "Средняя" на значение "Самая высокая" триггер из Редактора не сработает. Почему? Потому что Редактор при запуске карт автоматически проставляет "Среднюю" скорость игры. Условие будет оценено как "Средняя скорость равно самая высокая скорость", - условие не истинно.
Некоторая разница между условиями и событиями заключается в том, что условия оцениваются только в том случае, если произошло связанное с ними событие. Также, несмотря на то, что триггер может содержать множество событий, для его срабатывания необходимо, чтобы произошло только одно из них, в то время как все указанные условия должны совпасть одновременно.
Единственная вещь, которую триггер обязательно дожен содержать, - действие. (Ну, вообще-то это не совсем так. Хотя триггер, не содержащий действий, никак не повлияет на процесс игры, и поэтому для сценария будет бессмысленным). Однако стоит заметить, что для исполнения своего действия триггеры не нуждаются в наличии событий или условий. Триггеры могут запускаться другими триггерами с помощью функции "Триггер - Запустить (Условия игнорируются)", при этом запускаются любые действия триггеров, неважно, указаны или не указаны в них условия и события.

Действия

Действия - результат работы триггеров. Они могут быть какими угодно: от фиксации камеры на определенной боевой единице до атаки одной боевой единицы другой. Действия позволяют разработчику полностью контролировать игровой процесс.

Создание триггера

Для того, чтобы открыть редактор триггеров, нажмите клавишу F4 или выберите пункт "Редактор триггеров" из меню "Модуль".
Перед созданием триггера у вас должна быть категория, в которую вы будете его помещать. Создайте новую категорию выбором пункта "Категория" в меню "Создать". Созданная вами категория появится в списке слева. Категории содержат пиктограммы файлов. Дать категории название можно как набрав название непосредственно после ее создания, так и выбрав категорию, нажав клавишу F2 и набрав новое название.
Для создания нового триггера выберите только что созданную вами категорию. Затем выберите пункт "Триггер" в меню "Создать". Выберите только что созданный вами триггер, и вы увидите, что справа от окна триггера появились два новых пункта:
Разблокирован - если напротив этого пункта не проставлена галочка, то триггер заблокирован и во время игры разблокирован не будет.
Изначально включен - если напротив этого пункта не проставлена галочка, то триггер при запуске игры будет заблокирован, но может быть разблокирован в процессе игры путем использования команды "Триггер - Включить".
Справа от окна триггера есть еще несколько полей:
Комментарии - в это поле можно поместить комментарии. Они будут служить напоминанием для вас и других людей, изменяющих ваш сценарий. Комментарии никак не повлияют на функционирование триггера - они нужны только вам в качестве напоминания.
Функции триггера - здесь показана начинка вашего тригера. Все события, условия и действия вашего триггера отображены в этой части редактора. Если вы добавляете событие, условие или действие, оно будет тут же помещено в подходящую секцию.
Вы можете копировать и вставлять события, условия и действия из триггера в триггер или даже из карты в карту. Чтобы изменить уже созданное вами событие, условие или действие, дважды щелкните на нем.
В редакторе есть и кое-что другое. Это может быть вам знакомо, а может быть и нет. Имеются в виду переменные, функции и константы.

Переменные

Чтобы открыть окно "Переменные", вам нужно нажать клавиши Ctrl + B или выбрать пункт "Переменные" в меню "Правка" редактора триггеров. Работа этих переменных похожа на работу переменных в языках программирования BASIC или C. Переменные можно сравнить с ведрами, в которых редактор хранит различную информацию, причем в каждом ведре будет храниться свой тип информации. Например, нельзя поместить целое число в переменную войск.
С помощью триггеров вы можете обращаться к расположенным на карте объектам. Скажем, вы хотите использовать действие на некой боевой единице. Для этого откройте действие, которое вы хотите на ней использовать, и щелкните левой кнопкой мыши на подходящем куске текста действия. Красно-белый подчеркнутый текст обозначает части действия, которые можно изменить. Теперь щелкните на кнопке "Выбор боевой единицы". Теперь выберите на карте боевую единицу. Название переменной выбранной боевой единицы появится в списке переменных.
Попробуйте сделать следующее: поместите на пустую карту раба (Орда). Нажатием клавиши F4 выберите раба. Нажатием клавиш Ctrl + G создайте категорию. Теперь нажатием клавиш Ctrl + T создайте триггер. Нажмите клавиши Ctrl + R для создания нового действия. Дважды нажмите клавишу "u" для выбора действия "Боевая единица - Уничтожить". Текст этого триггера: "Unit - Kill (Triggering unit)." Щелкните левой кнопкой мыши на синем подчеркнутом тексте, "(Triggering Unit)." Щелкните левой кнопкой мыши на кнопке с надписью "Выбор боевой единицы" (слева от кнопки "Изменить переменные"). Выберите раба. Поздравляем! Вы связали этот триггер с рабом на карте. У всех войск, расположенных на карте, есть связанные с ними названия переменных.
Если вы хотите больше узнать о переменных, научитесь программировать на любом языке. (C++ рулит!)

Функции

Редактор триггеров содержит множество функций для того, чтобы предоставить пользователям большую гибкость и свободу в управлении, что выгодно отличает его от всех предыдущих редакторов Blizzard. Функции обычно используют в связи с переменными и определенными типами информации. Пример полезной функции - "Последняя созданная боевая единица". Эта функция позволяет вам получить доступ к только что созданной боевой единице путем использования команды "Боевая единица - Создать", и фактически является одной из двух функций, позволяющих вам обращаться к созданным войскам в процессе игры (вторая - "Последняя созданная группа боевых единиц"). Эти функции можно использовать вместо переменных войск или войск, расположенных на карте. Однако помните, что функции связаны с числовыми значениями, и вы не сможете вручную задать функцию, приравненную к некоему числовому значению, в отличие от переменных. Однако вы можете задать переменную, равную функции.
Например, если вы только что обнаружили с помощью события, что герой поднял свой уровень, функция "Реакция на событие - Повышение уровня героя" будет относиться только к этому конкретному герою. Вы не можете вот так запросто задать такую же функцию для какого-нибудь другого героя (и слава богу!). Если вы хотите поднять уровень определенного героя, вы должны использовать другой способ для его определения (напр., событие "Боевая единица - Событие для подконтрольной игроку боевой единицы" и условие "Сравнение типа боевой единицы"), затем использовать на герое подходящее действие, например "Герой - Задать уровень".

Константы

Константы - информация, встроенная в редактор. Вам не нужно пытаться получить к ней доступ, она никогда не меняется. Пример постоянной - "Игрок 1 (красный)".

Значение

Еще одно поле, возможность изменить которое у вас будет достаточно часто - поле "Значение". В этом поле вы можете вводить информацию напрямую. Это поле появляется, например, в действии "Игра - Текстовое сообщение (время определяется автоматически)". Если вы щелкнете левой кнопкой мыши на синем подчеркнутом слове "Текст", откроется окно "Строка". Последним пунктом в этом окне будет "Значение". Если вам необходимо простое сообщение, вы можете его набрать прямо в этом поле, и вам не придется ни создавать новую переменную, ни использовать функцию.

Просмотров: 18 626

Это сообщение удалено