Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---- 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("Rank")
- 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,
- dev = Color(100, 240, 105, 255),
- Owner = Color(0, 0, 204, 255),
- CoOwner = Color(255, 128, 0, 255),
- SuperAdmin = Color(0, 0, 0, 255),
- HeadAdmin = Color(102, 0, 0, 255),
- Admin = Color(255, 0, 0, 255),
- TrialAdmin = Color(255, 0, 0, 255),
- DonatorAdmin = Color(153, 0, 153, 255),
- Mod = Color(0, 255, 255, 255),
- TrialMod = Color(0, 255, 255, 255),
- Operator = Color(128, 128, 0, 255),
- G-VIP = Color(255, 215, 0, 255),
- S-VIP = Color(192, 192, 192, 255),
- B-VIP = Color(166, 125, 51, 255),
- VIP = Color(255, 215, 0, 255),
- Donator = Color(0, 255, 0, 255),
- Addicted = Color(255, 153, 255, 255),
- Regular = Color(255, 0, 255, 255),
- default = Color(100, 240, 105, 255),
- };
- 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:IsUserGroup("owner") then
- return namecolor.Owner
- elseif ply:IsUserGroup("co-owner") then
- return namecolor.CoOwner
- elseif ply:IsUserGroup("superadmin") then
- return namecolor.SuperAdmin
- elseif ply:IsUserGroup("head admin") then
- return namecolor.HeadAdmin
- elseif ply:IsUserGroup("admin") then
- return namecolor.Admin
- elseif ply:IsUserGroup("trial-admin") then
- return namecolor.TrialAdmin
- elseif ply:IsUserGroup("donator admin") then
- return namecolor.DonatorAdmin
- elseif ply:IsUserGroup("moderator") then
- return namecolor.Mod
- elseif ply:IsUserGroup("trial-moderator") then
- return namecolor.TrialMod
- elseif ply:IsUserGroup("operator") then
- return namecolor.Operator
- elseif ply:IsUserGroup("g-vip") then
- return namecolor.G-VIP
- elseif ply:IsUserGroup("s-vip") then
- return namecolor.S-VIP
- elseif ply:IsUserGroup("b-vip") then
- return namecolor.B-VIP
- elseif ply:IsUserGroup("vip") then
- return namecolor.VIP
- elseif ply:IsUserGroup("donator") then
- return namecolor.Donator
- --[[
- elseif ply:IsUserGroup("addicted") then
- return namecolor.Addicted
- elseif ply:IsUserGroup("regular") then
- return namecolor.Regular
- ]]
- 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!\n")
- 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("owner") then
- self.cols[5]:SetText("Owner")
- self.cols[5]:SetTextColor(namecolor.Owner)
- elseif ply:IsUserGroup("co-owner") then
- self.cols[5]:SetText("Co-Owner")
- self.cols[5]:SetTextColor(namecolor.CoOwner)
- elseif ply:IsUserGroup("superadmin") then
- self.cols[5]:SetText("Admin++")
- self.cols[5]:SetTextColor(namecolor.SuperAdmin)
- elseif ply:IsUserGroup("head admin") then
- self.cols[5]:SetText("Head Admin")
- self.cols[5]:SetTextColor(namecolor.HeadAdmin)
- elseif ply:IsUserGroup("admin") then
- self.cols[5]:SetText("Admin")
- self.cols[5]:SetTextColor(namecolor.Admin)
- elseif ply:IsUserGroup("trial-admin") then
- self.cols[5]:SetText("Trial-Admin")
- self.cols[5]:SetTextColor(namecolor.TrialAdmin)
- elseif ply:IsUserGroup("donator admin") then
- self.cols[5]:SetText("Donator Admin")
- self.cols[5]:SetTextColor(namecolor.DonatorAdmin)
- elseif ply:IsUserGroup("moderator") then
- self.cols[5]:SetText("Moderator")
- self.cols[5]:SetTextColor(namecolor.Mod)
- elseif ply:IsUserGroup("trial-moderator") then
- self.cols[5]:SetText("Trial-Moderator")
- self.cols[5]:SetTextColor(namecolor.TrialMod)
- elseif ply:IsUserGroup("operator") then
- self.cols[5]:SetText("OP")
- self.cols[5]:SetTextColor(namecolor.Operator)
- elseif ply:IsUserGroup("g-vip") then
- self.cols[5]:SetText("G-VIP")
- self.cols[5]:SetTextColor(namecolor.GVIP)
- elseif ply:IsUserGroup("s-vip") then
- self.cols[5]:SetText("S-VIP")
- self.cols[5]:SetTextColor(namecolor.SVIP)
- elseif ply:IsUserGroup("b-vip") then
- self.cols[5]:SetText("B-VIP")
- self.cols[5]:SetTextColor(namecolor.BVIP)
- elseif ply:IsUserGroup("vip") then
- self.cols[5]:SetText("VIP")
- self.cols[5]:SetTextColor(namecolor.VIP)
- elseif ply:IsUserGroup("donator") then
- self.cols[5]:SetText("Donator")
- self.cols[5]:SetTextColor(namecolor.Donator)
- elseif ply:IsUserGroup("addicted") then
- self.cols[5]:SetText("Addicted")
- self.cols[5]:SetTextColor(namecolor.Addicted)
- elseif ply:IsUserGroup("regular") then
- self.cols[5]:SetText("Regular")
- self.cols[5]:SetTextColor(namecolor.Regular)
- elseif ply:IsUserGroup("user") then
- self.cols[5]:SetText("Guest")
- self.cols[5]:SetTextColor(namecolor.Guest)
- -- elseif ply:IsUserGroup("admin") th
- -- self.cols[5]:SetText("Admin")
- -- self.cols[5]:SetTextColor(Color(220, 180, 0, 255))
- -- 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 k,v in ipairs(self.cols) do
- 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)
- 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" )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement