Hi, I have an issue where I try to check the amount of winners using a table and Teams and it for some reason throws this error, "ServerScriptService.ServerHandler:148: attempt to get length of a nil value"
I have tried to fix this buy making an elseif statement that checks if #Winners is false or nil, and it doesn't work. This is where the issue is:
local Bomb = game.ServerStorage.Bomb local Coin = game.ServerStorage.Coin local intermission = 30 local gameTime = 60 while true do local bannerTextValue = game:GetService("ReplicatedStorage").Status local IntermissionMusic = game.Workspace.Music.IntermissionMusic local SuccessSound = game.Workspace.Music.SuccessSound local LosingHorn = game.Workspace.Music.LosingHorn IntermissionMusic.Playing = true --Intermission repeat intermission = intermission - 1 wait(1) bannerTextValue.Value = "Intermission: ".. intermission until intermission == 0 IntermissionMusic.Playing = false --Game starts if intermission == 0 then for _, players in pairs(game.Players:GetChildren()) do local MapSpawns = game.Workspace.MapSpawns:GetChildren() local MapSpawnSelected = MapSpawns[math.random(1, #MapSpawns)] players.Team = game.Teams["Playing"] players.Character.Humanoid.Died:Connect(function() players.Team = game.Teams["Waiting"] end) players.Character.HumanoidRootPart.CFrame = MapSpawnSelected.CFrame end repeat spawn(function() local BombCopy = Bomb:Clone() BombCopy.Parent = game.Workspace.Bombs local xPosition = math.random(-64, 64) local zPosition = math.random(-64, 64) BombCopy.Position = Vector3.new(xPosition, 100, zPosition) wait(4) end) spawn(function() local CoinCopy = Coin:Clone() CoinCopy.Parent = game.Workspace.Coins local xPosition = math.random(-64, 64) local zPosition = math.random(-64, 64) CoinCopy.Position = Vector3.new(xPosition, 100, zPosition) wait(7) end) wait(1) gameTime = gameTime - 1 bannerTextValue.Value = "Game Time left: " .. gameTime until gameTime == 0 end local function CleanUpGame() local terrainToBeRegenerated = game.ServerStorage.MapTerrainBackup.ForestTerrain local MapBackup = game.ServerStorage.MapBackup game.Workspace.Map:Destroy() for _, coinObject in pairs(game.Workspace.Coins:GetChildren()) do coinObject:Destroy() end for _, Bomb in pairs(game.Workspace.Bombs:GetChildren()) do Bomb:Destroy() end game.Workspace.Terrain:PasteRegion( terrainToBeRegenerated, game.Workspace.Terrain.MaxExtents.Min, true ) local MapClone = MapBackup:Clone() MapClone.Parent = game.Workspace MapClone.Name = "Map" for _, object in pairs(MapClone:GetChildren()) do for _, childrenOfObject in pairs(object:GetChildren()) do childrenOfObject.Anchored = true end end for _, object in pairs(MapBackup:GetChildren()) do local TreeTrunk = object.Parent:FindFirstChild("TreeTrunk") if TreeTrunk then local objectWeld = Instance.new("Weld") objectWeld.Parent = object objectWeld.Part0 = TreeTrunk objectWeld.Part1 = game.Workspace.Terrain for _, object in pairs(MapClone:GetChildren()) do for _, childrenOfObject in pairs(object:GetChildren()) do childrenOfObject.Anchored = true if childrenOfObject.ClassName == "Weld" then childrenOfObject.Parent.Anchored = true end end end end end end --reset intermission and gameTime to their regular values and clean up map intermission = 30 gameTime = 60 for i, player in pairs(game.Players:GetChildren()) do if player.Team == game.Teams["Playing"] then local WinnersLobbySpawns = game.Workspace.WinnersLobby.WinnersLobbySpawns:GetChildren() local WinnersLobbySpawnSelected = WinnersLobbySpawns[math.random(1, #WinnersLobbySpawns)] Winners = { } player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 100 player.Character.HumanoidRootPart.CFrame = WinnersLobbySpawnSelected.CFrame + Vector3.new(0, 4, 0) player.Team = game.Teams["Winners"] table.insert(Winners, i, player.Name) end end if #Winners then -- error says issue is here bannerTextValue.Value = "We have a winner!" SuccessSound.Playing = true wait(3) SuccessSound.Playing = false elseif #Winners == nil then bannerTextValue.Value = "There were no winners :(" LosingHorn.Playing = true wait(5) LosingHorn.Playing = false end CleanUpGame() end
If anyone has an answer, please send an answer!
You can use table.find(), it returns nil if nothing is in the table you can learn more about here:
https://developer.roblox.com/en-us/api-reference/lua-docs/table Sorry if it's blocked https://developer.roblox.com/en-us/articles/Table Maybe here...