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

Players not moving to map?

Asked by 4 years ago
Edited 4 years ago

Hello, I'm am EXTREMELY new to Lua, so go easy on me please, I'm trying to move the HumanoidRootPart of the players to the spawnpoints that are located on the chosen map, but when starting up a server with the minimum amount of players it displays this error, " 23:15:32.804 - ServerScriptService.MainScript:53: attempt to index local 'SpawnPoints' (a nil value)" I have no idea what this means so I would appreciate any help, I'm trying my best!

-- 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 = 100

-- Game loop

while true do

Status.Value = "Waiting For Players"

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

Status.Value = "Intermission"

wait(10)

local plrs = {}

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

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!")

    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 = "Match Beginning!"

    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
                        -- They are 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.BattleCoins.Value = plrs[1].leaderstats.BattleCoins.Value + reward
            break
        elseif #plrs == 0 then
            Status.Value = "Nobody won!"
            break
        elseif i == 0 then
            Status.Value = "Time up!"
        end

        wait(1)
    end

    print("End of match!")

    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.Sword:Destroy()
            end

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

        end

        player:LoadCharacter()
    end

    ClonedMap:Destroy()

    Status.Value = "Match Complete"

    wait(2)
end
end
end
0
OP, can you show the whole script? the error in the Output says that there's something wrong ineLine 53 but you've only showed first 29 Lines of the script. Simpletton 82 — 4y

Answer this question