I have this random map chooser in a game I was making, and what it does is chose a map (of course) as well as change the player's team and load in their character to the map. The first part seems to work fine as it enables the new maps spawn, but it doesn't seem to go past that. Here's what it looks like:
Maps = {workspace["Classic Bunker"], workspace["Classic Hideout"], workspace["Classic Tower"], workspace["Flooded Castle"]}
SpectatorTeam = game.Teams.Spectating:GetPlayers()
Players = game.Players:GetPlayers()
function LoadIfAble()
if game.ServerScriptService.Values.CanPlay.Value == true then -- if there are 2+ players
local NewMap = (Maps[math.random(#Maps)])
local M = Instance.new("Message",workspace)
M.Text = "Map Chosen: " .. NewMap.Name
wait(6.5)
M:Destroy()
local NewSpawns = NewMap.Spawns:GetChildren()
for i,NS in pairs(NewSpawns) do
NS.Enabled = true
end
for i,p in pairs(SpectatorTeam) do -- Where it gets stuck
p.Team = game.Teams.Playing
p:LoadCharacter()
end
game.ServerScriptService.Values.PlayersLeft.Value = #SpectatorTeam
repeat wait(2) until game.ServerScriptService.Values.PlayersLeft.Value == 1
local LastStanding = game.Teams.Playing:GetPlayers()
local WinnerM = Instance.new("Message",workspace)
for i,lastp in pairs(LastStanding) do
WinnerM.Text = lastp.Name .. " Has Won The Game!"
wait(6)
WinnerM:Destroy()
lastp.Character.Humanoid.Health = 0
end
for i,NowOldSpawn in pairs(NewSpawns) do
NowOldSpawn.Enabled = false
end
end
end
game.Players.PlayerAdded:Connect(function(p)
p.CharacterAdded:Connect(function(char)
char.Humanoid.Died:Connect(function()
if p.Team == game.Teams.Playing then
game.ServerScriptService.Values.PlayersLeft.Value = game.ServerScriptService.Values.PlayersLeft.Value - 1
p.Team = game.Teams.Spectating
end
end)
end)
end)
game.ServerScriptService.Values.CanPlay.Changed:Connect(LoadIfAble)
(Edited to make it a bit more readable)

2 comments
Messages and hints are deprecated, instead use GUIs, and the SpectatingTeam and Players variables won't update if players join or leave.
I changed the location of the 2nd and 3rd variables into the function and it worked! I do also know that hints and messages are deprecated, but they still seem to work fine and sometimes I prefer them over GUI.