Suite

连击追踪与触发器

CombatEffect 连击追踪、死亡缓冲、按键触发器与状态/控制器触发器配置

连击追踪与触发器

付费模块

连击追踪、死亡缓冲、按键触发器与状态/控制器触发器是 CombatEffect 模块的高级战斗特效子系统。它们在基础击杀/攻击特效之上,提供连击里程碑、死亡可视化缓冲、按键驱动特效和 Chronos 状态联动等能力。所有子系统可独立开关,互不依赖。

子系统概览

子系统配置节依赖默认状态
连击追踪combo-trackerChronos(可选)禁用
死亡缓冲death-bufferArcartX(视觉)/ Chronos(可选)禁用
按键触发器keybind-triggerArcartX禁用
状态/控制器触发器state-triggerChronos禁用

四个子系统均默认禁用,需在 config.yml 中显式启用。启用时需确保对应依赖已安装,否则自动降级或保持禁用。

连击追踪

追踪玩家连续攻击次数,达到条件时触发特效包,并可实时同步连击数到客户端变量。

连击来源

连击来源通过 combo-tracker.source 配置,支持三种模式:

来源模式配置值说明降级行为
自动检测autoChronos 可用时优先 Chronos,否则回退原版伤害事件Chronos 不可用 → Bukkit
仅 Chronoschronos仅使用 Chronos 状态进入事件Chronos 不可用 → 不启用
仅 Bukkitbukkit仅使用原版伤害事件无降级

Chronos 状态组过滤

Chronos 来源模式下,仅指定状态组的状态进入才计为连击一击:

配置项默认值说明
combo-tracker.chronos-groups["攻击", "连击"]状态组过滤列表

超时重置

配置项默认值说明
combo-tracker.timeout2000超时重置时间(毫秒),最小 200

超时后连击数重置为 0,同时同步客户端变量为 0。

目标锁定模式

per-target行为适用场景
false(默认)切换目标不重置,连续攻击任意目标均累加群战、清怪
true切换目标重置为 1,仅对同一目标的连续攻击累加Boss 战、单挑

per-target 仅在 Bukkit 来源模式下有效(Chronos 来源无目标概念)。

客户端变量同步

配置项默认值说明
combo-tracker.sync-variablefalse是否同步连击数到客户端变量
combo-tracker.variable-namecombo_count客户端变量名

开启后可在 UI 中引用实时连击数:

# UI 中引用连击数变量
连击数字:
  type: Text
  attribute:
    texts: "~&f{server.combo_count}"
    visible: "server.combo_count > 0 || var.combo_show"

推荐方式:开启 sync-variable 后用 {server.combo_count} 显示实时数字,特效包仅用于里程碑动画(如 5 连击闪光、10 连击特效)。

连击包触发条件

trigger: combo 的包定义按以下条件触发:

combo-repeatcombo-min触发时机
false5仅当连击数恰好达到 5 时触发一次
false0每一击都触发
true5(combo-max=10)5~10 连击范围内每一击都触发

连击特效仅发给攻击者自己。

死亡缓冲

在玩家受到致死伤害时拦截,给玩家一个可视化缓冲期后再真正死亡。

行为流程

  1. 检测伤害是否致死,是则取消伤害并进入缓冲状态
  2. 冻结玩家(无敌、无法移动、血量保留微量)
  3. 应用视觉效果(Shader、第三人称、预设相机、Chronos 状态)
  4. 触发 trigger: death 的包定义
  5. 缓冲时长结束后执行真正死亡

缓冲期间玩家受到的一切伤害都会被取消。玩家退出时自动清理缓冲状态。

视觉效果

效果配置项说明
Shadervisuals.shaderArcartX Shader 名称(灰度/模糊等)
第三人称视角visuals.third-person-camera切换到第三人称视角,缓冲结束后恢复
预设相机visuals.camera-presetArcartX 预设相机 ID
Chronos 状态visuals.chronos.enabled + visuals.chronos.state-id强制玩家进入指定 Chronos 状态

