Advertisement
Ainzoe

Untitled

Jul 19th, 2021
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. -- updated 5/12/21
  2. -- should choke less
  3.  
  4. -- updated 5/16/21
  5. -- should ignore invisible notes
  6. -- added hit chances and a toggle
  7. -- hit chances are a bit rough but should work good enough
  8.  
  9. -- only tested on Synapse X
  10. -- moved ui to github & removed the kick
  11.  
  12. -- for "free exploit" developers
  13. -- you need the following functions
  14. -- loadstring, HttpGet, getgc, getloadedmodules, getconnections, and set_thread_identity or whatever you call it
  15.  
  16. local library = loadstring(game:HttpGet("https://raw.githubusercontent.com/wally-rblx/uwuware-ui/main/main.lua"))()
  17.  
  18. local framework, scrollHandler
  19. while true do
  20. for _, obj in next, getgc(true) do
  21. if type(obj) == 'table' and rawget(obj, 'GameUI') then
  22. framework = obj;
  23. break
  24. end
  25. end
  26.  
  27. for _, module in next, getloadedmodules() do
  28. if module.Name == 'ScrollHandler' then
  29. scrollHandler = module;
  30. break;
  31. end
  32. end
  33.  
  34. if (type(framework) == 'table') and (typeof(scrollHandler) == 'Instance') then
  35. break
  36. end
  37.  
  38. wait(1)
  39. end
  40.  
  41. local runService = game:GetService('RunService')
  42. local userInputService = game:GetService('UserInputService')
  43. local client = game:GetService('Players').LocalPlayer;
  44. local random = Random.new()
  45.  
  46. local fastWait, fastSpawn, fireSignal, rollChance do
  47. -- https://eryn.io/gist/3db84579866c099cdd5bb2ff37947cec
  48. -- bla bla spawn and wait are bad
  49. -- can also use bindables for the fastspawn idc
  50.  
  51. function fastWait(t)
  52. local d = 0;
  53. while d < t do
  54. d += runService.RenderStepped:wait()
  55. end
  56. end
  57.  
  58. function fastSpawn(f)
  59. coroutine.wrap(f)()
  60. end
  61.  
  62. -- updated for script-ware or whatever
  63. -- attempted to update for krnl
  64. local set_identity = (type(syn) == 'table' and syn.set_thread_identity) or setidentity or setthreadcontext
  65. function fireSignal(target, signal, ...)
  66. -- getconnections with InputBegan / InputEnded does not work without setting Synapse to the game's context level
  67. set_identity(2)
  68. for _, signal in next, getconnections(signal) do
  69. if type(signal.Function) == 'function' and islclosure(signal.Function) then
  70. local scr = rawget(getfenv(signal.Function), 'script')
  71. if scr == target then
  72. pcall(signal.Function, ...)
  73. end
  74. end
  75. end
  76. set_identity(7)
  77. end
  78.  
  79. -- uses a weighted random system
  80. -- its a bit scuffed rn but it works good enough
  81.  
  82. function rollChance()
  83. local chances = {
  84. { type = 'Sick', value = library.flags.sickChance },
  85. { type = 'Good', value = library.flags.goodChance },
  86. { type = 'Ok', value = library.flags.okChance },
  87. { type = 'Bad', value = library.flags.badChance },
  88. }
  89.  
  90. table.sort(chances, function(a, b)
  91. return a.value > b.value
  92. end)
  93.  
  94. local sum = 0;
  95. for i = 1, #chances do
  96. sum += chances[i].value
  97. end
  98.  
  99. if sum == 0 then
  100. -- forgot to change this before?
  101. -- fixed 6/5/21
  102. return chances[random:NextInteger(1, 4)].type
  103. end
  104.  
  105. local initialWeight = random:NextInteger(0, sum)
  106. local weight = 0;
  107.  
  108. for i = 1, #chances do
  109. weight = weight + chances[i].value
  110.  
  111. if weight > initialWeight then
  112. return chances[i].type
  113. end
  114. end
  115.  
  116. return 'Sick' -- just incase it fails?
  117. end
  118. end
  119.  
  120. local map = { [0] = 'Left', [1] = 'Down', [2] = 'Up', [3] = 'Right', }
  121. local keys = { Up = Enum.KeyCode.Up; Down = Enum.KeyCode.Down; Left = Enum.KeyCode.Left; Right = Enum.KeyCode.Right; }
  122.  
  123. -- they are "weird" because they are in the middle of their Upper & Lower ranges
  124. -- should hopefully make them more precise!
  125. local chanceValues = {
  126. Sick = 96,
  127. Good = 92,
  128. Ok = 87,
  129. Bad = 77,
  130. }
  131.  
  132. local marked = {}
  133. local hitChances = {}
  134.  
  135. if shared._id then
  136. pcall(runService.UnbindFromRenderStep, runService, shared._id)
  137. end
  138.  
  139. shared._id = game:GetService('HttpService'):GenerateGUID(false)
  140. runService:BindToRenderStep(shared._id, 1, function()
  141. if (not library.flags.autoPlayer) then return end
  142.  
  143. for i, arrow in next, framework.UI.ActiveSections do
  144. if (arrow.Side == framework.UI.CurrentSide) and (not marked[arrow]) then
  145. local indice = (arrow.Data.Position % 4) -- mod 4 because 5%4 -> 0, 6%4 = 1, etc
  146. local position = map[indice]
  147.  
  148. if (position) then
  149. local currentTime = framework.SongPlayer.CurrentlyPlaying.TimePosition
  150. local distance = (1 - math.abs(arrow.Data.Time - currentTime)) * 100
  151.  
  152. if (arrow.Data.Time == 0) then
  153. -- print('invisible', tableToString(arrow.Data), i, distance)
  154. continue
  155. end
  156.  
  157. local hitChance = hitChances[arrow] or rollChance()
  158. hitChances[arrow] = hitChance
  159.  
  160. -- if (not chanceValues[hitChance]) then warn('invalid chance', hitChance) end
  161. if distance >= chanceValues[hitChance] then
  162. marked[arrow] = true;
  163. fireSignal(scrollHandler, userInputService.InputBegan, { KeyCode = keys[position], UserInputType = Enum.UserInputType.Keyboard }, false)
  164.  
  165. -- wait depending on the arrows length so the animation can play
  166. if arrow.Data.Length > 0 then
  167. fastWait(arrow.Data.Length)
  168. else
  169. fastWait(0.075) -- 0.1 seems to make it miss more, this should be fine enough?
  170. end
  171.  
  172. fireSignal(scrollHandler, userInputService.InputEnded, { KeyCode = keys[position], UserInputType = Enum.UserInputType.Keyboard }, false)
  173. marked[arrow] = false;
  174. end
  175. end
  176. end
  177. end
  178. end)
  179.  
  180. local window = library:CreateWindow('Funky Friday') do
  181. local folder = window:AddFolder('Main') do
  182. folder:AddToggle({ text = 'Autoplayer', flag = 'autoPlayer' })
  183.  
  184. folder:AddSlider({ text = 'Sick %', flag = 'sickChance', min = 0, max = 100, value = 100 })
  185. folder:AddSlider({ text = 'Good %', flag = 'goodChance', min = 0, max = 100, value = 0 })
  186. folder:AddSlider({ text = 'Ok %', flag = 'okChance', min = 0, max = 100, value = 0 })
  187. folder:AddSlider({ text = 'Bad %', flag = 'badChance', min = 0, max = 100, value = 0 })
  188. end
  189.  
  190. local folder = window:AddFolder('Credits') do
  191. folder:AddLabel({ text = 'Credits' })
  192. folder:AddLabel({ text = 'Jan - UI library' })
  193. folder:AddLabel({ text = 'wally - Script' })
  194. end
  195. end
  196.  
  197.  
  198. library:Init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement