Advertisement
WIXXZI

Untitled

Sep 19th, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.98 KB | None | 0 0
  1. --[[
  2. 1v1 arena script.
  3. Make sure change entry to your npc id.
  4. i have not tried this on live server only local with a other client.
  5. If you have any problem with this script please open issue on github.
  6. Credit: Clotic, Foe for que system.
  7. ]] local arena1 = {} -- #1v1 Arena
  8.  
  9. arena1.Entry = 40721 -- NPC entry
  10. arena1.Arena1 = {562, 6184.9853515625, 235.77510070801, 6.1149973869324, 0.89535737037659} -- Arena 1 location for player 1
  11. arena1.Arena2 = {562, 6293.8432617188, 290.15078735352, 6.559232711792, 0.89535403251648} -- Arena 2 location for player 2
  12.  
  13. --[[
  14. don't edit below this line :)
  15. ]]
  16.  
  17. local GOSSIP_EVENT_ON_HELLO = 1
  18. -- // (event, player, object)
  19. local GOSSIP_EVENT_ON_SELECT = 2
  20. -- // (event, player, object, sender, intid, code, menu_id)
  21.  
  22. local SizeOfTeam = 1
  23.  
  24. local RawPlayerTable = {}
  25. local TeamTable = {
  26. unassembled = {},
  27. assembled = {}
  28. }
  29.  
  30. local function ConvertRawToUnassembled(T)
  31. for i = 1, #T do -- Check first table
  32. -- print("Raw players: " .. T[i])
  33. end
  34.  
  35. -- print("--------")
  36.  
  37. math.randomseed(tonumber(tostring(os.time() * #T):reverse():sub(1, 6))) -- Recommended Lua seed generation
  38. for i1 = 1, math.floor(#T / SizeOfTeam) do -- runs if any players are in raw table
  39. TeamTable.unassembled[i1] = {}
  40. -- print("\nTEAM NR: " .. i1 .. "\n")
  41.  
  42. for i2 = 1, SizeOfTeam do -- increments to 3 on each loop for 3 players max per random group
  43. -- print("Player count: " .. i2)
  44. -- print("Players in raw table: " .. #T)
  45.  
  46. local k = math.random(1, #T) -- Retrieve random player
  47. -- print("Picked for team: " .. T[k])
  48. TeamTable.unassembled[i1][i2] = T[k]
  49.  
  50. table.remove(T, k)
  51. -- print("--------")
  52. end
  53. TeamTable.unassembled[i1][SizeOfTeam + 1] = false
  54. end
  55. -- print()
  56. end
  57.  
  58. local function CheckUnassembledTeams()
  59. for k, v in ipairs(TeamTable.unassembled) do -- Print all the teams signed up
  60. for i = 1, SizeOfTeam do
  61. -- print("Team " .. k .. " includes players: " .. v[i])
  62. end
  63. -- print("Is team in queue; " .. tostring(v[SizeOfTeam + 1]) .. "\n")
  64. end
  65. end
  66.  
  67. local function AssembleTeam()
  68. for k, v in ipairs(TeamTable.unassembled) do -- Assemble group code and remove from unassembled team table
  69. if v[SizeOfTeam + 1] == false then
  70. -- print("Team " .. k .. " is not yet assembled, ASSEMBLE IT!")
  71. TeamTable.assembled[k] = v
  72. -- print("DEBUG KEY: " .. k .. "\n")
  73. end
  74. end
  75. TeamTable.unassembled = {}
  76. end
  77.  
  78. local function WhateverComesNext()
  79. for k, v in ipairs(TeamTable.assembled) do -- Send summon/whatever code
  80. -- print("Team " .. k .. " is assembled, send summon.")
  81. end
  82. -- print()
  83. end
  84.  
  85. local function CheckAllTables()
  86. if #TeamTable.unassembled ~= 0 then -- Print all the teams signed up, just to see if they were removed successfully on assemble
  87. for k, v in ipairs(TeamTable.unassembled) do
  88. for i = 1, SizeOfTeam do
  89. -- print("Team " .. k .. " includes players: " .. v[i])
  90. end
  91. -- print("Is team in queue; " .. tostring(v[4]) .. "\n")
  92. end
  93. else
  94. -- print("No players in unassembled team queue\n")
  95. end
  96.  
  97. for k, v in ipairs(TeamTable.assembled) do -- Print all the assembled teams
  98. for i = 1, SizeOfTeam do
  99. -- print("Assembled team " .. k .. " includes players: " .. v[i])
  100. end
  101. -- print()
  102. end
  103.  
  104. for i = 1, #RawPlayerTable do
  105. -- print("Players still in Raw player table: " .. RawPlayerTable[i])
  106. end
  107. end
  108.  
  109. local function teleportToArena(eventId, delay, repeats, player)
  110. ConvertRawToUnassembled(RawPlayerTable)
  111. CheckUnassembledTeams()
  112. AssembleTeam()
  113. WhateverComesNext()
  114. CheckAllTables()
  115.  
  116. for k, v in ipairs(TeamTable.assembled) do
  117. local player = GetPlayerByName(v[1])
  118.  
  119. if k == 1 then -- Team 1
  120. player:Teleport(arena1.Arena1[1], arena1.Arena1[2], arena1.Arena1[3], arena1.Arena1[4], arena1.Arena1[5])
  121. elseif k == 2 then -- Team 2
  122. player:Teleport(arena1.Arena2[1], arena1.Arena2[2], arena1.Arena2[3], arena1.Arena2[4], arena1.Arena2[5])
  123. end
  124. end
  125. end
  126.  
  127. function arena1.NpcHello(event, player, object)
  128. player:GossipMenuAddItem(0, "1v1 Arena", 0, 1)
  129.  
  130. player:GossipMenuAddItem(0, "Show players in queue: " .. #RawPlayerTable, 0, 2)
  131.  
  132. player:GossipSendMenu(1, object)
  133. end
  134.  
  135. function arena1.Selection(event, player, object, sender, intid, code, menu_id)
  136. if (intid == 1) then
  137. table.insert(RawPlayerTable, player:GetName())
  138. if #RawPlayerTable == 2 then
  139. player:RegisterEvent(teleportToArena, 5000, 1)
  140. end
  141. end
  142. player:GossipComplete()
  143. end
  144.  
  145. RegisterCreatureGossipEvent(arena1.Entry, GOSSIP_EVENT_ON_HELLO, arena1.NpcHello)
  146. RegisterCreatureGossipEvent(arena1.Entry, GOSSIP_EVENT_ON_SELECT, arena1.Selection)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement