概述
Aria 脚本引擎在 Chronos 里的用法与写法
Aria 是什么
Aria 是 Chronos 与 ArcartX 共用的脚本引擎。 在 Chronos 里,凡是需要「根据玩家的实时状态动态计算」的地方,填的都是一段 Aria 表达式:想让攻速加成缩放动作播放速度、想让蓄力越久收招越慢、想让饥饿值不足时进不了某个状态、想在动作播放到第 100 毫秒时打出一次伤害判定——这些都靠 Aria 完成。
在 Chronos 的 Aria 表达式上下文中,self 始终指向当前玩家。围绕 self,你可以读取它的血量、朝向、蓄力时长,也可以让它冲刺、放技能、进入另一个状态。
- 本章只收录 Chronos 插件自己提供的语句(实体选择器、蓄力信息、朝向吸附、状态控制)。你在配置里还会用到大量通用语句(如
getFood、dash、castMythicMobSkill、teleport等)——它们由 ArcartX 本体提供,请查阅本体文档的 服务端 Aria。 - 此外,Chronos 注册的全是 服务端 Aria 脚本,而非客户端 Aria 脚本,请注意不要混淆。
Aria 在 Chronos 中的一些说明
Aria 表达式散落在服务端控制器(controllers/<控制器ID>.yml)的多个字段里。不同字段对「表达式算出来是什么」有不同要求:
| 配置位置 | 期望结果 | 典型用途 |
|---|---|---|
state.<状态>.speed | 数字 | 缩放动作播放速度、状态时长、窗口及 STATE 时间域的 execute;REAL 循环不随它缩放 |
state.<状态>.duration | 数字(毫秒) | 动态设置状态持续时间 |
state.<状态>.conditions.expression | 布尔 | 能否进入这个状态的门槛 |
state.<状态>.cooldown.time | 数字(毫秒) | 动态冷却时间 |
state.<状态>.execute.<步骤>.expression | 语句 | 到达某个时间点时执行的动作 |
setting.action | 语句 | 触发器 |
speed 与 duration 期望的是数字,conditions.expression 期望的是布尔(true/false),别把类型写反。这些字段在 YAML 里都写成字符串,例如 speed: "1 + var.attackSpeedBonus"。
关于 Aria 的一些使用说明
- 本文不会讲解过于深入的 Aria 语法问题。关于 Aria 的详细语法,建议系统阅读 Aria 文档,它是 ArcartX 生态中嵌入最深的脚本语言,也是深度使用 ArcartX 生态插件的关键要素。
- 这里只讲解一些与 Chronos 联动 Aria 的简单说明。
self:当前玩家
self就是正在运行这段脚本的玩家对象。Chronos 的绝大多数语句都是在它身上调用的:- 一些例子
var.:当前控制器内的自定义变量
用 var. 前缀可以存取自定义变量。每名玩家的当前控制器都有自己的脚本上下文,变量可以跨状态保持;更换、移除控制器或重载时通常会重新初始化。临时控制器覆盖结束时是否恢复保存的变量,取决于恢复策略。常见做法是在 setting.action.init 里初始化,再在各个状态里读写:
状态配置示例:蓄力斩
以下展示蓄力和释放两个状态;还需在连招链中用长按和松开输入把它们连接起来。
示例中的 charge_slash 需要在 MythicMobs 中定义,目标范围由该 MythicMobs 技能配置决定;这里以玩家为施法者调用一次。
self.getChargeTime() 在蓄力状态中返回实时蓄力时长,离开后返回冻结的时长(毫秒)。本例在释放状态读到的是上一段蓄力结果,详见 玩家信息 与控制器文档的蓄力小节。
