跳到主要内容

等级系统

等级系统配置文件位于 Chemdah/module/level.yml,支持同时定义多套独立的等级体系,每套用唯一 ID 区分。

基本结构

module/level.yml
# 顶层 key 就是等级体系的 ID,可以有多个
combat: # 战斗等级体系
min: 1 # 最低等级(玩家数据低于此值时强制修正)
max: 100 # 最高等级上限
experience:
type: kether # 算法类型:kether 或 javascript
math: "( * level 100 )" # 升到下一级所需经验,level 为当前等级
reward:
1: | # 升到第 1 级时执行
tell "恭喜升到 1 级!"
5-10: | # 升到 5~10 级时都执行(用 - 或 ~ 分隔范围)
tell "恭喜升级!"

crafting: # 另一套独立的等级体系
min: 0
max: 50
experience:
type: javascript
math: "level * 200 + 500" # JS 表达式,同样可用 level 变量

经验算法

experience.type 支持两种写法:

类型math 写法说明
ketherKether 脚本表达式使用 Kether 语法计算
javascriptJS 表达式使用 JavaScript 引擎计算

两种类型中都可以用 level 变量,代表玩家当前等级,返回值为升级所需的经验量。

提示

math 的返回值是升到下一级所需的经验,不是累计总经验。等级系统会自动根据公式逐级计算升级所需量。

等级奖励

reward 下的 key 支持单个等级或等级范围,value 是 Kether 脚本,升级时自动执行。

奖励配置示例
combat:
reward:
10: | # 精确匹配第 10 级
tell "你达到了 10 级!"
command "give {player} diamond 1"
20-30: | # 20 到 30 级,每升一级都触发
tell "继续努力!"
50~99: | # ~ 和 - 效果相同
tell "接近满级了!"

奖励脚本中可以用 level 变量获取玩家当前升到的等级。

相关命令

/chemdah level <玩家> <等级体系ID> set|give|take <数值>

用于管理员手动设置或调整玩家的等级和经验。