How to make a scoreboard

I have been wondering if they is any tutorials on how to make a scoreboard, I looked on garrysmod.com Wiki and nothing there, do any of you guys know of any good tutorials?

Don’t lie.

I expcted like a made tutorial, all in one.

Sometimes we can’t give you everything in life on a silver platter. The challenge is to figure it out yourself.

Try fingering though the wiki with gamemode hooks such as GM.ShowScoreboard and functions on the Player like :Frags() and :Deaths()

Very crapply made, but it was made along time ago.
[lua]
function GM:HUDDrawScoreBoard()
if (!GAMEMODE.ShowScoreboard) then return end
local PlyTbl = player.GetAll()
local AddSize1 = 30*#PlyTbl
//surface.SetDrawColor( 10, 10, 10, 200 ) //Main
//surface.DrawRect( ScrH()/3, ScrW()/8, ScrH()/1.5, ScrH()/3.8242+AddSize1)

surface.SetDrawColor( 20, 20, 20, 250 ) //Title
surface.DrawRect( ScrH()/3, ScrW()/8, ScrH()/1.5, ScrH()/6)

surface.SetDrawColor( 30, 30, 30, 250 ) //OOC Name
surface.DrawRect( ScrH()/3, ScrW()/4, ScrH()/4.5, ScrH()/24)

surface.SetDrawColor( 40, 40, 40, 250 ) //OOC Name2
surface.DrawRect( ScrH()/3, ScrW()/3.555, ScrH()/4.5, AddSize1)

surface.SetDrawColor( 40, 40, 40, 250 ) //RP Name
surface.DrawRect( ScrH()/1.8, ScrW()/4, ScrH()/4.5, ScrH()/24)

surface.SetDrawColor( 30, 30, 30, 250 ) //RP Name2
surface.DrawRect( ScrH()/1.8, ScrW()/3.555, ScrH()/4.5, AddSize1)

surface.SetDrawColor( 30, 30, 30, 250 ) //Ping
surface.DrawRect( ScrH()/1.2875, ScrW()/4, ScrH()/9, ScrH()/24)

surface.SetDrawColor( 40, 40, 40, 250 ) //Ping2
surface.DrawRect( ScrH()/1.2875, ScrW()/3.555, ScrH()/9, AddSize1)

surface.SetDrawColor( 40, 40, 40, 250 ) //Admin?
surface.DrawRect( ScrH()/1.125, ScrW()/4, ScrH()/9, ScrH()/24)

surface.SetDrawColor( 30, 30, 30, 250 ) //Admin2
surface.DrawRect( ScrH()/1.125, ScrW()/3.555, ScrH()/9, AddSize1)
----------------------------

draw.DrawText("Name", "ScoreboardSub", ScrH()/3 +105, ScrW()/4, Color(255,255,255,255), 1 )
draw.DrawText("RP Name", "ScoreboardSub", ScrH()/1.8 +105, ScrW()/4 , Color(255,255,255,255), 1 )
draw.DrawText("Ping", "ScoreboardSub", ScrH()/1.2875 +52.5, ScrW()/4 , Color(255,255,255,255), 1 )
draw.DrawText("Time", "ScoreboardSub", ScrH()/1.125 +52.5, ScrW()/4 , Color(255,255,255,255), 1 )
draw.DrawText("BaseRP", "ScoreboardHead", ScrH()/3 +325, ScrW()/8+20, Color(255,255,255,255), 1 )

----------------------------
local Pos = 0
for k,v in pairs(PlyTbl)do
	draw.DrawText(v:Name(), "ScoreboardText", ScrH()/3 +105, ScrW()/3.5+Pos, Color(255,255,255,255), 1 )
	draw.DrawText("RPName", "ScoreboardText", ScrH()/1.8 +105, ScrW()/3.5+Pos, Color(255,255,255,255), 1 )
	draw.DrawText(tostring(v:Ping()), "ScoreboardText", ScrH()/1.2875 +52.5, ScrW()/3.5+Pos, Color(255,255,255,255), 1 )
	draw.DrawText("Time", "ScoreboardText", ScrH()/1.125 +52.5, ScrW()/3.5+Pos, Color(255,255,255,255), 1 )
	Pos = Pos+30
end

end
[/lua]