Skip to content

Типы обработки событий

DmitryS edited this page Dec 10, 2021 · 141 revisions

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

Подробнее об обработке событий читайте здесь.

Cущность entity (точка привязки)

Специальный объект, содержащий сущность данных об 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 }

Доступные типы событий

Вывод сообщений и голоса (Text-to-Speech)

Важно! Для указания текста сообщений используется обязательный параметр 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 funcargs Создать предмет или фигуру, тип которой указывается в параметре 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" },