At the moment this will leak threads, how could I end the loop if the player is no longer in the game so that the script does not break.
Also I need to manually add the gui because of the way I will be using it so I cannot change this part!!
function onPlayerRespawn(property, plr)
while true do
if plr.Character ~= nil then break end
wait(5)
end
print("Given gui")
Workspace.ScreenGui:Clone().Parent = plr.PlayerGui
end
function onPlayerEntered(plr)
while true do
if plr.Character ~= nil then break end
wait(5)
end
print("plr Added")
Workspace.ScreenGui:Clone().Parent = plr.PlayerGui
plr.CharacterAdded:connect(function(property) onPlayerRespawn(property, plr) end)
end
game.Players.PlayerAdded:connect(onPlayerEntered)
Fixed
function onPlayerRespawn(property, plr)
while plr and plr.Parent do
if plr.Character then break end
wait(1) --In my opinion, five seconds is too much. I'd just do wait(). It's up to you if you wan't to change that.
end
if not (plr and plr.Parent) then return end
print("Given gui")
if game.Workspace.FilteringEnabled then
game.Workspace.FilteringEnabled = false
wait(1)
Workspace.ScreenGui:Clone().Parent = plr.PlayerGui
wait(1)
game.Workspace.FilteringEnabled = true
else
game.Workspace.FilteringEnabled = true
end
end
function onPlayerEntered(plr)
print("plr Added")
plr.CharacterAdded:connect(function(property) onPlayerRespawn(property, plr) end)
end
game.Players.PlayerAdded:connect(onPlayerEntered)

1 comment
Thanks for the help, i also added filtering so that the new gui is sent to the client