配置文件 config.yml
plugins/QinhSkills/config.yml 是 QS 的总配置:运行时窗口、门控、被动、吟唱默认值、MM 桥、调试、解锁、资源、技能槽、actionbar HUD,还有技能路由表。 本页先给出当前完整文件,再逐段讲清楚每一行。
⚠️ 本页对应 QS 1.0.22。 QS 是单一运行时——配置里没有
v1/v2/v2_enabled之类的开关。runtime:段现在只有combo_window_ms一项,不要去找别的。
🖼️ [图片占位] config.yml 各段职责分区图 · 建议
assets/config-sections.png
📄 完整 config.yml(当前版本,逐字)
# QinhSkills — 玩家技能管理
# 运行时流程:QISkillUseEvent → Input → StateMachine → SkillGraph → ExecutionPlan → Gate → EXEC → Post
runtime:
combo_window_ms: 800
# 冲突组互斥窗口(ms):施放带 conflict_groups 的技能后,同组其它技能在此窗口内不可施放,到点自动解除
gate:
conflict_window_ms: 1000
# 被动触发:ON_DAMAGED/ON_ATTACK/ON_KILL 由事件驱动;TICK 由下面的周期任务驱动
# tick_interval_ticks:TICK 被动的触发间隔(tick,20=1秒);无 TICK 被动技能时任务自动空转不开销
passive:
tick_interval_ticks: 20
# 吟唱(读条/CHANNEL)默认值 — 技能 yml 里 channel.* 可逐项覆盖
# 资源消耗仍走 QS 既有扣费缝(profile),不另造资源池;mana/耐力将来归 QC
channel:
# 读条进度 UI:bossbar(顶部血条,推荐)/ actionbar(屏幕下方文字)/ none(无内置 UI,交给 BetterHud 等读占位符)
bar_type: bossbar
# 位移超过该距离(格)打断;0 表示原地不动才算(任何位移都打断)
interrupt_on_move: true
move_threshold: 0.5
# 受到伤害打断
interrupt_on_damage: true
# 扣费时机:默认两者都在完成时扣(被打断不惩罚);技能 yml 可单独设
# channel.cost_on_start: true → 起手即扣资源(防刷)
# channel.cooldown_on_start: true → 起手即进 CD
cost_on_start: false
cooldown_on_start: false
# Mythic 桥 — 推荐 AUTO:API 注册失败自动降级 YAML + loadSkills
mythic:
bridge_enabled: true
bridge_mode: AUTO
bridge_debug: false
bridge_verify_after_register: true
bridge_verify_cast: false
bridge_mythic_yaml_file: QinhSkillsBridge.yml
bridge_stub_mechanic: 'message{m="&7[QinhSkills] &f{skill}"} @Self'
# true → 输出 [QI][EVENT][PARSE][ROUTE][GATE][EXEC][POST][FALLBACK] trace
# [BYPASS] 警告始终记录(无论 debug)
debug: false
# 生产环境禁止 validation.* — 见 integrations/config.integration-test.example.yml
# validation.ci_dry_run_mythic: true # 仅无 MM 技能时用于 /qs test 链路冒烟
unlock:
default_all: false
starter_skills:
- fire_wave
- demo_slash
- demo_slash_charged
resources:
default_mana: 100.0
max_mana: 100.0
slots:
active_count: 5
actionbar:
enabled: true
refresh_ticks: 10
# 未配置任何技能槽位时不刷屏(发送空 actionbar)
hide_when_empty_slot: true
template: "&7[%cast_mode%] &e%skill% &8| &b%mana%&7/&b%mana_max% &8| &fLv.%level%"
# 技能路由 — 支持模式分支(架构图 config 示例)
skills:
fire_wave:
RIGHT_CLICK: fire_wave
LEFT_CLICK: blade_slash
default: fire_wave
aliases:
FireWave: fire_wave
fw: fire_wave
DemoSlash: demo_slash
DemoSlashCharged: demo_slash_charged
ChainPrimaryOk: chain_primary_ok🔧 逐段详解
runtime — 运行时
runtime:
combo_window_ms: 800| 键 | 默认 | 说明 |
|---|---|---|
combo_window_ms | 800 | 连招输入的默认时间窗口。graph 里的 combo 没指定 window_ms 时用它兜底;也是 COMBO_WINDOW 状态的延续判断依据 |
⚠️
runtime段现在只有这一项。 没有任何运行时开关。
gate — 门控
gate:
conflict_window_ms: 1000| 键 | 默认 | 说明 |
|---|---|---|
conflict_window_ms | 1000 | 冲突组互斥窗口。放了带 conflict_groups 的技能后,同组其它技能在此窗口(ms)内不可施放,到点自动解除 |
详见 冷却充能GCD与冲突。
passive — 被动
passive:
tick_interval_ticks: 20| 键 | 默认 | 说明 |
|---|---|---|
tick_interval_ticks | 20 | TICK 被动的触发间隔(tick,20 = 1 秒)。没有 TICK 被动技能时,这个周期任务自动空转、无开销 |
详见 被动技能。
channel — 吟唱默认值
channel:
bar_type: bossbar
interrupt_on_move: true
move_threshold: 0.5
interrupt_on_damage: true
cost_on_start: false
cooldown_on_start: false这是所有吟唱技能的全局默认值,技能 yml 里 channel.* 可逐项覆盖。各字段含义见 施法模式与吟唱。
| 键 | 默认 | 说明 |
|---|---|---|
bar_type | bossbar | 读条 UI:bossbar / actionbar / none |
interrupt_on_move | true | 位移打断 |
move_threshold | 0.5 | 位移阈值(格),0 = 任何位移都打断 |
interrupt_on_damage | true | 受伤打断 |
cost_on_start | false | true = 起手即扣资源(防刷) |
cooldown_on_start | false | true = 起手即进 CD |
mythic — MythicMobs 执行桥
mythic:
bridge_enabled: true
bridge_mode: AUTO
bridge_debug: false
bridge_verify_after_register: true
bridge_verify_cast: false
bridge_mythic_yaml_file: QinhSkillsBridge.yml
bridge_stub_mechanic: 'message{m="&7[QinhSkills] &f{skill}"} @Self'桥决定 QS 怎么把技能交给 MM 执行。完整说明见 对接 MythicMobs,这里只给速览:
| 键 | 默认 | 说明 |
|---|---|---|
bridge_enabled | true | 是否启用 MM 桥 |
bridge_mode | AUTO | 桥模式:AUTO(API 失败自动降级 YAML)/ API_MODE / YAML_STUB |
bridge_debug | false | 桥调试日志 |
bridge_verify_after_register | true | 注册后校验技能是否登记成功 |
bridge_verify_cast | false | 校验时是否试放 |
bridge_mythic_yaml_file | QinhSkillsBridge.yml | YAML 降级时写入的桥文件名 |
bridge_stub_mechanic | 见上 | 没装 MM / 占位时的桩机制(默认发一条占位消息) |
debug — 调试
debug: false设为 true 时输出全链路 trace 标签: [QI] [EVENT] [PARSE] [ROUTE] [GATE] [EXEC] [POST] [FALLBACK]。
[BYPASS]警告无论debug是否开启都始终记录。
validation — 校验(生产禁用)
文件里这段是注释掉的:
# validation.ci_dry_run_mythic: truevalidation.* 仅集成测试用,生产环境禁止开启。集成测试配置见 integrations/config.integration-test.example.yml。
unlock — 默认解锁
unlock:
default_all: false
starter_skills:
- fire_wave
- demo_slash
- demo_slash_charged| 键 | 默认 | 说明 |
|---|---|---|
default_all | false | true = 新玩家默认解锁所有技能 |
starter_skills | 见上 | 新玩家默认解锁的技能列表(default_all: false 时生效) |
resources — 资源池(临时占位)
resources:
default_mana: 100.0
max_mana: 100.0| 键 | 默认 | 说明 |
|---|---|---|
default_mana | 100.0 | 玩家初始法力 |
max_mana | 100.0 | 法力上限 |
⚠️ 这是临时占位,将来归 QinhClass(QC)管。详见 消耗条件与变量。
slots — 技能槽
slots:
active_count: 5| 键 | 默认 | 说明 |
|---|---|---|
active_count | 5 | 主动技能槽数量(1–9) |
actionbar — actionbar HUD
actionbar:
enabled: true
refresh_ticks: 10
hide_when_empty_slot: true
template: "&7[%cast_mode%] &e%skill% &8| &b%mana%&7/&b%mana_max% &8| &fLv.%level%"| 键 | 默认 | 说明 |
|---|---|---|
enabled | true | 是否开启 actionbar HUD |
refresh_ticks | 10 | 刷新间隔(tick) |
hide_when_empty_slot | true | 没配任何技能槽时不刷屏(发空 actionbar) |
template | 见上 | HUD 文本模板,支持下面的占位符 |
template 可用占位符:
| 占位符 | 含义 |
|---|---|
%cast_mode% | 当前施法模式 |
%skill% | 当前技能显示名 |
%mana% | 当前法力 |
%mana_max% | 法力上限 |
%level% | 技能等级 |
skills — 技能路由表
skills:
fire_wave:
RIGHT_CLICK: fire_wave
LEFT_CLICK: blade_slash
default: fire_wave路由表把「一个入口名 → 不同触发模式 → 不同 MM 技能」对应起来,实现一个键位按不同操作放不同技能。
读法(以上面的 fire_wave 条目为例):
| 触发 | 路由到 |
|---|---|
RIGHT_CLICK(右键) | 放 fire_wave |
LEFT_CLICK(左键) | 放 blade_slash |
| 其它没列出的触发 | 走 default → fire_wave 兜底 |
default 是没匹配到具体触发模式时的兜底目标,建议每条都写上。
aliases — 别名
aliases:
FireWave: fire_wave
fw: fire_wave
DemoSlash: demo_slash
DemoSlashCharged: demo_slash_charged
ChainPrimaryOk: chain_primary_ok别名把「外部传进来的名字」映射到「标准技能名」。例如物品 / 命令里写 FireWave 或 fw,QS 都识别为 fire_wave。 左边是别名(大小写随意起),右边是真实技能 id。方便给老配置、外部插件、缩写留兼容入口。
🔄 改完怎么生效
改完 config.yml 后用:
/qs reload重载定义 / graph / 路由,并同步 MM 桥。命令详见 命令与权限。
📚 继续阅读
- 施法模式与吟唱 —
channel.*默认值的逐字段含义 - 消耗条件与变量 —
resources.*法力池说明 - 被动技能 —
passive.tick_interval_ticks的用处 - 对接 MythicMobs —
mythic.bridge_*桥配置详解