-- Define variables local ReplicatedStorge = game:GetService("ReplicatedStorage") local serverstorage =game:GetService("ServerStorage") local MapFolder = serverstorage:WaitForChild("Maps") local Status = ReplicatedStorge:WaitForChild("Status") local GameLength = 120 local reward = 100 -- 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 = MapFolder: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].CFrme table.remove(AvailableSpawnPoints,1) -- Give them a sword local sword = serverstorage.Sword:Clone() sword.Parent = player.Character 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 -- They are still alive print (player.Name.."is still in the game") else -- They are dead table.remove(plrs,x) print (player.Name.." has been removed!") 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.Gold.Value = plrs[1].leaderstats.Gold.Value + reward break elseif i == 0 then Status.Value = "Nobody won!" break elseif i == 0 then Status.Value = "Time up!" break 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.Sword:Destroy() end if character:FIndFirstChild("Sword") then character.Sword:Destroy() end end player.LoadCharacter() end ClonedMap:Destroy() Status.Value = "Game ended" wait(2) end
When you are choosing a map, you have done local chosenMap = math.random(1,#availableMaps) and that defines chosenMap as a number, not as an object. So to fix this problem, you should make another variable that gets a randomMap and defines chosenMap as availableMaps[randomMap] which should change your map. Here is the code:
```lua local AvailableMaps = MapFolder:GetChildren() --[[ Use this local RandomMap = AvailableMaps[math.random(1,#AvailableMaps)]
local ChosenMap = AvailableMaps[RandomMap] ]]
--[[ OR use this local ChosenMap = AvailableMaps[AvailableMaps[math.random(1,#AvailableMaps)]] ]]
Status.Value = ChosenMap.Name.." Chosen"
local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace
Closed as Not Constructive by User#24403
This question has been closed because it is not constructive to others or the asker. Most commonly, questions that are requests with no attempt from the asker to solve their problem will fall into this category.
Why was this question closed?