Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local MMR = {
- [100] = 'bronze',
- [250] = 'silver',
- [500] = 'gold',
- [750] = 'platinum',
- [900] = 'diamond',
- [1000] = 'elite'
- }
- local PLAYER_DATA = {
- ['player_1'] = {
- mmr = 1000
- },
- ['player_2'] = {
- mmr = 500
- },
- ['player_3'] = {
- mmr = 600
- },
- ['player_4'] = {
- mmr = 100
- },
- ['player_5'] = {
- mmr = 0
- },
- ['player_6'] = {
- mmr = 100
- },
- ['player_7'] = {
- mmr = 200
- },
- ['player_8'] = {
- mmr = 1000
- },
- ['player_9'] = {
- mmr = 500
- },
- ['player_10'] = {
- mmr = 600
- },
- ['player_11'] = {
- mmr = 200
- },
- ['player_12'] = {
- mmr = 400
- },
- ['player_13'] = {
- mmr = 0
- },
- ['player_14'] = {
- mmr = 1000
- },
- ['player_15'] = {
- mmr = 500
- },
- ['player_16'] = {
- mmr = 500
- },
- ['player_17'] = {
- mmr = 500
- },
- ['player_18'] = {
- mmr = 500
- },
- ['player_19'] = {
- mmr = 500
- },
- }
- local PARTIES = {
- ['party_1'] = {
- players = {'player_1', 'player_16'},
- avgMMR = (PLAYER_DATA['player_1'].mmr + PLAYER_DATA['player_2'].mmr )/2
- },
- ['party_2'] = {
- players = {'player_3'},
- avgMMR = (PLAYER_DATA['player_3'].mmr)/1
- },
- ['party_3'] = {
- players = {'player_5', 'player_6'},
- avgMMR = (PLAYER_DATA['player_5'].mmr + PLAYER_DATA['player_6'].mmr )/2
- },
- ['party_4'] = {
- players = {'player_4'},
- avgMMR = (PLAYER_DATA['player_4'].mmr)/1
- },
- ['party_5'] = {
- players = {'player_10', 'player_7'},
- avgMMR = (PLAYER_DATA['player_10'].mmr + PLAYER_DATA['player_7'].mmr )/2
- },
- ['party_6'] = {
- players = {'player_8'},
- avgMMR = (PLAYER_DATA['player_8'].mmr)/1
- },
- ['party_7'] = {
- players = {'player_9', 'player_11'},
- avgMMR = (PLAYER_DATA['player_9'].mmr + PLAYER_DATA['player_11'].mmr )/2
- },
- ['party_8'] = {
- players = {'player_15'},
- avgMMR = (PLAYER_DATA['player_15'].mmr)/1
- },
- ['party_9'] = {
- players = {'player_14'},
- avgMMR = (PLAYER_DATA['player_14'].mmr)/1
- },
- ['party_10'] = {
- players = {'player_13'},
- avgMMR = (PLAYER_DATA['player_13'].mmr)/1
- },
- ['party_11'] = {
- players = {'player_12'},
- avgMMR = (PLAYER_DATA['player_12'].mmr)/1
- }
- }
- local QUEUE_POOL = {
- {
- party = 'party_1',
- joined_at = 1740427169,
- inMatch = false
- },
- {
- party = 'party_3',
- joined_at = 1740427202,
- inMatch = false
- },
- {
- party = 'party_2',
- joined_at = 1740427224,
- inMatch = false
- },
- {
- party = 'party_5',
- joined_at = 1740427640,
- inMatch = false
- },
- {
- party = 'party_10',
- joined_at = 1740427660,
- inMatch = false
- },
- {
- party = 'party_6',
- joined_at = 1740427601,
- inMatch = false
- },
- {
- party = 'party_8',
- joined_at = 1740427740,
- inMatch = false
- },
- {
- party = 'party_4',
- joined_at = 1740427673,
- inMatch = false
- },
- {
- party = 'party_11',
- joined_at = 1740427619,
- inMatch = false
- },
- {
- party = 'party_9',
- joined_at = 1740427609,
- inMatch = false
- },
- {
- party = 'party_7',
- joined_at = 1740427627,
- inMatch = false
- },
- }
- function dump(o)
- if type(o) == 'table' then
- local s = '{ '
- for k,v in pairs(o) do
- if type(k) ~= 'number' then k = '"'..k..'"' end
- s = s .. dump(v) .. ','
- end
- return s .. '} '
- else
- return tostring(o)
- end
- end
- local TEAM_SIZE = 3 -- Change this to 1, 2, 3, 4, or 5 for different match sizes
- function match_parties(queue)
- table.sort(queue, function(a, b) return a.joined_at < b.joined_at end)
- local matches = {}
- local available_parties = {}
- for _, entry in ipairs(queue) do
- local party = PARTIES[entry.party]
- table.insert(available_parties, {name = entry.party, size = #party.players})
- end
- table.sort(available_parties, function(a, b) return a.size > b.size end)
- local function form_team()
- local team = {}
- local team_size = 0
- local i = 1
- while team_size < TEAM_SIZE and i <= #available_parties do
- local party = available_parties[i]
- if team_size + party.size <= TEAM_SIZE then
- team_size = team_size + party.size
- table.insert(team, party.name)
- table.remove(available_parties, i)
- else
- i = i + 1
- end
- end
- return team_size == TEAM_SIZE and team or nil
- end
- while #available_parties >= 2 do
- local team1 = form_team()
- local team2 = form_team()
- if team1 and team2 then
- table.insert(matches, {team1, team2})
- else
- break
- end
- end
- return matches
- end
- local matched_games = match_parties(QUEUE_POOL)
- for i, match in ipairs(matched_games) do
- print(dump(match[1]), 'vs', dump(match[2]))
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement