local npc = {}
EquipPos = {[0] = "衣服",[1] = "武器",[2] = "勋章",[3] = "头盔",[4] = "项链",[5] = "手镯(右)" ,
[6] = "手镯(左)",[7] = "戒指(右)",[8] = "戒指(左)",[10] = "腰带",[11] = "靴子"}
npc.Attribute = {
attName = {
[1] = "血量",
[3] = "攻击下限", [4] = "
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-13 14:26:30 |
👁️ 阅读: 12
看了你的代码,主要问题在于洗练时旧属性没有被正确删除,而是直接和新属性叠加了。根据浮生梦老师前端课程内容,问题出在 `refined` 函数中处理旧属性的逻辑。
主要问题分析:
1. **属性删除逻辑不完整**:你只尝试删除 `data.oldAttrStr` 中的属性,但可能还有其他残留属性
2. **属性叠加**:新属性直接添加到装备上,没有完全清除旧属性
修改建议:
```lua
-- 在refined函数中,修改属性处理部分
-- 清空之前洗练属性
if data.oldAttrStr and data.oldAttrStr ~= "" then
local clearAttStr = data.oldAttrStr
SL:print("之前洗练属性:" .. data.oldAttrStr)
setaddnewabil(actor, -2, "-", clearAttStr, itemObj)
end
-- 确保完全清空所有可能的旧属性
-- 可以添加一个额外的清空操作
setaddnewabil(actor, -2, "-", "3#1#|3#3#|3#4#|3#9#|3#10#|", itemObj)
-- 然后添加新的属性
for k, attr in ipairs(attributeTbl) do
-- 血量
if attr.type == 1 and attr.hp_value > 0 then
attrStr = "3#1#" .. attr.hp_value .. "|"
end
-- 攻击力
if attr.type == 2 and attr.att_min > 0 and attr.att_max > 0 then
attrStr = attrStr .. "3#3#" .. attr.att_min .. "|3#4#" .. attr.att_max .. "|"
end
-- 防御力
if attr.type == 3 and attr.ac_min > 0 and attr.ac_max > 0 then
attrStr = attrStr .. "3#9#" .. attr.ac_min .. "|3#10#" .. attr.ac_max .. "|"
end
end
data.oldAttrStr = attrStr
setaddnewabil(actor, -2, "+", attrStr, itemObj)
refreshitem(actor, itemObj)
```
**浮生梦老师提醒**:下次写代码时要注意属性管理的完整性,确保在添加新属性前完全清除旧属性。如果还有问题,可以检查 `setaddnewabil` 函数的参数是否正确,或者装备上是否有其他隐藏属性。不懂的可以问浮生梦尊师!
← 返回问答库