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

1 comment
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.