UserInputService help

I’m making a menu where you can open it with the tab button, but that way I do it currently seems to not work as I expected:
(For some reason, the menu only opens, and does not close.)

RBXUserInputService.InputBegan:Connect(function(InputObject, gameProccessedEvent)
	
	if gameProccessedEvent then return end
	
	local MenuOpen = false
	
	if RBXUserInputService:IsKeyDown(Enum.KeyCode.Tab) and MenuOpen == false then
		
		MenuOpen = true
		MainMenu.Visible = true
		MainMenu.IsVisible.Value = true
		
	end
		
	if RBXUserInputService:IsKeyDown(Enum.KeyCode.Tab) and MenuOpen == true then
		
		MenuOpen = false
		MainMenu.Visible = false
		MainMenu.IsVisible.Value = false
		
	end
	

Thanks!

local MenuOpen = false

This needs to be declared outside the .InputBegan event.

1 Like

Thats odd, it no longer opens or closes.

(PlayerList is disabled.)

Can you copy and paste the whole modified script?

-- [ | Variables | ]

local JoinService = require(script.Parent.JoinService)
local RBXUserInputService = game:GetService("UserInputService")
local UIService = require(script.Parent.UIService)
local cDataService = require(script.Parent.cDataService)
local WebService = require(script.Parent.WebService)
local UIShelfExtension = require(script.Parent.UIShelf)
local StarterGui = game:GetService("StarterGui")
local MainMenu = JoinService:GetCurrentPlayer():WaitForChild("PlayerGui"):WaitForChild("UIService_canary").MainMenu
local MenuOpen = false

-- [ | End Of Variables | ]

-- [ | ClientConfiguration for Canary Client v1 by @maddjames28 | ]
-- [ | TODO:⠀Remember⠀to⠀utilize⠀task⠀functions⠀if⠀available! | ]

UIShelfExtension:CreateButton("MenuButton", 8809912349, 940, 940)

RBXUserInputService.InputBegan:Connect(function(InputObject, gameProccessedEvent)
	
	if gameProccessedEvent then return end
	
	if RBXUserInputService:IsKeyDown(Enum.KeyCode.Tab) and MenuOpen == false then
		
		MenuOpen = true
		MainMenu.Visible = true
		MainMenu.IsVisible.Value = true
		
	end
		
	if RBXUserInputService:IsKeyDown(Enum.KeyCode.Tab) and MenuOpen == true then
		
		MenuOpen = false
		MainMenu.Visible = false
		MainMenu.IsVisible.Value = false
		
	end
	
end)

while task.wait(0.1) do
	
	if MainMenu.IsVisible.Value == true then
		
		UIService:DisableTopbar()
		
	else
		
		UIService:EnableTopbar()
		
	end
	
end

and the GetCurrentPlayer functions works fine.

function module:GetCurrentPlayer()
	return game.Players.LocalPlayer
end
RBXUserInputService.InputBegan:Connect(function(InputObject, gameProccessedEvent)
	if gameProccessedEvent then return end
	MenuOpen = not MenuOpen
	
	if RBXUserInputService:IsKeyDown(Enum.KeyCode.Tab) then
		if MenuOpen then
			MainMenu.Visible = true
			MainMenu.IsVisible.Value = true
		elseif not MenuOpen then
			MainMenu.Visible = false
			MainMenu.IsVisible.Value = false
		end
	end
end)
1 Like