• Error by opening Scoreboard
    1 replies, posted
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 [code] tags int he future.
Sorry, you need to Log In to post a reply to this thread.