Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Team picker/teleport script now working?

Asked by 4 years ago
Edited 4 years ago

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)
0
What did the dev say when you asked him about fixing it? royaltoe 5144 — 4y

Answer this question