玩法模块 modules
两个可插拔的轻量模块:计时竞速 与 奖励加成。配置写在主 config.yml 的 modules 段当全服默认,副本 config.yml 的 modules 段按模块整段覆盖。不写 = 全部未启用,零开销。
# plugins/QueDP/config.yml 或 dungeons/<id>/config.ymlmodules: speedrun: enabled: true bonus: enabled: true中文键:模块 / 竞速 / 奖励加成 / 启用。
自动计时,通关用时照旧进现有排行榜;模块主要补分段和与个人最佳的实时对比。
modules: speedrun: enabled: true splits: # 可省略 一王: { name: "&e一王" } 二王: { name: "&c二王" }分段记录时机:脚本 action.split('一王'),或阶段完成时自动记录(阶段 id 与分段 id 同名)。分段只在实例内存里,副本结束即丢。
| 脚本 / 变量 | 说明 |
|---|---|
action.split('一王') | 记录分段点,重复记录以第一次为准 |
dungeon.getElapsed() | 当前用时(秒,带小数) |
dungeon.getSplit('一王') | 分段用时,未记录 -1 |
dungeon.getPersonalBest(player) | 该玩家历史最佳(秒),无记录 -1 |
dungeon.getRecord() | 榜一用时,无记录 -1 |
%quedp_speedrun_elapsed% | 当前用时 mm:ss.SS |
%quedp_speedrun_pb% | 个人最佳 |
%quedp_speedrun_delta% | 与个人最佳的差值,带 +/-,实时现算 |
%quedp_speedrun_record% | 榜一用时 |
通关那一刻按条件算一次倍率,作用于此后 action.grant_reward 发放的金钱、经验、物品数量(向下取整、最少 1)。命令奖励和箱子 UI 奖励不受影响。
modules: bonus: enabled: true stack: multiply # multiply 连乘 / add 1+Σ(倍率-1),默认 multiply rules: 无死亡: name: "&a全队无伤" condition: "dungeon.getDeadPlayerCount() == 0" multiplier: 1.5 限时: name: "&e限时通关" condition: "dungeon.runningTime <= 600" multiplier: 1.2| 键(中/英) | 必填 | 说明 |
|---|---|---|
rules.<id>.condition / 条件 | 是 | JS 表达式,通关时求值一次 |
rules.<id>.multiplier / 倍率 | 是 | |
rules.<id>.name / 名称 | 否 | 结算展示名 |
stack / 叠加 | 否 | multiply / add |
单副本最多 16 条规则。通关时命中的规则会在聊天栏列出(文案在 lang/)。
| 脚本 | 说明 |
|---|---|
action.add_bonus('首杀', 2.0) | 脚本临时加一条倍率;通关前调用参与结算,通关后调用立即生效 |
dungeon.getBonus() | 当前最终倍率,结算前为 1 |
dungeon.hasBonus('无死亡') | 某规则是否命中 |
编辑器与命令
Section titled “编辑器与命令”/dg edit 主界面 → 玩法模块:两个模块各一个开关,右键进分段 / 规则管理,规则有三个模板可直接套用。
/dg admin module list 列出各副本的模块启用情况。
模块动作在未启用的副本里调用会在控制台 warn「模块 X 未启用」,不静默失败。两个模块都没有周期任务。