HUD error

Im making a custom HUD for my gamemode and i used the complete code from a tutorial.

function hidehud(name)
    for k, v in pairs{"CHudHealth", "CHudBattery", "CHudAmmo", "CHudSecondaryAmmo"} do
        if name == v then return false end
    end
end
hook.Add("HUDShouldDraw", "hidehud", hidehud)
local function HUDPaint( )
 
    client = client or LocalPlayer( );                -- set a shortcut to the client
    if( !client:Alive( ) ) then return; end                -- don't draw if the client is dead
 
    local _, th = good_hud:TextSize( "TEXT", vars.font );        -- get text size( height in this case )
 
    local i = 2;                            -- shortcut to how many items( bars + text ) we have
 
    local width = vars.width * ScrW( );                -- calculate width
    local bar_width = width - ( vars.padding * i );            -- calculate bar width and element height
    local height = ( vars.padding * i ) + ( th * i ) + ( vars.text_spacing * i ) + ( vars.bar_height * i ) + vars.bar_spacing;
 
    local x = vars.margin;                        -- get x position of element
    local y = ScrH( ) - vars.margin - height;            -- get y position of element
 
    local cx = x + vars.padding;                    -- get x and y of contents
    local cy = y + vars.padding;
 
    good_hud:PaintPanel( x, y, width, height, colors.background );    -- paint the background panel
 
    local by = th + vars.text_spacing;                -- calc text position
 
    local text = string.format( "Health: %iHP", client:Health( ) );    -- get health text
    good_hud:PaintText( cx, cy, text, vars.font, colors.text );    -- paint health text and health bar
    good_hud:PaintBar( cx, cy + by, bar_width, vars.bar_height, colors.health_bar, client:Health( ) / 100 );
 
    by = by + vars.bar_height + vars.bar_spacing;            -- increment text position
 
    local text = string.format( "Suit: %iSP", client:Armor( ) );    -- get suit text
    good_hud:PaintText( cx, cy + by, text, vars.font, colors.text );    -- paint suit text and suit bar
    good_hud:PaintBar( cx, cy + by + th + vars.text_spacing, bar_width, vars.bar_height, colors.suit_bar, client:Armor( ) / 100 );
 
end
hook.Add( "HUDPaint", "PaintOurHud", HUDPaint );

NOTE: all of this code is from a tutorial i didnt made it i was just checking how it looked

What is the error?

oh sorry forgot that

Hook 'PaintOurHud' Failed: tdmrpg\gamemode\cl_hud.lua:12: attempt to index global 'good_hud' (a nil value)

You either haven’t followed the tutorial properly, or you just copied and pasted expecting it to work.

There are about five or six function calls to non existent functions in your code.

ok i will look more into it

[editline]09:56PM[/editline]

NOTE: i made this post so someone knows i posted a new entry
ok ive looked at the tutorial and tried to fix it but i cant i get this error now:

Hook 'PaintOurHud' Failed: tdmrpg\gamemode\cl_hud.lua:71: attempt  to call method 'TextSize' (a nil value)
good_hud = { };
local vars =
{
 
    font = "1",
 
    padding = 10,
    margin = 35,
 
    text_spacing = 2,
    bar_spacing = 5,
 
    bar_height = 16,
 
    width = 0.25
 
};
 
local colors =
{
 
    background =
    {
 
        border = Color( 190, 255, 128, 255 ),
        background = Color( 120, 240, 0, 75 )
 
    },
 
    text =
    {
 
        shadow = Color( 0, 0, 0, 200 ),
        text = Color( 255, 255, 255, 255 )
 
    },
 
    health_bar =
    {
 
        border = Color( 255, 0, 0, 255 ),
        background = Color( 255, 0, 0, 75 ),
        shade = Color( 255, 104, 104, 255 ),
        fill = Color( 232, 0, 0, 255 )
 
    },
 
    suit_bar =
    {
 
        border = Color( 0, 0, 255, 255 ),
        background = Color( 0, 0, 255, 75 ),
        shade = Color( 136, 136, 255, 255 ),
        fill = Color( 0, 0, 219, 255 )
 
    }
 
};
 
