• Trouble with insert key to open derma
    3 replies, posted
I currently made a lua script where is opens my menu when i press insert but the problem is that i have to quickly press insert or it flickers really quick and its really annoying someone know how to fix this? [CODE]local mainMenu = nil local visible = true function GetKeyPress() if input.IsKeyDown(KEY_INSERT) then OpenMainMenu() end end hook.Add( "Think", "GetKeyPress", GetKeyPress ) function OpenMainMenu() visible = !visible if( mainMenu == nil ) then mainMenu = vgui.Create( "DFrame" ) mainMenu:SetSize( 620, 710 ) mainMenu:SetTitle( "Derp" ) mainMenu:SetDraggable( false ) mainMenu:ShowCloseButton ( true ) mainMenu:MakePopup() mainMenu:Center() mainMenu:SetVisible( true ) visible = true else mainMenu:SetVisible ( visible ) end end[/CODE]
I wouldn't use IsKeyDown because it will get called every frame while the key is down (I believe) input.WasKeyPressed should be sufficient as it only gets called the first frame the button is pressed. You should also move change your Think to a Move hook. I haven't tested your code but I'm assuming your current issue is that its creating a menu, removing it, creating it, and so on because you're using IsKeyDown over WasKeyPressed.
Thanks man iskeydown does work its just had to make it so if menu is on its 1 and when i press insert its 0 and you dont have to hold dont the button here is the code so if anyone has any trouble they can use my code and move there way around it <3 [CODE] local mainMenu = nil local visible = true local alreadypressed = nil function OpenMainMenu() // Toggle the visibility visible = !visible // NOTE: Updated this. I had it saying "menu" before which was wrong. if( mainMenu == nil ) then // Remove the "local" declaration and use the 'global (wthin scope)' variable. mainMenu = vgui.Create( "DFrame" ) mainMenu:SetSize( 620, 710 ) mainMenu:SetTitle( "Derp" ) mainMenu:SetDraggable( false ) mainMenu:ShowCloseButton ( true ) mainMenu:MakePopup() mainMenu:Center() // Since this is the first time we are opening the menu, set the visibility to true. mainMenu:SetVisible( true ) // And store the fact that it tis currently visible visible = true else // If the menu already exists, just toggle the visibility mainMenu:SetVisible ( visible ) end end function GetKeyPress() if input.IsKeyDown(KEY_INSERT) and alreadypressed == 0 then OpenMainMenu() alreadypressed = 1 elseif input.IsKeyDown(KEY_INSERT) then else alreadypressed = 0 end end hook.Add( "Think", "GetKeyPress", GetKeyPress )[/CODE]
[QUOTE=liamproctor99;51550903]Thanks man iskeydown does work its just had to make it so if menu is on its 1 and when i press insert its 0 and you dont have to hold dont the button here is the code so if anyone has any trouble they can use my code and move there way around it <3 [CODE] local mainMenu = nil local visible = true local alreadypressed = nil function OpenMainMenu() // Toggle the visibility visible = !visible // NOTE: Updated this. I had it saying "menu" before which was wrong. if( mainMenu == nil ) then // Remove the "local" declaration and use the 'global (wthin scope)' variable. mainMenu = vgui.Create( "DFrame" ) mainMenu:SetSize( 620, 710 ) mainMenu:SetTitle( "Derp" ) mainMenu:SetDraggable( false ) mainMenu:ShowCloseButton ( true ) mainMenu:MakePopup() mainMenu:Center() // Since this is the first time we are opening the menu, set the visibility to true. mainMenu:SetVisible( true ) // And store the fact that it tis currently visible visible = true else // If the menu already exists, just toggle the visibility mainMenu:SetVisible ( visible ) end end function GetKeyPress() if input.IsKeyDown(KEY_INSERT) and alreadypressed == 0 then OpenMainMenu() alreadypressed = 1 elseif input.IsKeyDown(KEY_INSERT) then else alreadypressed = 0 end end hook.Add( "Think", "GetKeyPress", GetKeyPress )[/CODE][/QUOTE] It does work but with WasKeyPressed you don't need to do any of these checks other than making sure you don't open the menu twice. Either way it's fine though, glad you figured it out.
Sorry, you need to Log In to post a reply to this thread.