So I hired a dev to help me with a script, but they still have not figured it out, sooo, I am coming here for help. Basically, the script is supposed to choose a team for each player, and then teleport them when the game starts and restart after a while. But the script is not working with no errors. It is in the ServerScriptService. Here is the code.
local NumPlayers = 0 local Players = {} local Started = false wait(2) local function RemovePlayer(Name) for i,v in pairs(Players) do if v == Name then --print("Removed "..Players[i].." | "..Name) table.remove(Players,i) end NumPlayers = 0 for i,v in pairs(Players) do NumPlayers = NumPlayers + 1 end end end local function Teleport(Plr,Position) repeat wait(.1) until game.Players:FindFirstChild(tostring(Plr)).Character game.Players:FindFirstChild(tostring(Plr)).Character.HumanoidRootPart.CFrame = CFrame.new(Position) end script:WaitForChild("Restart").Event:connect(function() Started = true --Clean table for i,v in pairs(Players) do table.remove(Players,1) end --Add players to table for i,v in pairs(game.Players:GetChildren()) do table.insert(Players,tostring(v)) end --Choose SCP local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams.SCP game.Players:FindFirstChild(Players[m]).Character.Humanoid.MaxHealth = 400 game.Players:FindFirstChild(Players[m]).Character.Humanoid.Health = 400 game.Players:FindFirstChild(Players[m]).Character.Humanoid.WalkSpeed = 10 Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.SSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) --Choose Guards if NumPlayers >= 4 then for i = 1,2 do local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams.Guards Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.RSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) end else local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams.Guards Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.RSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) end --Choose Scientist Or Class-D Or GRU-P local c = 2 for i = 1, NumPlayers do if c == 2 then c = 3 elseif c == 3 then c = 1 elseif c == 1 then c = 2 end if c == 1 then local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams["Class-D"] Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.DSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) elseif c == 2 then local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams.Scientists Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.RSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) elseif c == 3 then local m = math.random(1,NumPlayers) game.Players:FindFirstChild(Players[m]).Team = game.Teams["GRU-P"] Teleport(game.Players:FindFirstChild(Players[m]),game.Workspace.GPFSpawn.Position) RemovePlayer(tostring(game.Players:FindFirstChild(Players[m]))) end wait(5) --Game over for i,v in pairs(game.Players:GetChildren()) do v.Character:BreakJoints() end wait(5) --Time before a new round starts CheckPlayerCount() wait(.1) script.Restart:Fire() end end) local function CheckPlayerCount() NumPlayers = 0 for i,v in pairs(game.Players:GetChildren()) do NumPlayers = NumPlayers + 1 end end game.Players.PlayerAdded:Connect(function() CheckPlayerCount() wait(.1) if NumPlayers >= 4 and not Started then--4 script.Restart:Fire() end end)