--when the player touch this brick it will give him a gui , but if the player already have one this script wont give it to him and this is what I want . the only problem is in line 14 , I cant access the playergui and I don't know how to fix it
01 | function onPJ(plr) |
02 | local humanoid = plr.Parent:FindFirstChild( "Humanoid" ) |
03 | if humanoid then |
04 | local player = game.Players:GetPlayerFromCharacter(plr.Parent) |
05 | local alreadygui = player.PlayerGui:FindFirstChild( "Buy" ) |
06 | if alreadygui = = nil then |
07 | print ( "nothere" ) |
08 | local GUI = script.Buy:clone() |
09 | GUI.Parent = player.PlayerGui |
10 | elseif alreadygui ~ = nil then |
11 | print ( "ishere" ) |
12 |
13 |
14 | player.PlayerGui.Buy.Frame.Visible = true |
15 |
Through a** LocalScript**
1 | local player = game.Players.LocalPlayer |
2 |
3 | local playergui = player:WaitForChild( "PlayerGui" ) |
There is actually no way to get to the player with the touch event on the normal script. And you cant use a localScript to call a touched event. the best and probably only way is using RemoteEvents. Call the remote when the player is touched. call the remote by client
im so sorry if i explained it POORLY. if you can understand it tho, please try it.
Change this
1 | local player = game.Players:GetPlayerFromCharacter(plr.Parent) |
To this
1 | local player = game.Players.LocalPlayer |
and to access the PlayerGui just do this
1 | local playergui = player.PlayerGui |
Do this with a localscript