Last active
December 6, 2019 08:31
-
-
Save Cynosphere/7ea026dd95f5056d59e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
surface.CreateFont("fs3_hostname",{ | |
font = "Segoe UI", | |
size = 48, | |
weight = 500, | |
}) | |
surface.CreateFont("fs3_title",{ | |
font = "Segoe UI", | |
size = 32, | |
weight = 500, | |
}) | |
surface.CreateFont("fs3_text",{ | |
font = "Segoe UI", | |
size = 13, | |
weight = 500, | |
}) | |
--cvars-- | |
local HostnameColorR = CreateClientConVar("fs3_hostname_r", 0) | |
local HostnameColorG = CreateClientConVar("fs3_hostname_g", 150) | |
local HostnameColorB = CreateClientConVar("fs3_hostname_b", 130) | |
local SidebarColorR = CreateClientConVar("fs3_sidebar_r", 33) | |
local SidebarColorG = CreateClientConVar("fs3_sidebar_g", 91) | |
local SidebarColorB = CreateClientConVar("fs3_sidebar_b", 51) | |
local BackgroundColorR = CreateClientConVar("fs3_background_r", 50) | |
local BackgroundColorG = CreateClientConVar("fs3_background_g", 50) | |
local BackgroundColorB = CreateClientConVar("fs3_background_b", 50) | |
function CreateFScoreboard() | |
if IsValid(FScoreboard) then FScoreboard:Remove() end | |
FScoreboard = vgui.Create("EditablePanel") | |
FScoreboard:SetSize(ScrW()-300,ScrH()-150) | |
FScoreboard:Center() | |
function FScoreboard:Paint(w,h) | |
draw.RoundedBox(0,0,0,w,h,Color(BackgroundColorR:GetInt(),BackgroundColorG:GetInt(),BackgroundColorB:GetInt())) | |
end | |
local header = vgui.Create("EditablePanel",FScoreboard) | |
header:Dock(TOP) | |
header:SetTall(100) | |
local rainbow,rainbow2 | |
local fade = 0 | |
function header:Paint(w,h) | |
draw.RoundedBox(0,0,0,w,h,Color(HostnameColorR:GetInt(),HostnameColorG:GetInt(),HostnameColorB:GetInt())) | |
for i = 1,w/50+50 do | |
draw.RoundedBox(0,50*i-50,0,50,50,Color(0,0,0,200-(i*5))) | |
draw.RoundedBox(0,50*i-50,50,50,50,Color(0,0,0,210-(i*5))) | |
end | |
--fade = Lerp(FrameTime()*2,fade,200) | |
--draw.RoundedBox(0,0,0,w,h,Color(0,0,0,fade)) | |
end | |
local hostname = vgui.Create("DLabel",header) | |
hostname:Dock(LEFT) | |
hostname:DockMargin(20,20,0,20) | |
hostname:SetFont("fs3_hostname") | |
hostname:SetText(GetHostName()) | |
hostname:SizeToContents() | |
hostname:SetColor(Color(255,255,255)) | |
local sidebar = vgui.Create("EditablePanel",FScoreboard) | |
sidebar:Dock(LEFT) | |
sidebar:SetWide(200) | |
function sidebar:Paint(w,h) | |
draw.RoundedBox(0,0,0,w,h,Color(SidebarColorR:GetInt(),SidebarColorG:GetInt(),SidebarColorB:GetInt())) | |
for i = 1,h/50+50 do | |
draw.RoundedBox(0,0,50*i-50,50,50,Color(0,0,0,200-(i*5))) | |
draw.RoundedBox(0,50,50*i-50,50,50,Color(0,0,0,190-(i*5))) | |
draw.RoundedBox(0,100,50*i-50,50,50,Color(0,0,0,180-(i*5))) | |
draw.RoundedBox(0,150,50*i-50,50,50,Color(0,0,0,170-(i*5))) | |
end | |
end | |
local players = vgui.Create("EditablePanel",FScoreboard) | |
local settings = vgui.Create("EditablePanel",FScoreboard) | |
settings:SetVisible(false) | |
local scroll = vgui.Create("DScrollPanel",FScoreboard) | |
scroll:SetPos(200,100) | |
scroll:SetSize(ScrW()-500,ScrH()-250) | |
scroll:AddItem(players) | |
players:Dock(FILL) | |
players:SetTall(ScrH()-250) | |
settings:Dock(FILL) | |
settings:SetTall(ScrH()-250) | |
local players_button = vgui.Create("DButton",sidebar) | |
players_button:Dock(TOP) | |
players_button:SetTall(40) | |
players_button:SetText("Players") | |
players_button:SetFont("fs3_text") | |
players_button:SetTextColor(Color(255,255,255)) | |
players_button:SetIcon("icon16/user.png") | |
players_button.btncol = Color(0,0,0,100) | |
function players_button:Paint(w,h) | |
if self.Hovered then self.btncol = Color(0,0,0,200) else self.btncol = Color(0,0,0,100) end | |
draw.RoundedBox(0,0,0,w,h,self.btncol) | |
draw.RoundedBox(0,0,h-1,w,1,Color(SidebarColorR:GetInt(),SidebarColorG:GetInt(),SidebarColorB:GetInt())) | |
end | |
function players_button:DoClick() | |
scroll:SetVisible(true) | |
settings:SetVisible(false) | |
end | |
local settings_button = vgui.Create("DButton",sidebar) | |
settings_button:Dock(TOP) | |
settings_button:SetTall(40) | |
settings_button:SetText("Settings") | |
settings_button:SetFont("fs3_text") | |
settings_button:SetTextColor(Color(255,255,255)) | |
settings_button:SetIcon("icon16/cog.png") | |
settings_button.btncol = Color(0,0,0,100) | |
function settings_button:Paint(w,h) | |
if self.Hovered then self.btncol = Color(0,0,0,200) else self.btncol = Color(0,0,0,100) end | |
draw.RoundedBox(0,0,0,w,h,self.btncol) | |
draw.RoundedBox(0,0,h-1,w,1,Color(SidebarColorR:GetInt(),SidebarColorG:GetInt(),SidebarColorB:GetInt())) | |
end | |
function settings_button:DoClick() | |
settings:SetVisible(true) | |
scroll:SetVisible(false) | |
end | |
local version = vgui.Create("DLabel",sidebar) | |
version:Dock(BOTTOM) | |
version:DockMargin(4,0,0,0) | |
version:SetText("FScoreboard3 - Workshop Release") | |
version:SetFont("fs3_text") | |
version:SetTextColor(Color(255,255,255)) | |
for _,t in pairs(team.GetAllTeams()) do | |
if t == team.GetAllTeams()[0] or t == team.GetAllTeams()[1001] or t == team.GetAllTeams()[1002] then continue end | |
local tname = t["Name"]:gsub("^.",function(c) return c:upper() end) | |
local teamtbl = {} | |
local team_pnl = vgui.Create("EditablePanel",players) | |
team_pnl:Dock(TOP) | |
team_pnl:DockMargin(4,4,4,0) | |
function team_pnl:Paint(w,h) | |
surface.SetFont("fs3_text") | |
draw.RoundedBoxEx(6,0,0,8 + surface.GetTextSize(tname),20,t["Color"],true,true,false,false) | |
draw.DrawText(tname,"fs3_text",4,4,Color(255,255,255)) | |
draw.RoundedBoxEx(6,0,20,w,h-20,t["Color"],false,true,true,true) | |
end | |
for __,ply in pairs(player.GetAll()) do | |
if ply:Team() == _ then | |
teamtbl[ply] = true | |
team_pnl:SetTall(26+(34*table.Count(teamtbl))) | |
team_pnl:DockPadding(0,20,0,4) | |
local ply_pnl = vgui.Create("EditablePanel",team_pnl) | |
ply_pnl:Dock(TOP) | |
ply_pnl:DockMargin(4,4,4,0) | |
ply_pnl:SetTall(32) | |
function ply_pnl:Paint(w,h) | |
draw.RoundedBox(4,0,0,w,h,Color(0,0,0,200)) | |
end | |
function ply_pnl:OnMouseReleased(btn) | |
if btn == MOUSE_RIGHT then | |
local menu = DermaMenu() | |
if ulx then | |
if ply != LocalPlayer() then | |
menu:AddOption("Goto",function() LocalPlayer():ConCommand("ulx goto "..ply:Name()) end):SetIcon("icon16/arrow_right.png") | |
menu:AddOption("Bring",function() LocalPlayer():ConCommand("ulx bring "..ply:Name()) end):SetIcon("icon16/arrow_inout.png") | |
menu:AddSpacer() | |
if LocalPlayer():IsAdmin() then | |
menu:AddOption("Cleanup",function() LocalPlayer():ConCommand("ulx cleanup "..ply:Name()) end):SetIcon("icon16/bin_empty.png") | |
end | |
local b,bicn = menu:AddSubMenu("Block Menu") bicn:SetIcon("icon16/user_delete.png") | |
local muted = ply:IsMuted() | |
b:AddOption(muted and "Unmute" or "Mute",function() ply:SetMuted(not muted) end):SetImage(muted and "icon16/sound_add.png" or "icon16/sound_delete.png") | |
if pac then | |
local bpac = plypac_ignored and pac.UnIgnoreEntity or pac.IgnoreEntity | |
b:AddOption(plypac_ignored and "Unignore PAC" or "Ignore PAC",function() bpac(ply) end):SetImage(plypac_ignored and "icon16/user_add.png" or "icon16/user_delete.png") | |
end | |
end | |
if ply == LocalPlayer() then | |
if ulx then | |
menu:AddOption("Blink",function() LocalPlayer():ConCommand("ulx tp") end):SetIcon("icon16/arrow_right.png") | |
end | |
if ctp then | |
local c,cicn = menu:AddSubMenu("CTP",function() ctp:Toggle() end ) | |
cicn:SetIcon("icon16/camera.png") | |
c:AddOption("Enable",function() ctp:Enable() end):SetIcon("icon16/camera_add.png") | |
c:AddOption("Disable",function() ctp:Disable() end):SetIcon("icon16/camera_delete.png") | |
c:AddOption("Menu",function() LocalPlayer():ConCommand("ctp_toggle_menu") end):SetIcon("icon16/camera_edit.png") | |
c:AddSpacer() | |
c2,c2icn = c:AddSubMenu("Camera Style",function() return end) | |
c2icn:SetIcon("icon16/camera_edit.png") | |
c3,c3icn = c2:AddSubMenu("Custom",function() return end) | |
c3icn:SetIcon("icon16/folder.png") | |
for _,f in pairs(file.Find("ctp/cvar_presets/*","DATA")) do | |
local nf = f:gsub("%.txt","") | |
c3:AddOption(nf,function() ctp:Enable() ctp:LoadCVarPreset(nf) end) | |
end | |
c2:AddOption("Thirdperson",function() ctp:Enable() ctp:LoadCVarPreset("Valve Thirdperson") end) | |
c2:AddOption("Cinematic",function() ctp:Enable() ctp:LoadCVarPreset("Cinematic") end) | |
c2:AddOption("Cinematic 2",function() ctp:Enable() ctp:LoadCVarPreset("Cinematic 2") end) | |
c2:AddOption("Helicopter View",function() ctp:Enable() ctp:LoadCVarPreset("Helicopter View") end) | |
c2:AddOption("Isometric",function() ctp:Enable() ctp:LoadCVarPreset("Isometric") end) | |
c2:AddOption("Slow",function() ctp:Enable() ctp:LoadCVarPreset("Slow") end) | |
end | |
end | |
end | |
menu:AddSpacer() | |
menu:AddOption(ply:SteamID(),function() SetClipboardText(ply:SteamID()) end):SetIcon("icon16/vcard.png") | |
menu:AddOption("Entity Index: "..ply:EntIndex(),function() SetClipboardText(ply:SteamID()) end):SetIcon("icon16/status_online.png") | |
menu:Open() | |
return true | |
end | |
end | |
local avatar = vgui.Create("AvatarImage",ply_pnl) | |
avatar:Dock(LEFT) | |
avatar:SetSize(32,32) | |
avatar:SetPlayer(ply,32) | |
local avatar_link = vgui.Create("DButton",avatar) | |
avatar_link:Dock(FILL) | |
avatar_link:SetText("") | |
avatar_link.Paint = function() end | |
function avatar_link:DoClick() | |
gui.OpenURL("http://steamcommunity.com/profiles/"..ply:SteamID64()) | |
end | |
local name = vgui.Create("DLabel",ply_pnl) | |
name:Dock(LEFT) | |
name:DockMargin(4,0,0,0) | |
name:SetText(ply:Name()) | |
name:SetFont("fs3_text") | |
name:SetColor(Color(255,255,255)) | |
name:SizeToContents() | |
local pnl_ping = vgui.Create("EditablePanel",ply_pnl) | |
pnl_ping:Dock(RIGHT) | |
local ping_img = vgui.Create("DImage",pnl_ping) | |
ping_img:SetImage(ply:Ping() > 100 and "icon16/transmit.png" or "icon16/transmit_blue.png") | |
ping_img:SetSize(16,16) | |
ping_img:Dock(LEFT) | |
ping_img:DockMargin(4,8,0,8) | |
local ping_lbl = vgui.Create("DLabel",pnl_ping) | |
ping_lbl:Dock(LEFT) | |
ping_lbl:DockMargin(4,0,4,0) | |
ping_lbl:SetText(ply:Ping()) | |
ping_lbl:SetFont("fs3_text") | |
ping_lbl:SetColor(Color(255,255,255)) | |
ping_lbl:SizeToContents() | |
---- | |
if ply.GetUTime and ply.GetUTimeStart then | |
local pnl_time = vgui.Create("EditablePanel",ply_pnl) | |
pnl_time:Dock(RIGHT) | |
local time_img = vgui.Create("DImage",pnl_time) | |
time_img:SetImage("icon16/time.png") | |
time_img:SetSize(16,16) | |
time_img:Dock(LEFT) | |
time_img:DockMargin(4,8,0,8) | |
local time_lbl = vgui.Create("DLabel",pnl_time) | |
time_lbl:Dock(LEFT) | |
time_lbl:DockMargin(4,0,4,0) | |
time_lbl:SetText(math.floor((ply:GetUTime() + CurTime() - ply:GetUTimeStart())/60/60).." hr") | |
time_lbl:SetFont("fs3_text") | |
time_lbl:SetColor(Color(255,255,255)) | |
time_lbl:SizeToContents() | |
pnl_time:InvalidateLayout(true) | |
pnl_time:SizeToChildren(true,false) | |
end | |
if GAMEMODE.Name == "DarkRP" then | |
local pnl_drp_money = vgui.Create("EditablePanel",ply_pnl) | |
pnl_drp_money:Dock(RIGHT) | |
local drp_money_img = vgui.Create("DImage",pnl_drp_money) | |
drp_money_img:SetImage("icon16/money.png") | |
drp_money_img:SetSize(16,16) | |
drp_money_img:Dock(LEFT) | |
drp_money_img:DockMargin(4,8,0,8) | |
local drp_money_lbl = vgui.Create("DLabel",pnl_drp_money) | |
drp_money_lbl:Dock(LEFT) | |
drp_money_lbl:DockMargin(4,0,4,0) | |
drp_money_lbl:SetText(ply:getDarkRPVar("money")) | |
drp_money_lbl:SetFont("fs3_text") | |
drp_money_lbl:SetColor(Color(255,255,255)) | |
drp_money_lbl:SizeToContents() | |
end | |
local pnl_deaths = vgui.Create("EditablePanel",ply_pnl) | |
pnl_deaths:Dock(RIGHT) | |
local deaths_lbl = vgui.Create("DLabel",pnl_deaths) | |
deaths_lbl:Dock(LEFT) | |
deaths_lbl:DockMargin(4,0,4,0) | |
deaths_lbl:SetText("Deaths: "..ply:Deaths()) | |
deaths_lbl:SetFont("fs3_text") | |
deaths_lbl:SetColor(Color(255,255,255)) | |
deaths_lbl:SizeToContents() | |
local pnl_frags = vgui.Create("EditablePanel",ply_pnl) | |
pnl_frags:Dock(RIGHT) | |
local frags_lbl = vgui.Create("DLabel",pnl_frags) | |
frags_lbl:Dock(LEFT) | |
frags_lbl:DockMargin(4,0,4,0) | |
frags_lbl:SetText("Frags: "..ply:Frags()) | |
frags_lbl:SetFont("fs3_text") | |
frags_lbl:SetColor(Color(255,255,255)) | |
frags_lbl:SizeToContents() | |
end | |
end | |
team_pnl:InvalidateLayout(true) | |
team_pnl:SizeToChildren(false,true) | |
if table.Count(teamtbl) < 1 then team_pnl:SetVisible(false) end | |
end | |
players:InvalidateLayout(true) | |
players:SizeToChildren(false,true) | |
--settings-- | |
local settings_header = vgui.Create("EditablePanel",settings) | |
settings_header:Dock(TOP) | |
settings_header:SetTall(50) | |
function settings_header:Paint(w,h) | |
draw.RoundedBox(0,0,0,w,h,Color(0,100,100)) | |
for i = 1,w/50+50 do | |
draw.RoundedBox(0,50*i-50,0,50,50,Color(0,0,0,200-(i*10))) | |
end | |
draw.RoundedBox(0,0,h-1,w,1,Color(0,150,150)) | |
end | |
local settings_title = vgui.Create("DLabel",settings_header) | |
settings_title:SetFont("fs3_title") | |
settings_title:SetColor(Color(255,255,255)) | |
settings_title:Dock(LEFT) | |
settings_title:DockMargin(20,0,0,0) | |
settings_title:SetText("Settings") | |
settings_title:SizeToContents() | |
local color_sidebar_lbl = vgui.Create("DLabel",settings) | |
color_sidebar_lbl:Dock(TOP) | |
color_sidebar_lbl:DockMargin(4,4,0,0) | |
color_sidebar_lbl:SetText("Sidebar Color") | |
color_sidebar_lbl:SetFont("fs3_text") | |
color_sidebar_lbl:SetColor(Color(255,255,255)) | |
color_sidebar_lbl:SizeToContents() | |
local color_sidebar = vgui.Create("DColorMixer",settings) | |
color_sidebar:Dock(TOP) | |
color_sidebar:DockMargin(4,4,0,0) | |
color_sidebar:SetPalette(true) | |
color_sidebar:SetAlphaBar(false) | |
color_sidebar:SetWangs(true) | |
color_sidebar:SetColor(Color(SidebarColorR:GetInt(),SidebarColorG:GetInt(),SidebarColorB:GetInt())) | |
color_sidebar:SetConVarR("fs3_sidebar_r") | |
color_sidebar:SetConVarG("fs3_sidebar_g") | |
color_sidebar:SetConVarB("fs3_sidebar_b") | |
local color_hostname_lbl = vgui.Create("DLabel",settings) | |
color_hostname_lbl:Dock(TOP) | |
color_hostname_lbl:DockMargin(4,4,0,0) | |
color_hostname_lbl:SetText("Hostname Bar Color") | |
color_hostname_lbl:SetFont("fs3_text") | |
color_hostname_lbl:SetColor(Color(255,255,255)) | |
color_hostname_lbl:SizeToContents() | |
local color_hostname = vgui.Create("DColorMixer",settings) | |
color_hostname:Dock(TOP) | |
color_hostname:DockMargin(4,4,0,0) | |
color_hostname:SetPalette(true) | |
color_hostname:SetAlphaBar(false) | |
color_hostname:SetWangs(true) | |
color_hostname:SetColor(Color(HostnameColorR:GetInt(),HostnameColorG:GetInt(),HostnameColorB:GetInt())) | |
color_hostname:SetConVarR("fs3_hostname_r") | |
color_hostname:SetConVarG("fs3_hostname_g") | |
color_hostname:SetConVarB("fs3_hostname_b") | |
local color_background_lbl = vgui.Create("DLabel",settings) | |
color_background_lbl:Dock(TOP) | |
color_background_lbl:DockMargin(4,4,0,0) | |
color_background_lbl:SetText("Background Color") | |
color_background_lbl:SetFont("fs3_text") | |
color_background_lbl:SetColor(Color(255,255,255)) | |
color_background_lbl:SizeToContents() | |
local color_background = vgui.Create("DColorMixer",settings) | |
color_background:Dock(TOP) | |
color_background:DockMargin(4,4,0,0) | |
color_background:SetPalette(true) | |
color_background:SetAlphaBar(false) | |
color_background:SetWangs(true) | |
color_background:SetColor(Color(HostnameColorR:GetInt(),HostnameColorG:GetInt(),HostnameColorB:GetInt())) | |
color_background:SetConVarR("fs3_background_r") | |
color_background:SetConVarG("fs3_background_g") | |
color_background:SetConVarB("fs3_background_b") | |
return true | |
end | |
local function ScoreboardHide() | |
if FScoreboard then | |
FScoreboard:Remove() | |
end | |
gui.EnableScreenClicker(false) | |
return true | |
end | |
local function PlayerBindPress(ply, bind, pressed) | |
if pressed and bind == "+attack2" and FScoreboard and FScoreboard:IsVisible() then | |
gui.EnableScreenClicker(true) | |
return true | |
end | |
end | |
hook.Add("ScoreboardShow", "FScoreboard3", CreateFScoreboard) | |
hook.Add("ScoreboardHide", "FScoreboard3", ScoreboardHide) | |
hook.Add("PlayerBindPress", "FScoreboard3", PlayerBindPress) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment