--Define variables
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local MapsFolder = ServerStorage:WaitForChild("Maps")
local Status = ReplicatedStorage:WaitForChild("Status")
local GameLength = 300
local reward = 250
--Game Loop
while true do Status.Value = "Waiting for enough players"
repeat wait() until game.Players.NumPlayers >= 2 Status.Value = "Intermission" wait(15) 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(5) local AvaiableMaps = MapsFolder:GetChildren() local ChosenMap = AvaiableMaps[math.random(1,#AvaiableMaps)] Status.Value = ChosenMap.Name.." Chosen" local ClonedMap = ChosenMap:Clone() ClonedMap.Parent = Workspace --teleport playes to map local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints") if not SpawnPoints then print("Spawnpoints not found!") end local AvaiableSpawnPoints = SpawnPoints:GetChildren() for i,player in pairs(plrs) do if player then character = player.Character if character then --telport them character:FindFirstChild("HumanoidRootPart").CFrame = AvaiableSpawnPoints[1].CFrame table.remove(AviableSpawnPoints,1) --there is no character if not player then table.remove(plrs,i) --give them a sword local Knife = ServerStorage.Knife:Clone() Knife.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 = "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) 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.Money.Value = plrs[1].leaderstats.Money.Value + reward break elseif #plrs == 0 then Status.Value = "Nobody Won!" break end wait(1) end print("End of Game") for i, player in pairs(game.Players:GetPlayers()) do if not character then --ignore them else if character:FindFirstChild("GameTag") then character.GameTag:Destroy() end if player.Backpack.FindFirstChild("Knife") then player.Backpack.Sword:Destroy() end if character:FindFirstChild("Knife") then character.Knife:Destroy() end end player:LoadCharacter() end ClonedMap:Destroy() Status.Value = "Game ended" wait(2) end
end
The line, "While true do" has no "end" after it and there are no waits too, if you don't add a wait to while true loop it will crash your game. And you don't need the while true do loop, you can just set the status value to "Waiting for enough players" and use the repeat on the next line, there is also an error in player spawn point teleporting, you are getting the character of the player and checking if the character exists THEN checking if the player exists which doesn't even make sense, you need to check if player exists first and you don't need to do 2 checks for it, you can use else statement for it. You can also not use else statements if you don't need them, on the 131th line you are checking if the character doesn't exist and using the main code on the else statement which doesn't even make sense, you can check if the character exists instead of NOT exists. Other than these I don't see an issue with the script, it's pretty good if you're a newbie.