Skip to content

触发器(TriggerType 与 active_triggers)

上一页:技能定义全字段 · 下一页:被动技能


这一页讲清楚**「玩家这一下到底算哪种触发」**:

  • TriggerType —— 触发的「种类」(右键 / 左键 / 潜行右键 / 长按 / 被动…),共 15 种(服主主要用前 10 个点击类,其余为内部用途)。
  • active_triggers —— 触发的「来源」(物品按键 / 技能槽快捷键 / 命令 / API),共 4 种,缺省 QI_ACTION
  • trigger.primary —— 技能的主触发,它必须出现在 graph 入口节点的 triggers 里,否则放不出。
  • atom 映射 —— QinhItems 物品按键(atom)如何对上 TriggerType。

💡 一句话先记住:「来源」决定这下输入从哪进 QS(active_triggers),「种类」决定它走哪个技能(TriggerType)。 两者各管一头,互不替代。

🖼️ [图片占位] 一张「物品按键 → QI 发出 atom → QS 归一成 TriggerType → 命中 graph 节点」的流程图 · 建议 assets/trigger-pipeline.png


一、TriggerType 全集(15 种)

TriggerType 是 QS 内部对「这一下输入是什么动作」的统一枚举。它出现在三个地方:

  1. 技能定义的 trigger.primary(主触发);
  2. graph 节点的 triggers:(这个节点接收哪些动作);
  3. 被动技能内部(被动统一记为 PASSIVE)。
TriggerType含义典型用途
RIGHT_CLICK右键最常用的主动技能触发
LEFT_CLICK左键近战 / 普攻类技能
SHIFT_RIGHT_CLICK潜行 + 右键同一物品的「第二套」技能
SHIFT_LEFT_CLICK潜行 + 左键同上,再分一套
SHIFT_TOGGLE潜行切换(按下/松开潜行)开关 / toggle 类技能
DOUBLE_SHIFT_TOGGLE潜行切换双击(预留)暂未实装,预留枚举
DOUBLE_RIGHT_CLICK双击右键冲刺、闪避等「快速两下」
DOUBLE_LEFT_CLICK双击左键同上,左键版
HOLD_RIGHT_CLICK长按右键蓄力 / 吟唱起手
HOLD_LEFT_CLICK长按左键持续型起手
CI_TEST内部测试🔧 内部回归测试用,服主不需要写
COMMAND命令🔧 内部/非物品按键:/qs cast 触发
API接口🔧 内部/非物品按键:插件代码调用触发
PASSIVE被动🔧 内部/非物品按键:被动技能内部统一用它(不写在 primary 里)
UNKNOWN未知 / 内部回退值🔧 内部:配置里不要用,仅作识别失败时的兜底

🔧 标注「内部/非物品按键」的 5 个(CI_TEST / COMMAND / API / PASSIVE / UNKNOWN)不是给物品按键写的,服主主要用前 10 个点击类触发。UNKNOWN 是识别失败时的内部回退值,配置里绝不要写。

⚠️ 大小写敏感,必须全大写、原样照抄。写成 right_click 会被当作未知触发(归一为 UNKNOWN)。

怎么挑 TriggerType?

  • 单技能物品:RIGHT_CLICK 就够了。
  • 想在一把武器上塞两个技能:右键放 A、潜行右键放 B → RIGHT_CLICK + SHIFT_RIGHT_CLICK
  • 想做「按一下开、再按一下关」的光环 / buff:用 SHIFT_TOGGLE,技能 cast_mode: toggle
  • 蓄力读条技能:起手用 HOLD_RIGHT_CLICK,技能 cast_mode: channel

二、active_triggers —— 主动触发源(4 种)

TriggerType 回答「这下是什么动作」,active_triggers 回答「这下从哪儿来」。它是技能 yml 里的一个列表,缺省值是 [QI_ACTION](即「只接受 QinhItems 物品按键」)。

