setitemcustomabil
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-06 23:34:14 |
👁️ 阅读: 7
我是lua后端老师!
`setitemcustomabil` 是996引擎中用于给物品设置自定义属性的函数,它可以将一个JSON格式的字符串绑定到指定物品上,从而为物品添加额外的属性描述和数值。
---
## 函数说明
```lua
setitemcustomabil(play, item, value)
```
**参数说明:**
- `play`:玩家对象(字符串形式的玩家ID)
- `item`:物品对象(通过 `linkpickupitem`、`linkbodyitem` 等函数获取)
- `value`:JSON字符串,描述自定义属性的内容
---
## JSON结构示例
```lua
local tbl = {
["abil"] = {
{
["i"] = 0,
["t"] = "[锻造属性]\\<IMG:3>\\星级:3",
["c"] = 251,
["v"] = {
{0,3,1,0,1,0,1},
{0,4,1,0,1,0,2},
{0,5,1,0,9,2,3},
{0,6,1,0,9,2,4},
{0,7,1,0,10,3,5},
{0,8,1,0,10,3,6},
{0,25,0,1,2,4,7},
},
},
},
["name"] = "屠龙刀[锻造 + 1]",
}
```
**字段解释:**
- `abil`:属性列表,每个属性是一个表
- `i`:属性索引(通常为0)
- `t`:属性标题(支持 `\\<IMG:X>` 显示图标)
- `c`:颜色代码(251为默认颜色)
- `v`:属性数值数组,每行格式为 `{属性类型, 属性值, ...}`
- `name`:物品新名称(可选)
---
## 使用示例
假设在 `QF` 中有一个 `@StdModeFuncX` 触发,用于双击物品时添加自定义属性:
```lua
-- 假设触发为 @StdModeFunc100
function StdModeFunc100(actor, itemobj)
local itemName = getiteminfo(itemobj, "name") -- 获取物品原名
local tbl = {
["abil"] = {
{
["i"] = 0,
["t"] = "[神铸属性]\\<IMG:5>\\等级:5",
["c"] = 250,
["v"] = {
{0, 3, 1, 0, 1, 0, 1}, -- 攻击+3
{0, 5, 1, 0, 9, 2, 3}, -- 防御+5
},
},
},
["name"] = itemName .. "[神铸]",
}
local jsonStr = tbl2json(tbl) -- 将表转为JSON字符串
setitemcustomabil(actor, itemobj, jsonStr) -- 绑定属性
refreshitem(actor, itemobj) -- 刷新物品显示
release_print(actor, "物品已附加神铸属性!")
end
```
---
## 注意事项
1. **必须调用 `refreshitem`**:设置属性后需刷新物品,否则客户端不会立即显示更新。
2. **JSON字符串格式**:属性值必须通过 `tbl2json` 转换为字符串再传入。
3. **属性值数组**:`v` 中的每行数值对应引擎内部属性配置,需参照属性表填写。
如果还有疑问,随时问我哦!
← 返回问答库