Hello, im quite new to roblox programming. I made a matchmaking script (i took inspiration from CB:RO matchmaking that i've seen on youtube). Everything is fine, but the teleportation to my other game is not working and showing me that error:
Unable to cast value to Objects
I tried to figure it for whole day but with no positive results. Here is my MM code:
eloData = game:GetService("DataStoreService"):GetDataStore("Elo")
UpdateRate = 3
GAME_ID = 7298612208
--///////////////////////////////////////////////////////////////////////////
local TPS = game:GetService("TeleportService")
local moduleScript = script:WaitForChild("ModuleScript")
local _M = require(moduleScript)
function genRank(elo)
end
function game.ReplicatedStorage.RequestInfo.OnServerInvoke(player)
local PrimaryMap = script.Parent.Primary.Value
return PrimaryMap
end
local playersInQueue = {}
local JoinQueueQueue = {}
function game.ReplicatedStorage.JoinQueue.OnServerInvoke(Player)
local PlayerData = {
PlayerObj = Player;
PlayerName = "";
Elo = 0;
Range = 50;
matched = false;
}
PlayerData["Elo"] = 25 --eloData:GetAsync(tostring(Player.userId))
PlayerData["PlayerName"] = Player.Name
table.insert(JoinQueueQueue, 1, PlayerData)
end
function game.ReplicatedStorage.LeaveQueue.OnServerInvoke(Player)
local PlayerData = {
PlayerObj = Player;
PlayerName = "";
Elo = 0;
Range = 50;
matched = false;
}
PlayerData["Elo"] = 25 --eloData:GetAsync(tostring(Player.userId))
PlayerData["PlayerName"] = Player.Name
table.remove(playersInQueue, 1, PlayerData)
if #Matches > 0 then
for i=1, #Matches do
table.remove(Matches, 1, PlayerData)
end
end
end
Matches = {}
while true do
print("Matchmaking tick")
local function CreateMatch(FirstPlayer)
print(FirstPlayer["PlayerName"])
print("Creating new match!")
local NewMatch = {}
NewMatch["Average"] = FirstPlayer["Elo"]
--print(tostring(FirstPlayer["Elo"]))
NewMatch["Range"] = 50
FirstPlayer["matched"] = true
table.insert(NewMatch, 1, FirstPlayer)
table.insert(Matches, 1, NewMatch)
end
wait(UpdateRate)
print("Players in JoinQueueQueue = "..#JoinQueueQueue)
if #JoinQueueQueue > 0 then
for i=1, #JoinQueueQueue do
print("Transfered "..JoinQueueQueue[i]["PlayerName"].." into a queue")
print("Index = "..tostring(i))
table.insert(playersInQueue, 1, JoinQueueQueue[i])
JoinQueueQueue[i] = nil
end
end
print("playersInQueue = "..#playersInQueue)
game.ReplicatedStorage.playersInQueue.Value = #playersInQueue
if #playersInQueue > 0 then
for i=1, #playersInQueue do
if playersInQueue[i]["matched"] == false then
if #Matches ~= 0 then
for i_2=1,#Matches do
local Diff = Matches[i_2]["Average"] - playersInQueue[i]["Elo"]
if Diff < 0 then
Diff = Diff * -1
end
if Matches[i_2]["Range"] >= Diff then
--moze grac
print("Gracz kwalifikuje sie do gry")
table.insert(Matches[i_2], 1, playersInQueue[i])
playersInQueue[i]["matched"] = true
break
end
end
else
CreateMatch(playersInQueue[i])
end
end
end
end
print("Amount of matches = "..#Matches)
if #Matches > 0 then
for i=1, #Matches do
--if #Matches[i] == 0 then Matches[i] = nil end
Matches[i]["Range"] = Matches[i]["Range"] + 2
if #Matches[i] == 1 then
game.ReplicatedStorage.isMatch.Value = true
print("Utworzono mecz!")
TPS:TeleportAsync(GAME_ID, Matches[i])
--print("----"..tostring(playersInQueue[i]["PlayerName"]))
end
end
end
end
