要将KillTimes修改为动态的二维数组,可以使用一个表来存储每个session对应的次数。修改代码如下:
print(">>Script: Delete kill self RongYu.")
local KillTimes = { }
local function DelRongYu(event, killer, killed)
if killer:InBattleground() then --战场不扣除荣誉
return false
end
if killed:HasAura(2479) then --有荣誉30秒的CD光环,不扣荣誉
return false
end
if killer:GetPlayerIP() == killed:GetPlayerIP() then
if(killer:IsHonorOrXPTarget(killed)) then
killer:ModifyHonorPoints(-109)
killer:SendBroadcastMessage("同IP击杀不得荣誉")
return false
end
end
if killer:IsHonorOrXPTarget(killed) then
local session = killer:GetGUIDLow() * 65536 + killed:GetGUIDLow()
if KillTimes[session] == nil then
KillTimes[session] = 1
else
KillTimes[session] = KillTimes[session] + 1
end
if KillTimes[session] > 2 then
killer:ModifyHonorPoints(-109)
killer:SendBroadcastMessage("战场外击杀同一个对象2次以上不得荣誉。")
end
return false
end
end
RegisterPlayerEvent(6, DelRongYu) 复制代码
另外,对于KillTimes[session] == nil的判断,可以使用逻辑运算符or来简化判断和赋值的过程,如下:
KillTimes[session] = KillTimes[session] or 1 复制代码
这行代码相当于判断KillTimes[session]是否为nil,如果是nil,则将其赋值为1,否则不做任何操作。这样能够更加简洁和方便地实现赋值操作。