hey um
i fixed this up in a solid 2 seconds
enjoy
(base gamemode scoreboard)
cl_scoreboard.lua
[CODE]
surface.CreateFont( "ScoreboardHead",{ font = "coolvetica", size = 48, weight = 500, antialias = true, outline = false } )
surface.CreateFont( "ScoreboardSub",{ font = "coolvetica", size = 24, weight = 500, antialias = true, outline = false } )
surface.CreateFont( "ScoreboardText",{ font = "Tahoma", size = 16, weight = 1000, antialias = true, outline = false } )
/*---------------------------------------------------------
Name: gamemode:ScoreboardShow( )
Desc: Sets the scoreboard to visible
---------------------------------------------------------*/
function GM:ScoreboardShow()
GAMEMODE.ShowScoreboard = true
end
/*---------------------------------------------------------
Name: gamemode:ScoreboardHide( )
Desc: Hides the scoreboard
---------------------------------------------------------*/
function GM:ScoreboardHide()
GAMEMODE.ShowScoreboard = false
end
// TODO: CLEAN THIS CODE
function GM:GetTeamScoreInfo()
local TeamInfo = {}
for id,pl in pairs( player.GetAll() ) do
local _team = pl:Team()
local _frags = pl:Frags()
local _deaths = pl:Deaths()
local _ping = pl:Ping()
if (not TeamInfo[_team]) then
TeamInfo[_team] = {}
TeamInfo[_team].TeamName = team.GetName( _team )
TeamInfo[_team].Color = team.GetColor( _team )
TeamInfo[_team].Players = {}
end
local PlayerInfo = {}
PlayerInfo.Frags = _frags
PlayerInfo.Deaths = _deaths
PlayerInfo.Score = _frags - _deaths
PlayerInfo.Ping = _ping
PlayerInfo.Name = pl:Nick()
PlayerInfo.PlayerObj = pl
local insertPos = #TeamInfo[_team].Players + 1
for idx,info in pairs(TeamInfo[_team].Players) do
if (PlayerInfo.Frags > info.Frags) then
insertPos = idx
break
elseif (PlayerInfo.Frags == info.Frags) then
if (PlayerInfo.Deaths < info.Deaths) then
insertPos = idx
break
elseif (PlayerInfo.Deaths == info.Deaths) then
if (PlayerInfo.Name < info.Name) then
insertPos = idx
break
end
end
end
end
table.insert(TeamInfo[_team].Players, insertPos, PlayerInfo)
end
return TeamInfo
end
function GM:HUDDrawScoreBoard()
if (!GAMEMODE.ShowScoreboard) then return end
if (GAMEMODE.ScoreDesign == nil) then
GAMEMODE.ScoreDesign = {}
GAMEMODE.ScoreDesign.HeaderY = 0
GAMEMODE.ScoreDesign.Height = ScrH() / 2
end
local alpha = 255
local ScoreboardInfo = self:GetTeamScoreInfo()
local xOffset = ScrW() / 10
local yOffset = 32
local scrWidth = ScrW()
local scrHeight = ScrH() - 64
local boardWidth = scrWidth - (2* xOffset)
local boardHeight = scrHeight
local colWidth = 75
boardWidth = math.Clamp( boardWidth, 400, 600 )
boardHeight = GAMEMODE.ScoreDesign.Height
xOffset = (ScrW() - boardWidth) / 2.0
yOffset = (ScrH() - boardHeight) / 2.0
yOffset = yOffset - ScrH() / 4.0
yOffset = math.Clamp( yOffset, 32, ScrH() )
// Background
surface.SetDrawColor( 100, 150, 250, 200 )
surface.DrawRect( xOffset, yOffset, boardWidth, GAMEMODE.ScoreDesign.HeaderY)
surface.SetDrawColor( 150, 150, 150, 200 )
surface.DrawRect( xOffset, yOffset+GAMEMODE.ScoreDesign.HeaderY, boardWidth, boardHeight-GAMEMODE.ScoreDesign.HeaderY)
// Outline
surface.SetDrawColor( 0, 0, 0, 150 )
surface.DrawOutlinedRect( xOffset, yOffset, boardWidth, boardHeight )
surface.SetDrawColor( 0, 0, 0, 50 )
surface.DrawOutlinedRect( xOffset-1, yOffset-1, boardWidth+2, boardHeight+2 )
local hostname = GetHostName()
local gamemodeName = GAMEMODE.Name .. " - " .. GAMEMODE.Author
surface.SetTextColor( 255, 255, 255, 255 )
if ( string.len(hostname) > 32 ) then
surface.SetFont( "ScoreboardSub" )
else
surface.SetFont( "ScoreboardHead" )
end
local txWidth, txHeight = surface.GetTextSize( hostname )
local y = yOffset + 15
surface.SetTextPos(xOffset + (boardWidth / 2) - (txWidth/2), y)
surface.DrawText( hostname )
y = y + txHeight + 2
surface.SetTextColor( 255, 255, 255, 255 )
surface.SetFont( "ScoreboardSub" )
local txWidth, txHeight = surface.GetTextSize( gamemodeName )
surface.SetTextPos(xOffset + (boardWidth / 2) - (txWidth/2), y)
surface.DrawText( gamemodeName )
y = y + txHeight + 4
GAMEMODE.ScoreDesign.HeaderY = y - yOffset
surface.SetDrawColor( 0, 0, 0, 100 )
surface.DrawRect( xOffset, y-1, boardWidth, 1)
surface.SetDrawColor( 255, 255, 255, 20 )
surface.DrawRect( xOffset + boardWidth - (colWidth*1), y, colWidth, boardHeight-y+yOffset )
surface.SetDrawColor( 255, 255, 255, 20 )
surface.DrawRect( xOffset + boardWidth - (colWidth*3), y, colWidth, boardHeight-y+yOffset )
surface.SetFont( "ScoreboardText" )
local txWidth, txHeight = surface.GetTextSize( "W" )
surface.SetDrawColor( 0, 0, 0, 100 )
surface.DrawRect( xOffset, y, boardWidth, txHeight + 6 )
y = y + 2
surface.SetTextPos( xOffset + 16, y) surface.DrawText("#Name")
surface.SetTextPos( xOffset + boardWidth - (colWidth*3) + 8, y) surface.DrawText("#Score")
surface.SetTextPos( xOffset + boardWidth - (colWidth*2) + 8, y) surface.DrawText("#Deaths")
surface.SetTextPos( xOffset + boardWidth - (colWidth*1) + 8, y) surface.DrawText("#Ping")
y = y + txHeight + 4
local yPosition = y
for team,info in pairs(ScoreboardInfo) do
local teamText = info.TeamName .. " (" .. #info.Players .. " Players)"
surface.SetFont( "ScoreboardText" )
surface.SetTextColor( 0, 0, 0, 255 )
txWidth, txHeight = surface.GetTextSize( teamText )
surface.SetDrawColor( info.Color.r, info.Color.g, info.Color.b, 255 )
surface.DrawRect( xOffset+1, yPosition, boardWidth-2, txHeight + 4)
yPosition = yPosition + 2
surface.SetTextPos( xOffset + boardWidth/2 - txWidth/2, yPosition )
surface.DrawText( teamText )
yPosition = yPosition + 2
yPosition = yPosition + txHeight + 2
for index,plinfo in pairs(info.Players) do
surface.SetFont( "ScoreboardText" )
surface.SetTextColor( info.Color.r, info.Color.g, info.Color.b, 200 )
surface.SetTextPos( xOffset + 16, yPosition )
txWidth, txHeight = surface.GetTextSize( plinfo.Name )
if (plinfo.PlayerObj == LocalPlayer()) then
surface.SetDrawColor( info.Color.r, info.Color.g, info.Color.b, 50 )
surface.DrawRect( xOffset+1, yPosition, boardWidth - 2, txHeight + 2)
surface.SetTextColor( info.Color.r, info.Color.g, info.Color.b, 255 )
end
local px, py = xOffset + 16, yPosition
local textcolor = Color( info.Color.r, info.Color.g, info.Color.b, alpha )
local shadowcolor = Color( 0, 0, 0, alpha * 0.8 )
draw.SimpleText( plinfo.Name, "ScoreboardText", px+1, py+1, shadowcolor )
draw.SimpleText( plinfo.Name, "ScoreboardText", px, py, textcolor )
px = xOffset + boardWidth - (colWidth*3) + 8
draw.SimpleText( plinfo.Frags, "ScoreboardText", px+1, py+1, shadowcolor )
draw.SimpleText( plinfo.Frags, "ScoreboardText", px, py, textcolor )
px = xOffset + boardWidth - (colWidth*2) + 8
draw.SimpleText( plinfo.Deaths, "ScoreboardText", px+1, py+1, shadowcolor )
draw.SimpleText( plinfo.Deaths, "ScoreboardText", px, py, textcolor )
px = xOffset + boardWidth - (colWidth*1) + 8
draw.SimpleText( plinfo.Ping, "ScoreboardText", px+1, py+1, shadowcolor )
draw.SimpleText( plinfo.Ping, "ScoreboardText", px, py, textcolor )
//surface.DrawText( plinfo.Name )
//surface.SetTextPos( xOffset + 16 + 2, yPosition + 2 )
//surface.SetTextColor( 0, 0, 0, 200 )
//surface.DrawText( plinfo.Name )
//surface.SetTextPos( xOffset + boardWidth - (colWidth*3) + 8, yPosition )
//surface.DrawText( plinfo.Frags )
//surface.SetTextPos( xOffset + boardWidth - (colWidth*2) + 8, yPosition )
//surface.DrawText( plinfo.Deaths )
//surface.SetTextPos( xOffset + boardWidth - (colWidth*1) + 8, yPosition )
//surface.DrawText( plinfo.Ping )
yPosition = yPosition + txHeight + 3
end
end
yPositio
neat
Nice work
2 seconds guys thats very fast
2 seconds guys thats very
2 seconds guys thats
2 seconds guys
2 seconds
I like it, it also remembers me somewhat of GM:Stranded (Rubat? :o).
Does it work for multiple gamemodes? Like TTT, Murder, DarkRP, ... or does it need core editing?
If so, could you put up a multi-functional version, or different versions for some 'popular' gamemodes, then there will be more downloads/likes, I belive!
[QUOTE=whitestar;50599445]I like it, it also remembers me somewhat of GM:Stranded (Rubat? :o).
Does it work for multiple gamemodes? Like TTT, Murder, DarkRP, ... or does it need core editing?
If so, could you put up a multi-functional version, or different versions for some 'popular' gamemodes, then there will be more downloads/likes, I belive![/QUOTE]
it should work for any gamemode, it doesnt need core editing. im though, the only other time i tested it on was shinycows propkill gamemode (which uses sandbox as a base). ill test it on ttt in a second.
EDIT:
it doesn't show who the detective is in scoreboard
[IMG]http://i.imgur.com/izwtkea.jpg[/IMG]
Sorry, you need to Log In to post a reply to this thread.