Форум портала о WarCraft Форум портала о WarCraft
порно чат

Вернуться   Форум портала о WarCraft > Вселенная WarCraft > World Editor > Статьи
Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Ответ
 
Опции темы Опции просмотра
Старый 24.07.2010, 22:28   #1
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Познаем триггеры (Triggers)

Познаем триггеры (Triggers)



Структура триггера.
Каждый триггер должен находиться внутри определенной папки. Триггер состоит из трех компонент: событие (event), условие (condition), действие (action). А еще триггер имеет собственное имя и два флага: initialized (запущен) и enabled(подключен).

В верхней части окна редактора триггеров имеется пять кнопок, управляющих процессом создания триггеров. Первая из них – создание новой папки для триггера. Вторая – создание нового триггера. (папкам и триггерам можно изменять названия. Этот процесс аналогичен изменению имени файлов и папок в windows). Последние три кнопки отвечают за добавление в триггер новых событий, условий и действий.

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

Итог: если событие произошло и условия выполнены, то выполняются действия триггера.

Еще один важный вопрос – как отключить триггер. Для этого – щелкните правой кнопкой по триггеру. Вы сможете изменить флаги initialized и enabled. Оба флага отвечают за работу триггера. Если вы отмените действие хоть одного из них – триггер перестанет работать. Разница между этими флагами невелика. Вам достаточно знать, что отключение триггера предпочтительнее проводить с помощью флага initialized.

Кстати, есть возможность подключать и отключать отдельные команды внутри любого триггера. Щелкните на команду правой кнопкой и выберете пункт enabled function.

Еще у каждого триггера есть место, где автор может оставить свои комментарии (comments).

События, условия, действия.
Некоторые из тех, кто еще не освоил worldedit говорят, что не могут понять, как работают триггеры потому что в них слишком много различных команд. На это я могу возразить, вам скорее всего не понадобится и четверти тех команд (особенно поначалу). Я не собираюсь объяснять назначение каждого из триггеров, но постараюсь дать базу, опираясь на которую вы сможете изучать триггерную систему самостоятельно.

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

СОБЫТИЯ (EVENTS).
В один и тот же триггер вы можете вставить несколько событий. Если происходит хоть одно из них (!) и условия выполнены – то выполняется действие триггера. Если в триггере не указано ни одно событие, то сам по себе он никогда не запустится (запустить его можно лишь с помощью других триггеров).

Основные события с кратким описанием:

Map initialization – событие начала игры. Какие действия желательно проводит в самом начале игры? Это установка игрокам стартовых ресурсов, запуск стратегий компьютерным игрокам, показ начальной заставки и др.

Destructible Doodad die – событие уничтожения предмета обстановки, к которым относят клетки, ящики, деревья, ворота, мосты и др. С помощью данного события создаются триггеры, в которых, например, при уничтожении ящика из него вываливаются вещи, а из клетки появляются юниты.

Game time of day – событие время дня (игровое). Например событие [game time of day equal 12.00] означает, что событие произойдет в 12.00 по игровому времени. (не путайте игровое время и время, потраченное игроком на прохождения миссии) Слово equal означает равно, not equal –не равно, less – меньше, more – больше. Player chat message – событие, которое произойдет при наборе игроком определенной строки (string) или подстроки (substring) в чате (строка или подстрока должны быть указаны в событии). Обычно используется для создания читов, а также может сильно облегчить тестирование карты (берешь триггер, делаешь так, чтобы он происходил при наборе строки и следишь за правильностью его выполнения).

Player properties – параметры игрока. Сначала требуется уточнить игрока, затем какой конкретно параметр игрока имеется ввиду: золото (gold), лес (lumber), количество используемой еды и т.п. Затем требуется уточнить, с каким числом проводить сравнение параметра.

Пример: [player 1 current gold becomes more or equal 10000] переводится как: событие произойдет, когда количество золота у игрока номер 1 станет больше либо равным 10000.

Тут есть еще одна тонкость в формулировке СТАНЕТ большим либо равным 10000. Т.е. денег стало больше 10000 событие произошло (1 раз). После того, как событие произошло 1 раз, второй раз оно не происходит, т.к. золота УЖЕ больше 10000, а не СТАЛО. Но с другой стороны, если событие произошло один раз, затем игрок истратил часть денег, так что их стало меньше 10000, а затем снова накопил 10000, то событие произойдет второй раз, т.к денег опять СТАЛО больше либо равно 10000.

