Error by opening Scoreboard

Hello, i got this Error when I open the scoreboard on my server.

[ERROR] gamemodes/terrortown/gamemode/vgui/sb_team.lua:76: attempt to index global ‘sboard_panel’ (a nil value)

  1. unknown - gamemodes/terrortown/gamemode/vgui/sb_team.lua:76

Its spamming the console full.

sb_team.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
– Draw for odd numbered columns
for i=1, #sboard_panel.cols, 2 do
surface.DrawRect(self:GetWide() - (50*i) - 25 - scr, 0, 50, self:GetTall())
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()
  ScoreboardCommands_Add( row )
  --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”)

Make sure you don’t alter the core files, if you make changes use an addon with the file you change in the addon folder in the same directory so the addon will overwrite the game-mode file…

Revert to default and update… Also, please use


 tags int he future.