
Key Required

-- 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
thanks you gamer god im finally found this
try to make support long notes, this is currently best script rn because others are missing badly
@Vesta you look kinda su*ious
@Candle I don't hide my sauce, don't feel like obfuscating my scripts (sauce --> source)
@Vesta okay nvm you good script is peak
@Candle Thanks! Also my bad for advertising, thats probably going to dscourage others from using your script :\
@Vesta i mean your script is only now who supports long notes and also multiple notes
@Vesta can you add auto detect which side are you and how many keys there in song? that would be soo useful
@Candle ill try