写一下显示自定义属性 201 202 203 204
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-07 00:46:01 |
👁️ 阅读: 6
我是lua后端老师!小仙,你想显示自定义属性201、202、203、204对吧?这个功能通常用在装备鉴定、属性显示或者自定义UI上。我们可以通过`changecustomitemabil`和`changecustomitemvalue`这两个函数来实现。
下面我写一个完整的示例函数,它会为指定的装备对象添加这四个自定义属性:
```lua
-- 显示自定义属性201-204到装备上
function ShowCustomAttributes201_204(actor, itemobj)
-- 参数检查
if actor == nil or itemobj == nil then
release_print("错误:玩家或物品对象为空")
return
end
-- 获取物品信息(用于调试)
local itemidx = getiteminfo(actor, itemobj, 2)
local itemName = getstditeminfo(itemidx, 1)
release_print("开始为物品", itemName, "添加自定义属性201-204")
-- 定义要添加的属性ID和值
local attributes = {
{attrId = 201, attrValue = 50, displayPos = 0}, -- 属性201,值50,显示位置0
{attrId = 202, attrValue = 30, displayPos = 1}, -- 属性202,值30,显示位置1
{attrId = 203, attrValue = 20, displayPos = 2}, -- 属性203,值20,显示位置2
{attrId = 204, attrValue = 15, displayPos = 3} -- 属性204,值15,显示位置3
}
-- 循环添加每个属性
for i, attr in ipairs(attributes) do
local weizhi = attr.displayPos -- 属性位置(0-9)
local attrIndex = attr.attrId -- 属性ID
local attrValue = attr.attrValue -- 属性值
-- 第一步:设置属性颜色(绑定类型0)
-- 251是金色,你可以根据需要修改颜色值(0-255)
changecustomitemabil(actor, itemobj, weizhi, 0, 251, 0)
-- 第二步:绑定属性ID(绑定类型1)
-- 这里绑定的是cfg_att_score.xls表中的属性ID
changecustomitemabil(actor, itemobj, weizhi, 1, attrIndex, 0)
-- 第三步:设置是否为百分比属性(绑定类型3)
-- 0=不是百分比,1=是百分比,这里设为0表示固定值
changecustomitemabil(actor, itemobj, weizhi, 3, 0, 0)
-- 第四步:设置显示位置(绑定类型4)
-- 确保同一行的属性显示位置相同
changecustomitemabil(actor, itemobj, weizhi, 4, weizhi, 0)
-- 第五步:设置属性值
-- "+"表示增加,attrValue是具体的数值
changecustomitemvalue(actor, itemobj, weizhi, "+", attrValue, 0)
release_print(" 已添加属性", attrIndex, ",值:", attrValue, ",位置:", weizhi)
end
-- 最后刷新物品显示
refreshitem(actor, itemobj)
release_print("属性添加完成,物品已刷新显示")
end
-- 使用示例:在某个触发器中调用
-- 比如在双击物品的stdmodefunc触发中
function stdmodefunc_10(actor)
-- 获取玩家身上的武器(位置1)
local itemobj = linkbodyitem(actor, 1)
if itemobj then
-- 调用函数显示自定义属性
ShowCustomAttributes201_204(actor, itemobj)
-- 可以添加一些提示信息
sendmsg(actor, "装备已附加自定义属性201-204!", 1)
else
sendmsg(actor, "请先装备武器!", 1)
end
end
```
**使用说明:**
1. **参数解释:**
- `actor`:玩家对象(就是触发时传过来的玩家ID)
- `itemobj`:要修改的物品对象
- `weizhi`:属性位置(0-9),每个装备最多10个自定义属性
- `attrIndex`:属性ID(201、202、203、204这些)
- `attrValue`:属性值(比如攻击力+50)
2. **绑定类型说明:**
- 类型0:设置属性显示颜色
- 类型1:绑定属性表ID(最重要)
- 类型3:设置是否为百分比属性
- 类型4:设置显示位置
3. **重要提醒:**
- 确保`cfg_att_score.xls`表中有ID为201、202、203、204的属性定义
- 属性值可以是固定值,也可以是百分比(通过类型3设置)
- 每次修改后记得调用`refreshitem`刷新显示
4. **扩展用法:**
你可以修改函数,让属性值根据玩家等级、VIP等级等动态计算:
```lua
-- 动态计算属性值示例
local playerLevel = getlevel(actor)
local attrValue = math.floor(playerLevel * 0.5 + 10) -- 根据等级计算
```
小仙,这个示例应该能满足你的需求。如果你想让属性显示更美观,可以调整颜色值(251是金色,253是红色,254是绿色等)。或者想做成随机属性,也可以在里面加入随机数生成。
有什么不明白的随时问我,或者请教浮生梦尊师!
← 返回问答库