简体中文
CoreLib 动作
EmakiLevel 的等级与经验操作按段接进动作管道: 每段先看下表确认 ID, 再对照参数表拼写法, 示例可直接照抄
前置条件: EmakiLevel 处于启用状态, 段才会注册到 CoreLib 动作注册表. 注册后可用于其他模块的动作列表, 例如烹饪完成, 锻造结果, 强化阶段, 技能奖励或 CoreLib 管道模板
NOTE
下列段由 EmakiLevel 注册; CoreLib 自带通用段见 CoreLib 动作系统. 当前段 ID 只使用下表中的规范名, 不再提供历史别名入口. 旧的 emakileveladdexp 现在写作 level_add_exp, 其余同理; 旧的 emakilevellevelup 现在写作 level_up
段 ID
通用约束: 八个段都要求目标是实体 (REQUIRED_ENTITY), 目标不是玩家时跳过
| 段 ID | 操作 | 是否使用 amount |
|---|---|---|
level_add_exp | 增加经验 | 是 |
level_set_exp | 设置经验 | 是 |
level_remove_exp | 扣除经验 | 是 |
level_add_level | 增加等级 | 是 |
level_set_level | 设置等级 | 是 |
level_remove_level | 扣除等级 | 是 |
level_reset | 重置指定等级类型 | 否 |
level_up | 手动升级指定等级类型 | 否 |
参数
八个段都接受以下参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
type | STRING | 是 | — | 等级类型 ID, 例如 main, combat, mining |
amount | EXPRESSION | 否 | 0 | 经验或等级的数量. 可以直接写数字, 也可以写 CoreLib 表达式. 用来改等级时会四舍五入成整数 |
reason | STRING | 否 | action | 这次操作的原因, 会被记到等级服务的原因字段里 |
level_add_exp 额外接受两个参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
auto_upgrade | BOOLEAN | 否 | true | 经验跨过升级线时, 要不要自动升级 |
silent | BOOLEAN | 否 | false | 要不要压掉升级提示 |
参数约束: level_reset 与 level_up 会忽略 amount 的值, 但仍然声明了这个参数, 所以配置里写上它不会被当成未知参数报错. auto_upgrade 与 silent 只在 level_add_exp 上声明, 写在其他段上会在加载期报未知参数
目标选择: "作用于谁"由 source 决定, 不再有 target 参数: 作用于执行者自己写 self, 指定玩家用 player_by_name
示例
yaml
actions:
# 给自己增加 50 点主等级经验
- 'self | level_add_exp type=main amount=50 reason=forge_reward'
# 给自己增加 1 级战斗等级
- 'self | level_add_level type=combat amount=1 reason=boss_reward'
# 增加经验但不自动升级, 不提示
- 'self | level_add_exp type=main amount=10 auto_upgrade=false silent=true'
# 给指定玩家设置挖矿经验
- 'player_by_name name=PlayerName | level_set_exp type=mining amount=200 reason=admin_adjust'
# 重置主等级类型
- 'player_by_name name=PlayerName | level_reset type=main reason=admin_reset'
# 按等级系统执行一次手动升级
- 'player_by_name name=PlayerName | level_up type=main'
# amount 写成表达式
- 'self | level_add_exp type=main amount=%var.base%*2+10'使用提示
排查与验证看这里:
amount声明为 EXPRESSION, 参数文本里的占位符会先被渲染再交给表达式引擎求值, 所以%var.*%, 模块写入的上下文占位符与 PlaceholderAPI 占位符都能直接参与运算- 等级操作 (
level_add_level,level_set_level,level_remove_level) 会把amount四舍五入为整数 - 异常处理: 等级服务拒绝这次操作时, 这一段会以
REJECTED失败, 结果里会带上服务给出的原因 - 验证方式: 成功时会输出
type,old_level,new_level,old_exp,new_exp,amount, 可在 debug 输出里查看改动前后的状态