Aligning text on Scoreboard

Hello, I wanted to ask, how the text on scoreboards is aligned, like ping, frags, death etc are more on the left, currently I had something like this only:

for _,v in pairs(player.GetAll()) do
		local dpanel = vgui.Create("DPanel")
		dpanel:SetSize(dpanellist:GetWide(), 32)
		function dpanel:Paint(w, h)
			--draw.RoundedBox(0, 0, 0, w, h, Color(29, 29, 29))
			--draw.RoundedBox(0, 0, h - 1, w, 1, Color(23, 23, 23))

			draw.RoundedBox(0, 0, 0, w, h, team.GetColor(v:Team()))
			--draw.RoundedBox(0, 0, h - 1, w, 1, Color(23, 23, 23))
			draw.RoundedBox(0, 0, h - 1, w, 1, Color(29, 29, 29))

		local avatar = vgui.Create("AvatarImage", dpanel)
		avatar:SetPlayer(v, 32)
		avatar:SetSize(32, 32)
		avatar:SetPos(0, 0)

		local name = vgui.Create("DLabel", dpanel)
		name:SetText(v:Name().." | "..v:Frags().." | "..v:Deaths().." | "..v:Ping())
		name:SetColor(Color(192, 57, 43))
		name:SetPos(36, 0)
		function name:DoClick()


but how do I make like several “Colums” to align them?

[editline]24th July 2015[/editline]

I’ve seen in garry’s scoreboard he uses “:Add()”, but its quite bugged for me, it doesnt align too.

You need to use math. Like set variable, like width, to a default integer, then when you create a column, add a certain amount to it.[HR][/HR]

Already got Garry’s “PLAYER_LINE” to work, closed.