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)

1 comment
What did the dev say when you asked him about fixing it?