Я подробно остановился на этом примере потому, что такой принцип действия характерен для большинства событий.

Событие Player property можно использовать, чтобы создать триггер: игрок побеждает, как только накопит определенное количество денег или леса.

Time Elapsed – время прохождения миссии. Как только начинается игра, запускается счетчик времени. Он учитывает скорость игры. Событие произойдет, когда счетчик времени станет <, > либо равен какому-то определенному вами числу.

Time periodic – события, которые происходят периодически через определенные промежутки времени. Например, можно создать триггер, действие которого заключается в том, что у определенного юнита каждую секунду будет отниматься 1 жизнь, т.е. юнит как бы болеет. Можно сделать еще интереснее: вместо того, чтобы указывать точное число единиц времени, через которые событие будет повторяться, выберете в разделе функций (function) – случайное число (random number). Случайное число задается своими граничными значениями. Таким способом можно задавать события, которые будут происходить через случайные промежутки времени. Это используется, например, чтобы на карте в промежутке от 2 до 4 минут начинался и заканчивался дождь.

События такого типа могут тормозить игру (если их слишком много).

Unit specific unit event – события, происходящие с юнитом. Нужно уточнить какое событие и с каким юнитом. Юнит вы выбираете на карте или с помощью переменной. Возможные варианты событий, которые могут произойти с юнитом: die (юнит умер), decay(умер и разложился), takes damage(юниту уменьшили число жизней), gain level (юнит поднялся в уровне. Работает лишь для героев) и др. События с юнитами можно использовать, например, чтобы герой переставал получать опыт, как только его уровень станет больше пятого или чтобы игрок проигрывал, как только определенный юнит гибнет.

Unit players owned event – события происходящие с юнитом, владелец которого определенный игрок. Почти то же самое, что и в предыдущем случае, только вместо юнита вы выбираете игрока-владельца юнита. Можно создать такой триггер: когда войска определенного игрока атакованы, этот игрок объявляет войну, атаковавшему его.

Unit enters region и Unit leaves region – событие юнит вошел в регион и юнит покинул регион. Требуется уточнить регион. Можно создать триггер: юнит будет перемещаться в другое место как только войдет в регион. Или юнит попадает в смертельную ловушку.

Unit within range – юнит вблизи объекта. Нужно уточнить расстояние (range). Похоже на предыдущее, но нужно иметь ввиду, что регионы имеют прямоугольную форму, а unit within range – это тоже регион, но круглой формы. Можно использовать так: как только юнит оказывается в 500 единицах расстояния от волка, то волку дается команда наброситься на юнит.

Unit life и Unit mana – события, которые произойдут, как только жизнь или мана определенного юнита станут сравнимы с некоторым значением. Нужно уточнить какой юнит имеется ввиду и с каким значением сравнивать жизнь или ману. Пример использования: как только количество жизней у какого-нибудь юнита, контролируемого компьютером станет меньше 30% от его максимальной жизни (Функция arithmetic [0,3] <умножить> функция: unit property>> max health для этого юнита) , то приказать ему обратиться в бегство.

УСЛОВИЯ (CONDITION).
Если вы вставите несколько условий в триггер, то действие триггера произойдет только если выполняются все (!) эти условия (заметьте отличие с событиями). Однако в списке условий – в самом конце есть разделители and и or. And (союз И) не дает ничего нового, т.к. это все равно что добавить еще одно условие. А вот or (союз или) позволит делать условие триггера таким, что он будет выполнятся, когда выполнено какое –то условие 1 ИЛИ условие 2.

Во многих случаях можно обойтись вообще без условий.

В списке условий вы найдете, что условия распределены по типам: Boolean comparison, destructible doodads comparison, integer comparison, real comparison, player comparison и др. Это сделано для удобства: проверок можно делать очень много, вот и разделили их по типам.

Boolean comparison (логическая проверка):

Quest>>quest is complete – проверка, завершен ли квест. Требуется уточнить квест (через квестовую переменную). Условие quest is complete equal true (т.е. квест завершен = правда) будет выполнено, если указанный квест завершен, а quest is complete equal false (т.е. квест завершен = лож) выполняется если указанный квест не завершен.

