Can someone far more intelligent than me tell me what's wrong with my addon?

I have an addon that changes names of enemies when I’m in arena, I’ll post the full code below.

I get LUA error constantly, but I have no idea why. Here is the contents of the errors (there are 2 that occur)

Message: …rface\AddOns\NameChangeScripts\NameChangeScripts.lua:29: attempt to concatenate global ‘i’ (a nil value)
Time: Sun Jul 11 15:52:45 2021
Count: 64
Stack: …rface\AddOns\NameChangeScripts\NameChangeScripts.lua:29: attempt to concatenate global ‘i’ (a nil value)
[string “@Interface\AddOns\NameChangeScripts\NameChangeScripts.lua”]:29: in function <…rface\AddOns\NameChangeScripts\NameChangeScripts.lua:17>
[string “=[C]”]: ?
[string “=[C]”]: in function CompactUnitFrame_UpdateName' [string "@Interface\FrameXML\CompactUnitFrame.lua"]:315: in function <Interface\FrameXML\CompactUnitFrame.lua:305> [string "=[C]"]: in function CompactUnitFrame_UpdateAll’
[string “@Interface\FrameXML\CompactUnitFrame.lua”]:194: in function CompactUnitFrame_SetUnit' [string "@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua"]:417: in function OnAdded’
[string “@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua”]:118: in function `OnNamePlateAdded’
[string “@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua”]:56: in function <…e\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua:47>

Locals: F = {
0 =
WidgetContainer = {
}
classificationIndicator = {
}
castBar = {
}
maxDispelDebuffs = 0
inVehicle = false
ThreatPlates = true
optionTable = {
}
overAbsorbGlow = {
}
totalAbsorb = {
}
name = {
}
aggroHighlight = {
}
hideCastbar = false
myHealAbsorbRightShadow = {
}
overHealAbsorbGlow = {
}
newUnit = true
ignoreCUFNameRequirement = true
selectionHighlight = {
}
myHealAbsorbLeftShadow = {
}
maxDebuffs = 0
unit = “nameplate2”
unitExists = true
disableMouse = true
ClassificationFrame = {
}
healthBar = {
}
BuffFrame = {
}
RaidTargetFrame = {
}
LoseAggroAnim = {
}
hideHealthbar = false
maxBuffs = 0
myHealAbsorb = {
}
otherHealPrediction = {
}
totalAbsorbOverlay = {
}
displayedUnit = “nameplate2”
myHealPrediction = {
}
}
(*temporary) = defined =[C]:-1
(*temporary) = {
0 =
}
(*temporary) = “Paladin”
(*temporary) = “arena”
(*temporary) = nil
(*temporary) = “PALADIN”
(*temporary) = 2
(*temporary) = nil
(*temporary) = nil
(*temporary) = “attempt to concatenate global ‘i’ (a nil value)”
U = defined =[C]:-1

and:

Message: …rface\AddOns\NameChangeScripts\NameChangeScripts.lua:29: attempt to concatenate global ‘i’ (a nil value)
Time: Sun Jul 11 15:54:06 2021
Count: 66
Stack: …rface\AddOns\NameChangeScripts\NameChangeScripts.lua:29: attempt to concatenate global ‘i’ (a nil value)
[string “@Interface\AddOns\NameChangeScripts\NameChangeScripts.lua”]:29: in function <…rface\AddOns\NameChangeScripts\NameChangeScripts.lua:17>
[string “=[C]”]: ?
[string “=[C]”]: in function CompactUnitFrame_UpdateName' [string "@Interface\FrameXML\CompactUnitFrame.lua"]:315: in function <Interface\FrameXML\CompactUnitFrame.lua:305> [string "=[C]"]: in function CompactUnitFrame_UpdateAll’
[string “@Interface\FrameXML\CompactUnitFrame.lua”]:194: in function CompactUnitFrame_SetUnit' [string "@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua"]:417: in function OnAdded’
[string “@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua”]:118: in function `OnNamePlateAdded’
[string “@Interface\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua”]:56: in function <…e\AddOns\Blizzard_NamePlates\Blizzard_NamePlates.lua:47>

