Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to clone a GUI when a Part is clicked? (Check Desc)

Asked by 3 years ago

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:

01-- Varibles
02local BodycamHolder = script.Parent.BodycamHolder
03local BodycamGUI = game.ServerStorage.GUIs.BodyCam
04local EquippedStatus = false
05local Player = game.Players.LocalPlayer
06 
07-- Script
08 
09if script.Parent.BodycamHolder.ClickDetector.MouseClick then
10    local BodycamClone = BodycamGUI:Clone()
11    if EquippedStatus == false then
12        BodycamClone.Parent = Player.PlayerGui
13        EquippedStatus = true
14    else
15        if EquippedStatus == true then
16            BodycamClone:Destroy()
17        end
18    end
19end

Can anyone help me fix it?

0
Yeah, you should put your script in ServerScriptService if you want to hide it from exploiters. Still, even if it's in the workspace, exploiters can't see your code, but they can view and edit your LocalScripts' code and you can't do anything about it. This is the reason why you have to do all sanity checks on the server because the client can't be trusted. MarkedTomato 810 — 3y
0
It does not work. Joint_Ventures 5 — 2y

1 answer

Log in to vote
1
Answered by 3 years ago
Edited 3 years ago

Problem

This script has a couple problems.

  1. You can't get the LocalPlayer on the server.

  2. 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.

01-- Varibles
02local BodycamHolder = script.Parent.BodycamHolder
03local BodycamGUI = game.ServerStorage.GUIs.BodyCam
04 
05-- Script
06 
07script.Parent.BodycamHolder.ClickDetector.MouseClick:Connect(function(PlayerWhoClicked)
08    if not PlayerWhoClicked.PlayerGui:FindFirstChild(BodycamGUI.Name) then
09        BodycamGUI:Clone().Parent = Player.PlayerGui
10    else
11         PlayerWhoClicked.PlayerGui[BodycamGUI.Name]:Destroy()
12    end
13end)
0
Hi! I have had my script in workspace, do I need to change it to ServerScriptService? Joint_Ventures 5 — 3y
Ad

Answer this question