ArcartX 未安装时视觉效果不应用,但不影响缓冲流程。

缓冲配置

配置项默认值说明
death-buffer.duration3000缓冲持续时间(毫秒),最小 500
death-buffer.block-auto-respawntrue缓冲期间阻止其他插件触发的自动复活
death-buffer.world-blacklist[]不启用死亡缓冲的世界列表

死亡包接收者

接收者实际接收说明
target被击杀的玩家显示全屏死亡界面
attacker击杀者复用击杀特效 HUD 显示击杀提示

环境死亡(摔落、岩浆等)无击杀者,仅 target 接收者会收到死亡缓冲包。

按键触发器

监听 ArcartX 客户端按键事件,匹配 trigger: keybind 的包定义并发送特效。需要 ArcartX 安装且 keybind-trigger.enabled=true。

按键类型

按键类型配置值说明
客户端按键clientArcartX 标准按键绑定(支持按下/释放)
简易按键simple轻量按键(支持按下/释放)
按键组group按键组按下事件(无释放事件)

按键组仅有按下事件,key-action: release 对按键组类型无效。

匹配条件

匹配维度条件字段说明
按键名称key-name通配符匹配(* 匹配任意字符序列)
按键类型key-typeclient / simple / group
按键动作key-actionpress / release / both

按键触发示例

# 按下 attack_* 按键时触发技能爆发特效
skill-burst:
  enabled: true
  trigger: keybind
  ui-id: "AXS:combat_kill_effect"
  packet-handler: "attack"
  recipients:
    - attacker
  conditions:
    key-name: "attack_*"    # 匹配 attack_1, attack_2, attack_combo 等
    key-action: "press"     # 仅按下时触发
    key-type: "client"      # 仅客户端按键
  cooldown: 1000            # 1 秒冷却
  pack:
    player: "{player}"
    key_name: "{key_name}"

按键触发器的接收者始终为触发的玩家自身。变量替换支持 {player} 和 {key_name}。

状态/控制器触发器

监听 Chronos 状态进入/离开与控制器切换事件,匹配 trigger: state 和 trigger: controller 的包定义。需要 Chronos 安装且 state-trigger.enabled=true。

状态触发

state-action触发时机
enter进入状态时
leave离开状态时
both进入或离开均触发
匹配维度条件字段说明
状态 IDstate-id通配符匹配(* 匹配任意字符序列)
动作state-actionenter / leave / both
控制器过滤controller-id可选,通配符匹配;为空时不做控制器过滤

控制器触发

controller-id 配置匹配行为
未设置或为空匹配所有控制器切换
设置值(如 弓箭手)仅匹配指定控制器
通配符(如 mode_*)通配符匹配控制器 ID

状态/控制器触发示例

# 进入 "狂暴" 状态时触发特效
berserk-effect:
  enabled: true
  trigger: state
  ui-id: "AXS:combat_kill_effect"
  packet-handler: "attack"
  recipients:
    - attacker
  conditions:
    state-id: "狂暴"
    state-action: "enter"
  pack:
    player: "{player}"
    state_id: "{state_id}"
 
# 切换到 "弓箭手" 控制器时触发
archer-mode:
  enabled: true
  trigger: controller
  ui-id: "AXS:combat_kill_effect"
  packet-handler: "attack"
  recipients:
    - attacker
  conditions:
    controller-id: "弓箭手"
  pack:
    player: "{player}"
    controller_id: "{controller_id}"

状态触发器的接收者始终为触发的玩家自身。变量替换支持 {player}、{state_id} 和 {controller_id}。

冷却

连击追踪的包分发不使用冷却(由 combo-min / combo-max / combo-repeat 条件控制频率)。按键触发器和状态/控制器触发器均支持独立冷却,与包定义系统冷却行为一致。参考 包定义系统。

相关文档