Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. local eloData = game:GetService("DataStoreService"):GetDataStore("ELO")
  2. debugmode = true
  3. local UpdateRate = 3
  4. function debugprint(msg)
  5. if debugmode then
  6. print("DB="..msg)
  7. end
  8. end
  9. local PlayersInQueue = {}
  10. local JoinQueueQueue = {}
  11. function game.ReplicatedStorage.JoinQueue.OnServerInvoke(player)
  12. local PlayerData =
  13. {
  14. PlayerName = "";
  15. Elo = 0;
  16. Range = 2 ;
  17. Matched = false;
  18. }
  19. PlayerData["Elo"] = 0 --eloData:GetAsync(tostring(player.userId))
  20. PlayerData["PlayerName"] = player.Name
  21. table.insert(JoinQueueQueue,1,PlayerData)
  22. return true
  23. end
  24. local Matches = {}
  25. while true do
  26. print("Matchmaking tick")
  27. local function CreateMatch(FirstPlayer)
  28. print(FirstPlayer["PlayerName"])
  29. print("Creating new match!")
  30. local NewMatch = {}
  31. NewMatch["Average"] = FirstPlayer["Elo"]
  32. debugprint("Average set for new match = "..tostring(FirstPlayer["Elo"]))
  33. NewMatch["Range"] = 2
  34. FirstPlayer["Matched"] = true
  35. table.insert(NewMatch,1, FirstPlayer)
  36. table.insert(Matches,1,NewMatch)
  37. end
  38. wait(UpdateRate)
  39. print("Players in JoinQueueQueue = "..#JoinQueueQueue)
  40. if #JoinQueueQueue > 0 then
  41. for i = 1, #JoinQueueQueue do
  42. print("Transferred "..JoinQueueQueue[i]["PlayerName"].." into the player queue")
  43. print("Index = "..tostring(i))
  44. table.insert(PlayersInQueue,1,JoinQueueQueue[i])
  45. JoinQueueQueue[i] = nil
  46. end
  47. end
  48. print("PlayersInQueue = "..#PlayersInQueue)
  49. if #PlayersInQueue > 0 then
  50. for i = 1, #PlayersInQueue do
  51. debugprint("Scanning player "..PlayersInQueue[i]["PlayerName"])
  52. if PlayersInQueue[i]["Matched"] == false then
  53. debugprint("Matched = true")
  54. if #Matches ~= 0 then
  55. print("Matches ~= 0")
  56. for i_2=1,#Matches do
  57. local Diff = Matches[i_2]["Average"] - PlayersInQueue[i]["Elo"]
  58. if Diff < 0 then
  59. Diff = Diff * -1
  60. end
  61. if Matches[i_2]["Range"] >= Diff then
  62. --Is in range of Match
  63. print("Player is in range of match")
  64. table.insert(Matches[i_2],1,PlayersInQueue[i])
  65. PlayersInQueue[i]["Matched"] = true
  66. break
  67. end
  68. end
  69. else
  70. print("No matches exist, let's create one")
  71. CreateMatch(PlayersInQueue[i])
  72. end
  73. end
  74. end
  75. end
  76. print("Amount of matches = "..#Matches)
  77. if #Matches > 0 then --Potentially combine matches together
  78. for i = 1,#Matches do
  79. --if #Matches[i] == 0 then Matches[i] = nil end --clean up on aisle four
  80. Matches[i]["Range"] = Matches[i]["Range"] + 2 --Range increase per tick
  81. if #Matches[i] == 10 then
  82. print("Match made! Teleporting")
  83. end
  84. end
  85. end
  86. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement