-- Scoreboard Version 13.09.15 -- User Configuration -- General local sGradient = true -- Toggle whether the scoreboard should use gradients. Default = true -- Frame local fWide = 840 -- I recommend 840 ~ 680, making it too small won't allow enough room for player names. Default = 840 local fTall = 880 -- Default = 880 local fTransparency = 224 -- Enables whether the scoreboard is transparent or not. Default = 224 local fHostname = GetHostName() -- The bigger text that appears on the top left corner. Default = GetHostName() local fGamemode = true -- Toggle wheter the gamemode's name should display just under fHostname. Default = true local fGamemodeAuthor = true -- Toggle wheter the gamemode's author should display next to fHostname. Default = true local fGamemodeVersion = true -- Toggle wheter the gamemode's version should display just under fGamemode. Default = true -- Glow local gToggle = true -- Toggle whether certain usergrups should glow or not. Default = true local gMax = 24 -- Maximum glow ammount. Default = 24 local gSpeed = 2 -- Glow speed. Default = 2 local gGroup = { } -- Glow user groups. Do not modify. -- Panel local pTall = 32 -- The height of the player panel. Default = 32 local pPadding = 4 -- The amount of padding in pixels between panels. Default = 4 -- Label local lFade = 16 -- The amount of color to decrease when the player is dead. Default = 16 local lShowKill = true -- Toggle whether kills should show or not. Default = true local lShowDeath = true -- Toggle whether deaths should show or not. Default = true local lShowPing = true -- Toggle whether ping should show or not. Default = true -- Administration local aToggle = true -- Toggle whether certain usergroups should have access to administration via the scoreboard. Default = true local aOption = { } -- Administration options per user group. Do not modify. local function AddUsergroup( Name, Icon, Glow, Administration ) table.insert( gGroup, { Name = string.lower( tostring( Name ) ), Icon = tostring( Icon ), Glow = Glow, Administration = Administration } ) end local function AddUsergroupAdministration( Usergroup, Name, Icon ) table.insert( aOption, { Usergroup = string.lower( tostring( Usergroup ) ), Name = tostring( Name ), Icon = tostring( Icon ) } ) end -- To add a new user group, follow these parameters: -- Name ( string ) Name of the usergroup. -- Icon ( string ) Icon of the usergroup. -- Glow ( boolean ) Toggle usegroup glowing. -- Administration ( boolean ) Toggle usergroup's access to administration. -- To add a new administration option to a certain user group, follow these parameters: -- Usergroup ( string ) Name of the usergroup -- Name ( string ) Name of the option ( Must be valid ) -- Icon ( string ) Icon of the option -- List of available administration options: -- Kick : Kicks the selected player. -- Slay : Kills the selected player. --AddUsergroup( "user", "icon16/user.png", false, false ) AddUsergroup( "regular", "icon16/user_add.png", false, false ) AddUsergroup( "admin", "icon16/shield.png", true, true ) AddUsergroupAdministration( "admin", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "admin", "Freeze", "icon16/status_offline.png" ) AddUsergroupAdministration( "admin", "Unfreeze", "icon16/status_online.png" ) AddUsergroupAdministration( "admin", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "admin", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "admin", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "admin", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "admin", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "admin", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "admin", "Freeze Ban", "icon16/lightning.png" ) AddUsergroupAdministration( "admin", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "admin", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "admin", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "superadmin", "icon16/shield_add.png", true, true ) AddUsergroupAdministration( "superadmin", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "superadmin", "Freeze", "icon16/status_offline.png" ) AddUsergroupAdministration( "superadmin", "Unfreeze", "icon16/status_online.png" ) AddUsergroupAdministration( "superadmin", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "superadmin", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "superadmin", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "superadmin", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "superadmin", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "superadmin", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "superadmin", "Freeze Ban", "icon16/lightning.png" ) AddUsergroupAdministration( "superadmin", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "superadmin", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "superadmin", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "owner", "icon16/award_star_gold_1.png", true, true ) AddUsergroupAdministration( "owner", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "owner", "Freeze", "icon16/status_offline.png" ) AddUsergroupAdministration( "owner", "Unfreeze", "icon16/status_online.png" ) AddUsergroupAdministration( "owner", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "owner", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "owner", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "owner", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "owner", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "owner", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "owner", "Freeze Ban", "icon16/lightning.png" ) AddUsergroupAdministration( "owner", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "owner", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "owner", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "operator", "icon16/user_gray.png", true, true ) AddUsergroupAdministration( "operator", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "operator", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "operator", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "operator", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "operator", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "operator", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "operator", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "operator", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "operator", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "operator", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "bronze operator", "icon16/medal_bronze_add.png", true, true ) AddUsergroupAdministration( "bronze operator", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "bronze operator", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "bronze operator", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "bronze operator", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "bronze operator", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "bronze operator", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "bronze operator", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "bronze operator", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "bronze operator", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "bronze operator", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "silver operator", "icon16/medal_silver_add.png", true, true ) AddUsergroupAdministration( "silver operator", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "silver operator", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "silver operator", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "silver operator", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "silver operator", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "silver operator", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "silver operator", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "silver operator", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "silver operator", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "silver operator", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "gold operator", "icon16/medal_gold_add.png", true, true ) AddUsergroupAdministration( "gold operator", "Slay", "icon16/cross.png" ) AddUsergroupAdministration( "gold operator", "Mute", "icon16/user_delete.png" ) AddUsergroupAdministration( "gold operator", "Unmute", "icon16/user_comment.png" ) AddUsergroupAdministration( "gold operator", "Gag", "icon16/sound_mute.png" ) AddUsergroupAdministration( "gold operator", "Ungag", "icon16/sound.png" ) AddUsergroupAdministration( "gold operator", "Kick", "icon16/disconnect.png" ) AddUsergroupAdministration( "gold operator", "Ban", "icon16/bomb.png" ) AddUsergroupAdministration( "gold operator", "Spectate", "icon16/find.png" ) AddUsergroupAdministration( "gold operator", "Goto", "icon16/transmit.png" ) AddUsergroupAdministration( "gold operator", "Bring", "icon16/transmit_blue.png" ) AddUsergroup( "bronze donator", "icon16/medal_bronze_3.png", true, true ) AddUsergroup( "silver donator", "icon16/medal_silver_3.png", true, true ) AddUsergroup( "gold donator", "icon16/medal_gold_3.png", true, true ) AddUsergroup( "platinum donator", "icon16/medal_gold_1.png", true, true ) --------------------------------------- --AVOID MODIFICATIONS PAST THIS POINT-- --------------------------------------- if ( SERVER ) then util.AddNetworkString( "__TransferData" ) net.Receive( "__TransferData", function( Length, Player ) if ( not ( IsValid( Player ) ) ) then return end local Action = net.ReadString() local Entity = net.ReadEntity() if ( not ( IsValid( Entity ) ) ) then return end local Option = { } local function OptionNew( Name, Function ) table.insert( Option, { Name = Name, Function = Function } ) end OptionNew( "Kick", function() Entity:Kick( "Kicked by " .. Player:Name() .. "[ " .. Player:SteamID() .. " ]" ) end ) OptionNew( "Slay", function() --Entity:Kill() Player:ConCommand( "ulx slay " .. Entity:Name() ) end ) OptionNew( "Ban", function() Player:ConCommand( "xgui xban " .. Entity:Name() ) end ) OptionNew( "Freeze Ban", function() Player:ConCommand( "xgui fban " .. Entity:Name() ) end ) OptionNew( "Mute", function() Player:ConCommand( "ulx mute " .. Entity:Name() ) end ) OptionNew( "Unmute", function() Player:ConCommand( "ulx unmute " .. Entity:Name() ) end ) OptionNew( "Gag", function() Player:ConCommand( "ulx gag " .. Entity:Name() ) end ) OptionNew( "Ungag", function() Player:ConCommand( "ulx ungag " .. Entity:Name() ) end ) OptionNew( "Freeze", function() Player:ConCommand( "ulx freeze " .. Entity:Name() ) end ) OptionNew( "Unfreeze", function() Player:ConCommand( "ulx unfreeze " .. Entity:Name() ) end ) OptionNew( "Spectate", function() Player:ConCommand( "ulx spectate " .. Entity:Name() ) end ) OptionNew( "Goto", function() Player:ConCommand( "ulx goto " .. Entity:Name() ) end ) OptionNew( "Bring", function() Player:ConCommand( "ulx bring " .. Entity:Name() ) end ) for k, _Option in pairs( Option ) do if ( string.lower( Action ) == string.lower( _Option.Name ) ) then _Option.Function() end end end ) end if ( CLIENT ) then surface.CreateFont( "_ScoreboardTopLabel", { font = "Roboto", size = 12, weight = 400, shadow = false, italic = false } ) surface.CreateFont( "_ScoreboardTeamLabel", { font = "Roboto", size = 12, weight = 800, shadow = false, italic = false } ) surface.CreateFont( "_ScoreboardLabel", { font = "Roboto", size = 16, weight = 800, shadow = false, italic = false } ) surface.CreateFont( "_ScoreboardTitle", { font = "Roboto", size = 26, weight = 800, shadow = false, italic = false } ) local GradientU = surface.GetTextureID( "vgui/gradient-d" ) local function DrawFancyRectangle( x, y, Wide, Tall, Color ) draw.RoundedBox( 0, x, y, Wide, Tall, Color ) surface.SetDrawColor( 255, 255, 255, Color.a - ( 255 - 12 ) ) surface.DrawOutlinedRect( x + 1, y + 1, Wide - 2, Tall - 2 ) if ( sGradient ) then surface.SetDrawColor( 0, 0, 0, 255 / 2 ) surface.SetTexture( GradientU ) surface.DrawTexturedRect( x + 1, y + 1, Wide - 2, Tall - 2 ) end end local function DrawFancyText( Text, Font, x, y, _Color, xAlign, yAlign ) draw.SimpleTextOutlined( Text, Font, x, y, _Color, xAlign or 0, yAlign or 0, 1.50, Color( 0, 0, 0, _Color.a - ( 255 - 22 ) ) ) end function CustomScoreboardShow() FrameMenu = vgui.Create( "DFrame" ) FrameMenu:SetSize( math.Clamp( fWide, 0, ScrW() ), math.Clamp( fTall, 0, ScrH() ) ) FrameMenu:SetPos( ScrW() / 2 - FrameMenu:GetWide() / 2, ScrH() / 2 - FrameMenu:GetTall() / 2 ) FrameMenu:SetTitle( "" ) FrameMenu:ShowCloseButton( false ) FrameMenu:SetVisible( true ) FrameMenu:SetDraggable( false ) function FrameMenu:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, fTransparency ) ) DrawFancyText( fHostname, "_ScoreboardTitle", 32, 32, Color( 228, 228, 228, 255 ) ) if ( fGamemode ) then DrawFancyText( ( GAMEMODE.Name or "Unknown" ) .. ( fGamemodeAuthor and " by " .. GAMEMODE.Author or " by Unknown" ), "_ScoreboardLabel", 32, 56, Color( 144, 144, 144, 255 ) ) end if ( fGamemodeVersion ) then DrawFancyText( GAMEMODE.Version or "Unknown", "_ScoreboardLabel", 32, 72, Color( 144, 144, 144, 255 ) ) end end local List = vgui.Create( "DPanelList", FrameMenu ) List:SetSize( FrameMenu:GetWide() - 64, FrameMenu:GetTall() - 128 ) List:SetPos( 32, 96 ) List:SetSpacing( pPadding ) List:EnableVerticalScrollbar( true ) function List.VBar.btnUp:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 255, 255, 255, 255 ) ) end function List.VBar.btnGrip:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 255, 255, 255, 255 ) ) end function List.VBar.btnDown:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 255, 255, 255, 255 ) ) end local DermaPanel = vgui.Create( "DPanel", List ) DermaPanel:SetPos( 32, 64 ) DermaPanel:SetSize( FrameMenu:GetWide() - 64, 32 ) function DermaPanel:Paint() DrawFancyText( "Name", "_ScoreboardTopLabel", pTall, self:GetTall() / 2, Color( 228, 228, 228, 255 ), 0, 1 ) if ( lShowPing ) then DrawFancyText( "Ping", "_ScoreboardTopLabel", self:GetWide() - ( 32 * 1 ), self:GetTall() / 2, Color( 228, 228, 228, 255 ), 1, 1 ) end if ( lShowDeath ) then DrawFancyText( "Deaths", "_ScoreboardTopLabel", self:GetWide() - ( 32 * 3 ), self:GetTall() / 2, Color( 228, 228, 228, 255 ), 1, 1 ) end if ( lShowKill ) then DrawFancyText( "Kills", "_ScoreboardTopLabel", self:GetWide() - ( 32 * 5 ), self:GetTall() / 2, Color( 228, 228, 228, 255 ), 1, 1 ) end end List:AddItem( DermaPanel ) for k, Team in pairs( team.GetAllTeams() ) do if ( team.NumPlayers( k ) > 0 ) then local TeamPanel = vgui.Create( "DPanel", List ) TeamPanel:SetPos( 32, 64 ) TeamPanel:SetSize( FrameMenu:GetWide() - 64, 16 ) function TeamPanel:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( team.GetColor( k ).r - 24, team.GetColor( k ).g - 24, team.GetColor( k ).b - 24 ) ) DrawFancyText( team.GetName( k ) .. " - " .. team.NumPlayers( k ) .. " Player" .. ( team.NumPlayers( k ) > 1 and "s" or "" ), "_ScoreboardTeamLabel", 34, self:GetTall() / 2, Color( 238, 238, 238, 255 ), 0, 1, ( lOutline and 1 or 0 ), Color( 24, 24, 24, 255 ) ) end List:AddItem( TeamPanel ) for j, Player in pairs( player.GetAll() ) do if ( Player:Team() == k ) then local PlayerPanel = vgui.Create( "DButton", List ) PlayerPanel:SetPos( 32, 64 ) PlayerPanel:SetSize( FrameMenu:GetWide() - 64, pTall ) PlayerPanel:SetText( "" ) PlayerPanel:SetToolTip( "See " .. Player:Name() .. "'s options." ) function PlayerPanel:Paint() if ( IsValid( Player ) ) then local GroupIn = false local GroupId = 0 local Glow = 0 for i, Group in pairs( gGroup ) do if ( Player:IsUserGroup( Group.Name ) ) then GroupIn = true GroupId = i end end if ( Player:Alive() ) then if ( GroupIn ) then Glow = ( gToggle and math.abs( math.sin( CurTime() * gSpeed ) * gMax ) or 0 ) DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( team.GetColor( Player:Team() ).r + ( gGroup[ GroupId ].Glow and Glow or 0 ), team.GetColor( Player:Team() ).g + ( gGroup[ GroupId ].Glow and Glow or 0 ), team.GetColor( Player:Team() ).b + ( gGroup[ GroupId ].Glow and Glow or 0 ) ) ) else DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), team.GetColor( Player:Team() ) ) end else DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( team.GetColor( Player:Team() ).r - lFade, team.GetColor( Player:Team() ).g - lFade, team.GetColor( Player:Team() ).b - lFade ) ) end local Offset = 32 * 6 draw.RoundedBox( 0, self:GetWide() - Offset, 0, Offset, self:GetTall(), Color( 0, 0, 0, 32 ) ) draw.RoundedBox( 0, self:GetWide() - Offset + 1, 2, 1, self:GetTall() - 4, Color( 255, 255, 255, 12 ) ) if ( GroupIn ) then surface.SetMaterial( Material( gGroup[ GroupId ].Icon ) ) surface.SetDrawColor( 255, 255, 255, 255 ) surface.DrawTexturedRect( pTall, self:GetTall() / 2 - 8, 16, 16 ) DrawFancyText( Player:Name(), "_ScoreboardLabel", ( 16 + 4 ) + pTall, self:GetTall() / 2, Color( 238, 238, 238, 255 ), 0, 1 ) else DrawFancyText( Player:Name(), "_ScoreboardLabel", pTall, self:GetTall() / 2, Color( 238, 238, 238, 255 ), 0, 1 ) end if ( lShowPing ) then DrawFancyText( Player:Ping(), "_ScoreboardLabel", self:GetWide() - ( 32 * 1 ), self:GetTall() / 2, Color( 238, 238, 238, 255 ), 1, 1 ) end if ( lShowDeath ) then DrawFancyText( Player:Deaths(), "_ScoreboardLabel", self:GetWide() - ( 32 * 3 ), self:GetTall() / 2, Color( 238, 238, 238, 255 ), 1, 1 ) end if ( lShowKill ) then DrawFancyText( Player:Frags(), "_ScoreboardLabel", self:GetWide() - ( 32 * 5 ), self:GetTall() / 2, Color( 238, 238, 238, 255 ), 1, 1 ) end end end function PlayerPanel:DoRightClick() if ( not ( IsValid( Player ) ) ) then return end local PlayerMenu = vgui.Create( "DMenu", self ) PlayerMenu:SetPos( self:GetPos() ) function PlayerMenu:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 255, 255, 255, 255 ) ) end local function OptionNew( Panel, Name, Icon, Function ) Panel:AddOption( Name, function() Function() -- CustomScoreboardHide() end ):SetIcon( Icon ) end local function OptionNewSub( Panel, Name ) local Menu = Panel:AddSubMenu( Name ) function Menu:Paint() DrawFancyRectangle( 0, 0, self:GetWide(), self:GetTall(), Color( 255, 255, 255, 255 ) ) end return Menu end local _Player = OptionNewSub( PlayerMenu, "Player" ) if ( IsValid( _Player ) ) then OptionNew( _Player, "Copy Player's Name", "icon16/pencil.png", function() if ( IsValid( Player ) ) then SetClipboardText( Player:Name() ) end end ) OptionNew( _Player, "Copy Player's SteamID", "icon16/pencil.png", function() if ( IsValid( Player ) ) then SetClipboardText( Player:SteamID() ) end end ) OptionNew( _Player, "View Player's Profile", "icon16/world.png", function() if ( IsValid( Player ) ) then gui.OpenURL( "http://steamcommunity.com/profiles/" .. Player:SteamID64() ) end end ) if ( Player:IsPlayer() and Player ~= LocalPlayer() ) then PlayerMenu:AddSpacer() if ( IsValid( Player ) ) then if ( Player:IsMuted() ) then OptionNew( _Player, "UnMute", "icon16/sound.png", function() if ( IsValid( Player ) ) then Player:SetMuted( false ) end end ) else OptionNew( _Player, "Mute", "icon16/sound_mute.png", function() if ( IsValid( Player ) ) then Player:SetMuted( true ) end end ) end end end end if ( aToggle ) then local GroupIn = false local GroupId = 0 for i, Group in pairs( gGroup ) do if ( LocalPlayer():IsUserGroup( Group.Name ) ) then GroupIn = true GroupId = i end end if ( GroupIn ) then if ( gGroup[ GroupId ].Administration ) then local _Administration = OptionNewSub( PlayerMenu, "Administration" ) if ( IsValid( _Administration ) ) then for i, Option in pairs( aOption ) do if ( Option.Usergroup == gGroup[ GroupId ].Name ) then OptionNew( _Administration, Option.Name, Option.Icon, function() if ( IsValid( Player ) ) then if ( string.lower( Option.Name ) == string.lower( "Kick" ) ) then List:RemoveItem( PlayerPanel ) end net.Start( "__TransferData" ) net.WriteString( Option.Name ) net.WriteEntity( Player ) net.SendToServer() end end ) end end end end end end PlayerMenu:Open() end local AvatarImage = vgui.Create( "AvatarImage", PlayerPanel ) AvatarImage:SetPlayer( Player, pTall - 8 ) AvatarImage:SetSize( pTall - 8, pTall - 8 ) AvatarImage:SetPos( 4, 4 ) if ( IsValid( Player ) ) then if ( Player:IsPlayer() ) then local AvatarButton = vgui.Create( "DButton", AvatarImage ) AvatarButton:SetSize( AvatarImage:GetWide(), AvatarImage:GetTall() ) AvatarButton:SetPos( 0, 0 ) AvatarButton:SetText( "" ) AvatarButton:SetToolTip( "See " .. Player:Name() .. "'s steam profile." ) function AvatarButton:Paint() return end function AvatarButton:DoClick() if ( IsValid( Player ) ) then Player:ShowProfile() end end end end List:AddItem( PlayerPanel ) end end end end end function CustomScoreboardHide() if ( IsValid( FrameMenu ) ) then FrameMenu:Close() end end function CustomScoreboardRefresh() function GAMEMODE.ScoreboardShow() CustomScoreboardShow() gui.EnableScreenClicker( true ) end function GAMEMODE.ScoreboardHide() CustomScoreboardHide() gui.EnableScreenClicker( false ) end end timer.Create( "CustomScoreboardRefresh", 0.15, 0, CustomScoreboardRefresh ) end