• executing a function when a vgui frame gets closed
    3 replies, posted
Hi, I'd want to make a function, something like function Button:DoClick() but instead of being run when the button is pressed, i want it to run when a frame is closed, so something like function Frame:IsClosed() Whats the fucntion?
Does the button close the frame? Anyway, there's no function (that I know of) for that. Maybe you could try overriding panel:Remove (it might be panel:Close for DPanels) to run your shizz. [code] local old = PANEL.Remove function PANEL:Remove( ) run_stuff( ) old( self ) end [/code] If that doesn't work then try changing Remove to Close.
I get this error HLTF\gamemode\shared.lua:35: function arguments expected near 'function' [lua]GM.Name = "Half Life 2: Team Fortress" GM.Author = "Tera" GM.Email = "gabrycir@hotmail.it" DeriveGamemode( "base" ) team.SetUp( 1, "Combine", Color( 0, 50, 200, 255 ) ) team.SetUp( 2, "Resistance", Color( 200, 0, 0, 255 ) ) function change_model_combine() local ply = LocalPlayer() ply:SetModel("models/combine_soldier.mdl") end function classchange() Msg ("M HAS BEEN PRESD") if CLIENT then local Frame = vgui.Create("Frame"); Frame:SetSize(200, 200) Frame:SetPos((ScrW()/2)-100, (ScrH()/2)-100) Frame:SetVisible(true) Frame:MakePopup() Frame:PostMessage("SetTitle", "text", "This is the title") local Button = vgui.Create("Button", Frame) Button:SetText("Click me") Button:SetPos(30, 100) Button:SetWide(100) function Button:DoClick() change_model_combine() Frame:Close() frameopen = false local old = PANEL:Remove function PANEL:Remove( ) frameopen = false old( self ) end end end end frameopen = false local function Think( ) if( input.IsKeyDown( KEY_M ) and frameopen ~= true ) then -- m key was pressed frameopen = true classchange() elseif( keydown == true ) then end end hook.Add( "Think", "CheckKeyInput", Think ); [/lua]
[lua] local old = PANEL.Remove function PANEL:Remove( self ) run_stuff( ) old( self ) end [/lua] Try that. Also, you have put your function inside of it, right?
Sorry, you need to Log In to post a reply to this thread.