Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How can I make it so that the match will reset when everyone dies?

I need it so that the match ends then starts a new one when everyone dies. I have provided the script.

disasters = {"Glass House [Made By: ROBLOX]", "Crossroads [Made By: ROBLOX]", "Chaos Canyon [Made By: ROBLOX]", "Tiny Town [Made By: Firaxus]", "The Five Layers [Made By: Firaxus]", "House Of Dreams [Made By: QuinnHawkins13]", "Hospital [Made By: QuinnHawkins13]", "The Lab [Made By: QuinnHawkins13]"} -- This is where you list the names models that you want to use for disasters.
-- The list must look like this {"Model","Model","Model","Model","Model"} and so on.
-- Disaster names are case-sensitive and all disaster models must be in the lighting

countdownTime = 20 -- The ammount of time to wait between each disaster.
disasterTime = 300 -- The ammount of time that the disaster will be in the game before it is removed.

countdownMessage = "The next map will be chosen in %s seconds." -- The message displayed between disasters. %s will be replaced with the number of seconds left.
disasterMessage = "Map: %s" -- The message displayed when a disaster occurs. %s will be replaced with the disaster name. Set to nil if you do not want a message

-- Unless you know what you are doing, please leave the below code alone.
items = {}
leaderboard = game.Workspace:findFirstChild("BTS Leaderboard") -- Used to work with my BTS leaderboard
local w = game.Workspace:getChildren()
for i=1,#w do
	if w[i].Name == "leaderboard" and w[i]:findFirstChild("running") ~= nil and w[i]:findFirstChild("points") ~= ni then
		leaderboard = w[i]
	end
end
for i=1,#disasters do
	local item = game.Lighting:findFirstChild(disasters[i])
	if item ~= nil then
		item.Parent = nil
		table.insert(items, item)
	else
		print("Error! ", disasters[i], " was not found!")
	end
end

function chooseDisaster()
	return items[math.random(#items)]
end

function sethint(text)
	local hint = game.Workspace:findFirstChild("hint")
	if (hint ~= nil) then
		hint.Text = text
	else
		print("Hint does not exist, creating...")
		h = Instance.new("Hint")
		h.Name = "hint"
		h.Text = text
		h.Parent = game.Workspace
	end
	--print("Hint set to: ", text)
end

function removeHint()
	hint = game.Workspace:findFirstChild("hint")
	if (hint ~= nil) then hint:remove() end
end

function countdown(time)
	sethint(string.format(countdownMessage, tostring(time)))
	while (time > 0) do
		wait(1)
		time = time - 1
		sethint(string.format(countdownMessage, tostring(time)))
	end
	removeHint()
	return true
end

while true do
	countdown(countdownTime)

	if leaderboard ~= nil and leaderboard:findFirstChild("running") and leaderboard:findFirstChild("points") then -- For use with my BTS leaderboard.
		leaderboard.points.Value = 30 --Points after you survive disasters.
		leaderboard.running.Value = true
	end

	local m = chooseDisaster():clone()

	if disasterMessage ~= nil then
		local msg = Instance.new("Message")
		msg.Name = "DisasterMsg"
		msg.Text = string.format(disasterMessage, m.Name)
		msg.Parent = game.Workspace
		wait(3)
		msg.Parent = nil
	end

	m.Parent = game.Workspace
	m:makeJoints()
	wait(disasterTime)
	m:remove()

	if leaderboard ~= nil then -- For use with the bts leaderboard.
		leaderboard.running.Value = false
	end
end

1 answer

What you can do is a function that is run when a humanoid is killed, and using NumPlayers in players... I can better explain this in code:

local PlayersDied = 0
--ASSUME "humanoid" IS PRE-DEFINED!!!
humanoid.Died:connect(function ()
	PlayersDied = PlayersDied + 1
	if PlayersDied >= game.Players.NumPlayers then --It may be over if someone left.
		--Reset the round code here
		PlayersDied = 0 --Reset the dead count
	end
end)

1 comment

0

how would I do this with teams? like for example: I have a living team and a spectator team, if you die you get teleported to the spec place, but if everyone dies in the living team, how would I reset the teams?

This discussion is preserved as it was. New answers, comments, and votes are closed.