I just wrote a new script that is basically an entire game's basic round functioning, but it won't even start to function from the beginning. When I join the game, it won't update my Gui, and I'm not sure why. Here's my code:

while true do --begin loop
	IntermissionTime = 30
	a = game.Players:GetChildren()
	x = 4 - #a
	if #a < 4 then --check for numplayers
		for i,v in pairs(a) do
			v.PlayerGui.ScreenGui.Frame.RoundTime.Text = x.." more players are needed to start the round."
		end
	elseif #a >= 4 then
		repeat --intermission timer run
		wait(1)
		for i,v in pairs(a) do --change playergui intermission text
		IntermissionTime = IntermissionTime - 1
		player.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Intermission: "..IntermissionTime
		end
		until
		IntermissionTime == 0
	end
	if IntermissionTime == 0 then --begin round
		for i,v in pairs(a) do --change playergui text to round beginning
			a.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Round beginning!"
		end
		wait(5)
		-- randomly choose 1 player
		local players = {game.Players:GetChildren()}
		local randomPlayer = math.random(1,#players)
		randomPlayer.TeamColor = BrickColor.new("Bright red")
		m = Instance.new("Message")
		m.Parent = game.Workspace
		m.Text = randomPlayer.." is the Juggernaut this round."
		wait(5)
		m:Destroy()
		
		-- spawn random map
		maps = {Map1, Map2, Map3, Map4, Map5}
		randomMap = math.random(1,#maps)
		clone = game.Lighting..randomMap:clone()
		clone.Parent = game.Workspace
		
		-- delete lobby spawnlocations
		spawns = game.Workspace.Lobby:GetChildren()
		for i,v in pairs(spawns) do --reparent spawnlocations
			if v:IsA("SpawnLocation") then
				v.Parent = game.Lighting
			end
		end
		
		--spawn players
		for i,v in pairs(a) do --kill players
			v.Character:WaitForChild("Humanoid").Health = 0
		end
		
		--begin round timer
		RoundTime = 300
		repeat
		wait(1)
		for i,v in pairs(a) do
			RoundTime = RoundTime - 1
			a.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Time Left: "..RoundTime
		end
		until
		RoundTime == 0
		
		if Roundtime == 0 then --round end
			for i,v in pairs(a) do --change playergui
				v.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Round over!"
			end
			for i,v in pairs(game.Lighting:GetChildren()) do --reassign spawnlocation parents to workspace
				if v:IsA("SpawnLocation") then
					v.Parent = game.Workspace
				end
			end
			for i,v in pairs(game.Workspace:GetChildren()) do --destroy map
				if v.Name == "Map%d" then
					v:Destroy()
				end
			end
			for i,v in pairs(a) do
				v.Character:WaitForChild("Humanoid").Health = 0
			end
			
		end --end roundend if statement
	end --end round begin	
end --end loop