Структура триггера: события, условия и действия
Перед тем как непосредственно перейти к триггерам (к программированию),
посмотрим на рабочую область и самые основы.
Каждый триггер должен находиться внутри какой-нибудь папки. Триггер состоит
из трех частей: событий (events), условий
(conditions) и действий (actions). Также у триггера есть
собственное имя, которое, как и имя файла, не может содержать спецсимволов (в т.
ч. знак подчеркивания, зато можно использовать пробелы) и может быть только на
английском языке (папки могут быть на русском).
В верхней части окна редактора триггеров имеется пять кнопок, управляющих
процессом создания триггеров. Первая из них - создание новой папки для триггера,
вторая - создание нового триггер, последние три кнопки отвечают за добавление в
триггер новых событий, условий и действий.
Принцип действия следующий: игра - это последовательность событий
(например, начало игры - событие, юнит атаковал юнита - событие, герой повысился
в уровне - событие, игрок передал сообщение в чате - событие). Когда в игре
происходит какое-либо событие, то событие, указанное в триггере, сопоставляется
со случившимся. Если совпадение есть, то происходит второй этап, на котором
проверяется выполнение условий триггера. Условия должны уточнить, когда нужно
производить действие, а когда - нет. Если условия выполнятся (об этом подробно
расскажу ниже), то произойдет третий, финальный этап - будет выполнено действие
этого триггера. Например, перед нами задача: сделать так, чтобы когда герой
(определенный, а не любой!) подойдет к порталу, он переносился бы в другое
место. Событием здесь будет приход юнита в регион вокруг портала, а условие
должно уточнить, что этим юнитом должен быть определенный герой. Действие -
перенос юнита в другое место. Итог: если событие произошло и условия выполнены,
то выполняются действия триггера.
Еще у триггера есть два флажка (в окне редактора расположены сверху):
включен**** (enabled) и изначально включен (initially on).
По сути они имеют одинаковый смысл, за одним исключением: если триггер
"отключен", то его никак нельзя включить, ибо он вообще отсутствует в игре (это
важный момент), если он "изначально выключен", то его можно включить в игре. В
первом случае все ясно - триггера просто нет в игре, а вот второй следовало бы
разобрать. У триггера есть "флажок", который отвечает за то, включен ли он.
"Отключенное" состояние равносильно тому, что у триггера нет никаких событий (но
его можно вызвать из другого триггера). Этот флажок можно включать и выключать
по ходу игры (для этого есть специальные действия), т. е. "включать / выключать"
триггер. Флажок "изначально включен", соответственно, отвечает за его
состояние "по умолчанию". Кстати, есть возможность подключать и отключать
отдельные команды внутри любого триггера. Щелкните на команду правой кнопкой и
выбирете пункт включить функцию (enable function). "Включать /
выключать" функции по ходу игры невозможно.
Говоря про отключение триггеров,
нельзя забыть про один аспект. Итак, как только произошло нужное событие и
выполнены нужные условия, то триггер приводится в действие. Но дело в том, что
почти все триггеры - многоразовые. Если снова произойдет нужное событие и снова
выполнены условия - триггер запускается еще раз. Одноразовыми можно считать
триггеры, заданные событиями map Map Initialization и Time
Elapsed, поскольку эти события происходят один раз. Следовательно возникает
проблема: как отключить триггеры. Например, нам нужно сделать так, чтобы когда
герой приходил в определенный регион, он перемещался в другое место, но только
один раз. Значит, нужно позаботиться, чтобы после первого выполнения триггер
отключался. Предлагаю Вам один из способов это осуществить: в каждый триггер,
который нужно отключить вставляете строчку действие Trigger - Turn off (This
trigger). Это действие отключает триггер.
Примечание: на самом деле можно просто не добавлять триггеры событий
изначально, это тоже самое что и "изначально выключен". Но тогда зачем вообще
нужно включение / выключение? Предположим, что у какого-то триггера есть
события, но работать они должны не сразу. Т. к. у нас нет возможности добавлять
события триггеру по ходу игры, тут нам может помочь только выключение триггера.
Верно и обратное - иногда триггер приходится отключать (а потом опять включать).
Если у Вас есть возможность использовать такой метод, вместо условий -
пользуйтесь им. Это гораздо более "красивое" решение.
Еще у каждого триггера есть поле, где автор может оставить свои
комментарии. Это поле находится прямо над "окном" со списком функций
триггера.
События, условия и действия все вместе называются функциями
триггера, (назвали это так Blizzard в хелпе редактора).
Некоторые из тех, кто еще не освоил WE, говорят, что не могут понять, как
работают триггеры, потому что в них слишком много различных команд. На это я
могу возразить - Вам, скорее всего, не понадобится и четверти тех команд
(особенно поначалу). Да, если Вы владеете английским языком, то изучать триггеры
будет намного проще.
А теперь, очень рекомендую вам открыть редактор и познакомиться с основными
событиями, условиями и действиями, которые есть в редакторе.