来源 type含义怎么触发备注
QI_ACTIONQinhItems 物品按键玩家拿着带技能的 QI 物品按键默认、最常用,缺省就是它
KEY_SLOT技能槽快捷键玩家用技能槽快捷键放槽里的技能需配合 slots.active_count(config.yml,默认 5)
COMMAND命令施放/qs cast <技能>测试 / 命令桥(NI、MI 等)走这里
API接口调用插件代码调用 QinhSkillsAPI开发者集成
yaml
# 缺省写法:等同 active_triggers: [QI_ACTION],可以整段不写
active_triggers:
  - type: QI_ACTION             # 物品按键触发(默认)

# 例:同时允许「物品按键」和「技能槽快捷键」两种来源
active_triggers:
  - type: QI_ACTION
  - type: KEY_SLOT

💡 大多数物品技能整段不写 active_triggers 即可——默认 QI_ACTION 就是你要的。只有要接技能槽 / 命令桥 / API 时才需要显式列出。


三、atom 映射 —— 物品按键怎么变成 TriggerType

QinhItems 物品上配的是 atom(按键原子)。物品按下后,QI 把 atom 发给 QS,QS 再把它归一成一个 TriggerType,去匹配技能与 graph。

QI 物品 atom归一成的 TriggerType
left_clickLEFT_CLICK
right_clickRIGHT_CLICK
shift_left_clickSHIFT_LEFT_CLICK
shift_right_clickSHIFT_RIGHT_CLICK
shift_toggleSHIFT_TOGGLE

经验法则:物品的 atom 最好对上技能的 trigger.primary

  • atom 对得上 primary:直接命中入口节点,一切正常。
  • atom 对不上 primary:QS 仍会回退到入口节点把技能放出来(不会哑火),但「右键 / 左键分别放不同技能」的精细分支就指望不上了。

🔌 物品侧具体怎么配 atom,见 对接 QinhItems。这里只需记住映射关系。


四、trigger.primary 与 graph 入口节点的关系(重点)

这是新手最容易踩的坑。两条铁律:

  1. trigger.primary 必须出现在 graph 入口节点的 triggers: 列表里。
  2. 对不上就放不出(或回退行为不符预期)。

来看正反两个例子。

✅ 正确:primary 在入口节点 triggers 内

skills/combat/blade_slash.yml(节选自自带示例):

yaml
trigger:
  primary: LEFT_CLICK           # 主触发:左键
graph:
  entry: blade_slash            # 对应 graph 的入口节点名

对应 graphs/combat/blade_slash.graph.yml

yaml
graph_id: blade_slash
entry: blade_slash
nodes:
  blade_slash:                  # ← 入口节点
    skill_id: blade_slash
    mythic_skill: blade_slash
    require_state: IDLE
    triggers:
      - LEFT_CLICK              # ✅ primary(LEFT_CLICK) 在这里,对得上 → 能放

❌ 错误:primary 没出现在入口节点

yaml
# 技能里:
trigger:
  primary: RIGHT_CLICK         # 主触发写的是右键
# 但 graph 入口节点:
  fire_wave:
    triggers:
      - LEFT_CLICK             # ❌ 只接左键,右键没列进来 → primary 落空

⚠️ 改完触发记得 /qs reload,并用 /qs info <技能> 复核。


五、完整小例子:一把武器两套技能

目标:右键放火焰波、潜行右键放刃斩。

yaml
# 技能 fire_wave:右键
trigger:
  primary: RIGHT_CLICK
graph:
  entry: fire_wave

对应 graph 入口节点同时列两种触发,靠 skills 路由分流(见 config.yml 的 skills: 段):

yaml
# config.yml —— 按 TriggerType 分支到不同技能
skills:
  fire_wave:
    RIGHT_CLICK: fire_wave       # 右键 → 火焰波
    LEFT_CLICK: blade_slash      # 左键 → 刃斩
    default: fire_wave           # 兜底

物品侧给同一把武器配 right_clickshift_right_click 两个 atom,分别对上两个技能的 primary 即可。


✅ 自检清单

  • [ ] trigger.primary 用的是全大写的合法 TriggerType。
  • [ ] 该 primary 出现在 graph 入口节点的 triggers: 里。
  • [ ] 物品 atom 与 primary 对得上(right_clickRIGHT_CLICK)。
  • [ ] 若要接技能槽 / 命令桥,已显式写 active_triggers
  • [ ] 改完执行了 /qs reload,并 /qs info 复核。

继续阅读