Why can't this work?

Hello Developers!
I am trying to make it so that if my StageNumber value is in a certain number between 1-15, the player will spawn on that stage.
However, my script seems to not show any error and not function!
Here is my script:

game.Players.PlayerAdded:Connect(function(player)
	if player.StagesCheck.StageNumber.Value == 1 then
		player.Team = game.Teams.Lobby
	end
	if player.StagesCheck.StageNumber.Value == 2 then
		player.Team = game.Teams.Red
	end
	if player.StagesCheck.StageNumber.Value == 3 then
		player.Team = game.Teams.Orange
	end
	if player.StagesCheck.StageNumber.Value == 4 then
		player.Team = game.Teams["Bright Orange"]
	end
	if player.StagesCheck.StageNumber.Value == 5 then
		player.Team = game.Teams["Deep Orange"]
	end
	if player.StagesCheck.StageNumber.Value == 6 then
		player.Team = game.Teams.Bronze
	end
	if player.StagesCheck.StageNumber.Value == 7 then
		player.Team = game.Teams.Brown
	end
	if player.StagesCheck.StageNumber.Value == 8 then
		player.Team = game.Teams.Gold
	end
	if player.StagesCheck.StageNumber.Value == 9 then
		player.Team = game.Teams.Yellow
	end
	if player.StagesCheck.StageNumber.Value == 10 then
		player.Team = game.Teams["Pastel Yellow"]
	end
	if player.StagesCheck.StageNumber.Value == 11 then
		player.Team = game.Teams["Pastel Green"]
	end
	if player.StagesCheck.StageNumber.Value == 12 then
		player.Team = game.Teams["Dark Green"]
	end
	if player.StagesCheck.StageNumber.Value == 13 then
		player.Team = game.Teams.Green
	end
	if player.StagesCheck.StageNumber.Value == 14 then
		player.Team = game.Teams["Bright Green"]
	end
	if player.StagesCheck.StageNumber.Value == 15 then
		player.Team = game.Teams.Teal
	end
end)

This is a script located in ServerScriptService.
Can somebody help me? Thanks!

game.Players.PlayerAdded:Connect(function(player)
    player.CharacterAppearanceLoaded:Connect(char)
    	if player.StagesCheck.StageNumber.Value == 1 then
    		player.Team = game.Teams.Lobby
    	end
    	if player.StagesCheck.StageNumber.Value == 2 then
    		player.Team = game.Teams.Red
    	end
    	if player.StagesCheck.StageNumber.Value == 3 then
    		player.Team = game.Teams.Orange
    	end
    	if player.StagesCheck.StageNumber.Value == 4 then
    		player.Team = game.Teams["Bright Orange"]
    	end
    	if player.StagesCheck.StageNumber.Value == 5 then
    		player.Team = game.Teams["Deep Orange"]
    	end
    	if player.StagesCheck.StageNumber.Value == 6 then
    		player.Team = game.Teams.Bronze
    	end
    	if player.StagesCheck.StageNumber.Value == 7 then
    		player.Team = game.Teams.Brown
    	end
    	if player.StagesCheck.StageNumber.Value == 8 then
    		player.Team = game.Teams.Gold
    	end
    	if player.StagesCheck.StageNumber.Value == 9 then
    		player.Team = game.Teams.Yellow
    	end
    	if player.StagesCheck.StageNumber.Value == 10 then
    		player.Team = game.Teams["Pastel Yellow"]
    	end
    	if player.StagesCheck.StageNumber.Value == 11 then
    		player.Team = game.Teams["Pastel Green"]
    	end
    	if player.StagesCheck.StageNumber.Value == 12 then
    		player.Team = game.Teams["Dark Green"]
    	end
    	if player.StagesCheck.StageNumber.Value == 13 then
    		player.Team = game.Teams.Green
    	end
    	if player.StagesCheck.StageNumber.Value == 14 then
    		player.Team = game.Teams["Bright Green"]
    	end
    	if player.StagesCheck.StageNumber.Value == 15 then
    		player.Team = game.Teams.Teal
    	end
    end
end)

That value might not exist as playerAdded fires the moment a child is added to Players. Hooking it upto a CharacterAppearanceLoaded will do the trick.

It doesnt work! I’ve tried your code and fixed it and still didnt work.

If you are creating ‘StagesCheck’ in another script, then you have to wait until it exists in your current script, using WaitForChild. Otherwise you will need to create it in this one before you attempt to use it.

Also it is better to connect a property changed signal to the StageNumber to then change the team color. As it stands now, this entire thing will only check once and never again.

local players = game:GetService("Players")
local teams = game:GetService("Teams")

local teamNames = {"Lobby", "Red", "Orange", "Bright Orange", "Deep Orange", "Bronze", "Brown", "Gold", "Yellow", "Pastel Yellow", "Pastel Green", "Dark Green", "Green", "Bright Green", "Teal"}

players.PlayerAdded:Connect(function(player)
	local stagesCheck = player:WaitForChild("StagesCheck")
	local stageNumber = stagesCheck:WaitForChild("StageNumber")
	stageNumber.Changed:Connect(function(stage)
		local team = teams:FindFirstChild(teamNames[stage])
		if team then
			player.Team = team
		end
	end)
end)