Unit>>classification check – проверка некоторых параметров юнита. Требуется указать юнит и наличие какого качества проверяется. Тут можно проверять такие качества как: unit is flying (юнит летает по воздуху), unit is hero (юнит - герой) и др. Например, условие unit is hero equal true (т.е. юнит является героем=правда) выполнено, если юнит действительно является героем.

Остановлюсь более подробно на юните, который можно указывать. Юнит можно указать вручную (select unit), через переменную с юнитом (variables) или специальную функцию (function). Специальные функции очень важны и позволяют реализовать многие возможности worldedit. Перечислю некоторые из них:

Last created unit – последний из созданных (триггерным способом) юнитов. Например, вы можете сотворить новый юнит, но как дать ему команду? Просто вместо конкретного юнита указываете функцию last created unit и дате ему команду этому юниту.

Event response killing unit - юнит – убийца из события. Данная функция имеет смысл ТОЛЬКО если событие (event) триггера представляет собой unit specific event>>unit die или unit player owned event>>unit is die. Например, можно создать триггер, который произойдет только если определенного монстра убил определенный герой.

Event response attacking unit – атакующий юнит из события. Данная функция имеет смысл ТОЛЬКО если событие триггера представляет собой unit specific event>>unit is attacked или unit player owned event>>unit is attacked.

Event response attacked unit – юнит, на который напали из события. Данная функция имеет смысл ТОЛЬКО если событие триггера представляет собой unit specific event>>unit is attacked или unit player owned event>>unit is attacked.

Event response entering unit – юнит вошедший в регион из события. Данная функция имеет смысл ТОЛЬКО если событие триггера представляет собой unit enters region.

Более подробно поясню последние четыре функции на примере. Итак, вы указали событие для триггера unit enters region и уточнили определенный регион (заметьте, что событие происходит если любой юнит войдет в регион). Вам требуется, чтобы когда герой войдет в регион, он перемещался в другое место. Значит нужно организовать проверку, является ли вошедший юнит вашим героем. Вставляем условие для проверки: unit compasion>>event response entering unit equal <ваш герой>. Действие триггера – перемещение теперь сработает когда юнит вошел в регион, если этот юнит указанный герой.

Подобным способом в моей карте sample.w3m осуществлено следующее: как только юнит приходит в регион с лавой, проверяется летает этот юнит или нет и, если нет – то ему наносится повреждение.

Вернемся к Boolean Comparison.
Unit>>unit in unit group – проверка, принадлежит ли юнит определенной группе. Требуется указать юнит и группу. Юнит можно задать выбором, переменной или функцией (как в предыдущем случае). Группу можно задать через переменную и функцию. Через переменные задаются группы, созданные самим картостроителем. Некоторые из функции групп: units in region – все юниты в определенном регионе. Если регионом указать всю карту (entire map), то в эту группу попадут все юниты на карте. units in region owned by player – юниты в регионе, хозяин которых определенный игрок units in region of type – юниты в регионе определенного типа.

Например, как создать триггер, который будет объявлять поражение игроку, при условии, что гаргули пролетят на определенную территорию. Он будет иметь структуру:

Событие: unit enters region, Условие Boolean comp>>unit in unit group>>[event response entering unit] in [units of type>>gargoyle] equal true

Действие: game defeat <игрок> Unit>>unit in region – проверка, находится ли юнит в регионе. Требуется уточнить юнит и регион. Visibility>> unit is visible – проверка, является ли определенный юнит видимым или невидимым для определенного игрока. Юнит и игрок должны быть уточнены. Как сделать, чтобы герою надо было тайно пробраться на вражью базу, а при его обнаружении поднималась тревога. Можно создать такой триггер:

Событие: Time periodic event>>every 1 second,

