Saltar al contenido principal

Eventos de Elite Script

Los EliteScripts están basados en eventos. Esto significa que se ejecutan cuando se activa un evento específico. Los siguientes son los eventos actualmente válidos:

EventoDetallesObjetivo Directo [?]
EliteMobDamagedByEliteMobEventÉlite dañado por otro éliteEntidad viva del élite atacante
EliteMobDamagedByPlayerEventElite dañada por un jugadorJugador atacante
EliteMobDamagedEventElite dañada por cualquier cosa❌
EliteMobDeathEventMuerte de la elite❌
EliteMobEnterCombatEventElite entra en combate con jugadorJugador en combate
EliteMobExitCombatEventElite sale del combate❌
EliteMobHealEventCuración de la elite (incluyendo curación completa)❌
EliteMobSpawnEventAparición de la elite❌
EliteMobTargetPlayerEventElite selecciona un jugador como objetivoJugador seleccionado
PlayerDamagedByEliteMobEventElite daña a un jugadorJugador dañado
ElitePhaseSwitchEventBoss aparece por cambio de fase❌
ZoneEnterEvent (ScriptZoneEnterEvent)Una entidad entra en la zona. ¡Requiere que se establezca una zona!Entidad que entró en la zona
ZoneLeaveEvent (ScriptZoneLeaveEvent)Una entidad sale de la zona. ¡Requiere que se establezca una zona!Entidad que salió de la zona

«Élite» significa una entidad registrada como élite por EliteMobs, incluidos los jefes y los refuerzos élite. Nota: ZoneEnterEvent y ZoneLeaveEvent son computacionalmente costosos, ¡por favor úsalos con moderación!

Direct Target lo usan los objetivos de script; consulta más información aquí.

En YAML, escribe ZoneEnterEvent y ZoneLeaveEvent. Los nombres entre paréntesis ScriptZoneEnterEvent y ScriptZoneLeaveEvent son los eventos Java subyacentes, no alias aceptados en YAML. Cancelar un evento cancelable detiene los scripts y poderes Lua posteriores en el orden de despacho de ese evento, pero no las acciones restantes del script que ya se está ejecutando. Los eventos de entrada y salida de zona no se pueden cancelar.

EliteMobDamagedEvent cubre daño de cualquier origen; EliteMobDamagedByPlayerEvent y EliteMobDamagedByEliteMobEvent cubren sus orígenes específicos. Se despachan por separado y no son alternativas excluyentes. Incluir un evento genérico y uno específico puede ejecutar el mismo script más de una vez por golpe si los tiempos de reutilización lo permiten. El daño cancelado antes de que actúe el listener genérico no lo activa.

Nota: los nombres de evento se comparan de forma exacta, carácter por carácter. elitemobdeathevent o ELITEMOBDEATHEVENT se rechazan con una advertencia en consola; solo funciona EliteMobDeathEvent. Los nombres de sección a nivel de script también distinguen mayúsculas de minúsculas: Events, Actions, Zone, Conditions y Cooldowns deben escribirse exactamente así. Un bloque Conditions anidado bajo una acción se lee sin importar las mayúsculas. Todo lo que va dentro de esas secciones (targetType, radius, borderRadius, isAlive, Target, ...) no distingue mayúsculas de minúsculas, y todos los valores de enum son constantes UPPER_SNAKE_CASE convencionales con mayúsculas exactas.

También activan on_zone_enter / on_zone_leave de Lua

Listar ZoneEnterEvent o ZoneLeaveEvent aquí es lo que inicia el escáner de zona por tick en el jefe. Ese escáner es lo único que dispara los hooks de nivel superior on_zone_enter / on_zone_leave en un poder Lua del mismo jefe. El propio context.zones:watch_zone(...) de un poder Lua no los dispara.

ZoneEnterEvent y ZoneLeaveEvent activan acciones cuando las entidades entran o salen de la unión de las formas de zona generadas por el script. Su DIRECT_TARGET es la entidad que entró o salió. El detector no tiene objetivo directo, así que no uses DIRECT_TARGET para definir su zona. Las ubicaciones fijas y SELF / SELF_SPAWN son orígenes sencillos para zonas. Un selector como NEARBY_PLAYERS también puede resolver orígenes sin objetivo directo, pero entonces la zona se mueve con los jugadores seleccionados y las entradas y salidas reflejan la pertenencia al área móvil combinada.

El detector de zona examina cada tick aunque los tiempos de reutilización impidan iniciar acciones. Los tiempos de reutilización reducen la ejecución de acciones, no el coste de detectar la pertenencia a la zona. Un detector recién iniciado considera que las entidades ya presentes en su primer examen están entrando.

Los eventos de zona identifican al jefe y a la entidad que cruza, pero no al script o zona de origen. Una transición detectada por un listener se envía a todos los scripts y poderes Lua coincidentes del jefe. Por ello, varios listeners pueden provocar activaciones repetidas o entre zonas distintas. El filter de la zona controla qué entidades vivas se examinan; su valor predeterminado es PLAYER.

Usa una sección Events por script y enumera los activadores compatibles que necesites. Un script sin eventos no se activa automáticamente, pero otro script puede llamarlo:

Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
- EliteMobTargetPlayerEvent
Actions:
- action: PUSH
Target:
targetType: SELF
vValue: 0,.3,0
Cooldowns:
local: 60
global: 20

Este script haría que la elite salte cuando es golpeada por un jugador o cuando selecciona a un jugador como objetivo.