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

How to teleport all players into the map?

Asked by 4 years ago

Hi! So I have been following a AlvinBlox Tutorial

I have wrote down everything he did but only one player get teleported to the map.

The code below this is the Main Script

-- Define Variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 50

local reward = 25

-- Game Loop

while true do

    Status.Value = "Waiting for enough players"

    repeat wait(1) until game.Players.NumPlayers >= 2

    Status.Value = "Intermission"

    wait(10)

    local plrs = {}

    for i, player in pairs(game.Players:GetPlayers()) do
        if player then
            table.insert(plrs,player) -- Add each player into plrs table
        end
    end

    wait(2)

    local AvailableMaps = MapsFolder:GetChildren()

    local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]

    Status.Value = ChosenMap.name.." Chosen"

    local ClonedMap = ChosenMap:Clone()
    ClonedMap.Parent = workspace

    -- Teleport Players to the map

    local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")

    if not SpawnPoints then
        print("SpawnPoints not found!")
    end

    local AvailableSpawnPoints = SpawnPoints:GetChildren()

    for i, player in pairs(plrs) do
        if player then
            character = player.Character

            if character then
                --Teleport them

                character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame
                table.remove(AvailableSpawnPoints,1)

                -- Give them a sword

                local Sword = ServerStorage.Sword.Clone()
                Sword.Parent = player.Backpack

                local GameTag = Instance.new("BoolValue")
                GameTag.Name = "GameTag"
                GameTag.Parent = player.Character

            else 
                --There is no character
                if not player then
                    table.remove(plrs,i)
                end
            end
        end
    end

    Status.Value = "Get ready to play!"

    wait(2)
    for i = GameLength,0,-1 do

        for x, player in pairs(plrs) do
            if player then

                character = player.Character

                if not character then
                    -- Left the game
                else
                    if character:FindFirstChild("GameTag") then
                        -- Still alive 
                        print(player.Name.." is still in the game!")
                    else 
                        -- They are dead
                        table.remove(plrs.x)
                    end

                end
            else
                table.remove(plrs,x)
                print(player.Name.." has been removed")
            end
        end

        Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left"

        if #plrs == 1 then
            --Last person standing
            Status.Value = "The WINNER is "..plrs[1].Name
            plrs[1].leaderstats.Bucks.Value = plrs[1].leaderstats.Bucks + reward
            break
        elseif #plrs == 0 then
            Status.Value = "Nobody won!"
            break
        elseif i == 0 then
            Status.Value = "Nobody Won!"
        end

        wait(1)
    end

    print("End of game")

    for i, player in pairs(game.Players:GetPlayers()) do
        character = player.Character

        if not character then
            -- Ignore them
        else 
            if character:FindFirstChild("GameTag") then
                character.GameTag:Destroy()
            end

            if player.Backpack:FindFirstChild("Sword")then
                player.Backpack:Destroy()
            end

            if character:FindFirstChild("Sword")then
                character.Sword:Destroy()
            end
        end

        player:LoadCharacter()

    end

    ClonedMap:Destroy()

    Status.Value = "Game Ended"

    wait(2)

end

There are no errors in the code. (Nothing in the output or the script analyser) Please help me. Thanks to all of you in advance.

0
You can use the `print()` command to decipher your error. Go through each for pair and and whichever one it stops at, it won't print. Just2Terrify 566 — 4y

1 answer

Log in to vote
0
Answered by 4 years ago

Are you sure that only one player is teleported? Can you do a local test with atleast 2 players? By skimming over the code everything seems fine, though I would probably change this line:

repeat wait(1) until game.Players.NumPlayers >= 2

to

repeat wait(1) until #game:GetService('Players'):GetPlayers() >= 2

Apart from that everything looks fine. I assume that code snippet above also works fine, but I'm not entirely sure what NumPlayers is. The best you can do is debug your code and look through Alvin's tutorial carefully again.

0
So I tested it with your method but it sill only teleports one person :( HugigoRoblox 6 — 4y
0
pls help :) HugigoRoblox 6 — 4y
0
Debug your code. Add in prints. Print your table to see that both players are getting inserted. Maybe you might only have one spawn, therefore it only teleports one player because it removes that spawn from the table. Otherwise dunno. Make sure you haven't misspelled anything. Sorry can't help much.. Xx_FROSTBITExX 116 — 4y
0
It's fine but there are no errors in the code because I have checked several times. HugigoRoblox 6 — 4y
Ad

Answer this question