• Hud not showing up
    9 replies, posted
I don't get any errors at all, but this code still doesn't seem to work: [lua] local function good_hud( ) 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: ", 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( "Armor: ", 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 ); [/lua] All of the variables are defined earlier in the code, I'm just posting the part where the HUD painting takes place. Can somebody tell me what I'm missing?
The [lua]hook.Add( "HUDPaint", "PaintOurHud", HUDPaint );[/lua] should be [lua]hook.Add( "HUDPaint", "PaintOurHud", good_hud );[/lua]
[QUOTE=Trivkz;21665779]The [lua]hook.Add( "HUDPaint", "PaintOurHud", HUDPaint );[/lua] should be [lua]hook.Add( "HUDPaint", "PaintOurHud", good_hud );[/lua][/QUOTE] Well that fixed the HUD not being called, but now I get: Hook 'PaintOurHud' Failed: geoforts\gamemode\cl_healtharmor.lua:70: attempt to index upvalue 'good_hud' (a function value)
You have a function and a table with the same name.
[QUOTE=MakeR;21666352]You have a function and a table with the same name.[/QUOTE] That solved it, but now I have yet another error.. I get: geoforts\gamemode\cl_healtharmor.lua:13: '}' expected (to close '{' at line 11) near 'textsize' Here's my whole code: [lua] function hidehud(name) for k, v in pairs{"CHudHealth", "CHudBattery"} do if name == v then return false end end end hook.Add("HUDShouldDraw", "hidehud", hidehud) goodhud = { } local vars = { font = "TargetID" textsize = 8 padding = 10 margin = 35 textspacing = 2 barspacing = 5 barheight = 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 ) }, healthbar = { border = Color( 255, 0, 0, 255 ), background = Color( 255, 0, 0, 75 ), shade = Color( 255, 104, 104, 255 ), fill = Color( 232, 0, 0, 255 ) }, suitbar = { 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 drawmyhud( ) 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 = goodhud:TextSize( "TEXT", vars.textsize ); -- 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 barwidth = width - ( vars.padding * i ); -- calculate bar width and element height local height = ( vars.padding * i ) + ( th * i ) + ( vars.textspacing * i ) + ( vars.barheight * i ) + vars.barspacing; 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; goodhud:PaintPanel( x, y, width, height, colors.background ); -- paint the background panel local by = th + vars.textspacing; -- calc text position local text = string.format( "Health: ", client:Health( ) ); -- get health text goodhud:PaintText( cx, cy, text, vars.font, colors.text ); -- paint health text and health bar goodhud:PaintBar( cx, cy + by, barwidth, vars.barheight, colors.healthbar, client:Health( ) / 100 ); by = by + vars.barheight + vars.barspacing; -- increment text position local text = string.format( "Armor: ", client:Armor( ) ); -- get suit text goodhud:PaintText( cx, cy + by, text, vars.font, colors.text ); -- paint suit text and suit bar goodhud:PaintBar( cx, cy + by + th + vars.textspacing, barwidth, vars.barheight, colors.suitbar, client:Armor( ) / 100 ); end hook.Add( "HUDPaint", "PaintOurHud", drawmyhud ); [/lua] It doesn't make sense, there isn't any '}' at line 13..
You need to seperate each field in your table with a comma. [lua]local vars = { font = "TargetID", textsize = 8, padding = 10, margin = 35, textspacing = 2, barspacing = 5, barheight = 16, width = 0.25 }; [/lua]
[QUOTE=MakeR;21675036]You need to seperate each field in your table with a comma. [lua]local vars = { font = "TargetID", textsize = 8, padding = 10, margin = 35, textspacing = 2, barspacing = 5, barheight = 16, width = 0.25 }; [/lua][/QUOTE] :doh: I missed a comma on 'textsize', and I thought the commas were a problem. Thanks! [editline]01:10PM[/editline] :sigh: Now I get: Hook 'PaintOurHud' Failed: geoforts\gamemode\cl_healtharmor.lua:67: attempt to call method 'TextSize' (a nil value)
*bump*
[QUOTE=Slayer1218;21675313]:doh: I missed a comma on 'textsize', and I thought the commas were a problem. Thanks! [editline]01:10PM[/editline] :sigh: Now I get: Hook 'PaintOurHud' Failed: geoforts\gamemode\cl_healtharmor.lua:67: attempt to call method 'TextSize' (a nil value)[/QUOTE] You need to tell TextSize to stop being a nil value! Duh! [editline]08:12PM[/editline] XD
You are trying to call a method on goodhud that doesn't exist. The tutorial that you got that code from shows you how to define the method.
Sorry, you need to Log In to post a reply to this thread.