I've just finished my first version of my matchmaking module but it is riddled with bugs. I have worked out a few but I have reached a wall and can not seem to figure it out. Please keep in mind, this is my first module I have ever made, I apologize if I did anything wrong.
The purpose of this code is to allow players from diffrent servers to connect into a matchmaking queue with eachother and finding a new lobby. I have yet to workout the teleporting process, so I am just kicking the player to see if it works.
SERVER SCRIPT CODE
local matchmaking = game:GetService("ReplicatedStorage").Matchmaking local msgService = game:GetService("MessagingService") local module = require(game.ServerScriptService.MatchmakingModule) module.forwarddata() module.combinedata() local gamequeue = {} local function sendmoduledata(player, mode) module.forwarddata(player.Name, mode) end matchmaking.OnServerEvent:Connect(sendmoduledata) msgService:SubscribeAsync("Entering Queue", function(playerdata) module.combinedata(playerdata.Data) end) module.matchplayers()
MODULE CODE
local msgService = game:GetService("MessagingService") local module = {} local players = {} local solo = {} local duo = {} function module.forwarddata(player, mode) local playerdata = { ["PlayerName"] = player, ["PlayerLevel"] = "undefined", ["Mode"] = mode, } msgService:PublishAsync("Entering Queue", playerdata) end function module.combinedata(playerdata) for i, v in pairs(playerdata) do players[v.PlayerName] = { ["Rank"] = v.PlayerLevel, ["Mode"] = v.Mode, } end end function module.matchplayers() for i,v in pairs(players)do if v.Mode == "Solo" then if #solo < 2 then if not solo[v.Name]then table.insert(solo, v.Name) else end else game.Players.solo[1]:Kick("TeleportTest") game.Players.solo[2]:Kick("TeleportTest") end else if v.Mode == "Duos" then if #duo < 4 then if not solo[v.Name]then table.insert(solo, v.Name) else table.insert(duo, v.name) end else game.Players.duo[1]:Kick("TeleportTest") game.Players.duo[2]:Kick("TeleportTest") game.Players.duo[3]:Kick("TeleportTest") game.Players.duo[4]:Kick("TeleportTest") end end end end end return module
Current bug error
ServerScriptService.MatchmakingModule:16: bad argument #1 (table expected, got nil)