I am trying to make a script where if a part is clicked it will clone a GUI but only the person that clicked on the part can see the GUI and when they click it again it deletes the clone and it can't get spammed.
This is my script:
-- Varibles local BodycamHolder = script.Parent.BodycamHolder local BodycamGUI = game.ServerStorage.GUIs.BodyCam local EquippedStatus = false local Player = game.Players.LocalPlayer -- Script if script.Parent.BodycamHolder.ClickDetector.MouseClick then local BodycamClone = BodycamGUI:Clone() if EquippedStatus == false then BodycamClone.Parent = Player.PlayerGui EquippedStatus = true else if EquippedStatus == true then BodycamClone:Destroy() end end end
Can anyone help me fix it?
Problem
This script has a couple problems.
You can't get the LocalPlayer on the server.
You need to know how events work.
Solution
The MouseClick event gives us a parameter of the Player who clicked. The parameter is actually a Player instance.
Also, you should check the output it can tell you if you got any errors in your code. The output can be found by clicking on "View" located on the topbar and you'll see an Output button click it and it should pop up.
-- Varibles local BodycamHolder = script.Parent.BodycamHolder local BodycamGUI = game.ServerStorage.GUIs.BodyCam -- Script script.Parent.BodycamHolder.ClickDetector.MouseClick:Connect(function(PlayerWhoClicked) if not PlayerWhoClicked.PlayerGui:FindFirstChild(BodycamGUI.Name) then BodycamGUI:Clone().Parent = Player.PlayerGui else PlayerWhoClicked.PlayerGui[BodycamGUI.Name]:Destroy() end end)