Условие: <определенный герой> visible for <компьютерный игрок> equal true (т.е. каждую секунду будет проверяться видит ли вражий игрок нашего героя.

Действие: поднять тревогу Visibility>> unit is invisible – то же самое, только проверка является ли юнит невидимым. Не вижу смысла: что unit visible = true, что unit invisible=false – одно и то же.

Destructible doodads comparison (проверка, связанная с предметами обстановки). Раньше мы уже рассмотрели событие destructible doodad die. Проверка позволит уточнить, какой именно предмет обстановки разрушен. Для этого служит функция event response dying destructible doodad (разрушенный предмет обстановки из события).

Пример: при разрушении ящика из него вываливается вещь.

Событие: destructible doodad die

Условие: [event response dying destructible doodad] equal <конкретный ящик указывается на карте> Действие create item>>[указываете вещь, которая должна появиться]

Integer comparison (целочисленная проверка) player>> player property – позволяет проверит значение параметров игрока (золото, лес, работа ферм и т.д.). Например, по сюжету герой должен принести стражникам 1000 золота чтобы они открыли ворота.

Событие: unit enter region <указываем регион, в котором находятся стражники>

условие: unit comparison>>[event response entering unit] equal <герой> (т.е. если вошедший – это наш герой, а то мало ли кто может прийти);

второе условие: Integer comparison>>player property>>[владелец героя] current gold [1000]

действие: забрать у игрока 1000 и открыть ворота.

unit group>> count units in unit group – подсчет числа юнитов в группе. Например, если перед игроком стоит задание построить 4 фермы, то можно создать такой триггер:

событие: time periodic>>every 1 second (т.е. каждую секунду проводить проверку)

условие unit group>> count units in of type [farm]> [more or equal] 4 (т.е. проверка больше ли четырех число юнитов в группе ферм, владелец которых player1 )
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Старый 24.07.2010, 22:28   #2
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: Познаем триггеры (Triggers)

Real comparison (проверка рациональных чисел) Рациональные чилса поддерживают до двух знаков после запятой.

unit property – проверка параметров юнита (жизнь, мана и т.д. Даже угол поворота).

Более подробно о примере, где юнит обращается в бегство при жизни меньше 1/3 от максимума:

Событие: unit specific event>>[нужный юнит] takes damage (юнит повреждается)

условие real comparison>>unit property>> life of less then arithmetic>> [unit property>>max life of event response damaged unit] <знак деления> [3] (т.е. жизнь у указанного в событие поврежденного юнита меньше, чем значение полученное арифметическим действием максимального количества жизни у повреждаемого юнита делить на 3)

действие: команда юниту убегать.

Player comp (проверка игроков)
owner of triggering unit – проверка является ли определенный игрок хозяином юнита. Пример: юнит приходит в определенный регион и, если хозяин юнита определенный игрок, то его там вылечивают (постарайтесь составить события и условия для данного триггера сами)

Unit comparison (проверка юнита)
Это проверка типа является ли юнит первый и юнит второй одним и тем же юнитом. В основном работа с этими условиями идет через встроенные функции. Например

событие unit die

условие unit comparison>>[герой] equal [event response killing unit]

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

Unit type comp (проверка типа юнита)
Проверка типа юнита. Данная проверка часто барахлит и имеет тенденцию самоотключаться. Советую использовать вместо нее оператор if.

ДЕЙСТВИЯ (ACTION)
Это последняя составляющая триггеров. Когда в триггере несколько действий, они выполняются по порядку их нахождения в триггере. Если триггер запущен на исполнение (т.е. событие произошло и условия выполнены), то прервать выполнение действий нельзя (хотя существует одна хитрость, которая позволяет в некоторых случаях прервать выполнение действий триггера)

Итак, даю список основных действий с пояснениями: Comment – еще один вид комментария. В игре эта команда ничего не делает, но позволяет разработчику прокомментировать триггер в определенном месте.

Wait <сколько секунд ждать> – команда ожидания. Как только выполнение триггера доходит до этой команды, выполнение триггера прерывается на время указанное в команде. Учитывается скорость игры. При большой скорости игры ожидание длится меньше.

Set variable <переменная> = <значение> - команда присвоения переменной определенного значения. Переменная выбирается из списка уже созданных переменных. Значение можно задать вручную, через другую переменную, через функцию. Для каждого типа переменных существуют свои функции

If then else: if <условие> then <действие 1> else <действие 2> - оператор условия. Переводится так: если условие выполняется, то выполнить действие 1, а если не выполняется – выполнить действие 2. Этот оператор позволяет организовать дополнительную проверку внутри триггера. Обязательно нужно указать и действие 1 и действие 2. Но если вам не нужно действие 2, то можете выбрать действие do nothing (т.е. ничего не делать).

Animation>>play unit animation: <юнит> и <название анимации> - анимация юнита. Различные анимации, которые можно проделывать с юнитами вы можете увидить, если запустите layer>>unit editor, затем щелкните на нужный юнит. В окне слева должно появится изображение юнита, а над ним две стрелки. Нажимая на стрелки вы просматриваете различные анимации юнита и там же выдается их название. Почти у всех юнитов есть stand (стоять), attack (атака), death (смерть) анимации. В раздел <название анимации> просто вводите нужную строчку. Примечание: когда вы даете юниту команду выполнять анимацию, то после ее выполнения он зацикливается на ней, либо застывает как истукан. Чтобы вывести юнит из прострации, можно дать ему какую-нибудь команду, либо заставить сыграть stand animation (лучший способ), либо воспользоваться командой reset unit animation Reset animation: <юнит>: отключает анимацию юнита.

Camera>>apply camera object: <объект камера> <время>– управление игровой камеры переходит к объекту камера. Это один из лучших способов управлять камерой в игре. Объекты камер создаются с помощью layer>>cameras. С помощь данной команды вы можете заставить камеру игрока (т.е. его игровой вид) переместить в точку созданного вами объекта камеры за определенное время. Если вы поставите время 0, то переход состоится мгновенно. Если время не равно нулю, то игра сама рассчитает траекторию, по которой камера игрока будет перемещаться к объекту камера.

С помощью этой команды можно заставить камеру вращаться, медленно отодвигаться и совершать другие сложные движения. Для этого нужно использовать несколько объектов камер.

Camera>>reset game camera – возвращает игровую камеру к стандартному виду. Нужно учитывать, что если вы развернете игровую камеру на определенный угол, то такой просмотр останется в игре. Чтобы вернуть камеру к нормальному виду используйте эту команду.

Cinematic>>send transmission form unit <сообщение> , <время>, <юнит>, <звук> - сообщение от юнита, которое длится определенное время. Во время заставок эти сообщения будут появляться в нижней части экрана рядом с портретом юнита.

Если хотите послать несколько сообщений, важно чтобы они не наложились друг на друга. Используйте действие wait, чтобы игра подождала, пока закончится одно сообщение, а затем посылала другое.

Destructible doodad kill: <предмет обстановки> - позволяет уничтожить некоторые предметы обстановки (мосты, деревья, ворота, ящики, клетки и т.д.)

Destructible doodad create <предмет обстановки> <позиция>- позволяет создавать некоторые предметы обстановки (мосты, деревья, ворота, ящики, клетки и т.д.) на выбранной позиции. Destructible doodad open/close/destroy gate <ворота>, <действие> - открыть, закрыть или уничтожить предмет типа ворот. Open – открыть, close – закрыть.

Destructible doodad make invulnerable/vulnerable <предмет>, <состояние> - позволяет сделать некоторые предметы типа мостов, ворот и др. неуязвимыми (invulnerable) или снять неуязвимость (vulnerable).

Environment>>create weather effect <эффект> и <регион> - команда создания погодного эффекта на выбранной территории. Кто не знает английский: rain – дождь, snow – снег, wind – ветер, fog – туман.

Environment>>enable weather effect <переменная или последний созданный эффект> - запускает погодный эффект. Погодный эффект мало создать, нужно еще и активировать. Есть такая тонкость: запустить можно лишь последний созданный эффект (last created weather effect) либо эффект, записанный в переменную (причем в переменную типа weather effect. В переменную можно записать, тоже лишь последний созданный эффект). Так что как только создали эффект – так и запустили. А если вы создадите подряд два эффекта, то первый из них вы запустить уже не сможете (если только вы не ассоциировали его с переменной).

Environment>>set sky – устанавливает различные варианты неба. Хочу заметить, что в близзордовских сценариях небо присутствует только в заставках, т.к. небо делает видными некоторые недостатки в графике игры. Ночью все виды неба – черные. Чтобы убрать небо – установите его тип no sky (без неба). Game>>pause – пауза в игре. Все объекты остановлены, но в это время игрок может менять просмотр, читать сообщения и т.д. пауза в игре продлится, пока не будет выполнена команда game unpause.

Game>>unpause – конец игровой паузы.

Game>>set game speed – установка скорости игры.

Если вы хотите, чтобы игрок не смог менять скорость игры, сделайте команду lock game speed.

Game>>set time of day – устанавливает в игре определенное время дня.

game>>set time of day speed - установить скорость течения времени в процентах к скорости по умолчанию. Если 0 -время остановится.

Game>> text message – посылает текстовое сообщения одному игроку или всем сразу. Сообщение может появляться на время, определенное картостроителем (explicitly timed) или из расчета своей длины (auto timed).

Game>>victory – объявление победы определенному игроку.

Game>>defeat – объявление поражения определенному игроку. Есть возможность написать причину поражения (но только коротко).

Hero>>set level – устанавливает герою определенный уровень опытности. Невозможно уменьшить уровень или сделать больше 10.

Hero>>create item – создает вещь и помещает ее в инвентарь героя.

Hero>>set experience rate -установить рейтинг опыта. Если 0%, то герои определенного игрока вообще не будут получать опыт.

Hero>>enable/disable experience gain – запрещает или разрешает герою конкретному герою получать опыт.

Player>>set property – установка параметров игрока (золото, лес).

Player>>set alliance – установка и изменение дипломатических отношений: от войны (enemy) до союзников с общим контролем юнитов (ally with shared unit control)

Player>>change color – сменяет цвет юнитов игрока. Причем, можно сменить цвет всех существующих юнитов или цвет существуюших юнитов оставить прежним, а новым цветом будут окрашены только новые юниты).

