996引擎 ADDATTLIST 命令详解:通过字符串分组增加和删除属性值

ADDATTLIST 命令说明

996引擎里想要动态给角色加属性,一般用的是 ChangeHumAbility 或者 ChangeModeEx 这类命令,一条一条写。属性少还好,属性一多,脚本写起来就很长,改起来也烦。

ADDATTLIST 这个命令就是解决这个问题的。它用字符串的方式一次性把多个属性批量加到角色身上,还能按组管理,需要的时候整组清掉。做过套装系统、BUFF系统、称号系统的应该能直接理解这个用法。

命令格式

ADDATTLIST 参数1 参数2 参数3 参数4

  • 参数1:自定义属性组名称(随便起个名字,比如叫 至尊BUFF)
  • 参数2:操作符(+ 增加属性,- 减少属性,= 覆盖属性)
  • 参数3:属性字符串,格式为 3#属性ID#数值,多个属性用 | 隔开。例如:3#1#100|3#2#100|3#3#10|3#4#10
  • 参数4:0 或不填 = 会计算套装属性加成;1 = 直接给固定值,不计算套装属性(注意:设为1时百分比增幅类属性无效)

属性对照表参考 cfg_item.xls 装备配置表里的属性ID,那个表里有所有支持的属性编号。

属性字符串格式拆解

3#1#100|3#2#100|3#3#10|3#4#10 为例:

  • 3#1#100 = 增加攻击力100
  • 3#2#100 = 增加魔法力100
  • 3#3#10 = 增加道术10
  • 3#4#10 = 增加防御力10

中间用 | 连起来,引擎会逐个解析执行。

GETATTLIST 获取属性组数值

格式:GETATTLIST 参数1 参数2

  • 参数1:自定义属性组名称
  • 参数2:存储变量

把指定属性组的数值读出来存到变量里。可以用来做判断,比如检查某个BUFF是否生效。

DELATTLIST 清除属性组

格式:DELATTLIST 参数1

  • 参数1为空 = 清除角色身上所有自定义属性组
  • 参数1填具体名称 = 只清除指定的属性组

卸装、BUFF到期、称号取消这些场景用得比较多。

实际脚本示例

1. 计算套装属性加成

[@计算套装属性加成]
#IF
#ACT
ADDATTLIST 属性组1 + 3#1#100|3#2#100|3#3#10|3#4#10

参数4不填(默认0),会根据角色当前套装数额外计算加成。适合用在套装效果、转生系统这类跟套装挂钩的场景。

2. 不计算套装属性

[@不计算套装属性]
#IF
#ACT
; 参数4为1,直接加固定值,百分比增幅属性无效
ADDATTLIST 属性组2 + 3#1#100|3#2#100|3#3#10|3#4#10 1

参数4设为1。这里的百分比增幅属性无效要注意一下,如果你用的是百分比类型的属性(比如攻击力+5%),设成1就加不上去。固定数值的属性没问题。

3. 清除指定属性组

[@清除属性组]
#IF
#ACT
DELATTLIST 属性组1

只清掉属性组1加的属性,其他组不受影响。

4. 获取属性组数值

[@获取属性组数值]
#IF
#ACT
GETATTLIST 属性组1 S0

把属性组1的数值读进变量 S0,之后可以用 #IF 判断。

几个需要注意的地方

  • 属性ID要对:属性字符串里的ID必须跟 cfg_item.xls 里的对照表一致,写错了不生效也不会报错。
  • 组名区分大小写:属性组1和属性组A是两个不同的组。
  • 减属性用 -:如果想减掉某个属性,操作符换成减号就行,数值填正数。
  • 覆盖用 =:等号会把该组属性重置为新的值,不是在原来的基础上加减。
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容