local proximity = script.Parent.ProximityPrompt
proximity.Triggered:Connect(function(player)
if Enum.KeyCode.Q then
game.StarterGui.ScreenGui.shop.Visible = true or player.PlayerGui.ScreenGui.shop.Visible == true
end
end)
Edit: I didn’t tested the script, because there was nothing after.
You need to run it on either JUST the client side or JUST the server side. When you’re using proximity prompt, it’s on the server side, but when ur using the back button it is on the client side and thinks that it’s closed on one client, but open on the other.
For this, I would run a remote event when the proximity prompt is triggered, and fire the client.
oh also replace game.StarterGui.ScreenGui.shop.Visible = true or player.PlayerGui.ScreenGui.shop.Visible == true with player.PlayerGui.ScreenGui.shop.Visible = true
local The_Proximity_Prompt = script.Parent.ProximityPrompt
local keycodeQ = Enum.KeyCode.Q
local player = game.Players.LocalPlayer
proximity.Triggered:Connect(function(player)
if game.StarterGui.ScreenGui.shop.Visible == true or player.PlayerGui.ScreenGui.shop.Visible == true then
Enum.KeyCode = keycodeQ
game.StarterGui.ScreenGui.shop.Visible = false or player.PlayerGui.ScreenGui.shop.Visible == false
else
game.StarterGui.ScreenGui.shop.Visible = true or player.PlayerGui.ScreenGui.shop.Visible == true
if not (game.StarterGui.ScreenGui.shop.Visible == false or player.PlayerGui.ScreenGui.shop.Visible == false) then
warn("It's still visible")
elseif not (game.StarterGui.ScreenGui.shop.Visible == true or player.PlayerGui.ScreenGui.shop.Visible == true) then
warn("It's not visible")
end
end
end)
If it doesn’t work, do this:
local keycodeQ = Enum.KeyCode.Q
local player = game.Players.LocalPlayer
if game.StarterGui.ScreenGui.shop.Visible == true or player.PlayerGui.ScreenGui.shop.Visible == true then
Enum.KeyCode = keycodeQ
game.StarterGui.ScreenGui.shop.Visible = false or player.PlayerGui.ScreenGui.shop.Visible == false
else
game.StarterGui.ScreenGui.shop.Visible = true or player.PlayerGui.ScreenGui.shop.Visible == true
if not (game.StarterGui.ScreenGui.shop.Visible == false or player.PlayerGui.ScreenGui.shop.Visible == false) then
warn("It's still visible")
elseif not (game.StarterGui.ScreenGui.shop.Visible == true or player.PlayerGui.ScreenGui.shop.Visible == true) then
warn("It's not visible")
end
end
local pressEvent = game:GetService("ReplicatedStorage"):WaitForChild("pressQ")
local function onPressEvent()
game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.shop.Visible = true
end
pressQ.OnClientEvent:Connect(onPressEvent)
Change your proximity script to this:
local prox = script.Parent.ProximityPrompt
local pressQ = game:GetService("ReplicatedStorage"):WaitForChild("pressQ")
prox.Triggered:Connect(function(player)
pressQ:FireClient(player)
end)