跳到主要内容

EliteScript

webapp_banner.jpg

EliteScript 是 MagmaGuy 插件的综合脚本系统,提供高级自定义选项,用于为 Minecraft 中的 Boss 和其他实体创建动态行为。

EliteScript 还是 Lua?

EliteMobs 拥有两套脚本系统,而且两者都得到完整支持。EliteScript 并未被弃用。

  • EliteScript(本页及其同级页面) —— 声明式 YAML。当你的能力就是"在发生某个事件时,对某些目标执行这些动作"时,它最合适。这里的内容没有任何一项被移除或取代。
  • Lua 能力 —— 放在同一个 powers 文件夹里的 .lua 文件。当你需要变量、循环、随机分支、每个 Boss 各自的状态,或者延时后续动作时,它最合适。EliteMobs 自带的能力现在都是用 Lua 编写的。

它们并不是竞争关系:Lua 的 context.script API 只是围绕 EliteScript 引擎的一层薄封装。当你在 Lua 中写 context.script:target({...})context.script:zone({...}) 时,你传入的表会被交给这些页面所记录的完全相同的目标/区域/相对向量/粒子代码,因此下文的每一个字段名都可以逐字照用。就算你之后转向 Lua,学习 EliteScript 也绝不会白费。

一个实际的推论:如果一个 .lua 能力和一个 .yml 能力共用同一个基础名称,那么 Boss 的 powers: 列表中指向该 .yml 的条目会被解析到 .lua 文件。自带能力正是靠这种方式完成迁移,而不会破坏已有的 Boss 配置。

概述

EliteScript 允许服务器管理员为自定义 Boss 和生物创建复杂的事件驱动行为。脚本系统建立在五个核心组件之上:

  • Events:启动脚本执行的触发器(伤害、生成、死亡等)
  • Conditions:执行动作必须满足的条件
  • Actions:要执行的行为(伤害、传送、生成粒子等)
  • Targets:动作影响的实体或位置
  • Zones:世界中用于定位和检测的定义区域
  • Cooldowns:防止脚本频繁触发的时间限制

Elite Scripts 可以作为独立的能力文件添加,也可以直接添加到自定义 Boss 配置文件中。

快速入门示例

以下是一个简单的 EliteScript,当 Boss 受到伤害时会对玩家施放闪电:

eliteScript:
LightningStrike:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: DIRECT_TARGET
repeatEvery: 20
times: 3
Cooldowns:
local: 60
global: 20

此脚本在玩家对 Boss 造成伤害时触发,然后对玩家施放 3 次闪电(每秒一次),冷却时间为 60 刻后才能再次触发。

脚本组件

EliteScript 通过其组件系统提供广泛的自定义功能。有关每个组件的详细信息,请参阅以下页面:

核心组件

  • Events - 13 种事件类型,包括伤害、死亡、生成、战斗和基于区域的触发器
  • Actions - 35 种动作类型,用于创建复杂行为
  • Targets - 17 种目标类型,用于选择实体和位置
  • Conditions - 具有多种检查类型的过滤和阻止条件
  • Zones - 8 种区域形状(球体、圆柱体、长方体、射线、锥体等)
  • Cooldowns - 局部和全局冷却系统
  • 相对向量 - 高级定位和移动

常见用例

EliteScript 常用于:

  • 阶段制 Boss 战:不同生命值百分比下的不同攻击模式
  • 竞技场机制:特定区域中基于区域的伤害、增益或生成
  • 自定义攻击:独特的粒子效果、投射物和范围攻击
  • 环境危害:周期性闪电、坠落方块或火焰
  • 互动机制:传送、生物生成和世界修改
  • 玩家通信:消息、标题、动作栏和 Boss 栏
  • 条件行为:基于玩家数量、位置或 Boss 状态的不同动作

实现

脚本可以通过两种方式实现:

  1. 能力文件:在 ~/plugins/EliteMobs/powers/ 中创建独立的 .yml 文件
  2. 自定义 Boss 文件:直接在自定义 Boss 配置中添加 eliteScript: 部分

有关创建能力和自定义 Boss 的详细说明,请参阅:

性能注意事项

创建脚本时,请牢记以下最佳实践:

  • 使用冷却时间来防止快速触发脚本导致的性能问题
  • 基于区域的事件(ZoneEnterEvent、ZoneLeaveEvent)计算成本较高——使用小区域和适当的冷却时间
  • 使用过滤条件来减少不必要的检查
  • 在部署到生产服务器之前彻底测试脚本

后续步骤

要开始创建您自己的 EliteScripts:

  1. 查看 Events 页面,了解什么可以触发脚本
  2. 探索 Actions 页面,查看可以创建哪些行为
  3. 学习 Targets,控制您的动作影响什么
  4. 学习每个组件页面中的示例
  5. 从简单的脚本开始,逐步增加复杂性