События Elite Script
EliteScripts основаны на событиях. Это означает, что они запускаются при срабатывании определённого события. Ниже перечислены текущие допустимые события:
| Событие | Описание | Прямая цель [?] |
|---|---|---|
| EliteMobDamagedByEliteMobEvent | Элита получила урон от другой элиты | ❌ |
| EliteMobDamagedByPlayerEvent | Элита получила урон от игрока | Атакующий игрок |
| EliteMobDamagedEvent | Элита получила урон от чего угодно | ❌ |
| EliteMobDeathEvent | Смерть элиты | ❌ |
| EliteMobEnterCombatEvent | Элита вступает в бой с игроком | Вступивший в бой игрок |
| EliteMobExitCombatEvent | Элита выходит из боя | ❌ |
| EliteMobHealEvent | Исцеление элиты (включая полное исцеление) | ❌ |
| EliteMobSpawnEvent | Появление элиты | ❌ |
| EliteMobTargetPlayerEvent | Элита нацеливается на игрока | Целевой игрок |
| PlayerDamagedByEliteMobEvent | Элита наносит урон игроку | Пострадавший игрок |
| ElitePhaseSwitchEvent | Босс появляется при смене фазы | ❌ |
| ZoneEnterEvent (ScriptZoneEnterEvent) | Сущность входит в зону. Требуется установленная зона! | Сущность, вошедшая в зону |
| ZoneLeaveEvent (ScriptZoneLeaveEvent) | Сущность покидает зону. Требуется установленная зона! | Сущность, покинувшая зону |
Примечание: «Элита» относится к любой агрессивной сущности, порождённой плагином, будь то подкрепление, босс или что-либо другое. Примечание: ZoneEnterEvent и ZoneLeaveEvent требуют значительных вычислительных ресурсов, пожалуйста, используйте их экономно!
Direct Target используется целями скриптов, подробнее здесь.
Примечание: EliteMobDamagedEvent срабатывает, когда элита получает урон из ЛЮБОГО источника, тогда как EliteMobDamagedByPlayerEvent и EliteMobDamagedByEliteMobEvent являются более конкретными версиями, которые срабатывают только при уроне от игрока или элитного моба соответственно.
Примечание: имена событий сопоставляются точно, символ в символ. elitemobdeathevent или ELITEMOBDEATHEVENT отклоняются с предупреждением в консоли; работает только EliteMobDeathEvent. Имена самих секций тоже чувствительны к регистру: Events, Actions, Zone, Conditions и Cooldowns должны писаться именно так, и вложенный в действие блок Conditions: тоже должен начинаться с заглавной буквы — строчный conditions: под действием молча отбрасывается. Всё, что находится внутри этих секций (targetType, radius, borderRadius, isAlive, Target, ...), к регистру не чувствительно, а каждое значение перечисления — это обычная константа в UPPER_SNAKE_CASE с точным регистром.
on_zone_enter / on_zone_leaveУказание здесь ZoneEnterEvent или ZoneLeaveEvent — именно то, что запускает потиковый слушатель зон на боссе. Этот слушатель — единственное, что вызывает хуки верхнего уровня on_zone_enter / on_zone_leave в Lua-способности на том же боссе. Собственный context.zones:watch_zone(...) Lua-способности их не вызывает.
ZoneEnterEvent и ZoneLeaveEvent — это специальные события, позволяющие создателям скриптов запускать действия на основе входа и выхода сущностей из зон, заданных в скриптах. DIRECT_TARGET для ZoneEnterEvent и ZoneLeaveEvent — это сущность, которая вошла или вышла (это означает, что вы не можете использовать прямую цель в качестве цели зоны), и в силу особенностей внутренней логики для отслеживания входа и выхода можно использовать только абсолютные точки (конкретные координаты) и точки относительно босса (зоны, нацеленные на игроков, использовать нельзя).
На каждый скрипт может приходиться только один раздел Событие. Однако несколько событий могут быть установлены в качестве триггеров для одного скрипта:
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
- EliteMobTargetPlayerEvent
Actions:
- action: PUSH
Target:
targetType: SELF
vValue: 0,.3,0
Cooldowns:
local: 60
global: 20
Этот скрипт заставит элиту подпрыгнуть при получении удара от игрока или при нацеливании на игрока.