Please help me , script error bugging my server

[ERROR] gamemodes/terrortown/gamemode/vgui/sb_team.lua:81: attempt to perform arithmetic on field ‘Width’ (a nil value)

  1. unknown - gamemodes/terrortown/gamemode/vgui/sb_team.lua:81
    That ^^^^ keeps appearing in my console while on my server.

[lua]---- Unlike sandbox, we have teams to deal with, so here’s an extra panel in the
---- hierarchy that handles a set of player rows belonging to its team.

include(“sb_row.lua”)

local function CompareScore(pa, pb)
if not ValidPanel(pa) then return false end
if not ValidPanel(pb) then return true end

local a = pa:GetPlayer()
local b = pb:GetPlayer()

if not IsValid(a) then return false end
if not IsValid(b) then return true end

if a:Frags() == b:Frags() then return a:Deaths() < b:Deaths() end

return a:Frags() > b:Frags()
end

local PANEL = {}

function PANEL:Init()
self.name = “Unnamed”

self.color = COLOR_WHITE

self.rows = {}
self.rowcount = 0

self.rows_sorted = {}

self.group = “spec”
end

function PANEL:SetGroupInfo(name, color, group)
self.name = name
self.color = color
self.group = group
end

local bgcolor = Color(20,20,20, 150)
function PANEL:Paint()
– Darkened background
draw.RoundedBox(8, 0, 0, self:GetWide(), self:GetTall(), bgcolor)

surface.SetFont(“treb_small”)

– Header bg
local txt = self.name … " (" … self.rowcount … “)”
local w, h = surface.GetTextSize(txt)
draw.RoundedBox(8, 0, 0, w + 24, 20, self.color)

– Shadow
surface.SetTextPos(11, 11 - h/2)
surface.SetTextColor(0,0,0, 200)
surface.DrawText(txt)

– Text
surface.SetTextPos(10, 10 - h/2)
surface.SetTextColor(255,255,255,255)
surface.DrawText(txt)

– Alternating row background
local y = 24
for i, row in ipairs(self.rows_sorted) do
if (i % 2) != 0 then
surface.SetDrawColor(75,75,75, 100)
surface.DrawRect(0, y, self:GetWide(), row:GetTall())
end

y = y + row:GetTall() + 1
end

– Column darkening
local scr = sboard_panel.ply_frame.scroll.Enabled and 16 or 0
surface.SetDrawColor(0,0,0, 80)
if sboard_panel.cols then
local cx = self:GetWide() - scr
for k,v in ipairs(sboard_panel.cols) do
cx = cx - v.Width
if k % 2 == 1 then – Draw for odd numbered columns
surface.DrawRect(cx-v.Width/2, 0, v.Width, self:GetTall())
end
end
else
– If columns are not setup yet, fall back to darkening the areas for the
– default columns
surface.DrawRect(self:GetWide() - 175 - 25 - scr, 0, 50, self:GetTall())
surface.DrawRect(self:GetWide() - 75 - 25 - scr, 0, 50, self:GetTall())
end
end

function PANEL:AddPlayerRow(ply)
if ScoreGroup(ply) == self.group and not self.rows[ply] then
local row = vgui.Create(“TTTScorePlayerRow”, self)
row:SetPlayer(ply)
self.rows[ply] = row
self.rowcount = table.Count(self.rows)

– row:InvalidateLayout()

– must force layout immediately or it takes its sweet time to do so
self:PerformLayout()
–self:InvalidateLayout()
end
end

function PANEL:HasPlayerRow(ply)
return self.rows[ply] != nil
end

function PANEL:HasRows()
return self.rowcount > 0
end

function PANEL:UpdateSortCache()
self.rows_sorted = {}
for k,v in pairs(self.rows) do
table.insert(self.rows_sorted, v)
end

table.sort(self.rows_sorted, CompareScore)
end

function PANEL:UpdatePlayerData()
local to_remove = {}
for k,v in pairs(self.rows) do
– Player still belongs in this group?
if ValidPanel(v) and IsValid(v:GetPlayer()) and ScoreGroup(v:GetPlayer()) == self.group then
v:UpdatePlayerData()
else
– can’t remove now, will break pairs
table.insert(to_remove, k)
end
end

if #to_remove == 0 then return end

for k,ply in pairs(to_remove) do
local pnl = self.rows[ply]
if ValidPanel(pnl) then
pnl:Remove()
end

– print(CurTime(), “Removed player”, ply)

self.rows[ply] = nil
end
self.rowcount = table.Count(self.rows)

self:UpdateSortCache()

self:InvalidateLayout()
end

function PANEL:PerformLayout()
if self.rowcount < 1 then
self:SetVisible(false)
return
end

self:SetSize(self:GetWide(), 30 + self.rowcount + self.rowcount * SB_ROW_HEIGHT)

– Sort and layout player rows
self:UpdateSortCache()

local y = 24
for k, v in ipairs(self.rows_sorted) do
v:SetPos(0, y)
v:SetSize(self:GetWide(), v:GetTall())

y = y + v:GetTall() + 1
end

self:SetSize(self:GetWide(), 30 + (y - 24))
end

vgui.Register(“TTTScoreGroup”, PANEL, “Panel”)[/lua]

That is my sb_team.lua file

[lua]-- Column darkening
local scr = sboard_panel.ply_frame.scroll.Enabled and 16 or 0
surface.SetDrawColor(0,0,0, 80)
if sboard_panel.cols then
local cx = self:GetWide() - scr
for k,v in ipairs(sboard_panel.cols) do
cx = cx - v.Width
if k % 2 == 1 then – Draw for odd numbered columns
surface.DrawRect(cx-v.Width/2, 0, v.Width, self:GetTall())
end
end
else
– If columns are not setup yet, fall back to darkening the areas for the
– default columns
surface.DrawRect(self:GetWide() - 175 - 25 - scr, 0, 50, self:GetTall())
surface.DrawRect(self:GetWide() - 75 - 25 - scr, 0, 50, self:GetTall())
end
end[/lua]

please help me

[editline]27th February 2015[/editline]

BTW this is for a TTT server

Please wrap your code in


 tags when you ask for help. Thanks.

Back to op, do you have a custom hud?

How do i wrap in code tags? Also no I don’t have a custom HUD but I have changed it so that ranks and rank colours are on the scoreboard.

[noparse][lua]my code
here[/lua][/noparse]

Like that

OK so like thuis [lua]CODE[/lua] also plz may you help me

I remember facepunch when it had rules against kid talk, like plz xD or llol. And also bad grammer. What happend to that?