Hey guys, how would I change this script so as to make it that anyone that survives the round gets a win?
Right now its been made so that the last person alive gets a win, but how would I change this so that everyone that survives the round gets a win?
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Number = 0
local PositionX = 0
local PositionZ = 0
local Maps = ServerStorage:WaitForChild('Maps'):GetChildren()
local Status = ReplicatedStorage:WaitForChild('Status')
while true do
--Intermission
local Countdown = 30 -- intermission, make this as long as you want
repeat wait(1)
Countdown = Countdown - 1
Status.Value = 'Intermission : '..Countdown
until Countdown <= 0
--Choose the map.
Status.Value = 'Choosing Map...'
local ChosenMap = Maps[math.random(1, #Maps)]:Clone()
local Spawns = ChosenMap:FindFirstChild('Spawns'):GetChildren()
wait(3) -- little pause, make this as long as you want
ChosenMap.Parent = workspace
Status.Value = 'Map chosen, teleporting players.'
wait(2) -- little pause, make this as long as you want
--teleport the players
local playersInRound = {} -- track alive players
local connections = {} -- store connections to disconnect later
for _, Player in pairs(Players:GetChildren()) do
if Player.Character and Player.Character:FindFirstChild('Humanoid') then
local RandomSpawn = Spawns[math.random(1, #Spawns)]
Player.Character.HumanoidRootPart.CFrame = RandomSpawn.CFrame
table.insert(playersInRound, Player) -- add all players to table
connections[Player.Name] = Player.Character.Humanoid.Died:Connect(function()
table.remove(playersInRound, table.find(playersInRound, Player))
end)
end
end
connections["Removing"] = game.Players.PlayerRemoving:Connect(function(player) -- remove player from list if they leave
local ind = table.find(playersInRound, player)
if ind then
table.remove(playersInRound, ind)
end
end)
Countdown = 5 -- Starting Round In, make this as long as you want
repeat wait(1)
Countdown = Countdown - 1
Status.Value = 'Starting Round in : '..Countdown
until Countdown <= 0
Countdown = 120
repeat wait(1.3)
Countdown = Countdown - 1
Number = math.random(1,36)
PositionX = math.random(167,261)
PositionZ = math.random(324,418)
if Number == 1 or Number == 2 or Number == 3 or Number == 4 or Number == 5 or Number == 6 or Number == 7 or Number == 8 then
local clone = game.ServerStorage.Bomb1:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 9 or Number == 10 or Number == 11 or Number == 12 or Number == 13 or Number == 14 or Number == 15 then
local clone = game.ServerStorage.Bomb2:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 16 or Number == 17 or Number == 18 or Number == 19 or Number == 20 or Number == 21 then
local clone = game.ServerStorage.Bomb3:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 22 or Number == 23 or Number == 24 or Number == 25 or Number == 26 then
local clone = game.ServerStorage.Bomb4:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 27 or Number == 28 or Number == 29 or Number == 30 then
local clone = game.ServerStorage.Bomb5:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 31 or Number == 32 or Number == 33 then
local clone = game.ServerStorage.Bomb6:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 34 or Number == 35 then
local clone = game.ServerStorage.Bomb7:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
if Number == 36 then
local clone = game.ServerStorage.Bomb8:Clone()
clone.Parent = game.Workspace.Bombs.Bombs
clone.Main.Position = Vector3.new(PositionX,506.5,PositionZ)
end
Status.Value = 'Ingame : '..Countdown
until Countdown <= 0 or #playersInRound == 1
-- Determine winner and give reward
if #playersInRound == 1 then
local success, message = pcall(function()
local player = playersInRound[1]
print("The Winner is: " .. player.Name)
Status.Value = player.Name .. " won the game!"
player.leaderstats.Wins.Value = player.leaderstats.Wins.Value + 1
player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 300
wait(3)
end)
if not success then
warn("An error occurred while rewarding winner: " .. message)
end
else
print("There was no single winner.")
Status.Value = "There was no single winner this round."
end
--Kill the players
for _, connection in pairs(connections) do -- disconnect connections to prevent memory leaks
connection:Disconnect()
end
for _, Player in pairs(playersInRound)do
Player:LoadCharacter()
end
ChosenMap:Destroy()
Status.Value = 'Round Ended, waiting for new game.'
wait(4) -- little pause, make this as long as you want.
end
Also, this system is a little buggy- any way to optimise it? Thanks!