OnPlayerDeath Question

Hey FP peeps.

I have my OnPlayerDeath func ready. but theres one problem… I want to execute a type of death_menu in cl_init, and…

It says RunConsoleCommand cant be used there and when i use ply:ConCommand( “death_menu” ) (( yes i made cmd in cl_init))
it says it cant be found.

Pl0x help <3

It would help if you posted the actual code. (are you sure this is being run on the client as well?)

So it just says ‘unknown command: death_menu’ when it tries to make you open the menu?

Maybe there’s an error in the menu function. I think concommand.Add refuses to add the function if it has a syntax error, or the whole script quits out and concommand.Add never gets run, or something like that.

If this is for a gamemode then cl_init.lua should be fine. But if you’re putting this into an addon make sure the files are always uniquely named or one will start overwriting the other.

I don’t know, I’m just trying to put forward some possible causes for it not working.

cl_init.lua
[lua]
function deathmenu()
local death = vgui.Create( “DFrame” )

death:Center()
death:SetSize( 250, 125 )
death:SetTitle( "You are dead" )
death:SetVisible( true )
death:SetDraggable( false )
death:SetFocus( true )
death:ShowCloseButton( false )
death:MakePopup()
death.Paint = function()
	draw.SimpleText("Testtestrespawnpl0x","DefaultSmall",25,50,Color(0,0,0,255))
end
concommand.Add( "death_menu", deathmenu )

local spawn = vgui.Create( “DButton” )

spawn:SetText( "Respawn" )
spawn:SetPos( 25, 95 )
spawn:SetSize( 50, 25 )
spawn.DoClick = function()
	RunConsoleCommand( "gm_spawn" )
	spawn:Remove()
end

end
[/lua]
INIT.lua
[lua]
/-------------------------------------------------------------------------------------------------
Name: gamemode:DoPlayerDeath( )
Desc: Carries out actions when the player dies
---------------------------------------------------------------------------------------------------
/
function GM:DoPlayerDeath( ply, killer )

ply:RunConsoleCommand( "death_menu" )

ply:AddDeaths( 1 )

end
[/lua]

Ok. There’s several things wrong here.

  1. Do NOT override DoPlayerDeath. Just hook into PlayerDeath.

  2. RunConsoleCommand is both A. a clientside function and B. not a part of the player metatable, so just use ply:ConCommand.

  3. Create the concommand (“death_menu”) OUTSIDE of the deathmenu function, otherwise it will never be created.

  4. Make sure you set the “spawn” button’s parent to the frame.

  5. gm_spawn is used to spawn props, it doesn’t make you respawn.

  6. Remove() is a function for entities, not derma panels. Plus, you want to close teh whole frame and not just the button. Use death:Close().

  7. You’re overriding the death.Paint function without drawing the background. That means it will show some text and a close button, but be completely empty otherwise.

And you should really make the button a child of the panel, eg.

local spawn = vgui.Create(“DButton”, death)

It might even be technically required for the script not to have a fit and shout at you.

Fuck I didn’t notice you say that as point 4

It seems i have missed alot. might skip that part of the gamemode a great while…

I suck at derma/vgui so… But is it hook.Add( “PlayerDeath”, “whenplayerdieslol” )

[lua]
function myfunc(ply)
end
hook.Add(“PlayerDeath”, “UniqueHookName”, myfunc)
[/lua]

Ok so that part i know…

Is there any cmd for respawn player? That way it would be much cooler. I could skip this part. But it would look so neat.

player:Spawn()

Thats not a console command, but its a function.