ScoreBoard Help

I would like the ranks to move away from karma. Can you guys help me? I’m going to make long named ranks and they go over the numbers. Thanks


 
---- Scoreboard player score row, based on sandbox version
 
include("sb_info.lua")
 
 
local GetTranslation = LANG.GetTranslation
local GetPTranslation = LANG.GetParamTranslation
 
 
SB_ROW_HEIGHT = 24 --16
 
local PANEL = {}
 
function PANEL:Init()
   -- cannot create info card until player state is known
   self.info = nil
 
   self.open = false
 
   self.cols = {}
   self.cols[1] = vgui.Create("DLabel", self)
   self.cols[1]:SetText(GetTranslation("sb_ping"))
 
   self.cols[2] = vgui.Create("DLabel", self)
   self.cols[2]:SetText(GetTranslation("sb_deaths"))
 
   self.cols[3] = vgui.Create("DLabel", self)
   self.cols[3]:SetText(GetTranslation("sb_score"))
   
  self.cols[5] = vgui.Create("DLabel", self)
  self.cols[5]:SetText("User")
 
   if KARMA.IsEnabled() then
      self.cols[4] = vgui.Create("DLabel", self)
      self.cols[4]:SetText(GetTranslation("sb_karma"))
   end
 
   for _, c in ipairs(self.cols) do
      c:SetMouseInputEnabled(false)
   end
 
   self.tag = vgui.Create("DLabel", self)
   self.tag:SetText("")
   self.tag:SetMouseInputEnabled(false)
 
   self.sresult = vgui.Create("DImage", self)
   self.sresult:SetSize(16,16)
   self.sresult:SetMouseInputEnabled(false)
 
   self.avatar = vgui.Create( "AvatarImage", self )
   self.avatar:SetSize(SB_ROW_HEIGHT, SB_ROW_HEIGHT)
   self.avatar:SetMouseInputEnabled(false)
 
   self.nick = vgui.Create("DLabel", self)
   self.nick:SetMouseInputEnabled(false)
 
   self.voice = vgui.Create("DImageButton", self)
   self.voice:SetSize(16,16)
 
   self:SetCursor( "hand" )
end
 
