Skip to content

这页不讲 Buff 原理,只做一件事:

当你已经知道 HNAttribute 的 Buff 是什么,但想快速确认字段怎么写、什么值最常用、改完后该怎么验证时,直接查这一页。

如果你还没理解 Buff 在系统里的定位,先看:

如果你想直接拿一批常见模板开改,再看:

如果你要看 DOT / HOT / 周期实例,先看:


一、最小可用 Buff 模板

yml
新手力量:
  display: "&c新手力量"
  default-time: 120
  reapply-mode: REFRESH
  attributes:
    attack_damage:
      operation: ADD
      formula: "10 + level * 5"  # 智能解析,无需指定 mode

这 4 块就是最小核心:

  • display
  • default-time
  • reapply-mode
  • attributes

二、文件放哪里

默认目录:

text
plugins/HNAttribute/buffs/

常见组织方式:

text
plugins/HNAttribute/buffs/default.yml
plugins/HNAttribute/buffs/pve.yml
plugins/HNAttribute/buffs/pvp.yml
plugins/HNAttribute/buffs/boss.yml
plugins/HNAttribute/buffs/test.yml

只要记住:

  • buffs/ 下可以拆多个文件
  • 每个文件里可以定义多个 Buff
  • Buff key 在整个目录里必须唯一
  • key 重复时,后加载定义会覆盖前面的定义
  • 改完后通常执行:
text
/hnattr reload

三、字段速查

字段是否常用作用常见写法
displayBuff 显示名"&c力量提升"
default-time默认持续 tick100 / 120 / 200
reapply-mode重施策略REFRESH / IGNORE / REPLACE
attributesBuff 实际改哪些属性attack_damage / defense
operation属性修饰运算方式ADD / MULTIPLY_BASE / MULTIPLY_TOTAL
formula数值公式字符串或 mode + script

四、display

yml
display: "&c力量提升"

作用:

  • /hnattr buffs 里展示名字
  • 调试输出里更易读

如果不写:

  • 会回退成 Buff key

最稳建议:

  • key 用稳定英文/业务键
  • display 用玩家可读文本

五、default-time

yml
default-time: 100

单位是 tick

快速换算:

  • 20 = 1 秒
  • 100 = 5 秒
  • 200 = 10 秒
  • 600 = 30 秒

它的意义是:

  • 当命令 / Mythic / API 没显式传入 time 时,使用这个默认值

如果你命令里显式写了时间,例如:

text
/hnattr buff apply 力量提升 200 1

那会优先使用命令传入值。


六、reapply-mode

yml
reapply-mode: REFRESH

最常用的就是这 3 个:

模式适合什么时候用直觉理解
REFRESH大多数普通 Buff同 key 再挂一次时刷新持续时间/状态
IGNORE不希望重复覆盖的状态已经有了就忽略新的
REPLACE明确想用新效果覆盖旧效果老的退掉,新的顶上

新手最稳默认值:

  • 优先用 REFRESH

典型场景:

想做“持续续杯型”增益

yml
reapply-mode: REFRESH

想做“已有就不再重复挂”的状态

yml
reapply-mode: IGNORE

想做“高等级同名 Buff 顶掉旧 Buff”

yml
reapply-mode: REPLACE

七、attributes

这是 Buff 最核心的部分。

yml
attributes:
  attack_damage:
    operation: ADD
    formula: "20 + level * 10"
  crit_chance:
    operation: ADD
    formula: "5 + level * 2"

意思是:

  • 这个 Buff 同时改两条属性
  • 每条属性各自算自己的公式
  • 最后统一以 buff:<key> 这个来源进入属性系统

属性 ID 要注意什么

attributes 下面的 key 必须是已经注册过的属性 ID

例如:

  • attack_damage
  • defense
  • crit_chance
  • damage_reduction

如果写了不存在的属性:

  • 这条不会变成有效 Buff 属性
  • 重载时一般会在日志里给出警告

最稳的排查方式:

text
/hnattr info
/hnattr trace <属性ID>

八、operation

yml
operation: ADD

当前常见运算方式:

operation用途常见场景
ADD直接加值攻击力 +20、防御 +50
MULTIPLY_BASE按基础值乘算少量比例型修正
MULTIPLY_TOTAL按最终值乘算最终倍率型 Buff

最稳建议

如果你刚开始配:

  • 优先用 ADD

因为:

  • 最容易理解
  • 最不容易叠出意外结果
  • 最方便配合 trace 排查

九、formula

写法 A:直接写字符串

yml
formula: "20 + level * 10"

写法 B:显式写 mode + script

yml
formula:
  mode: expression
  script: "20 + level * 10"

当前 Buff 公式里常见可用变量:

  • level
  • amplifier
  • time
  • duration

最常见的起手公式:

yml
formula: "10 + level * 5"

推荐什么时候显式写 mode

当你只是普通表达式时:

  • 直接字符串就够用

当你想让别人一眼看出这是脚本结构,或者你准备以后扩成别的脚本模式时:

  • mode + script 更清楚

十、最常抄的 4 类模板

1)纯攻击 Buff

yml
力量提升:
  display: "&c力量提升"
  default-time: 100
  reapply-mode: REFRESH
  attributes:
    attack_damage:
      operation: ADD
      formula: "20 + level * 10"

2)纯防御 Buff

yml
钢铁护体:
  display: "&7钢铁护体"
  default-time: 80
  reapply-mode: REPLACE
  attributes:
    defense:
      operation: ADD
      formula: "50 + level * 25"

3)双属性 Buff

yml
狂战姿态:
  display: "&c狂战姿态"
  default-time: 120
  reapply-mode: REFRESH
  attributes:
    attack_damage:
      operation: ADD
      formula: "15 + level * 8"
    crit_chance:
      operation: ADD
      formula: "4 + level * 2"

4)带上限的减伤 Buff

yml
守护屏障:
  display: "&b守护屏障"
  default-time: 100
  reapply-mode: REFRESH
  attributes:
    damage_reduction:
      operation: ADD
      formula: "min(30, 10 + level * 3)"

十一、改完后怎么验证

最稳顺序:

text
/hnattr reload
/hnattr buff list
/hnattr buff apply <key> 100 1
/hnattr buffs
/hnattr source
/hnattr trace <属性ID>

分别在看:

  1. reload:配置有没有正常读入
  2. buff list:模板有没有注册成功
  3. buff apply:运行时能不能挂上
  4. buffs:当前目标身上是否真有这个 Buff
  5. source:来源里有没有 buff:<key>
  6. trace:具体属性值是不是按预期进去了

十二、最常见的 6 个坑

1)写了 Buff 但没 reload

先执行:

text
/hnattr reload

2)属性 ID 写错

先检查:

text
/hnattr info

3)Buff 已挂上,但 trace 里没变化

先看:

text
/hnattr buffs
/hnattr source
/hnattr trace <属性ID>

4)重复施加时行为不对

先回头检查:

  • reapply-mode

5)显示名对了,但数值不对

优先怀疑:

  • formula
  • operation
  • 属性 ID 是否写错

6)把 Buff 和 DOT/HOT 当成同一种东西

如果你真正想做的是:

  • 持续掉血
  • 持续回血
  • 定时触发动作

那应该优先去看:


十三、一句话记忆版

Buff 最小配置只要记 4 个:displaydefault-timereapply-modeattributes;排查顺序固定是 reload -> buff list -> buff apply -> buffs -> source -> trace

HN 系列插件文档