local function HUDPaint( )
 
    client = client or LocalPlayer( );                -- set a shortcut  to the client
    if( !client:Alive( ) ) then return; end                -- don't draw  if the client is dead
 
    local _, th = good_hud:TextSize( "TEXT", vars.font );        -- get  text size( height in this case )
 
    local i = 2;                            -- shortcut to how many  items( bars + text ) we have
 
    local width = vars.width * ScrW( );                -- calculate  width
    local bar_width = width - ( vars.padding * i );            --  calculate bar width and element height
    local height = ( vars.padding * i ) + ( th * i ) + (  vars.text_spacing * i ) + ( vars.bar_height * i ) + vars.bar_spacing;
 
    local x = vars.margin;                        -- get x position of  element
    local y = ScrH( ) - vars.margin - height;            -- get y  position of element
 
    local cx = x + vars.padding;                    -- get x and y of  contents
    local cy = y + vars.padding;
 
    good_hud:PaintPanel( x, y, width, height, colors.background );    --  paint the background panel
 
    local by = th + vars.text_spacing;                -- calc text  position
 
    local text = string.format( "Health: %iHP", client:Health( ) );     -- get health text
    good_hud:PaintText( cx, cy, text, vars.font, colors.text );    --  paint health text and health bar
    good_hud:PaintBar( cx, cy + by, bar_width, vars.bar_height,  colors.health_bar, client:Health( ) / 100 );
 
    by = by + vars.bar_height + vars.bar_spacing;            --  increment text position
 
    local text = string.format( "Suit: %iSP", client:Armor( ) );    --  get suit text
    good_hud:PaintText( cx, cy + by, text, vars.font, colors.text );     -- paint suit text and suit bar
    good_hud:PaintBar( cx, cy + by + th + vars.text_spacing, bar_width,  vars.bar_height, colors.suit_bar, client:Armor( ) / 100 );
 
end
hook.Add( "HUDPaint", "PaintOurHud", HUDPaint );

You are trying to call functions on good_hud, for example:
Line 90 good_hud:PaintText(…).

You haven’t defined any of these functions.

yes i know but it doesnt stand anything about that in the tutorial: http://wiki.garrysmod.com/?title=Creating_a_HUD
The HUD is looking really good so i really want this to work.

I can see that the tutorial does define all the functions you are missing, you just have to read through it properly.

You are just copy and pasting from the stuff at the bottom. Be patient and read it, We need a lazy rating!

ok sorry for that i red it to fast and yeah im a bit lazy

EDIT: I fixed it and i rated myself dumb!
EDIT on EDIT: it didnt work voting your own post…

I have now tried to fix a error with it but it wont work.
When i die i sometimes get this error and the hud closes:

Hook 'PaintOurHud' Failed: tdmrpg\gamemode\cl_hud.lua:165: attempt to call method 'Clip1' (a nil value)

and the code thats making this is:

    local mag_left = 0
    local mag_extra = 0
    if( client:Alive( ) == true ) then
    mag_left = client:GetActiveWeapon():Clip1() or 0 // How much ammunition you have inside the current magazine
    mag_extra = client:GetAmmoCount(client:GetActiveWeapon():GetPrimaryAmmoType()) or 0
    end

You should check if the Active Weapon is a valid entity before you try calling any methods on it.

[lua]local mag_left = 0
local mag_extra = 0
if client:Alive( ) then – you don’t need to check for equality with true.
local weap = client:GetActiveWeapon();
if ValidEntity(weap) then
mag_left = weap:Clip1() or 0;
mag_extra = client:GetAmmoCount(weap:GetPrimaryAmmoType()) or 0;
end
end[/lua]

oh thanks will try