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.
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)