关于物品链接在人物等级提升时需要做的处理

鉴于3.0中,BLZ为ItemString增加了第九个字段,用以标志人物等级,所以当人物升级时,如果你使用物品链接作为保存数据的话,那么将会失效。以下是升级物品链接的方法。

物品链接:  link = "|cff9d9d9d|Hitem:7073:0:0:0:0:0:0:0:68|h[Broken Fang]|h|r"

上面红字部分就是人物等级。因为它的位置特殊(前:后|),可以使用下面的语句获取到

local _,_,level = string.find(link, "%:(%d+)\124")

PS. \124就是"|",这里获取的level就是人物等级

然后我们就可以做替换,但是别忘了,先做检查,避免用于非物品时出错。

if level then
    level = level + 1
    link = string.gsub(link, "%:(%d+)\124", "%:"..level.."\124")
end

即可,这里使用level = level + 1 而不取人物等级的做法,是因为如果监视PLAYER_LEVEL_UP事件,事件发生时,人物等级还是原来的,为了避免出错,就直接使用link的数据计算了,写成函数如下

local function UpdateLink(link)
    if not link or link == "" then
        return link
    end
    local _,_,level = string.find(link, "%:(%d+)\124")
    if level then
        level = level + 1
        return string.gsub(link, "%:(%d+)\124", "%:"..level.."\124")
    else
        return link
    end
end