1

# (Player Name) is not a valid member of Players. Help anyone?

Hi guys, this is my first ever question on here. So I'm trying to make a Camping-like game it is called Truth or Dare. All the other scripts work except for this one. The script is supposed to make a GUI pop up once a player touches a specific part. But when I touch the part, I look at the output and an error has popped up saying, "ally_playz336 is not a valid member of Players." So here is the script:

local GUI = script.Parent.ScreenGui -- You might want to change this to whatever your GUI is.
script.Parent.PlayerTouched:connect(function(hit)
if hit.Parent and game.Players:FindFirstChild(hit.Parent.Name) then
local plr = game.Players(hit.Parent.Name)
if plr:FindFirstChild("PlayerGui") and not plr.PlayerGui:FindFirstChild(GUI.Name) then
GUI.Clone().Parent = plr.PlayerGui
end
end
end)


I don't know if there is anything wrong with it, because it looks fine to me. The only problem is that it won't work. Help is greatly appreciated ????

0

hit.Parent.Name is a part of hit.Parent. not a child (I think, correct me if im wrong), so an easier way to get the person touched would be to used GetPlayerFromCharacter.

if hit.Parent and game.Players:FindFirstChild(hit.Parent.Name) then
local plr = game.Players(hit.Parent.Name)


Try:

if hit.Parent  then
local plr = hit.Parent:GetPlayerFromCharacter


So the script would be:

local GUI = script.Parent.ScreenGui

script.Parent.PlayerTouched:connect(function(hit)
if hit.Parent and game.Players:FindFirstChild(hit.Parent.Name) then
local plr = hit.Parent:GetPlayerFromCharacter
if plr:FindFirstChild("PlayerGui") then
GUI.Clone().Parent = plr.PlayerGui
end
end
end)


I hope that works!

Also I don't know why you need:

and not plr.PlayerGui:FindFirstChild(GUI.Name) then


But again, correct me if theres a reason. ;D

0
@fighterkirbyzx It still doesn't work. Another error has popped up in my output saying, "16:55:45.783 - Workspace.GUIGiver.Script:6: Expected '(', '{' or <string>, got 'if'" I don't think it works :( ally_playz336 -1 — 3y
0
what line was the error? manith513 101 — 3y
0
@manith513 The error had a 6 in it, so I think it may be on line 6. ally_playz336 -1 — 3y
0
wiat manith513 101 — 3y
0
what? :| ally_playz336 -1 — 3y
0
I know the issue manith513 101 — 3y
0
0
i forgot the () ;-; fighterkirbyzx 102 — 3y
0
manith513 101
3 years ago
Edited 3 years ago

NOW AFTER EDITS OFFICIALLY WORKING!

Sorry I glitched from my other comment can you tell me if this works I think you should try the script with this

local GUI = script.Parent.ScreenGui

script.Parent.Touched:Connect(function(hit)
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
if plr then
if plr:FindFirstChild("PlayerGui") then
GUI.Clone().Parent = plr.PlayerGui.ScreenGui
end
end

end)



always remember to add the next child screen gui after player gui btw

0
Sorry I forgot about the parenthesis try this now manith513 101 — 3y
1
GetPlayerFromCharacter is a method of game.Players. The line should read "local player = game.Players:GetPlayerFromCharacter(hit.Parent)". An then you'll need to check if player exists. See the bottom of this page https://developer.roblox.com/en-us/api-reference/function/Players/GetPlayerFromCharacter vector3_zero 1056 — 3y
0
0
@vector thanks I forgot about that manith513 101 — 3y
0
@manith I dont think this one works either. PlayerTouched is not a valid member of Part... :c ally_playz336 -1 — 3y
0
also why dont you use script.Parent.Touched:Connect? I've never even used PlayerTouched fighterkirbyzx 102 — 3y
0
@ally lemme edit the script real quick manith513 101 — 3y
0
@ally finished manith513 101 — 3y
0
@ally I just made some new edits that i tested and it should work it works on my behalf manith513 101 — 3y
0
@ally for some reason the ends are misplaced to move the end on line 8 under the if plr find first child state ment on the same line and move the end on line 9 to the if plr is a statement on the same line manith513 101 — 3y
0
Line 5 should read "if plr then". It will either exist or not. You just need to check if it exists, and if it does it can only be a player as we got it from GetPlayerFromCharacter, which returns a player or nil. vector3_zero 1056 — 3y
0
right thank you manith513 101 — 3y
0
vector3_zero do you mind looking at one of my posts about an arrow direction please? you look like a pretty good scripter do you mind helping me please? manith513 101 — 3y
0
vector3_zero wait is there a difference between hit.Parent:GetPlayerFromCharacter() and game.Players:GetPlayerFromCharacter(hit.Parent)? fighterkirbyzx 102 — 3y