Locals: F = {
0 =
WidgetContainer = {
}
classificationIndicator = {
}
castBar = {
}
maxDispelDebuffs = 0
inVehicle = false
ThreatPlates = true
optionTable =

{
}
overAbsorbGlow = {
}
totalAbsorb = {
}
name = {
}
aggroHighlight = {
}
hideCastbar = false
myHealAbsorbRightShadow = {
}
overHealAbsorbGlow = {
}
newUnit = true
ignoreCUFNameRequirement = true
selectionHighlight = {
}
myHealAbsorbLeftShadow = {
}
maxDebuffs = 0
unit = “nameplate2”
unitExists = true
disableMouse = true
ClassificationFrame = {
}
healthBar = {
}
BuffFrame = {
}
RaidTargetFrame = {
}
LoseAggroAnim = {
}
hideHealthbar = false
maxBuffs = 0
myHealAbsorb = {
}
otherHealPrediction = {
}
totalAbsorbOverlay = {
}
displayedUnit = “nameplate2”
myHealPrediction = {
}
}
(*temporary) = defined =[C]:-1
(*temporary) = {
0 =
}
(*temporary) = “Druid”
(*temporary) = “arena”
(*temporary) = nil
(*temporary) = “DRUID”
(*temporary) = 11
(*temporary) = nil
(*temporary) = nil
(*temporary) = “attempt to concatenate global ‘i’ (a nil value)”
U = defined =[C]:-1

The full addon is here:

–[[ClassColors = {
{0.78, 0.61, 0.43}, – brown
{0.96, 0.55, 0.73}, – Pink
{0.67, 0.83, 0.45}, --Green
{1, 0.96, 0.41}, --Yellow
{1,1,1}, --white
{0, 0.44, 0.87}, --darkblue
{0, 0.44, 0.87}, --placeholder
{0.41, 0.80, 0.94}, --lightblue
{0.58, 0.51,0.79}, --purple
{0.58, 0.51,0.79}, --placeholder
{1, 0.49, 0.04} --orange
}–]]

local U=UnitIsUnit
hooksecurefunc(“CompactUnitFrame_UpdateName”,function(F)
if IsActiveBattlefieldArena()and F.unit:find(“nameplate”) then
for i=1,5 do
if U(F.unit,“arena”…i)then
F.name:SetText(UnitClass(F.unit) … " " … i)
F.name:SetTextColor(1,1,0)
break
end
end
end
–outside of arena class-name nameplates
if F.unit:find(“nameplate”) and UnitIsPlayer(F.unit) then
F.name:SetText(UnitClass(F.unit)(“arena”…i) … " " … i)
F.name:SetTextColor(1,1,0)
end
end)
TCC = CreateFrame(“Frame”, “TargetColorChange”)
local function ChangeTargetColor()
local player = UnitIsPlayer(“target”)
local targetClassName, targetClassFileName, targetClassId = UnitClass(“target”)

-- places arena numbers on targets

for i=1,5 do
if UnitIsUnit(“target”,“arena”…i) then
TargetFrame.name:SetText(UnitClass(“arena”…i) … " " … i)
elseif UnitIsUnit(“target”, “party”…i) then
TargetFrame.name:SetText(“Party” … " " … i … “**”)
end
end

local function targetVertexColor(r,g,b)
    TargetFrameNameBackground:SetVertexColor(r,g,b)
end
-- Class-Colored Player Target Frame
--[[for i=1,11 do
    local r
    local g
    local b
    if i ~= 6 and i ~= 10 then
        for j=1,3 do
            if j == 1 then
                r = ClassColors[i][j]
            end
            if j == 2 then
                g = ClassColors[i][j]
            end
            if j == 3 then
                b = ClassColors[i][j]
            end
        end
        if targetClassId == i and player then
            targetVertexColor(r,g,b)
        end
    end
end--]]

end

TCC:SetScript(“OnUpdate”, ChangeTargetColor)

FCC = CreateFrame(“Frame”, “FocusColorChange”)
local function ChangeFocusColor()
local focusClassName, focusClassFileName, focusClassId = UnitClass(“focus”)
local player = UnitIsPlayer(“focus”)
–show arena numbers on focus
for i=1,5 do
if UnitIsUnit(“focus”,“arena”…i) then
FocusFrame.name:SetText(UnitClass(“arena”…i) … " " … i)
end
end
local function focusVertexColor(r,g,b)
FocusFrameNameBackground:SetVertexColor(r,g,b)
end
– Class-Colored Focus Frame
–[[for i=1,11 do
local r
local g
local b
if i ~= 6 and i ~= 10 then
for j=1,3 do
if j == 1 then
r = ClassColors[i][j]
end
if j == 2 then
g = ClassColors[i][j]
end
if j == 3 then
b = ClassColors[i][j]
end
end
if focusClassId == i and player then
focusVertexColor(r,g,b)
end
end
end–]]

end
FCC:SetScript(“OnUpdate”, ChangeFocusColor)

Hey there Wixzy

A lot has happened since 2012 when that addon was last updated. These error in particular are related to GetNumPartyMembers() being replaced by GetNumSubgroupMembers().

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.