Making A Gui Appear On Touch From The Player Gui, But It Aint Working, Anybody Got Any Ideas? Here Is My Script:
local plr = game.Players.LocalPlayer function onTouched(part) plr.PlayerGui.GameGui.SwordShop1.Visible = true end script.Parent.Touched:connect(onTouched)
You can’t get the local player on a server script. A server script is just a regular script. You can get the player within the touched event by calling a function :GetPlayerFromCharacter()
A character is just the interactive and visual appearance of the player, like the hats, the shirts and everything else. Whenever a character touches a brick only their body parts (head, torso, right arm) will be seen as “touched”.
To get a player from the character you get the character which is part.Parent. You can store it in a variable too. You also need to check if “part” is actually part of the parent. I included that for you.
Your script fixed will be:
function onTouched(part) if part.Parent:FindFirstChild(“Humanoid”) then local Player = game.Players:GetPlayerFromCharacter(part.Parent) Player.PlayerGui.GameGui.SwordShop1.Visible = true end end script.Parent.Touched:connect(onTouched)
In order to get the PlayerGui
with a server script, try using RemoteEvents
. Here, let me show you the ServerScript
.
1) First, place a RemoteEvent
inside ReplicatedStorage
.
2) Get the .Touched
script and write this;
script.Parent.Touched:Connect(function(hit) if hit.Parent:WaitForChild('Humanoid') then game.ReplicatedStorage.RemoteEvent:FireClient() end end)
3) Now, place a LocalScript
inside of your SwordShop1
and write;
game.ReplicatedStorage.OnClientEvent:Connect(function() script.Parent.Visable = true end)
Voila! I hope I helped. If you don't understand something, then feel free to ask me on the comments.