-
Notifications
You must be signed in to change notification settings - Fork 5
Типы обработки событий
Доступно несколько типов обработки событий (обработчиков, handlers), позволяющих задавать в сценарии гайда те или иные действия в качестве реакции на зарегистрированное событие данжа. Для каждого отдельного типа обработчиков возможно указание дополнительных параметров, позволяющих настраивать поведение обработки. Ниже приведена таблица всех типов обработчиков и их параметров.
Подробнее об обработке событий читайте здесь.
Специальный объект, содержащий сущность данных об NPC или игроке размещенном на карте. Сущность entity используется для привязки создаваемых предметов к боссу, NPC, анимации и т.д. Определение и передача данной сущности в функцию спауна (создания) происходит автоматически в момент вызова обработчика события.
Если обработчик был вызван из контекста функции, вызванной при помощи обработчика типа func, передача entity происходит автоматически посредством записи и чтения переменной ent (которую указывать в аргументах не требуется).
Существует возможность указания временной паузы, позволяющий отсрочить (задержать) выполнение события. Установка задержки возможна для любого типа события, для этого задается необязательный параметр delay
, в качестве значения которого указывается число в миллисекундах.
Пример:
{ type: "text", sub_type: "message", message: "Text", message_RU: "Сообщение", delay: 3000 }
Важно! Проверка всех фильтрующих методов происходит только после отработки задержки события, заданной необязательным параметром delay
. Если данный параметр не задан или равен нулю – проверка фильтрующих методов происходит сразу.
Для соотношения конкретного события с необходимым игровым классом персонажа используется необязательный параметр class_position
, в значении которого допустимы следующие слова: tank, dps, heal, priest, mystic, lancer.
Если данный параметр задан, событие будет выполняться только для указанного игрового класса игрока.
Допускается указание нескольких значений для одного события используя массив [...]
.
Пример:
{ type: "text", sub_type: "message", message: "Clense", message_RU: "Клинс", class_position: "heal" },
{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", class_position: ["tank", "dps"] }
Также существует возможность фильтровать выполнение событий по значению вызываемой функция. Для этого используется необязательный параметр check_func
, в значении которого указывается название функции (допустимо указание анонимной функции).
При вызове события произойдет вызов указанной функции, и если она вернет истину – событие будет выполнено, в противном случае выполнения события не произойдет.
В вызываемую функцию будут переданы следующие аргументы:
- ent – текущая сущность entity.
-
event – объект текущего события (содержит параметр:
_key
– ключ текущего события).
Пример:
{ type: "text", sub_type: "message", message: "OUT", check_func: () => debuff === 1 },
{ type: "text", sub_type: "message", message: "IN", check_func: () => debuff === 2 }
Важно! Для указания текста сообщений используется обязательный параметр message
.
Возможно использование специальных тегов, позволяющих задать цвет для всего текста или его части: [c=#color_code]...[/c]
.
Допустимо одновременное указание нескольких текстов сообщений на разных языках. Для этого могут использоваться соответствующие ключи в формате message_LANG
(где LANG
– ISO код языка), например: message_RU
.
Тип type
|
Подтип sub_type
|
Описание |
---|---|---|
text | message | Отобразить текстовое сообщение на экране (зеленый фон). |
text | alert | Отобразить текстовое сообщение на экране (красный фон). |
text | warning | Отобразить текстовое сообщение на экране (синий фон). |
text | notification | Отправить текстовое сообщение от имени лидера рейда. |
text | speech | Проиграть голосовое сообщение (Text-to-Speech). |
Помимо вывода текстовых сообщений на экран, также происходит дублирование указанного текста голосовыми оповещением (не зависимо от указанного подтипа обработчика). Для принудительного отключения голосовых оповещений, необходимо использовать необязательный параметр speech
со значением false.
Примеры:
{ type: "text", sub_type: "message", message: "Standard text", message_RU: "Стандартное сообщение" },
{ type: "text", sub_type: "alert", message: "Alert text", message_RU: "Важное сообщение", delay: 2000 },
{ type: "text", sub_type: "warning", message: "Warning text", message_RU: "Предуп. сообщение", delay: 4000 },
{ type: "text", sub_type: "notification", message: "Notification text", message_RU: "Уведомление", delay: 6000 },
Важно! Все типы событий, использующие данный метод спауна (создания) предметов требуют указание обязательного параметра sub_delay
, обозначающего время отображения созданного предмета. В значении параметра указывается число в миллисекундах.
Возможно использование необязательного параметра force_gameId
для указания уникального идентификатора, используемого для деспауна (удаления) предмета обработчиком despawn.
Тип type
|
Подтип sub_type
|
Параметр | Описание |
---|---|---|---|
spawn | collection | Нет | Создать обычный предмет. Допустимо указание необязательного параметра tag , используемого в despawn_all. |
spawn | item | Нет | Создать предмет, выброшенный на землю. Допустимо указание необязательного параметра tag , используемого в despawn_all. |
spawn | build_object | Нет | Создать объект (табличка). Допустимо указание необязательного параметра tag , используемого в despawn_all. |
spawn | bonfire | id |
Создать костер. В параметре id допустимо указывать следующие значения: normal, fire, santa, blue, purple, sacrifice. Допустимо указание необязательного параметра tag , используемого в despawn_all. |
despawn | Нет | id |
Удалить созданный предмет, указанный в параметре id (указывается gameId предмета либо идентификатор, указанный при создании предмета в параметре force_gameId ). |
despawn_all | Нет | Нет | Удалить все созданные предметы. Допустимо указание необязательного параметра tag , содержащего ключевое слово, используемое в при создании предметов. Если данный параметр был задан, будут удалены только те предметы, которые были созданы с указанным словом. |
Допустимо указание дополнительных параметров, отвечающих за позиционирование создаваемых предметов: distance
(дистанция в единицах, 1 метр = 25 ед.), angle
(угол относительно смещения), pos
(координаты на карте в виде объекта { x: n, y: n, z: n }
). Недопустимо одновременное указание параметров distance
/angle
вместе с pos
.
Примеры:
{ type: "spawn", sub_type: "item", id: 206960, angle: 45, distance: 100, sub_delay: 2000 },
{ type: "spawn", sub_type: "item", id: 206960, pos: { x: 53192, y: 100761, z: 14233 }, sub_delay: 2000 },
Тип type
|
Параметры | Описание |
---|---|---|
spawn, spawn_func |
func , args
|
Создать предмет или фигуру, тип которой указывается в параметре func . Подробнее о типах читайте здесь. Для указания массива [...] свойств создаваемой фигуры используется обязательный параметр args . Допустимо указание необязательного параметра tag , используемого в обработчике despawn_all для удаления предметов. |
Примеры:
{ type: "spawn", func: "item", args: [88704, 0, 100, 0, 2000] },
{ type: "spawn", func: "marker", args: [false, 0, 100, 2000, 2000, true, ["Test", "Marker"]] },
{ type: "spawn", func: "point", args: [537, 0, 100, 4000, 2000] },
{ type: "spawn", func: "vector", args: [553, 0, 0, 0, 300, 6000, 2000] },
{ type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 250, 8000, 2000] },
{ type: "spawn", func: "semicircle", args: [-90, 90, 553, 0, 0, 18, 150, 10000, 2000] },
Важно! Тип события marker требует указание обязательного параметра sub_delay
, обозначающего время отображения размещенного маркера. В значении параметра указывается число в миллисекундах.
Тип type
|
Параметр | Описание |
---|---|---|
marker, marker_add |
id (не обязателен для ent) |
Разместить маркер на игрока или NPC, идентификатор которого указывается в параметре id . Если идентификатор не указан, для привязки используется значение gameId из переменной ent. |
marker_remove | id |
Удалить размещенный маркер по идентификатору, который указывается в параметре id . |
marker_remove_all | Нет | Удалить все размещенные маркеры (будут удалены только маркеры, размещенные сценарием). |
Примеры:
{ type: "marker", color: "red", sub_delay: 2000 },
{ type: "marker", color: "yellow", delay: 2000, sub_delay: 2000 },
{ type: "marker", color: "blue", delay: 4000, sub_delay: 50000 },
{ type: "marker_remove_all", delay: 6000 },
Тип type
|
Параметр | Описание |
---|---|---|
func | func |
Вызвать указанную функцию в параметре func со следующими аргументами:ent – сущность entity, event – объект текущего события (содержит параметр: _key – ключ текущего события),handlers – сущность класса обработчиков. Возможна передача дополнительных аргументов в вызываемую функцию (в начало списка аргументов) при помощи массива [...] , указанного в необязательном параметре args .При вызове функции данным обработчиком происходит запись текущей точки привязки в переменную ent, что позволяет использовать методы спауна предметов внутри вызываемой функции без их ручной привязки к текущей точки. |
event, start_events | args |
Выполнить событие или цепочку событий, указанную (перечисленную в виде объектов) в массиве [...] в параметре args . |
alias | id |
Выполнить существующее событие из сценария гайда, ключ которого указывается в параметре id . Недопустимо указание значения собственного ключа события. |
stop_timers | Нет | Остановить все таймеры задержки событий, предотвратив их выполнение. Останавливаются также таймеры, указанные для некоторых типов обработчиков в параметре sub_delay , поэтому после остановки таймеров все созданные предметы или маркеры удалены не будут. |
Примеры:
{ type: "func", func: test_event, args: ["Foo", "Bar"] },
{ type: "event", args: [{ type: "text", sub_type: "message", message: "Text", message_RU: "Сообщение" }] },
{ type: "alias", id: "s-735-1000-111-0" },
{ type: "stop_timers" },