Перейти к основному содержимому

События Elite Script

EliteScripts основаны на событиях. Это означает, что они запускаются при срабатывании определённого события. Ниже перечислены текущие допустимые события:

СобытиеОписаниеПрямая цель [?]
EliteMobDamagedByEliteMobEventЭлита получила урон от другой элитыЖивая сущность атакующей элиты
EliteMobDamagedByPlayerEventЭлита получила урон от игрокаАтакующий игрок
EliteMobDamagedEventЭлита получила урон от чего угодно❌
EliteMobDeathEventСмерть элиты❌
EliteMobEnterCombatEventЭлита вступает в бой с игрокомВступивший в бой игрок
EliteMobExitCombatEventЭлита выходит из боя❌
EliteMobHealEventИсцеление элиты (включая полное исцеление)❌
EliteMobSpawnEventПоявление элиты❌
EliteMobTargetPlayerEventЭлита нацеливается на игрокаЦелевой игрок
PlayerDamagedByEliteMobEventЭлита наносит урон игрокуПострадавший игрок
ElitePhaseSwitchEventБосс появляется при смене фазы❌
ZoneEnterEvent (ScriptZoneEnterEvent)Сущность входит в зону. Требуется установленная зона!Сущность, вошедшая в зону
ZoneLeaveEvent (ScriptZoneLeaveEvent)Сущность покидает зону. Требуется установленная зона!Сущность, покинувшая зону

«Элита» — сущность, которую EliteMobs отслеживает как элитную, включая боссов и элитные подкрепления. Примечание: ZoneEnterEvent и ZoneLeaveEvent требуют значительных вычислительных ресурсов, пожалуйста, используйте их экономно!

Direct Target используется целями скриптов, подробнее здесь.

В YAML используйте ZoneEnterEvent и ZoneLeaveEvent. Имена в скобках, ScriptZoneEnterEvent и ScriptZoneLeaveEvent, обозначают внутренние события Java и не принимаются как псевдонимы YAML. Отмена отменяемого события останавливает последующие скрипты и Lua-способности в порядке его обработки, но не оставшиеся действия уже запущенного скрипта. Сами события входа в зону и выхода из неё не отменяются.

EliteMobDamagedEvent охватывает урон из любого источника; EliteMobDamagedByPlayerEvent и EliteMobDamagedByEliteMobEvent — из своих конкретных источников. Это отдельные вызовы событий, а не взаимоисключающие варианты. Если указать общее и специальное событие урона, один удар может запустить скрипт несколько раз, когда это позволяют перезарядки. Урон, отменённый до выполнения общего слушателя, не вызывает это событие.

Примечание: имена событий сопоставляются точно, символ в символ. elitemobdeathevent или ELITEMOBDEATHEVENT отклоняются с предупреждением в консоли; работает только EliteMobDeathEvent. Имена секций уровня скрипта тоже чувствительны к регистру: Events, Actions, Zone, Conditions и Cooldowns должны писаться именно так. Вложенный в действие блок Conditions читается в любом регистре. Всё, что находится внутри этих секций (targetType, radius, borderRadius, isAlive, Target, ...), к регистру не чувствительно, а каждое значение перечисления — это обычная константа в UPPER_SNAKE_CASE с точным регистром.

Это также управляет Lua-хуками on_zone_enter / on_zone_leave

Указание здесь ZoneEnterEvent или ZoneLeaveEvent — именно то, что запускает потиковый слушатель зон на боссе. Этот слушатель — единственное, что вызывает хуки верхнего уровня on_zone_enter / on_zone_leave в Lua-способности на том же боссе. Собственный context.zones:watch_zone(...) Lua-способности их не вызывает.

ZoneEnterEvent и ZoneLeaveEvent запускают действия при входе сущностей в объединение созданных скриптом форм зоны или выходе из него. Их DIRECT_TARGET — вошедшая или вышедшая сущность. У самого сканера нет прямой цели, поэтому не используйте DIRECT_TARGET для определения зоны. Фиксированные позиции и SELF / SELF_SPAWN подходят для простых точек отсчёта. NEARBY_PLAYERS тоже может определить их без прямой цели, но зона будет двигаться с выбранными игроками, а вход и выход будут отражать нахождение в общей движущейся области.

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

События зоны содержат босса и пересекающую границу сущность, но не исходный скрипт или зону. Переход, обнаруженный слушателем одного скрипта, передаётся всем соответствующим скриптам и Lua-способностям этого босса. Поэтому отдельные слушатели могут вызывать повторы или срабатывания между разными зонами. filter зоны определяет проверяемые живые сущности; по умолчанию это PLAYER.

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

Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
- EliteMobTargetPlayerEvent
Actions:
- action: PUSH
Target:
targetType: SELF
vValue: 0,.3,0
Cooldowns:
local: 60
global: 20

Этот скрипт заставит элиту подпрыгнуть при получении удара от игрока или при нацеливании на игрока.