Revision Difference
Basic_scoreboard_creation#527213
<cat>Dev.UI</cat>
# About
This tutorial will explain the basics of creating a custom scoreboard in Garry's Mod.
I will only show how to start it. Customize it to your liking based off of what you learn here. You will require some knowledge of GMod LUA and Client/Server side differences.
I will only show how to start it. Customize it to your liking based off of what you learn here. You will require some knowledge of GMod Lua and Client/Server side differences.
Creating a scoreboard is simpler than one would think.
# Getting started
To start, create a client lua file to overwrite the default scoreboard. Then you will want to create the hooks to do so.
To start, create a client Lua file to overwrite the default scoreboard. Then you will want to create the hooks to do so.
## Required hooks
You should only need 2 hooks for the scoreboard:
* <page>GM:ScoreboardShow</page>
* <page>GM:ScoreboardHide</page>
ScoreboardShow and ScoreboardHide will Show and Hide the scoreboard, respectively.
## Basic template
We'll use an template, that Niandra and others use, to show the information on the scoreboard, you are expected to know how to set up the information on this page.
```
scoreboard = scoreboard or {}
function scoreboard:show()
--Create the scoreboard here, with an base like DPanel, you can use an DListView for the rows.
function scoreboard:hide()
-- This is where you hide the scoreboard, such as with Base:Remove()
end
end
function GM:ScoreboardShow()
scoreboard:show()
end
function GM:ScoreboardHide()
scoreboard:hide()
end
```
The code is self explanatory, it sets up the basic functions, and it calls the Hide & Show functions, the comments also show how to make a scoreboard, like using the <page>DListView</page> for creating the rows etc, and a <page>DPanel</page> for the base.
# Misc
If you use the DListView, and want to paint it, there are multiple ways. For example, I used this for the headers & rows:
```
--[[ Line painting ]]--
for _, v in pairs (player.GetAll()) do
local line = playerlist:AddLine(v:Name(), v:Frags(), v:Deaths(), v:Ping())
function line:Paint(w, h)
--Paint the LINEs here
end
end
--[[ Column header painting ]]--
for _, v in pairs(playerlist.Columns) do
function v.Header:Paint(w, h)
-- Paint the HEADERs here
end
v.Header:SetTextColor(Color(255, 255, 255, 0)) -- Set its text alpha with this in case you paint the text manually
end
```