here's my script
GUI = game.StarterGui.ScreenGui.TextBox.Visible function onClick() GUI = true wait(5) GUI = false end script.Parent.ClickDetector.MouseClick:connect(onClick)
GUI = game.Players.PlayerGui.ScreenGui.TextBox.Visible function onClick() GUI = true wait(5) GUI = false end script.Parent.ClickDetector.MouseClick:connect(onClick)
this will make the gui visible for 5 seconds, you dont change startergui because startergui is just the gui that will give players their guis, instead change player.playergui since thats what the players will see
Original Code
So the errors that I can locate is imply the error on the first line
GUI = game.StarterGui.ScreenGui.TextBox.Visible--here function onClick() GUI = true wait(5) GUI = false end script.Parent.ClickDetector.MouseClick:connect(onClick)
The problem with it is you are trying to change the GUI in StarterGui which means it won't affect the player as when playing the game their GUI is in a different location.
Changed Code
So in order to correct this you will need to fix where GUI is pointing but there is a small problem. In order to get the Players GUI you need to get the player first which cant be done where the GUI line currently is so lets move it to the correct place
function onClick(player)--add player so we can so who clicked the block from click detector GUI = player.PlayerGui.ScreenGui.TextBox.Visible--this is the shorter way to write this GUI = true wait(5) GUI = false end script.Parent.ClickDetector.MouseClick:connect(onClick)
Now hopefully that will function as you intended it too I would also recommend adding a debounce so players can't spam the system
try this, and put the gui in replicated storage
gui = game:GetService("ReplicatedStorage").ScreenGui.TextBox active = false function onClick() if active == false then active = true -- to prevent spamm gui.Visible = true wait(5) gui.Visible = false active = false -- to make it be able to run again end end script.Parent.ClickDetector.MouseClick:Connect(onClick)