Skip to content

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手动升级指定等级类型否

参数 ​

八个段都接受以下参数:

参数类型必填默认值说明
typeSTRING是—等级类型 ID, 例如 main, combat, mining
amountEXPRESSION否0经验或等级的数量. 可以直接写数字, 也可以写 CoreLib 表达式. 用来改等级时会四舍五入成整数
reasonSTRING否action这次操作的原因, 会被记到等级服务的原因字段里

level_add_exp 额外接受两个参数:

参数类型必填默认值说明
auto_upgradeBOOLEAN否true经验跨过升级线时, 要不要自动升级
silentBOOLEAN否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 输出里查看改动前后的状态