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

Is there a way to detect if every player on a server changes teams?

Asked by
Ieowyyn 69
3 years ago
local gui = game.ReplicatedStorage.guis.inviteplr

for i,v in pairs(game.Teams.Spectators:GetPlayers()) do
    print("script ran")
    local clone = gui:Clone()
    clone.Player.Value = v.Name
    clone.Parent = script.Parent
end

game.Players.PlayerAdded:Connect(function(player)
    local clone = gui:Clone()
    clone.Player.Value = player.Name
    clone.Parent = script.Parent
    player:GetPropertyChangedSignal("TeamColor"):Connect(function()
        if player.TeamColor ~= BrickColor.new("Dark stone grey") then
            for i,v in pairs(script.Parent:GetChildren()) do
                if v:FindFirstChild("Player") then
                    if v.Player.Value == player.Name then
                        print("player not in team, destroying ("..player.Name..")")
                        v:Destroy()
                    end
                end
            end
        else
            print("player in team, adding")
            local clone = gui:Clone()
            clone.Player.Value = player.Name
            clone.Parent = script.Parent
        end
    end)
end)

game.Players.PlayerRemoving:Connect(function(player)
    for i,v in pairs(script.Parent:GetChildren()) do
        if player.Name == v.Player.Value then
            print("player leaving, destroying")
            v:Destroy()
        end
    end
end)

the script is supposed to function when a player joins and when the value changes. the value is a string value which contains a player's username.

right now, the script is only able to detect when players that joined after the local player changes teams, but i need it so that it is every player on the server.

Answer this question