EliteScript
EliteScript es un sistema de scripting completo para los plugins de MagmaGuy, que proporciona opciones de personalización avanzadas para crear comportamientos dinámicos para jefes y otras entidades en Minecraft.
EliteMobs tiene dos sistemas de scripting y ambos son totalmente compatibles. EliteScript no está obsoleto.
- EliteScript (esta página y sus hermanas): YAML declarativo. Es lo mejor cuando tu poder es «ante este evento, haz estas acciones sobre estos objetivos». Nada de aquí se ha eliminado ni sustituido.
- Poderes Lua: archivos
.luaen la misma carpetapowers. Es lo mejor cuando necesitas variables, bucles, ramificación aleatoria, estado por jefe o seguimientos programados. La mayoría de los poderes incluidos están escritos en Lua; todavía quedan algunos poderes YAML incluidos.
No son rivales: la API context.script de Lua es una envoltura fina sobre el motor de EliteScript. Cuando escribes context.script:target({...}) o context.script:zone({...}) en Lua, la tabla que pasas se entrega exactamente al mismo código de objetivos/zonas/vectores relativos/partículas documentado en estas páginas, así que todos los nombres de campo de abajo se aplican literalmente. Aprender EliteScript no es esfuerzo perdido si más adelante te pasas a Lua.
Una consecuencia práctica: si un poder .lua y un poder .yml comparten nombre base, una entrada de la lista powers: de un jefe que apunte al .yml se resuelve al archivo .lua. Así es como se migraron los poderes incluidos sin romper las configuraciones de jefe existentes.
Descripción general
EliteScript permite a los administradores de servidores crear comportamientos basados en eventos para jefes y mobs personalizados. El sistema de scripting tiene seis componentes principales:
- Events: Disparadores que inician la ejecución del script (daño, aparición, muerte, etc.)
- Conditions: Requisitos que deben cumplirse para que se ejecuten las acciones
- Actions: Los comportamientos a realizar (daño, teletransporte, generar partículas, etc.)
- Targets: Qué entidades o ubicaciones afectan las acciones
- Zones: Áreas definidas en el mundo para selección de objetivos y detección
- Cooldowns: Restricciones de tiempo para prevenir spam de scripts
Los Elite Scripts se pueden añadir como archivos de poder independientes o directamente en los archivos de configuración de jefes personalizados.
Si un jefe contiene varios scripts, los que tengan un formato incorrecto se omiten con un mensaje de consola que identifica el script y el archivo del jefe. Los demás scripts válidos pueden seguir cargándose. Conditions y Cooldowns deben contener mapas de claves y valores, no listas YAML. Los números no válidos también hacen que se omita el script: un decimal donde se espera un número entero, como duration: 1.5, un intervalo invertido como 5~1 o un texto que no sea un número. Corrige el script indicado y recarga para recuperar su comportamiento.
Ejemplo de inicio rápido
Aquí hay un EliteScript simple que hace que un jefe lance rayos a los jugadores cuando es dañado:
eliteScript:
LightningStrike:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: DIRECT_TARGET
repeatEvery: 20
times: 3
Cooldowns:
local: 60
global: 20
Este script se activa cuando un jugador daña al jefe y muestra rayos en su posición 3 veces (una vez por segundo), con un tiempo de reutilización de 60 ticks antes de que pueda activarse de nuevo. STRIKE_LIGHTNING es solo visual; añade una acción DAMAGE si el poder debe dañar al jugador.
Componentes del script
EliteScript proporciona una amplia personalización a través de su sistema de componentes. Para información detallada sobre cada componente, consulte las siguientes páginas:
Componentes principales
- Events - 13 tipos de eventos incluyendo daño, muerte, aparición, combate y disparadores basados en zonas
- Actions - 35 tipos de acciones para crear comportamientos complejos
- Targets - 17 tipos de objetivos para seleccionar entidades y ubicaciones
- Conditions - Condiciones de filtrado y bloqueo con múltiples tipos de verificación
- Zones - 8 formas de zona (esferas, cilindros, cuboides, rayos, conos, etc.)
- Cooldowns - Sistemas de tiempo de reutilización local y global
- Vectores relativos - Posicionamiento y movimiento avanzado
Casos de uso comunes
EliteScript se usa comúnmente para:
- Peleas de jefe por fases: Diferentes patrones de ataque en diferentes porcentajes de salud
- Mecánicas de arena: Daño basado en zonas, mejoras o apariciones en áreas específicas
- Ataques personalizados: Efectos de partículas únicos, proyectiles y ataques de área
- Peligros ambientales: Rayos periódicos, bloques cayendo o fuego
- Mecánicas interactivas: Teletransportación, generación de mobs y modificación del mundo
- Comunicación con jugadores: Mensajes, títulos, barras de acción y barras de jefe
- Comportamientos condicionales: Diferentes acciones basadas en cantidad de jugadores, ubicación o estado del jefe
Implementación
Los scripts se pueden implementar de dos maneras:
- Archivos de poder: Cree archivos
.ymlindependientes en~/plugins/EliteMobs/powers/ - Archivos de jefe personalizado: Añada secciones
eliteScript:directamente a las configuraciones de jefes personalizados
Para instrucciones detalladas sobre la creación de poderes y jefes personalizados, consulte:
Consideraciones de rendimiento
Al crear scripts, tenga en cuenta estas mejores prácticas:
- Use tiempos de reutilización para prevenir problemas de rendimiento por scripts de activación rápida
- Los eventos basados en zonas (ZoneEnterEvent, ZoneLeaveEvent) son computacionalmente costosos - use zonas pequeñas y tiempos de reutilización apropiados
- Use condiciones de filtrado para reducir verificaciones innecesarias
- Pruebe los scripts exhaustivamente antes de implementarlos en servidores de producción
Próximos pasos
Para comenzar a crear sus propios EliteScripts:
- Revise la página de Events para entender qué puede activar scripts
- Explore la página de Actions para ver qué comportamientos puede crear
- Aprenda sobre Targets para controlar qué afectan sus acciones
- Estudie los ejemplos en cada página de componentes
- Comience con scripts simples y aumente gradualmente la complejidad
