Самое подробное руководство о том, как пользоваться скриптами редактора карт.
(v. 0.15)
Автор: scrackan
Чеки (Checks) | События (Instances) |
---|---|
|
|
Приложения:
|
|
Trigger Manager — мощнейший инструмент для написания игровых сценариев сингл-миссий. Как бы пафосно это ни звучало, но его возможности почти безграничны, а простор для фантазии — огромен. Каждый триггер состоит из чека (check) и события (instance), т.е. кратко можно выразить его суть так: при определенном чеке (проверка: выполняется ли ряд условий?) происходит какое-либо событие.
Создание триггера
Для начала триггер нужно озаглавить. Введите название в поле «Trigger Name»; разумеется, оно должно быть кратким и понятным (например, Start, Come to ogre first time). Во избежание проблем, пожалуйста, не используйте кириллицу! Затем необходимо выбрать соответствующий чек выполнения триггера: if условие = какому-либо значению (кстати, вместо знака «=» можно использовать «>», «<«, «!=» (не равно), «>=» (больше или равно) и «<=» (меньше или равно)), происходят определенные события.
Примечание: на самом деле в Trigger Manager’е для трех понятий применяется только одно слово — «check». Для удобства будем использовать несколько терминов: чек — это непосредственно проверка: равно (больше, меньше, не равно, больше или равно, меньше или равно) ли какое-то условие (верхнее поле) определенному значению (нижнее поле).
Максимальное количество чеков в одном триггере — три (объединяются флажком and), а событий может быть до четырех. Если необходимо выполнить более 4 событий, создается еще один триггер (для удобства к названию первого тригера добавляется «2» — например Start2) с аналогичнымы чеками — туда и входят события, которые «не поместились» в предыдущий. Кстати, у большинства чеков должен стоять флажок Run Once (выполнять один раз).
Создание чеков
Прежде чем выбрать необходимые условия и значения для какого-либо чека, их нужно создать. Делается это в Check Manager (кнопка Manage Checks). Там представлено 27 базовых типов условий и значений (Check types), которым можно присваивать свои названия и ряд параметров.
В данной документации будут описаны все типы чеков, их параметры, примеры применения, а также возникающие проблемы и замеченные баги. Информация будет появляться постепенно (следите за версией руководства!), в зависимости от прогресса «анализа» сингл-миссий.
Check Types (типы чеков)
1. How many units contains this group
Сколько юнитов содержит группа (единственный параметр — номер группы). Если группа состоит из одного юнита, то чек «if ogres number (условие «How many units contains this group») = FALSE» равнозначен чеку «if Is ogre alive? (условие «Is unit alive?») = FALSE. По непонятным причинам разработчики «Аллодов» больше склоняются к первому варианту.
2. Is unit in a box
3. Is unit in a circle
4. Get unit parameter
Возвращает значение какого-либо параметра определенного юнита. Параметры условия:
- Unit (ID юнита);
- Parameter (номер параметра юнита; работает почему-то только «6» — это «жизнь»; остальные параметры = 0);
Например, чек «if Trolls health (условие «Get unit parameter», Unit=23 (ID тролля на карте), Parameter=6 («Жизнь»)) < 1229 — max trolls hp (значение «Constant Value», Value=1229 (максимальная жизнь 4-го тролля))» означает «4-й тролль поврежден хотя бы на 1 единицу жизни».
5. Is unit alive?
Проверка, жив ли какой-то конкретный юнит. Единственный параметр: Unit (ID юнита).
Это условие принимает значение TRUE (если жив) или FALSE (если мертв).
6. Distance between units
Расстояние между двумя юнитами. Параметры:
- First unit — первый юнит (например, ID главного героя в кампании = 10001);
- Second unit (ID — см. на карте);
В качестве второй части чека используется значение «Constant Value». Дистанция для разговора, как правило, <= 4.
7. Distance from point to unit
Расстояние от точки на карте до юнита. Параметры:
- Unit (ID юнита);
- X (координаты по оси X);
- Y (координаты по оси Y);
Например, чтобы создать условие «герой заходит на мост», необходимо ввести: «if Hero to bridge distance (условие «Distance from point to unit», Unit=10001, X=51, Y=39 (координаты точки на мосту)) <= 2 (значение «Constant Value», Value=2)».
8. How many units this player have
9. Constant Value
Постоянное значение (просто число). Используется в качестве второй части у большинства чеков. Для удобства его название делают таким же, как и само постоянное значение. Например, «if Hero to ogre distance (условие «Distance between units» между героем и людоедом) <= 4 (условие «Constant Value»)» означает «герой подошел к людоеду на 4 клетки или ближе».
10. Distance to nearest units of player
Расстояние от точки с коодинатами X и Y до ближайшего юнита конкретного игрока. Параметры:
- Player (номер игрока);
- X;
- Y;
11. TRUE
Без комментариев. 🙂
12. FALSE
Тоже без комментариев. 🙂 Хотя при создании триггера «start» иногда используется чек «if FALSE = FALSE«. С таким же успехом можно сделать и что-нибудь вроде «if 4 = 4» (т.е. в любом случае какой-то чек должен быть).
13. Is unit make attack
Очень странно работает. Единственный параметр: Unit (ID юнита). Если в качестве значения поставить =TRUE — ничего не пройзойдет (даже если юнит на кого-нибудь нападет), если поставить =FALSE — чек сработает в любом случае.
Не рекомендую пользоваться этим чеком, пока мы не разберемся с ним окончательно! Для подобных целей есть много других интересных вариантов исполнения.
14. Get diplomacy
Проверка, нарушена ли изначально установленная дипломатия между игроками (players). Параметры:
- Player 1 (номер 1-го игрока — см. в меню «Players» редактора карт; номер указан в поле «Color»);
- Player 2 (номер 2-го игрока);
Get diplomacy принимает значения TRUE (если дипломатия изменилась) или FALSE. Кстати, не забывайте, что «!= FALSE» это то же самое, что и «= TRUE«.
Например, условие «if Skrakan is friendly (чек «Get diplomacy», Player 1 = «1» (self), Player 2 = «8» (Skrakan)) = TRUE» будет нарушено, если герой нападет на Скракана.А последствия не заставят себя ждать. 🙂
15. Get sack
Проверка, поднял ли кто-нибудь мешок, лежащий в точке с координатами X и Y. Параметры:
- X;
- Y;
Обратите внимание на странную особенность: условие «Get sack = FALSE» сработает в том случае, если кто-нибудь поднимет мешок!
16. Item to point
Расстояние от точки с кординатами X и Y до юнита, который несет конкретный предмет. Параметры:
- Unit (ID юнита, который несет какой-то конкретный предмет);
- Item (номер предмета — см. Приложение 1);
- X;
- Y;
17. Item in inventory
Проверка, имеется ли у конкретного юнита необходимый предмет. Параметры:
- Unit (ID юнита);
- Item (номер предмета — см. Приложение 1);
Это условие принимает значение TRUE (если необходимый предмета у юнита есть) или FALSE (если предмета нет).
18. VIP
19. Return value of variable
Самый сложный для понимания чек, но и самый необходимый. Если перевести название, получится «Вернуть значение переменной». Это не совсем так; правильнее было бы сказать «Значение, на которое возросла переменная». Параметры:
- Variable (переменная (обратите внимание: это не сама переменная, а лишь её номер!); почему-то разработчики всегда используют число 70 (тогда чек называют для удобства «v70») и выше — возможно, чтобы не запутаться — но теоретически можно подставлять любое);
Данный чек работает в тесном сотрудничестве с событием Increment variable. Вместе они используются для того, чтобы проверить: был ли уже персонаж в определенном месте, сделал ли что-то до этого, и т.д.?
Объяснить их взаимодействие проще всего на примере — см. в описании события Increment variable.
20. How many buildings this player have
21. Health of building
22. Teleportation
23. Get Scenario Variable
24. Get Subobjective
25. Spell on Tile
26. Spell on Unit
27. Centered on Tile
Создание событий
Прежде чем выбрать необходимые события, их нужно создать. Делается это в Instance Manager (кнопка Manage Instances). Там представлено 49 базовых типов событий (Instance types), которым можно присваивать свои названия и ряд параметров.
В данной документации будут описаны все типы событий, их параметры, примеры применения, а также возникающие проблемы и замеченные баги. Информация будет появляться постепенно (следите за версией!), в зависимости от прогресса «анализа» сингл-миссий.
Instance Types (типы событий)
1. Increment mission stage
2. Send message
Вызвать определенный диалог, либо прочитать текст на дорожном указателе. Единственный параметр: Message number (номер диалога). Номер диалога прописывается в текстовом файле, который относится непосредственно к этой миссии (данному вопросу уделено отдельное внимание в Приложении 2); например, строка #event2 соответствует диалогу номер 2.
Если в качестве номера диалога поставить 250, в верхней части экрана вылетит сообщение «Вы получили дополнительную миссию!»
Чтобы присвоить надпись дорожному указателю, выберите конкретный указатель (Usable Pointer) в диалоге выбора здания, и нажмите кнопку «Special». Затем выделите событие Send message, которое ему соответствует.
3. Set value to variable
4. Force «Mission Complete» state
Без параметров. Появляется табличка «Миссия выполнена».
5. Force «Mission Fail» state
Появляется табличка «Миссия провалена». Параметры: Cause number (номер причины проигрыша). Номер причины прописывается в текстовом файле, который относится непосредственно к этой миссии (данному вопросу уделено отдельное внимание в Приложении 2); например, строка #failure5 соответствует причине номер 5.
6. Set formation
7. Increment variable
Самое сложное для понимания событие, но и самое необходимое. Приращение переменной — переменная увеличивается на 1. Параметры:
- Variable (переменная (обратите внимание: это не сама переменная, а лишь её номер!); почему-то разработчики всегда используют число 70 (тогда событие носит название «v70++») и выше — возможно, чтобы не запутаться — но теоретически можно подставлять любое);
Данное событие работает в тесном сотрудничестве с чеком Return value of variable. Вместе они используются для того, чтобы проверить: был ли уже персонаж в определенном месте, сделал ли что-то до этого, и т.д.?
Объяснить их взаимодействие проще всего на примере. Возьмем «Аллоды 2», 1-ю миссию — там есть мирный людоед.
Checks | if | Hero to ogre distance <= 4 | Если герой подошел к людоеду на 4 клетки и ближе… |
and | v70 = FALSE | …и приращения переменной номер 70 ещё не было (т.е. герой до этого не подходил к людоеду). | |
Instance | Send message 4 — ogre first | Людоед говорит «Оставь меня в покое!»… | |
v70++ | …а переменная номер 70 увеличилась на 1. |
Checks | if | Hero to ogre distance > 4 | Если герой отошел от людоеда на 4 клетки… |
and | v70 = 1 | …и переменная номер70 уже увеличилась на 1 (она увеличилась в первом триггере, когда герой подошел к людоеду). | |
Instance | v70++ | Переменная номер 70 увеличивается еще на 1 (т.е. теперь уже на 2). |
Checks | if | Hero to ogre distance <= 4 | Если герой подошел к людоеду на 4 клетки и ближе… |
and | v70 = 2 | …и переменная номер70 уже увеличилась на 2 (она увеличилась на 2 во втором триггере, когда герой отошел от людоеда). | |
Instance | Send message 5 — ogre attacks | Людоед в ярости кричит «Где моя дубина?!» | |
Make ogre angry | С помощью события Change diplomacy людоед становится врагом по отношению к герою. | ||
v70++ | Переменная номер 70 увеличивается еще на 1 (т.е. теперь уже на 3). Следовательно, тригерры 1,2,3 больше никогда не сработают… |
8. Change diplomacy
Изменяет дипломатию одного игрока по отношению к другому. Параметры:
- First player (номер игрока, чье отношение меняется);
- Second Player (номер игрока, к которому меняется отношение);
- Diplomacy (дипломатия: «0» означает, что 1й игрок относится ко 2-му нейтрально; «1» — враждебно; а «2» — это альянс);
Кстати, если вы ввели событие, в котором враг становится нейтральным к вам, сделайте и себя нейтральным по отношению к нему!
9. Group Command : Guard
10. Group Command : Swarm
Группа юнитов двигается в точку с координатами X и Y, уничтожая всех врагов на своём пути (т.е. «идет в боевой готовности»). Параметры:
- X;
- Y;
- Group (номер группы на карте);
Чем это событие отличается от Group Command : Swarm 2 — я пока не понял.
11. Group Command : Stand Ground
Группа, которая получит такую команду, будет стоять на месте, и не сдвинется с места ни при каких обстоятельствах. Впрочем, атаковать слишком близко подошедших врагов (т.е. на расстояние выстрела или удара) они всё равно будут. Параметры:
- Group (номер группы на карте);
Данная команда всегда отдаётся овцам на старте миссии. Это делается для того, чтобы при нападении на одну бедную овечку, ей на помощь не сбежалось всё стадо (т.к. весь скот на карте, как правило, объединен в одну группу).
12. Group Command : Move
Группа юнитов двигается в точку с координатами X и Y. Параметры:
- X;
- Y;
- Group (номер группы на карте);
13. Group Command : Swarm 2
Группа юнитов двигается в точку с координатами X и Y, уничтожая всех врагов на своём пути (т.е. «идет в боевой готовности»). Параметры:
- X;
- Y;
- Group (номер группы на карте);
Чем это событие отличается от Group Command : Swarm — я пока не понял.
14. Group Command : Attack
15. Group Command : Defend
Группа юнитов защищает другого юнита, т.е. если на него нападут, эта группа кинется убивать подлого негодяя. Параметры:
- Unit to defend (ID юнита, которого будут защищать);
- Follow range (расстояние, на котором защитники будут держаться от юнита);
- Group (номер группы, которая будет защищать юнита);
16. Group Command : Patrol
Группа юнитов начинает патрулировать — т.е. перемещаться туда-сюда между какой-то отдаленной точкой (с координатами X и Y) и местом, в котором эта группа находилась непосредственно перед отдачей команды. Параметры:
- X (координаты отдаленной точки);
- Y (координаты отдаленной точки);
- Group (номер группы на карте);
17. Drop Location
Место на карте, с которого будет начинать игру герой. Параметры: X и Y (соответствующие координаты). Несмотря на общую простоту, имеет ряд особенностей. Во-первых, для «Drop Location» не нужно вводить отдельный триггер (и, следовательно, чек) — достаточно всего лишь создать это событие в Instance Manager’е. Во-вторых, это единственное событие, использование которого обязательно в сетевых картах.
«Drop Location» может быть несколько — при заходе на карту место старта выберется случайным образом (в сетевой игре полезно против нуления на старте), — а может и не быть вовсе, но тогда игрока выкинет где попало (под монстра, над водой и т.п.), поэтому рекомендуется его все-таки ставить.
18. Outpost (Repopper)
19. Change unit’s owner
20. Drop all
21. Make spell effect
22. Change group’s owner
23. Group Command : Follow
24. Add item to unit’s inventory
Добавить какой-либо предмет в инвентарь юнита. Параметры:
- Unit (ID юнита);
- Item (номер предмета);
С помощью этого события в инвентарь юнита можно добавить только те предметы, которые нельзя надеть, т.е. книги, свитки, пузырьки и квестовые вещи. Номера этих предметов (всего — 96 штук) см. Приложение 1.
Обратите внимание, предмет можно дать любому юниту (даже монстру). Этот предмет, конечно же, не будет виден в инвентаре, но выпадет с трупа.
Для того, чтобы добавить в инвентарь остальные вещи (доспехи, оружие и т.п.), необходимо использовать событие Give All.
25. Remove item from unit’s inventory
Удаляет определенный предмет (если он есть) из инвентаря юнита. Параметры:
- Unit (ID юнита);
- Item (номер предмета — см. Приложение 1);
26. Give item from one unit to another
Удаляет определенный предмет из инвентаря одного юнита и добавляет его в инвентарь другого. Параметры:
- From unit (ID юнита, который «отдает» предмет);
- To unit (ID юнита, который получает предмет);
- Item (номер предмета — см. Приложение 1);
Не забывайте, событие сработает только в том случае, если у первого юнита имеется искомый предмет!
27. Phase in unit
Исчезнувший (с помощью события Phase out unit) юнит появляется на карте. Параметр: Unit (ID юнита).
28. Phase out unit
Юнит исчезает с карты (т.е. он становится не просто невидимым, но и неосязаемым). Параметр: Unit (ID юнита).
29. Polymorph unit
На месте одного юнита появляется другой (т.е. первый как бы «превращается» во второго). Параметры:
- Unit’s true form (ID юнита, который будет «превращаться»);
- Unit’s polymorphed (ID юнита, который появится вместо первого);
Чтобы превращение выглядело более естественным, вторую «форму» юнита (Unit’s polymorphed) необходимо заранее убрать с карты с помощью события Phase out unit. Кстати «вторая форма» может принадлежать совершенно иной группе (и даже игроку), нежели «оригинал», — т.о. можно, например, из доброго крестьянина сделать злобного орка! 🙂
30. Give money to player
Игрок получает деньги. Параметры:
- Lucky Player (номер игрока-счастливчика);
- Money (сумма в у.е.);
31. Cast spell to unit
32. Set trap
33. Set building’s health
34. Teleport unit
35. Group Command : Roam
36. Give All
Все вещи передаются от одного юнита к другому. Параметры:
- Giving Unit (юнит, который теряет вещи);
- Taking Unit (юнит, который получает вещи);
Не забывайте, добавить Giving Unit’у какие-то конкретные вещи можно в редакторе карт (в режиме Place Items) либо с помощью события Add item to unit’s inventory.
37. Tile Spell Duration
38. Unit Spell Duration
39. Repop Delay
40. Phase Out Group
Группа юнитов исчезает с карты (т.е. они становятся не просто невидимыми, но и неосязаемыми). Параметр: Group (номер группы).
41. Phase In Group
Исчезнувшая группа юнитов появляется на карте. Параметр: Group (номер группы).
42. Set Unit Parameter
Задает определенному юниту новое значение какого-либо параметра. Параметры события:
- Unit (ID юнита);
- Parameter (номер параметра юнита; работает почему-то только «6» — это «жизнь»; остальные параметры = 0);
- New value (новое значение параметра);
Как правило, это событие используется для того, чтобы повергнуть определенного юнита (в самом начале миссии) в бессознательное состояние — т.е. Parameter = 6, New value = 0.
43. Change next music to
44. Set Scenario Variable
Сложное событие. Чтобы понять его полностью, необходимо копаться в исходниках. Приведу лишь пример его использования:
В миссии 20 разбойник расказывает герою о сокровище, т.е. персонаж получает дополнительную миссию. Для этого используется событие Set Scenario Variable (озаглавленное «Get mission 21«) с параметрами:
- Variable to set: 772
- Value: 1
А уже потом появляется надпись «Вы получили дополнительную миссию!» (см. Send message).
45. Group Command : Dwell
46. Set Subobjective
В списке заданий появляется новая подцель. Параметры:
- Subobjective numb (номер подцели);
- Value («1» означает «подцель появилась», «2» — подцель выполнена, «4» — подцель провалена);
Номер подцели прописывается в текстовом файле, который относится непосредственно к этой миссии (данному вопросу уделено отдельное внимание в Приложении 2); например, строка #subobjective2 соответствует подцели номер 2. Для удобства событие «Set Subobjective» со значением «1» (появилась подцель) называется Sub2+ или Sub2 — st, со значением «2» (подцель выполнена) — Sub2 — ok или Sub2!, а со значением «4» (подцель провалена) — Sub2-.
47. Set music node
48. Remove item from everybody’s inventory
49. Suspend group
Приложение 1: номера предметов
Номер | Книга | Англ. название |
---|---|---|
-23 | Воздух | Book Air |
-22 | Вода | Book Water |
-21 | Огонь | Book Fire |
-20 | Земля | Book Earth |
-19 | Астрал | Book Astral |
Заклинание
|
Номер свитка | |
---|---|---|
Обычного | Эльфийского | |
Огненная стрела |
-18
|
11
|
Огненный шар |
-17
|
12
|
Огненная стена |
-16
|
13
|
Защита от магии огня |
-15
|
14
|
Ледяная стрела |
-14
|
15
|
Ядовитый туман |
-13
|
16
|
Град |
-12
|
17
|
Защита от магии воды |
-11
|
18
|
Кислотная атака |
-10
|
19
|
Молния |
-9
|
20
|
Радужная молния |
-8
|
21
|
Невидимость |
-7
|
22
|
Защита от магии воздуха |
-6
|
23
|
Тьма |
-5
|
24
|
Свечение |
-4
|
25
|
Каменная стрела |
-3
|
26
|
Каменная стена |
-2
|
27
|
Каменное проклятие |
-1
|
28
|
Защита от магии земли |
0
|
29
|
Благословение |
1
|
30
|
Ускорение |
2
|
31
|
Перерождение |
3
|
32
|
Телепорт |
4
|
33
|
Исцеление |
5
|
34
|
Зов |
6
|
35
|
Вампиризм |
7
|
36
|
Магический щит |
8
|
37
|
Проклятие |
9
|
38
|
Замедление |
10
|
39
|
Номер | Зелье | Англ. название |
---|---|---|
40 | Зелье Неуязвимости | Potion Antipoison |
41 | Зелье Силы | Potion Body |
42 | Зелье Ловкости | Potion Reaction |
43 | Зелье Разума | Potion Mind |
44 | Зелье Духа | Potion Spirit |
45 | Лечебная Мазь | Potion Health Regeneration |
46 | Целебное Снадобье | Potion Medium Healing |
47 | Сильнодействующее Целебное Снадобье | Potion Big Healing |
48 | Магическая Мазь | Potion Mana Regeneration |
49 | Запас Маны | Potion Medium Mana |
50 | Большой Запас Маны | Potion Big Mana |
51 | Снадобье для Воина | Potion Fighter Bonus |
52 | Снадобье для Мага | Potion Mage Bonus |
Номер | Предмет | Англ. название |
---|---|---|
53 | Официальные Документы | Quest Documents |
54 | Знамя | Quest Banner |
55 | Часть короны | Quest Crown1 |
56 | Две части короны | Quest Crown12 |
57 | Две части короны | Quest Crown13 |
58 | Ингредиент | Quest Ingredient |
59 | Сокровище !!! | Quest Treasure |
60 | Загадочный Амулет | Quest Amulet |
61 | Записки Звездочета | Quest Map |
62 | Трофей | Quest Head |
63 | Кристалл | Quest Stone |
64 | Пустая Колба | Quest Meta1 |
65 | Наполненная Колба | Quest Meta2 |
66 | Элексир Превращения | Quest Meta3 |
67 | Элексир Драконьего Превращения | Quest Meta4 |
68 | Руна Воздуха | Quest RuneA |
69 | Руна Земли | Quest RuneE |
70 | Руна Огня | Quest RuneF |
71 | Руна Воды | Quest RuneW |
72 | Кольцо | Quest Ring |
Приложение 2: Скрипты в файлах «missionXX.txt»
Речь идет о файлах «missionXX.txt», которые находятся в «main.res\text\». «ХХ» в данном случае — номер конкретной миссии, которой соответствует этот текстовый файл.
Итак, в файле «missionXX.txt» описываются:
- Задание на миссию;
- Разные подцели, появляющиеся в ходе выполнения миссии (этот пункт может и отсутствовать);
- Сообщения, которые выводятся в окошке «Миссия провалена» при различных вариантах проигрыша (герой погиб, нападение на мирных крестьян и т.п.);
- Диалоги и надписи на дорожных указателях.
Слова, начинающиеся с символа «#» (например, #briefing, #failure2, #subobjective1, #event5), будем условно называть открывающими тэгами (т.к. некоторое сходство с HTML-тэгами всё-таки имеется), а отдельно стоящий символ «#» — закрывающим тэгом. Всё, что находится между ними (основной текст), как раз и представляет интерес для нас (подробнее — см. ниже). Кстати, закрывающий тэг можно не ставить, если сразу после основного текста (т.е. со следующей строки) начинается новый открывающий тэг.
Текст, начинающийся после символа «=» является комментарием. Комментарии, естественно, никак не влияют на игру, и создаются только для удобства разработчиков. Для еще большего удобства (точнее, для большей заметности) несколько знаков «=» ставятся и до, и после текста комментария (например, ===Герой погиб===).
Все тэги, комментарии, а также основной текст должны начинаться с новой строки!
1. Задание на миссию
Начинается с тэга #briefing . Всё, что написано между ним и закрывающим тэгом, будет выводиться в окошке «Задание на миссию».
2. Подцели
Открывающий тэг имеет вид #subobjectiveX, где X — номер соответствующей подцели (начиная с #subobjective1). Текст, находящийся между открывающим и закрывающим тэгами, будет выводиться в окошке «Задание на миссию» при получении дополнительных подцелей в ходе выполнения миссии (см. событие Set Subobjective).
3. Сообщения о провале миссии
Открывающий тэг имеет вид #failureX, где X — номер соответствующей причины проигрыша. Текст, находящийся между открывающим и закрывающим тэгами, будет выводиться в окошке «Миссия провалена», в зависимости от того, какую ошибку допустил игрок (см. событие Force «Mission Fail» state).
По умолчанию, тэг #failure2 соответствует смерти главного героя, #failure3 — Иглеза, #failure4 — Дайны (т.е их смерть не нужно дополнительно прописывать в триггерах миссии).
4. Диалоги и надписи на указателях
Диалоги
Структура всех диалогов такова. Сначала идёт открывающий тэг #eventX (где X — номер соответствующего диалога), затем — специальная строка, выделенная угловыми скобками, затем — текст первого сообщения (под «сообщением» понимается часть диалога, помещающаяся в одном окошке), затем опять специальная строка, затем — текст второго сообщения и т.д. А уже потом — закрывающий тэг.
Рассмотреть эту самую строчку в угловых скобках проще всего на примере:
<npc=21, iammale, iamfighter, part=1>
«21» в приведённом примере — это номер персонажа, который «говорит» в данный момент. Обратите внимание: это не ID юнита на карте!!! Это всего лишь номер картинки соответствующего NPC (но он обязан присутствовать на карте)! Например, на карте может находиться несколько безоружных мужчин-крестьян (одинаковых); для всех них используется один и тот же номер — 2108, т.к. в окошке диалога показывается не сам персонаж, а его картинка.
Итак, 21 — номер главного героя, 22 — Иглеза, 23 — Дайны. Номера монстров (кроме 5-го уровня) и некоторых NPC можно посмотреть здесь http://home.peterstar.ru/boris/files/npc_numbers.xls, остальные номера на данный момент уточняются.
«iammale» («iamfemale«) означает, что сообщение будет выводиться только в том случае, если главный герой — мужчина (женщина).
«iamfighter» («iammage«) означает, что сообщение будет выводиться только в том случае, если главный герой — воин (маг).
Использование iammale (iamfemale) и iamfighter (iammage) необязательно.
«part=1» — порядковый номер сообщения в данном диалоге.
Как вызвать определенный диалог в ходе миссии — см. событие Send message.
Надписи на дорожных указателях
Структура такая же как у диалогов. Всё тот же тэг #eventX, всё та же строчка в угловых скобках (но в ней присутствует только «part=«). Пример:
=======Указатель к башне=======
#event19
<part=1>
Башня Великого Скракана
#
Как присвоить определенному указателю конкретную надпись — см. событие Send message.