Making a matchmaking service that works in the playergui. However it returns to me 2 errors. I cant seem to figure out what the errors are... 1st error: Unable to cast value to Object - Server - MatchMakingHandler:20 2nd error: attempt to index number with 'Name' - Server - MatchMakingHandler:74
the script is located inside a button in the startergui. the updatestatus text is located inside the exact same gui, its also a localscript while the main script is a server script. Is there an issue with using normal scripts inside the startergui?
local GameId = 11470859073 --Place Id
local back = script.Parent.Parent.Parent.BackButton
local TPS = game:GetService("TeleportService")
local PlayersInQueue = {}
local MinPlayers = 1
local MaxPlayers = 10
local isMatchmaking = false
function Matchmake()
if isMatchmaking == false then
isMatchmaking = true
repeat wait()
for i,v in pairs(PlayersInQueue) do
game.ReplicatedStorage.UpdateStatus:FireClient(v,"Waiting for at least "..tostring(MinPlayers).." players to join the Queue.")
end
until #PlayersInQueue == MinPlayers
--enough players to start
for i=0,120,1 do
if #PlayersInQueue == 0 then
isMatchmaking = false
--players have left the game
return
end
if #PlayersInQueue == MaxPlayers then
break
end
for _,value in pairs(PlayersInQueue) do
game.ReplicatedStorage.UpdateStatus:FireClient(value,"Teleporting in: ("..tostring(120-i)..") seconds. Players in queue: ("..tostring(#PlayersInQueue)..")")
end
wait(1)
end
--finished waiting, teleporting players now
local Server = TPS:ReserveServer(GameId)
TPS:TeleportToPrivateServer(GameId,Server,PlayersInQueue)
wait(3)
PlayersInQueue = {}
isMatchmaking = false
end
end
script.Parent.MouseButton1Down:Connect(function(player)
if #PlayersInQueue == MaxPlayers then return end
if not table.find(PlayersInQueue,player) then
table.insert(PlayersInQueue,player)
end
Matchmake()
end)
game.Players.PlayerRemoving:Connect(function(player)
for i,v in pairs(PlayersInQueue) do
if v.Name == player.Name then
table.remove(PlayersInQueue,i)
end
end
end)
back.MouseButton1Down:Connect(function(player)
for i,v in pairs(PlayersInQueue) do
if v.Name == player.Name then
table.remove(PlayersInQueue,i)
end
end
end)
Any help is appreciated!
