Need help with making a tournament system

Hey! For the past couple of days i’ve been trying to figure out how to make a tournament system. I have come up with some concepts but not quite sure how to apply it.

I will begin by showing you what I am trying to figure out.

local TournamentTable = {
   ["Round 1"] = {
      [1] = {
         Player1, -- If this player leaves then
         Player2 -- Player2 Wins
      },
      [2] = {
         Player3, -- Player3 loses
         Player4 -- Player4 Wins
      }
   },
   ["Round 2"] = { -- Move onto round 2 once Round 1 Duals are over
      [1] = { -- Only 1 dual since there are 2 players remaining
         Player2,
         Player4
      },
   }
}

I’m not too sure how to calculate how to put 2 players into a Dual and then another 2 into another. Then lets says theres 3 players which would be an uneven amount, they would not be put into the table.

What I have done so far:

function Gamemode:Tourney()
	
	CreateTourneyTable() -- Creates a Tournament table like shown above ^
	                     -- However it has all possible Rounds + Duals so it's not based on the amount of players

	local Dual = 1 -- This will be the Dual Number
	
	for Index, Player in pairs(self.PlayersTable) do -- Loop through the players table
		self.TourneyTable["Round 1"]["Dual "..Dual][Player] = true -- Add them to the current Dual
		
		if #self.TourneyTable["Round 1"]["Dual "..Dual] == 2 then -- This doesn't work, but I need to check if there is already 2 players in that duel
			Dual += 1 -- If there is +1 to the current Dual
		end
	end
	
	print(self.TourneyTable) -- Print the Table 
end

This doesn’t seem to work in the sense that it doesn’t know how many players are in a duel.

TL;DR: Trying to figure out why my current Tournament system doesn’t work, and if there is any other way I can make a functioning one.

1 Like

Figured out a solution, for now. May not be the best way but I’ll stick with it for now. My solution:

function Gamemode:Tourney()
	
	CreateTourneyTable()
	
	local Number = 1
	local Plrs = 0
	
	for Index, Player in pairs(self.PlayersTable) do
		self.TourneyTable["Round 1"]["Dual "..Number][Player] = true
		Plrs += 1
		
		if Plrs == 2 then
			Number += 1
			Plrs = 0
		end
	end
	
	print(self.TourneyTable)
end
2 Likes