Region move – переместить регион. Его можно перемещать к определенному юниту, к определенной точке (point) и др.

Sound>>play sound – играется звук. Можно сыграть лишь звук, который был определен ранее в редакторе звуков (sound editor).

Sound>>play music – играется определенная музыка. Special effect>>create at point – создает спецэффект в точке. Можно создать в точке любой спецэффект, который есть в игре. Список спецэффектов можно получить, если открыть war3.mpq. Каждый спецэффект задается строчкой, которая является адресом спецэффекта в архиве war3.mpq.

Количество спецэффектов очень велико. По умолчанию стоит спецэффект удара гнома по земле. Special effect>>create on unit – создает спецэффект на юните. Нужно уточнить юнит, название спецэффекта, к какой части тела его применять (origin – туловище, overhead – над головой, right hand и left hand – руки). По умолчанию стоит спецэффект восклицательного знака над головой юнита.

Special effect>>destroy – уничтожает спецэффект. Со спецэффектами та же проблема, что и с погодными эффектами: можно уничтожить лишь последний из созданных спецэффектов (last created special effect) или спецэффект, заданный переменной. Поэтому, если создаете более одного спецэффекта, то записывайте их в переменные типа special effect (иначе потом не сможете уничтожить). Unit >> create facing angle – сотворить юнит повернутый на определенный угол. Угол определять не обязательно. Угол от 0 до 360 градусов. Unit >> create facing point – создать юнит, смотрящий в точку, которую нужно определить. Точку можно установить на другом юните (position of unit).

