RESOLVED BUT KEEPING UP IN CASE SOMEONE WHO NEEDS HELP WITH THIS LATER ON STUMBLES OVER THIS
The issue with this was that I was trying to access other players' PlayerGuis from a local script, which is in fact, impossible. What you need to do is use remoteevents. Cheers!
Hi all, I'm trying to clone and parent a billboard gui to a player's PlayerGui so that only they can see it. However I keep getting the following error at every point in the following script where PlayerGui is called: >PlayerGui is not a valid member of Player
How can I fix this? :/
Note that this is button activated, and in testing, I did not press the button until at least 15 seconds after the player spawned, and in another script, the PlayerGui is being called with no issues
Any help would be greatly appreciated. Thanks!
This is the code:
--[[ Created By: Cubes4Life ]]--
--// Initialization
wait(2)
--// Variable Storage
local player = game.Players.LocalPlayer
local currHost = game.Lighting.CurrentHost
local currAssis = game.Lighting.CurrentAssistant
local PTSEnabled = script.Parent.PTSBool
_G.AFKEnabled = false
local debounce = false
local Click = Instance.new('Sound', player)
Click.Name = 'Click'
Click.SoundId = 'http://www.roblox.com/asset/?id=156286438'
--// Script Logic
function Implement(status)
script.Parent[status].Check.Visible = true
if game.Players:FindFirstChild(currHost.Value) then
if game.Players[currHost.Value]:WaitForChild('PlayerGui'):FindFirstChild(player.Name) then
game.Players[currHost.Value]:WaitForChild('PlayerGui'):FindFirstChild(player.Name):Destroy()
end
game.ReplicatedStorage.HostBillboardNotif:Clone().Parent = game.Players[currHost.Value].PlayerGui
game.Players[currHost.Value].PlayerGui.HostBillboardNotif.TextButton.Text = status
game.Players[currHost.Value].PlayerGui.HostBillboardNotif.Name = player.Name
end
if game.Players:FindFirstChild(currAssis.Value) then
if game.Players[currAssis.Value].PlayerGui:FindFirstChild(player.Name) then
game.Players[currAssis.Value].PlayerGui:FindFirstChild(player.Name):Destroy()
end
game.ReplicatedStorage.HostBillboardNotif:Clone().Parent = game.Players[currAssis.Value].PlayerGui
game.Players[currAssis.Value].PlayerGui.HostBillboardNotif.TextButton.Text = status
game.Players[currAssis.Value].PlayerGui.HostBillboardNotif.Name = player.Name
end
end
function Destroy(status, counter)
script.Parent[status].Check.Visible = false
if game.Players:FindFirstChild(currHost.Value) then
game.Players[currHost.Value].PlayerGui:FindFirstChild(player.Name):Destroy()
end
if game.Players:FindFirstChild(currAssis.Value) then
game.Players[currAssis.Value].PlayerGui:FindFirstChild(player.Name):Destroy()
end
end
script.Parent.PTS.MouseButton1Down:connect(function()
if PTSEnabled.Value == false then
PTSEnabled.Value = true
_G.AFKEnabled = false
Implement('PTS')
else
PTSEnabled.Value = false
Destroy('AFK')
end
end)
script.Parent.AFK.MouseButton1Down:connect(function()
if _G.AFKEnabled == false then
_G.AFKEnabled = true
PTSEnabled.Value = false
Implement('AFK')
else
_G.AFKEnabled = false
Destroy('PTS')
end
end)
