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

**RESOLVED** PlayerGui is not a valid member of Player?

Asked by 8 years ago

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)

Answer this question