Unit >> kill – убить выбранный юнит.

Unit >> remove – убрать юнит из игры (но он не умирает).

Unit >> replace – заменить один юнит на другой. Есть возможность сохранить новому юниту количество жизней и маны, которые были у старого или поменять эти параметры.

Unit >> explode – заставить юнит взорваться (т.е. убить его и даже корпуса не останется). Unit >> hide – спрятать юнит. Никакого отношения к способности эльфов hide эта команда не имеет. Спрятанный юнит ест еду у игрока, с ним ничего не происходит, им невозможно управлять. Зато если дать ему команду показаться (unhide), то он возникнет в том месте, где когда–то спрятался. Unit >> unhide – заставить спрятанный юнит показаться.

Unit >> move unit – телепортация юнита (т.е. мгновенное перемещение на другую позицию). Никакого отношения к команде, заставляющий юнит двигаться это не имеет. Если вы скомбинируете эту команду с соответствующим спецэффектом, то получите красочное перемещение юнита с одной позиции на другую.

Unit>> Set life – установить юниту определенное количество жизней. Если 0 – умрет. Если используете функцию unit property>>max life of unit, то установите жизнь юнита без повреждений (но для этого лучше пользоваться другой командой) Unit>> Set life percent – установить жизнь юнита в процентах.

Unit>> Set mana и Unit>> Set mana percent – устанавливает ману юнита аналогично предыдущим командам.

Unit>> make invulnerable/vulnerable – делает юнит неуязвимым (полностью) или снимает неуязвимость. Invulnerable – означает полную неуязвимость, vulnerable – означает снятие неуязвимости. Unit>> change color – сменить цвет юнита. Unit>> change owner – сменить игрока хозяина юнита. Unit>> remove buffs – снять с юнита заклинания, действующие на него. All buffs – все заклинания, negative buffs – вредные заклинания, positive buffs – полезные заклинания.

