Garry's Mod Wiki

Revision Difference

Basic_scoreboard_creation#527221

<title>Basic Scoreboard Creation</title>⤶ <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. 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. ## 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 ```