鉴于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