-- THIS DOES NOT WORK WITH XENO! -- only support 4 key -- DO NOT TOUCH ANYTHING while the bot is playing, dont even turn the sound down, no nothing! itll mess up the bot -- lag plays a MAJOR role in this bot, if you lag even for like 5 frames, itll just stop working or something, idk just have a good device (mine sucks) -- have your keybinds set to A, S, W, D local keybinds = {0x41,0x53,0x57,0x44} -- (https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) local offset = 0 -- do not change, its fine at the moment local localplr = game.Players.LocalPlayer if getgenv().restartautoplayss ~= nil then getgenv().restartautoplayss() end local notes = {} local hitnotes = {} function docol(v) if v:IsA("Frame")then local cnum = v.Name v.ChildAdded:Connect(function(c) if c:IsA("ImageLabel") then table.insert(notes,{c,cnum}) end end) end end local side = "Right" function getside() for i,v in pairs(game.ReplicatedStorage.ComplexMatches:GetChildren()) do for i,v in pairs(v:GetChildren()) do if v.Name == localplr.Name then side = (v.PlayerType.Value == 1 and "Left") or (v.PlayerType.Value == 2 and "Right") end end end for i,v in pairs(game.ReplicatedStorage.Matches:GetChildren()) do --for i,v in pairs(v:GetChildren()) do if v.Participants.Value == nil then if (v.Owner.Value and v.Owner.Value.Name == localplr.Name) or (v.Opponent.Value and v.Opponent.Value.Name == localplr.Name) then local ptype = (v.Owner.Value and v.Owner.Value.Name == localplr.Name and v.Owner.PlayerType.Value) or (v.Opponent.Value and v.Opponent.Value.Name == localplr.Name and v.Opponent.PlayerType.Value) side = (ptype == 1 and "Left") or (ptype == 2 and "Right") end end --end end --side = (side == "Left" and "Right") or "Left" end getside() local dup = {Left = 1,Down = 2,Up = 3,Right = 4} function domn(v) hitnotes[v.Name] = v end function dag(v) getside() for i,v in pairs(v[side].Notes:GetChildren()) do docol(v) end coroutine.wrap(function() v[side]:WaitForChild("MainArrowContainer",math.huge) for i,v in pairs(v[side].MainArrowContainer:GetChildren()) do domn(v) end end)() end if localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true) and not localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true).Parent:FindFirstChild("Bop") then dag(localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true)) end local newgui = localplr.PlayerGui.ScreenGui:FindFirstChild("Bop",true).ChildAdded:Connect(function(child) if child.Name == "ArrowGui" then dag(child) end end) local toremove = {} local alreadypressed = {} local upscroll = false local ors = game:GetService("RunService").RenderStepped:Connect(function() for i,v in pairs(keybinds) do keyrelease(v) end if localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true) and localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true)[side] and localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true)[side]:FindFirstChild("MainArrowContainer") then upscroll = localplr.PlayerGui.ScreenGui:FindFirstChild("ArrowGui",true)[side].MainArrowContainer:GetChildren()[1].AbsolutePosition.Y < localplr.PlayerGui.ScreenGui.AbsoluteSize.Y/2 for i,v in pairs(keybinds) do keyrelease(v) end local cnotes = notes for i,v in pairs(cnotes) do if typeof(v[1]) == "Instance" and v[1] and v[1].Parent ~= nil then local checkpos = nil if upscroll then checkpos = v[1].AbsolutePosition.Y < 0--math.abs(hitnotes[v[2]].AbsolutePosition.Y - v[1].AbsolutePosition.Y) < 100 else checkpos = v[1].AbsolutePosition.Y > 431 end if checkpos then local kb = keybinds[dup[v[2]]]--keybinds[(upscroll and 4 - v[2]) or v[2]] toremove[i] = true alreadypressed[v[1]] = true keypress(kb) elseif v[1] == nil or v[1].Parent == nil then toremove[i] = true end end end for i,v in pairs(toremove) do notes[i] = nil toremove[i] = nil end alreadypressed = {} end end) getgenv().restartautoplayss = function() ors:Disconnect() newgui:Disconnect() end