Unit>> remove ability – удаляет у юнита определенную способность.

Unit>> make unit face unit – заставить один юнит повернуться лицом к другому за определенное время. Unit >> issue order targeting unit – дает команду одному юниту, связанную с другим юнитом (атака - attack, следование - follow, всевозможные заклятия, которые можно накладывать на юниты типа polymorph, inner fire и др.).

Unit >> issue order targeting point - дает команду юниту, связанную с точкой на карте (передвижение – move, атака - attack, заклятия, связанные с точкой на карте типа blizzard, dispel magic и др.).

Unit >> issue order targeting destructible – дает команду юниту, связанную с предметами обстановки (атака - attack, добыча леса – harvest lumber, сова на дерево – sentinel)

Unit >> issue order with no target – дает команду юнитам, не связанную с определенными целями (остановиться – stop, стоять насмерть – hold и др.) Примечание: команды можно давать не только отдельным юнитам, но и группам юнитов.

Картостроитель может создавать произвольные группы юнитов с помощью переменных типа unit group. В такую группу можно добавлять юниты (Unit group>>add unit to unit group) и удалять (Unit group>>remove unit from unit group). Недостаток таких групп – в них можно помещать не более 12 юнитов. Команды для управления группами те же, что и для одиночных юнитов.

Visibility>>create visibility modifier region – создает видимость игроку в области определенного региона. Если за регион взять всю карту, то игроку станет видна вся карта. Не позволяет видеть невидимых юнитов.

Visibility>>remove visibility modifier region – уничтожает видимость, созданную в предыдущей команде.

Прежде чем вы приступите к созданию триггеров вы должны знать еще один важный аспект. Итак, как только произошло нужное событие и выполнены нужные условия, то триггер приводится в действие. Но дело в том, что почти все триггеры – многоразовые. Если снова произойдет нужное событие и снова выполнены условия – триггер запускается еще раз. Одноразовыми можно считать триггеры, заданные событиями map initialization (загрузка карты) и Time expires (отсчет времени с начала игры), поскольку эти события происходят один раз.

Следовательно возникает проблема: как отключить триггеры. Например, нам нужно сделать так, чтобы когда герой приходил в определенный регион, он перемещался в другое место, но только один раз. Значит, нужно позаботиться, чтобы после первого выполнения триггер отключался. Существуют разные способы отключения триггеров. Предлагаю вам один из них: в каждый триггер, который нужно отключить вставляете строчку действие Triggers>>Turn off trigger>>[this trigger] (лучше всего с самого начала). Это действие отключает триггер.

Советую вам создать новую карту, стереть из нее все встроенные триггеры и потренироваться создавать собственные. Просмотрите так же карту из sample.w3m еще раз и постарайтесь разобраться ее триггерной системе.

Автор: Sergey
© WC3.RU, 2002-2010 гг
Нашли ошибки и недоработки в статье? Сообщите нам в раздел Поддержки! С уважением, WC3.RU
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Старый 12.08.2010, 14:38   #3
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: Познаем триггеры (Triggers)

Другие статьи:

Основы JASS.
JASS - Общие понятия.
Синтаксис JASS.
JASS - Библиотечные функции. Часть 1.
JASS - Библиотечные функции. Часть 2.
JASS - Операторы.
JASS - Выражения
JASS - Комментарии.
JASS - Функции
JASS - Типы
JASS - Заключение.
Faq по созданию рельефа.
Зачем так много триггеров?
Немного об оптимизации кода.
Текстовые триггеры
Создаем простейшие карты (карты для melee)
Событие с переменным периодом.
Познаем триггеры (Triggers)
Познаем регионы (locations)
Познаем переменные...
Отлавливаем двойной клик мышью.
Массивы и циклы в обычных и текстовых триггерах
Локальные переменные в Custom Text
Камеры, спецэффекты, карта, цвета, кэш...
Добавление своих функций в триггеры
Добавление своих моделей и др. в карту
Делаем очень большую карту...
Делаем огнемет.
Улучшенная версия огнемета...
Глюки worldeditor'a
Random с задаваемой вероятностью - аура.
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +4, время: 18:22.

Design Developed by CompleteGFX
vBulletin® Version 3.6.7.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot