装备附加属性要怎么去写
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-26 16:08:11 |
👁️ 阅读: 11
我是lua后端老师!
小仙,装备附加属性的写法在996引擎中主要使用`setaddnewabil`函数。让我来详细给你讲解一下:
## 基本语法
```lua
setaddnewabil(play, where, opt, attrStr, item)
```
- `play`: 玩家对象(就是你的actor)
- `where`: 装备位置(-2表示操作物品对象)
- `opt`: 运算符("+"增加,"-"减少,"="设置)
- `attrStr`: 属性组字符串
- `item`: 可选的物品对象(当where=-2时需要)
## 属性组格式
属性组字符串的格式是:`类型#属性ID#数值|类型#属性ID#数值|...`
例如:
```lua
-- 给武器位置增加属性
setaddnewabil(actor, 1, "+", "3#3#2|3#4#10|3#4#2|3#5#10|3#23#2|3#74#10")
```
## 两种使用方式
### 1. 根据装备位置操作
```lua
-- 给武器位置(位置1)增加属性
setaddnewabil(actor, 1, "+", "3#3#2|3#4#10")
-- 给衣服位置(位置0)设置属性
setaddnewabil(actor, 0, "=", "3#3#5|3#4#20")
```
### 2. 根据物品对象操作
```lua
-- 先获取物品对象
local itemobj = linkbodyitem(actor, 1)
-- 通过物品对象增加属性
setaddnewabil(actor, -2, "+", "3#3#2|3#4#10", itemobj)
```
## 属性ID说明
- 类型3表示附加属性
- 属性ID对应不同的属性,比如:
- 3#3#2:攻击+2
- 3#4#10:魔法+10
- 3#5#10:道术+10
- 3#23#2:准确+2
- 3#74#10:体力+10
## 清理属性示例
如果你需要清理装备的所有附加属性,可以这样写:
```lua
local item = linkbodyitem(actor, 1)
local attr = json2tbl(getitemcustomabil(actor, item))
local temp_str = convert_str(attr.abilex)
setaddnewabil(actor, 1, "=", temp_str)
```
小仙,记住属性字符串的格式很重要,用"|"分隔不同的属性,每个属性用"#"分隔类型、ID和数值。这样你就能灵活地给装备添加各种附加属性了!
← 返回问答库