WarCraft 3: Структура триггера: события, условия и действия

Начинающий
Статус
Оффлайн
Регистрация
30 Янв 2014
Сообщения
57
Реакции[?]
6
Поинты[?]
0
[HR][/HR]
[HR][/HR]
Структура триггера: события, условия и действия

[HR][/HR]
Перед тем как непосредственно перейти к триггерам (к программированию), посмотрим на рабочую область и самые основы.

Каждый триггер должен находиться внутри какой-нибудь папки. Триггер состоит из трех частей: событий (events), условий (conditions) и действий (actions). Также у триггера есть собственное имя, которое, как и имя файла, не может содержать спецсимволов (в т. ч. знак подчеркивания, зато можно использовать пробелы) и может быть только на английском языке (папки могут быть на русском).

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

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

Еще у триггера есть два флажка (в окне редактора расположены сверху): включен (enabled) и изначально включен (initially on). По сути они имеют одинаковый смысл, за одним исключением: если триггер "отключен", то его никак нельзя включить, ибо он вообще отсутствует в игре (это важный момент), если он "изначально выключен", то его можно включить в игре. В первом случае все ясно - триггера просто нет в игре, а вот второй следовало бы разобрать. У триггера есть "флажок", который отвечает за то, включен ли он. "Отключенное" состояние равносильно тому, что у триггера нет никаких событий (но его можно вызвать из другого триггера). Этот флажок можно включать и выключать по ходу игры (для этого есть специальные действия), т. е. "включать / выключать" триггер. Флажок "изначально включен", соответственно, отвечает за его состояние "по умолчанию". Кстати, есть возможность подключать и отключать отдельные команды внутри любого триггера. Щелкните на команду правой кнопкой и выбирете пункт включить функцию (enable function). "Включать / выключать" функции по ходу игры невозможно.

Говоря про отключение триггеров, нельзя забыть про один аспект. Итак, как только произошло нужное событие и выполнены нужные условия, то триггер приводится в действие. Но дело в том, что почти все триггеры - многоразовые. Если снова произойдет нужное событие и снова выполнены условия - триггер запускается еще раз. Одноразовыми можно считать триггеры, заданные событиями map Map Initialization и Time Elapsed, поскольку эти события происходят один раз. Следовательно возникает проблема: как отключить триггеры. Например, нам нужно сделать так, чтобы когда герой приходил в определенный регион, он перемещался в другое место, но только один раз. Значит, нужно позаботиться, чтобы после первого выполнения триггер отключался. Предлагаю Вам один из способов это осуществить: в каждый триггер, который нужно отключить вставляете строчку действие Trigger - Turn off (This trigger). Это действие отключает триггер.

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

Еще у каждого триггера есть поле, где автор может оставить свои комментарии. Это поле находится прямо над "окном" со списком функций триггера.

События, условия и действия все вместе называются функциями триггера, (назвали это так Blizzard в хелпе редактора).

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

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


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