LogoArcartX Doc

指令

Chronos 插件的四条管理指令:设置、移除、试进状态、重载

这些指令是做什么的

Chronos 的指令非常简单,其核心是:管理玩家身上的「服务端控制器」。玩家有了生效控制器,才能运行其中的连招、状态和窗口;职业快照与技能装配仍由对应的职业流程管理。

日常你只会用到四条命令:给玩家挂载控制器、把控制器摘掉、手动让玩家进入某个状态(做测试或给其它插件调用)、以及改完配置后热重载。

这四条指令都需要 OP 身份,权限节点为 chronos.admin。普通玩家无法使用。

前缀与别名

根指令是 /arcartx_chronos,同时注册了两个别名,随便用哪个都行:

  • /arcartx_chronos(完整)
  • /ac(推荐,最短)
  • /chronos

下文示例统一用 /ac。


指令一览

指令作用
/ac set <控制器ID> <玩家>给玩家设置控制器
/ac remove <玩家>移除玩家的控制器
/ac tryState <状态ID> <玩家> [失败提示]尝试让玩家进入某个状态
/ac reload重载全部配置

set —— 设置控制器

为一名在线玩家设置基础控制器。玩家正在执行状态时,切换会延迟到当前状态结束;存在临时控制器覆盖时,只更新基础控制器,当前覆盖继续生效。命令的成功提示表示已提交设置,不保证生效控制器当场改变。

/ac set <控制器ID> <玩家>

参数顺序是「控制器 ID 在前,玩家在后」,和很多插件相反。写反了会因为找不到控制器而失败。

参数说明
控制器IDcontrollers/ 文件夹里的 yml 文件名(不含 .yml)。文件名 sword.yml 的控制器 ID 就是 sword
玩家在线玩家的游戏名

示例:

# 给玩家 Steve 设置剑士控制器(controllers/sword.yml)
/ac set sword Steve
 
# 给玩家 Alex 挂上弓箭手控制器
/ac set bow Alex

若控制器 ID 不存在,会提示 控制器 xxx 不存在。若它存在但未列入玩家当前职业的 controllers.allowed,命令会明确拒绝;管理命令不能绕过职业隔离。


remove —— 移除控制器

把玩家的基础控制器设为空。玩家正在执行状态时,移除会延迟到状态结束;存在临时覆盖时,当前覆盖继续生效。之后是否重新获得控制器,取决于当前职业模式、覆盖恢复策略和下一次职业路由。

/ac remove <玩家>

示例:

/ac remove Steve

如果当前职业为 ROUTED,登录、重载、主手变更或职业触发器重新求值时可能再次选出控制器。默认控制器与选择规则位于 职业配置,不再位于 setting.yml。


tryState —— 尝试让玩家进入状态

让玩家直接进入某个状态,而不是靠玩家自己按键触发。这条指令会走正常的进入校验(状态的 conditions 条件、冷却等),校验不过就不会进入。它不为状态挂载连招节点,因此不会沿该节点的 derive 继续连段;如果状态有取消窗口,输入仍可从默认连招链根节点发起其他动作。

/ac tryState <状态ID> <玩家> [失败提示]
参数必填说明
状态ID是控制器里 state.<状态ID> 的键名
玩家是在线玩家的游戏名
失败提示否单个不含空格的文本参数;仅当进入失败时原样发给目标玩家

在线玩家尚未建立 Chronos 运行数据时,也按进入失败处理;填写了失败提示时,仍会发给该玩家。

典型用途:从命令方块、其它插件、脚本里让玩家播放一个指定动作(例如表情、舞蹈),并在条件不满足时给玩家一句提示。

示例:

# 让 Steve 进入「处决」状态;若条件不满足,给他发一句提示
/ac tryState execute Steve 目标尚未进入可处决状态

进入成功与否取决于目标状态自身的 conditions 与冷却。想「无视条件强制进入」,可用 Java API 的 forceEnterStateFromRootChain;目标须存在于当前控制器的默认连招链中,可以是根节点或派生节点——见 Java API。


reload —— 重载配置

改完 setting.yml、keybinding.yml、professions/、controllers/ 或 client/ 里的任意 yml 后,用这个指令重载。

/ac reload

重载正常完成后,会更新以下配置与运行数据:

  • 重新读取 setting.yml / keybinding.yml / 全部控制器与职业
  • 重新注册客户端按键
  • 重新注册所有控制器 / 状态机
  • 取消在线玩家旧定义上的待决选择、技能动作、状态和临时覆盖
  • 把在线玩家重新绑定到同 ID 的新职业定义;职业已删除时回退新默认职业
  • ROUTED 职业重新路由,EXTERNAL 职业尽量保留仍被允许的 API 基础控制器
  • 为缺少 Chronos 数据的在线玩家补建数据并下发控制器

重载后留意后台输出,可确认加载结果:

[信息] 开始加载
[信息] 按键分类: 克洛诺斯
[信息] 加载2个按键配置
[信息] 注册动作客户端按键-> 战技1
[信息] 注册动作客户端按键-> 战技2
[信息] 注册动作控制器-> sword
[信息] 注册动作控制器-> bow
[信息] 加载完成

调试习惯:每次改完配置先 reload,查看按键数量、控制器注册和告警。客户端 controller / state_name 等交叉引用错误会告警;schema、默认连招链、职业允许列表、技能 route 等非法配置可能直接使加载失败,不能把所有配置错误都当作可忽略的 WARN。


典型工作流

编辑 controllers/、client/ 和对应职业配置,把控制器加入该职业的 controllers.allowed

/ac reload 重载,并查看后台确认无 WARN

/ac set <控制器ID> <玩家> 把控制器挂到自己身上

进游戏实测;需要调整就回到第一步


也可以用 API

除了指令,插件开发者可以用 Java API 完成同样的事:

ChronosAPI api = ChronosAPI.getInstanceAPI();
 
// 设置控制器(等价于 /ac set)
api.setPlayerController(player, "sword");
 
// 查询玩家当前控制器 ID(可能为 null)
String controllerId = api.getPlayerControllerId(player);
 
// 尝试进入状态(等价于 /ac tryState,走条件校验)
boolean ok = api.tryEnterState(player, "execute");
 
// 移除控制器(等价于 /ac remove)
api.removePlayerController(player);

完整方法与事件见 API/EVENT。

On this page