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

Why is it in the Mad Bloxxer Tutorial you don't need to clear the activecontestants table?

So, this is less asking for help but more just comprehending how Lua works. So, if you haven't seen the tutorial already, when developing the system that checks for how many players currently in the round, the script iterates through all current players like this:

local localtimer = roundtime
while localtimer > 0 do
	wait(1)
	localtimer = localtimer - 1
	timertag.Value = localtimer

	activecontestants = {}
	bloxxeractive = false
	for _, player in pairs(contestants) do
		if player then
			local character = player.Character
			if character then
				local matchtag = character:FindFirstChild("MatchTag")
				local humanoid = character:FindFirstChild("Humanoid")
				if matchtag and humanoid and humanoid.Health > 0 then
					if player == bloxxer then
						bloxxeractive = true
					end
					table.insert(activecontestants, player)
				end
			end
		end
	end
	if #activecontestants <= 1 or not bloxxeractive then
		break
	end
end

However, there doesn't seem to be a point where anyone is removed from the table, even after the round. How does the script then properly check the amount of players playing?

1 answer

✓ Accepted answer

Because activecontestants is set explicitly on line 7 of the script you posted, it does not need to be cleared as it gets set to a brand new table after each loop.

So what happened to the other table? Well, once it was no longer being referenced by the variable, it was scooped up by the so called Garbage Collector.

If you want to go into the specifics of this, it gets quite advanced. So instead I'll just leave this link here incase you want to read more into it. There are also some nice articles in the See Also section.

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