Каждый триггер должен находиться внутри какой-нибудь папки. Он состоит из трех частей: событий (events), условий (conditions) и действий (actions). Также у триггера есть собственное имя, которое, как и имя файла, не может содержать спецсимволов (в том числе знак подчеркивания, однако можно использовать пробелы) и может быть введено только на английском языке (папки могут быть на русском).
Рис. 1 - структура триггера В верхней части окна редактора триггеров имеется шесть кнопок, управляющих процессом создания триггеров. Первая из них - создание новой папки для триггера, вторая - создание самого триггера, третья - создание комментария к триггеру, а последние три кнопки отвечают за добавление в триггер новых событий, условий и действий.
Рис. 2 - кнопки для управления триггерами Принцип действия следующий: игра - это последовательность событий (например, начало игры, юнит атаковал юнита, герой повысился в уровне, игрок передал сообщение в чате). Когда в игре происходит какое-либо событие, то указанное в триггере событие сопоставляется со случившимся. Если совпадение есть, то происходит второй этап, на котором проверяется выполнение условий триггера. Условия должны уточнить, когда нужно производить действие, а когда - нет. Если условия выполнятся, то произойдет третий, финальный этап - будет выполнено действие этого триггера. Например, перед нами стоит задача - сделать так, чтобы определённый герой переносился в другое место, когда подойдёт к порталу. Событием здесь будет приход юнита в область вокруг портала (Боевая единица - Unit Enters Region), а условие должно уточнить, что этим юнитом должен быть определенный герой (Triggering unit равно [Определённый герой], для примера я взял Чародея Крови). Действие - перенос юнита в другое место (Боевая единица - Move (Triggering Unit) instantly to (Область, куда хотите его переместить)). Если событие произошло и условия выполнены, то выполняются действия триггера.
Рис. 3 - триггер, переносящий определённого героя из одной области в другую. Еще у триггера есть два флажка (в окне редактора расположены сверху): включен (enabled) и изначально включен (initially on). По сути они имеют одинаковый смысл, за одним исключением: если триггер "отключен", то его никак нельзя включить, ибо он вообще отсутствует в игре (это важный момент), если он "изначально выключен", то его можно включить в игре. В первом случае все ясно - триггера просто нет в игре, а вот второй следовало бы разобрать. У триггера есть "флажок", который отвечает за то, включен ли он. "Отключенное" состояние равносильно тому, что у триггера нет никаких событий (но его можно вызвать из другого триггера). Этот флажок можно включать и выключать по ходу игры (для этого есть специальные действия), то есть "включать / выключать" триггер. Флажок "изначально включен", соответственно, отвечает за его состояние "по умолчанию". Кстати, есть возможность подключать и отключать отдельные команды внутри любого триггера. Щелкните на команду правой кнопкой и выберете пункт "включить функцию" (enable function). "Включать / выключать" функции по ходу игры невозможно.
Рис. 4 - флажки для управления включением триггера Говоря про отключение триггеров, нельзя забывать про один аспект - как только произошло нужное событие и выполнены нужные условия, то триггер приводится в действие, но дело в том, что почти все триггеры многоразовые. Если снова произойдет нужное событие и снова выполнены условия - триггер запускается еще раз. Одноразовыми можно считать триггеры, заданные событиями Карта - Map Initialization и Time Elapsed, поскольку эти события происходят один раз. Следовательно, возникает проблема - как их отключить. К примеру, нужно сделать так, чтобы герой перемещался в другое место, когда приходил в определенную область, но только один раз. Значит, нужно позаботиться, чтобы после первого выполнения триггер отключался. Вот один из способов это осуществить: в каждый триггер, который нужно отключить, вставляете строчку в действия - Триггер - Turn off (This trigger). Это действие отключает триггер.
Рис. 5 - теперь герой переходит из одной области в другую только один раз.