Appearance
Kether 脚本
AreaModule 使用 TabooLib 的 Kether 脚本引擎,在关卡的各种事件节点中执行自定义逻辑。
可使用脚本的位置
| 位置 | 说明 |
|---|---|
主关卡 on-fail | 关卡失败时执行 |
子关卡 on-start | 子关卡开始时执行 |
子关卡 on-exit | 子关卡完成时执行 |
accessible / singleaccess on-enter | 玩家进入区域时执行 |
clickable on-click | 玩家右键点击方块时执行 |
pressable on-click | 玩家按压完成时执行 |
deathtrap on-death | 玩家死亡时执行 |
airwall on-enter | 玩家被弹开时执行 |
killtrigger on-kill | 击杀怪物时执行 |
ady-npc script | 与 NPC 交互时执行 |
delay-executor script | 延迟后执行 |
自定义语句:score
AreaModule 在 areamodule 命名空间下注册了 score 语句,用于操控关卡分数。
语法
areamodule:score set <key> to <value> # 设置分数
areamodule:score add <key> by <delta> # 增加分数(负数则减少)
areamodule:score get <key> # 获取当前值
areamodule:score max <key> # 获取最大值
areamodule:score progress <key> # 获取 "当前/最大" 字符串关卡推断
score 语句会自动推断当前关卡:
- 优先从脚本变量表中获取
level变量(由框架在执行时注入) - 如果没有,则根据脚本执行者(玩家)的位置匹配所在的关卡
示例
yaml
# 在 killtrigger 的 on-kill 中累加击杀计数
on-kill: |-
areamodule:score add kill by 1
# 在 on-start 中设置初始值
on-start: |-
areamodule:score set star to 0
title color "&a开始收集星星!" by 0 20 10
# 在 clickable 的 on-click 中检查分数
on-click: |-
areamodule:score add coin by 10
tell color "&e获得10金币!当前: {{ areamodule:score progress coin }}"自定义语句:chemdah sync
AreaModule 在 areamodule 命名空间下注册了 chemdah sync 语句,用于将当前关卡的分数立即同步到 Chemdah 任务数据。
前置条件
需要服务器安装 Chemdah 插件,且关卡配置了 chemdah.sync-scores 映射。
语法
areamodule:chemdah sync # 立即同步当前关卡分数到 Chemdah 任务数据同步规则由主关卡配置中的 chemdah.sync-scores 映射决定,关卡通过脚本上下文自动推断(规则同 score 语句)。
TIP
其余 Chemdah 操作(接受/完成/放弃任务、操作任务数据等)请直接使用 Chemdah 自带的 Kether 语句,例如 quest accept、quest complete、quest data 等。
示例
yaml
# 击杀怪物后同步分数到 Chemdah
on-kill: |-
areamodule:score add kill by 1
areamodule:chemdah sync
# 配合 Chemdah 自带语句使用
on-exit: |-
areamodule:chemdah sync
quest select "my_quest"
quest complete通用 Kether 语法
以下是一些常用的 Kether 语句:
# 发送标题
title color "&a&l标题文本" by 0 20 10
# 发送消息
tell color "&e消息内容"
# 发送 ActionBar
actionbar color "&b动作栏消息"
# 播放音效
sound ENTITY_EXPERIENCE_ORB_PICKUP by 1 1
# 设置变量
set my_var to "hello"
# 读取变量
tell &my_var更多 Kether 语法请参考 TabooLib Kether 文档。