I was trying to make it so that I had multiple maps in my game, but I accidentally made an error in the script and I don’t know how to fix it.
So, my game has rounds and every round the map could change, but then on the 2nd-3rd round it got stuck on “Intermission”
And comes up with this error.
I will show you what is in my game to make it easier.
So the problem is with the MainScript.
The “Stats” script is irrelivant to the problem.
I’ll show you whats inside of the “MainScript”
local ServerStorage = game:GetService("ServerStorage")
local CollectionService = game:GetService("CollectionService")
local Players = game:GetService("Players")
local mapsFolder = ServerStorage:WaitForChild("Maps")
local statusTag = ReplicatedStorage:WaitForChild("Status")
-- Constants
local GAME_LENGTH = 50
local REWARD = 25
local PLAYERS_REQUIRED = 2
local INTERMISSION_TIME = 10
-- Functions
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
if CollectionService:HasTag(player, "Alive") then
CollectionService:RemoveTag(player, "Alive")
end
end)
end
if player.Character then
onCharacterAdded(player.Character)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
-- Main loop
while true do
-- Waiting for players
statusTag.Value = "Waiting for enough players"
repeat
task.wait(1)
until
#Players:GetPlayers() >= PLAYERS_REQUIRED
-- Intermission
for i = INTERMISSION_TIME, 0, -1 do
statusTag.Value = "Intermission ["..i.."]"
task.wait(1)
end
-- Choose a map
function SelectMap()
local Maps = {}
for i, v in pairs(ServerStorage.Maps:GetChildren()) do
if v:IsA("Model") then
table.insert(Maps, v.Name)
end
end
local randomMap = math.random(1, #Maps)
local Map = Maps[randomMap]
return Map
end
local ChosenMap = SelectMap()
local Map = game.ServerStorage.Maps:FindFirstChild(ChosenMap)
game.ServerStorage.Maps:FindFirstChild(ChosenMap):Clone().Parent = game.Workspace
statusTag.Value = ChosenMap.. " was chosen"
task.wait(3)
-- Teleport players
local activePlayers = Players:GetPlayers()
local spawns = game.ServerStorage.Maps:FindFirstChild(ChosenMap)
if not spawns then
warn("You do not have 'SpawnPoints', fix pl0x")
end
spawns = spawns:GetChildren()
for _, player in pairs(activePlayers) do
local hrp = player.Character:FindFirstChild("HumanoidRootPart")
if hrp then
local chosenSpawn = spawns[math.random(#spawns)]
hrp.CFrame = chosenSpawn.CFrame
table.remove(spawns, table.find(spawns, chosenSpawn))
-- Give them a sword
local sword = ServerStorage.ClassicSword:Clone()
sword.Parent = player.Backpack
CollectionService:AddTag(player, "Alive")
end
end
statusTag.Value = "Get ready to play!"
task.wait(2)
for i = GAME_LENGTH, 0, -1 do
if #CollectionService:GetTagged("Alive") == 1 then
-- only one player is alive
local winner = CollectionService:GetTagged("Alive")[1]
statusTag.Value = "The winner is "..winner.Name
winner.leaderstats.Bucks.Value += REWARD
break
elseif #CollectionService:GetTagged("Alive") == 0 then
-- nobody is alive
statusTag.Value = "Nobody won!"
break
elseif i == 0 then
-- timer ran out
statusTag.Value = "Times up!"
break
end
task.wait(1)
statusTag.Value = "There are " .. i .. " seconds remaining, and " .. #CollectionService:GetTagged("Alive") .. " players left"
end
print("END OF GAME")
-- Clean up
for _, player in pairs(activePlayers) do
if CollectionService:HasTag(player, "Alive") then
CollectionService:RemoveTag(player, "Alive")
end
if player.Backpack:FindFirstChild("Sword") then
player.Backpack.Sword:Destroy()
end
if player.Character:FindFirstChild("Sword") then
player.Character.Sword:Destroy()
end
player:LoadCharacter()
end
game.ServerStorage.Maps:FindFirstChild(ChosenMap):Destroy()
statusTag.Value = "Game over"
task.wait(2)
end
Ive tried checking for capitals and looking at the error but I can’t seem to find the problem.
Thanks.
Sincerely, Jace.