----EDIT THESE TO ADD MORE COLOURS----
----Example: test = COLOR_BLUE----
---Make sure to put a comma after each line until the end (Last one doesn't have one---
 
local namecolor = {
   default = COLOR_WHITE,
   admin = Color(220, 180, 0, 255),
   dev = Color(100, 240, 105, 255),
   test = COLOR_BLUE,
   purple = COLOR_PURPLE,
   red = COLOR_RED,
   yellow = COLOR_YELLOW,
   orange = COLOR_ORANGE,
   grey = COLOR_GREY,
   brown = COLOR_BROWN,
   green = COLOR_GREEN
   };
 
function GM:TTTScoreboardColorForPlayer(ply)
   if not IsValid(ply) then return namecolor.default end
 
   --ADD NAMECOLOURS HERE--
   if ply:SteamID() == "STEAM_0:0:1963640" then
      return namecolor.dev
   elseif ply:IsAdmin() and GetGlobalBool("ttt_highlight_admins", true) then
      return namecolor.admin
   elseif ply:IsUserGroup("superadmin") then
                return namecolor.test
   end
   return namecolor.default
end
 
local function ColorForPlayer(ply)
   if IsValid(ply) then
      local c = hook.Call("TTTScoreboardColorForPlayer", GAMEMODE, ply)
 
      -- verify that we got a proper color
      if c and type(c) == "table" and c.r and c.b and c.g and c.a then
         return c
      else
         ErrorNoHalt("TTTScoreboardColorForPlayer hook returned something that isn't a color!
")
      end
   end
   return namecolor.default
end
 
function PANEL:Paint()
   if not IsValid(self.Player) then return end
 
--   if ( self.Player:GetFriendStatus() == "friend" ) then
--      color = Color( 236, 181, 113, 255 )
--   end
 
   local ply = self.Player
 
   if ply:IsTraitor() then
      surface.SetDrawColor(255, 0, 0, 30)
      surface.DrawRect(0, 0, self:GetWide(), SB_ROW_HEIGHT)
   elseif ply:IsDetective() then
      surface.SetDrawColor(0, 0, 255, 30)
      surface.DrawRect(0, 0, self:GetWide(), SB_ROW_HEIGHT)
   end
 
 
   if ply == LocalPlayer() then
      surface.SetDrawColor( 200, 200, 200, math.Clamp(math.sin(RealTime() * 2) * 50, 0, 100))
      surface.DrawRect(0, 0, self:GetWide(), SB_ROW_HEIGHT )
   end
 
   return true
end
 
function PANEL:SetPlayer(ply)
   self.Player = ply
   self.avatar:SetPlayer(ply)
 
   if not self.info then
      local g = ScoreGroup(ply)
      if g == GROUP_TERROR and ply != LocalPlayer() then
         self.info = vgui.Create("TTTScorePlayerInfoTags", self)
         self.info:SetPlayer(ply)
 
         self:InvalidateLayout()
      elseif g == GROUP_FOUND or g == GROUP_NOTFOUND then
         self.info = vgui.Create("TTTScorePlayerInfoSearch", self)
         self.info:SetPlayer(ply)
         self:InvalidateLayout()
      end
   else
      self.info:SetPlayer(ply)
 
      self:InvalidateLayout()
   end
 
   self.voice.DoClick = function()
                           if IsValid(ply) and ply != LocalPlayer() then
                              ply:SetMuted(not ply:IsMuted())
                           end
                        end
 
   self:UpdatePlayerData()
end
 
function PANEL:GetPlayer() return self.Player end
 
function PANEL:UpdatePlayerData()
   if not IsValid(self.Player) then return end
 
   local ply = self.Player
   self.cols[1]:SetText(ply:Ping())
   self.cols[2]:SetText(ply:Deaths())
   self.cols[3]:SetText(ply:Frags())
 
   if self.cols[4] then
      self.cols[4]:SetText(math.Round(ply:GetBaseKarma()))
   end
 
   self.nick:SetText(ply:Nick())
   self.nick:SizeToContents()
   self.nick:SetTextColor(ColorForPlayer(ply))
   
   
        if ply:IsUserGroup("superadmin") then
                self.cols[5]:SetText("Super Admin")
                self.cols[5]:SetTextColor(namecolor.test)
	            elseif ply:IsUserGroup("owner") then
                self.cols[5]:SetText("Owner")
                self.cols[5]:SetTextColor(namecolor.red)
				elseif ply:IsUserGroup("gold_donator") then
                self.cols[5]:SetText("Gold Donator")
                self.cols[5]:SetTextColor(Color(255,255,0))
				elseif ply:IsUserGroup("iron_donator") then
                self.cols[5]:SetText("Iron Donator")
                self.cols[5]:SetTextColor(namecolor.default)
				elseif ply:IsUserGroup("silver_donator") then
                self.cols[5]:SetText("Silver Donator")
                self.cols[5]:SetTextColor(Color(222,222,222))
				elseif ply:IsUserGroup("bronze_donator") then
                self.cols[5]:SetText("Bronze Donator")
                self.cols[5]:SetTextColor(Color(203,153,52))
				elseif ply:IsUserGroup("moderator") then
                self.cols[5]:SetText("Moderator")
                self.cols[5]:SetTextColor(Color(139,61,255))
				elseif ply:IsUserGroup("user") then
                self.cols[5]:SetText("User")
                self.cols[5]:SetTextColor(namecolor.default)
				elseif ply:IsUserGroup("trialmod") then
                self.cols[5]:SetText("Trial Mod")
                self.cols[5]:SetTextColor(Color(139,61,255))
				elseif ply:IsUserGroup("sr. admin") then
                self.cols[5]:SetText("Senior Admin")
                self.cols[5]:SetTextColor(namecolor.test)
			    elseif ply:IsUserGroup("admin") then
                self.cols[5]:SetText("Admin")
                self.cols[5]:SetTextColor(namecolor.orange)
--      elseif ply:IsUserGroup("admin") then
--              self.cols[5]:SetText("Admin")
--              self.cols[5]:SetTextColor(Color(namecolor.orange))
--  Delete the -- and change the settings to your liking. DO NOT DELETE THE 'end'
          end
 
   local ptag = ply.sb_tag
   if ScoreGroup(ply) != GROUP_TERROR then
      ptag = nil
   end
 
   self.tag:SetText(ptag and GetTranslation(ptag.txt) or "")
   self.tag:SetTextColor(ptag and ptag.color or COLOR_WHITE)
 
   self.sresult:SetVisible(ply.search_result != nil)
 
   -- more blue if a detective searched them
   if ply.search_result and (LocalPlayer():IsDetective() or (not ply.search_result.show)) then
      self.sresult:SetImageColor(Color(200, 200, 255))
   end
 
   -- cols are likely to need re-centering
   self:LayoutColumns()
 
   if self.info then
      self.info:UpdatePlayerData()
   end
 
   if self.Player != LocalPlayer() then
      local muted = self.Player:IsMuted()
      self.voice:SetImage(muted and "icon16/sound_mute.png" or "icon16/sound.png")
   else
      self.voice:Hide()
   end
end
 
function PANEL:ApplySchemeSettings()
   for k,v in pairs(self.cols) do
      v:SetFont("treb_small")
      v:SetTextColor(COLOR_WHITE)
   end
 
   self.nick:SetFont("treb_small")
   self.nick:SetTextColor(ColorForPlayer(self.Player))
 
   local ptag = self.Player and self.Player.sb_tag
   self.tag:SetTextColor(ptag and ptag.color or COLOR_WHITE)
   self.tag:SetFont("treb_small")
 
   self.sresult:SetImage("icon16/magnifier.png")
   self.sresult:SetImageColor(Color(170, 170, 170, 150))
end
 
function PANEL:LayoutColumns()
   for i=1,4 do
   v = self.cols*
   k = i
      v:SizeToContents()
      v:SetPos(self:GetWide() - (50*k) - v:GetWide()/2, (SB_ROW_HEIGHT - v:GetTall()) / 2)
   end

   self.tag:SizeToContents()
   self.tag:SetPos(self:GetWide() - (50 * 6) - self.tag:GetWide()/2, (SB_ROW_HEIGHT - self.tag:GetTall()) / 2)

   self.sresult:SetPos(self:GetWide() - (50*6) - 8, (SB_ROW_HEIGHT - 16) / 2)

   i=5
   v = self.cols*
   k = i
      v:SizeToContents()
      v:SetPos(self:GetWide() - (52*k) - v:GetWide()/2, (SB_ROW_HEIGHT - v:GetTall()) / 2)
   

   self.tag:SizeToContents()
   self.tag:SetPos(self:GetWide() - (52 * 6) - self.tag:GetWide()/2, (SB_ROW_HEIGHT - self.tag:GetTall()) / 2)

   self.sresult:SetPos(self:GetWide() - (52*6) - 8, (SB_ROW_HEIGHT - 16) / 2)
end
 
function PANEL:PerformLayout()
   self.avatar:SetPos(0,0)
   self.avatar:SetSize(SB_ROW_HEIGHT,SB_ROW_HEIGHT)
 
   if not self.open then
      self:SetSize(self:GetWide(), SB_ROW_HEIGHT)
 
      if self.info then self.info:SetVisible(false) end
   elseif self.info then
      self:SetSize(self:GetWide(), 100 + SB_ROW_HEIGHT)
 
      self.info:SetVisible(true)
      self.info:SetPos(5, SB_ROW_HEIGHT + 5)
      self.info:SetSize(self:GetWide(), 100)
      self.info:PerformLayout()
 
      self:SetSize(self:GetWide(), SB_ROW_HEIGHT + self.info:GetTall())
   end
 
   self.nick:SizeToContents()
 
   self.nick:SetPos(SB_ROW_HEIGHT + 10, (SB_ROW_HEIGHT - self.nick:GetTall()) / 2)
 
   self:LayoutColumns()
 
   self.voice:SetVisible(not self.open)
   self.voice:SetSize(16, 16)
   self.voice:DockMargin(4, 4, 4, 4)
   self.voice:Dock(RIGHT)
end
 
function PANEL:DoClick(x, y)
   self:SetOpen(not self.open)
end
 
function PANEL:SetOpen(o)
   if self.open then
      surface.PlaySound("ui/buttonclickrelease.wav")
   else
      surface.PlaySound("ui/buttonclick.wav")
   end
 
   self.open = o
 
   self:PerformLayout()
   self:GetParent():PerformLayout()
   sboard_panel:PerformLayout()
end
 
function PANEL:DoRightClick()
end
 
vgui.Register( "TTTScorePlayerRow", PANEL, "Button" )

[editline]22nd December 2013[/editline]