coroutine.wrap(f)() end end for i, v in next, getgc(true) do if type(v) == 'table' and rawget(v, 'GameUI') then framework = v; end if type(v) == 'function' and islclosure(v) then local info = getinfo(v); if info.name == '' then continue end if info.source:match('%.Arrows$') then local constants = getconstants(v); if table.find(constants, 'Right') and table.find(constants, 'NewThread') then funcs.KeyDown = v; elseif table.find(constants, 'Multiplier') and table.find(constants, 'MuteVoices') then funcs.KeyUp = v; end end end if framework and funcs.KeyUp and funcs.KeyDown then break end end if type(framework) ~= 'table' or (not rawget(framework, 'UI')) then return game.Players.LocalPlayer:Kick('Failed to locate framework.') elseif (not (funcs.KeyDown and funcs.KeyUp)) then return game.Players.LocalPlayer:Kick('Failed to locate key functions.') end game:GetService("UserInputService").InputBegan:Connect(function(key,bool) if key.KeyCode == Enum.KeyCode.Delete then mode = mode + 1 if mode == 1 then print("Mode changed to rage") elseif mode == 2 then print("Mode changed to disabled") elseif mode == 3 then mode = 0; print("Mode changed to legit") end end end) while runService.RenderStepped:wait() do if mode ~= 2 then for _, arrow in next, framework.UI.ActiveSections do if _ == 1 then else if arrow.Side ~= framework.UI.CurrentSide then continue end if marked[arrow] then continue end local index = arrow.Data.Position % 4 local position = map[index] if (not position) then continue end local distance = (1 - math.abs(arrow.Data.Time - framework.SongPlayer.CurrentlyPlaying.TimePosition)) * 100 if distance >= 95 then marked[arrow] = true; fastSpawn(function() if mode == 0 then wait(Random.new():NextNumber(0.02, maxdelay)) else end funcs.KeyDown(position) if arrow.Data.Length > 0 then fastWait(arrow.Data.Length) else fastWait(0.05) end funcs.KeyUp(position) marked[arrow] = nil end) end end end end e coroutine.wrap(f)() end end for i, v in next, getgc(true) do if type(v) == 'table' and rawget(v, 'GameUI') then framework = v; end if type(v) == 'function' and islclosure(v) then local info = getinfo(v); if info.name == '' then continue end if info.source:match('%.Arrows$') then local constants = getconstants(v); if table.find(constants, 'Right') and table.find(constants, 'NewThread') then funcs.KeyDown = v; elseif table.find(constants, 'Multiplier') and table.find(constants, 'MuteVoices') then funcs.KeyUp = v; end end end if framework and funcs.KeyUp and funcs.KeyDown then break end end if type(framework) ~= 'table' or (not rawget(framework, 'UI')) then return game.Players.LocalPlayer:Kick('Failed to locate framework.') elseif (not (funcs.KeyDown and funcs.KeyUp)) then return game.Players.LocalPlayer:Kick('Failed to locate key functions.') end game:GetService("UserInputService").InputBegan:Connect(function(key,bool) if key.KeyCode == Enum.KeyCode.Delete then mode = mode + 1 if mode == 1 then print("Mode changed to rage") elseif mode == 2 then print("Mode changed to disabled") elseif mode == 3 then mode = 0; print("Mode changed to legit") end end end) while runService.RenderStepped:wait() do if mode ~= 2 then for _, arrow in next, framework.UI.ActiveSections do if _ == 1 then else if arrow.Side ~= framework.UI.CurrentSide then continue end if marked[arrow] then continue end local index = arrow.Data.Position % 4 local position = map[index] if (not position) then continue end local distance = (1 - math.abs(arrow.Data.Time - framework.SongPlayer.CurrentlyPlaying.TimePosition)) * 100 if distance >= 95 then marked[arrow] = true; fastSpawn(function() if mode == 0 then wait(Random.new():NextNumber(0.02, maxdelay)) else end funcs.KeyDown(position) if arrow.Data.Length > 0 then fastWait(arrow.Data.Length) else fastWait(0.05) end funcs.KeyUp(position) marked[arrow] = nil end) end end end end e