Run it
Copy the script and paste it into your executor.
RunService = :()
UserInputService = :()
Players = :()
LocalPlayer = Players.LocalPlayer
PlayerScripts = LocalPlayer:()
Client = PlayerScripts:()
Gameplay = Client:()
UI = Client:()
Note = (Gameplay:())
Input = (Gameplay:())
Hud = (Gameplay:())
State = (Client:():())
Results = (UI:():())
Round = (Gameplay:())
.FunkyDuelsCleanup
(.FunkyDuelsCleanup)
Config = {
Autoplay = ,
HitMode = ,
LegitJitter = ,
AutoHold = ,
ServerReplication = ,
PreventMisses = ,
SpoofEnabled = ,
LiveHudSpoof = ,
ResultsSpoof = ,
Score = ,
Misses = ,
Accuracy = ,
Sicks = ,
Goods = ,
Okays = ,
Bads = ,
Combo = ,
MaxCombo =
}
activeHolds = {}
handledNotes = {}
connections = {}
originalMethods = {}
rawTryHitNote = Note.TryHitNote
rawGetResults = Note.GetResults
rawApplyGhostMiss = Note.ApplyGhostMiss
rawSetNoteResolvedCallback = Note.SetNoteResolvedCallback
(val, defaultVal, maxVal)
n = (val) (defaultVal )
n ~= n n == .huge n == -.huge
n = defaultVal
.(.(n), , maxVal )
(val, defaultVal, minVal, maxVal)
n = (val) (defaultVal )
n ~= n n == .huge n == -.huge
n = defaultVal
.(n, minVal , maxVal )
()
upvals = debug.(Input.Init)
bindKb = upvals[]
bindKb
inner = debug.(bindKb)
inner[], inner[]
,
()
upvals = debug.(rawTryHitNote)
{
conductor = upvals[],
timingOffset = upvals[] ,
noteList = upvals[],
roundContext = upvals[],
match = upvals[],
hitNote = upvals[]
}
(note, context)
context context.SessionLocalSide
note.IsPlayer ==
(note.IsPlayer == ) == (context.SessionLocalSide == )
showStats = debug.(Results.Show)[]
origSetCount = debug.(showStats)[]
u63 = debug.(origSetCount)[]
(frame, count)
frame frame:()
Index = frame.Index
_, c (frame:())
c ~= Index c:()
c:()
Index.Visible =
num = (count, , )
str = .(, num)
i = , #str
digit = (str:(i, i))
digit u63[digit + ] u63[digit + ][]
clone = Index:()
clone.LayoutOrder = i
clone.Visible =
clone.Image = u63[digit + ][].assetId
clone.Parent = frame
debug.(showStats, , safeSetCount)
debug.(Results.Show, , safeSetCount)
originalMethods.SetNoteResolvedCallback = rawSetNoteResolvedCallback
Note.SetNoteResolvedCallback = (callback)
wrappedCallback = (target, count, isHit, dir, noteData)
target == Config.SpoofEnabled Config.ServerReplication
noteData
noteData.ResolvedSongTimeMs = noteData.TimeMs
Config.PreventMisses
isHit =
(target, count, isHit, dir, noteData)
(wrappedCallback)
originalMethods.ApplyGhostMiss = rawApplyGhostMiss
Note.ApplyGhostMiss = (dir)
Config.SpoofEnabled Config.PreventMisses
(dir)
()
Config.SpoofEnabled
upvals = debug.(rawGetResults)
upvals #upvals <
(upvals[]) ==
upvals[].SICK = (Config.Sicks, )
upvals[].GOOD = (Config.Goods, )
upvals[].OKAY = (Config.Okays, )
upvals[].BAD = (Config.Bads, )
(upvals[]) ==
upvals[].score = (Config.Score, )
upvals[].misses = (Config.Misses, )
upvals[].accuracy = (Config.Accuracy, , , )
upvals[].combo = (Config.MaxCombo, )
upvals[].maxCombo = (Config.MaxCombo, )
debug.(rawGetResults, , (Config.MaxCombo, ))
debug.(rawGetResults, , (Config.Misses, ))
debug.(rawGetResults, , (Config.Score, ))
originalMethods.GetResults = rawGetResults
Note.GetResults = (...)
()
res = (...)
Config.SpoofEnabled (res) ==
res.score = (Config.Score, res.score )
res.misses = (Config.Misses, res.misses )
res.accuracy = (Config.Accuracy, res.accuracy , , )
res.sicks = (Config.Sicks, res.sicks )
res.goods = (Config.Goods, res.goods )
res.okays = (Config.Okays, res.okays )
res.bads = (Config.Bads, res.bads )
res.maxCombo = (Config.MaxCombo, res.maxCombo )
res
originalMethods.RenderStats = Hud.RenderStats
Hud.RenderStats = (score, misses, accuracy, combo)
Config.SpoofEnabled Config.LiveHudSpoof
score = (Config.Score, score )
misses = (Config.Misses, misses )
accuracy = (Config.Accuracy, accuracy , , )
combo = (Config.Combo, combo )
originalMethods.(score, misses, accuracy, combo)
originalMethods.Show = Results.Show
Results.Show = (pStats, songName, diff, oppStats, isSolo)
Config.SpoofEnabled Config.ResultsSpoof (pStats) ==
pStats.score = (Config.Score, pStats.score )
pStats.misses = (Config.Misses, pStats.misses )
pStats.accuracy = (Config.Accuracy, pStats.accuracy , , )
pStats.sicks = (Config.Sicks, pStats.sicks )
pStats.goods = (Config.Goods, pStats.goods )
pStats.okays = (Config.Okays, pStats.okays )
pStats.bads = (Config.Bads, pStats.bads )
pStats.maxCombo = (Config.MaxCombo, pStats.maxCombo )
(oppStats) ==
oppStats.sicks = (oppStats.sicks, )
oppStats.goods = (oppStats.goods, )
oppStats.okays = (oppStats.okays, )
oppStats.bads = (oppStats.bads, )
oppStats.maxCombo = (oppStats.maxCombo, )
oppStats.misses = (oppStats.misses, )
success, err = (()
originalMethods.(pStats, songName, diff, oppStats, isSolo)
)
success
(()
up = debug.(originalMethods.Show)
up[] up[].Visible =
)
onSongEnded = debug.(Round.StartRound)[]
songEndWatchdogTriggered =
lastActiveNoteTime =
(liveSongTime, noteList, roundContext)
songEndWatchdogTriggered
Results.()
roundContext roundContext.RoundOver
hasUnresolvedNotes =
maxTime =
_, n (noteList)
n.Hit n.Missed
hasUnresolvedNotes =
n.TimeMs n.TimeMs > maxTime
maxTime = n.TimeMs
maxTime >
lastActiveNoteTime = maxTime
hasUnresolvedNotes lastActiveNoteTime > liveSongTime >= lastActiveNoteTime +
songEndWatchdogTriggered =
.(()
onSongEnded Results.() roundContext.RoundOver
(onSongEnded)
)
()
State.() ~=
.(activeHolds)
.(handledNotes)
songEndWatchdogTriggered =
lastActiveNoteTime =
ctx = ()
ctx.conductor (ctx.conductor.GetLiveSongTimeMs) ~= ctx.noteList ctx.roundContext
ctx.roundContext.RoundOver Note.()
()
hp, hr = ()
liveSongTime = ctx.conductor.() + ctx.timingOffset
(liveSongTime, ctx.noteList, ctx.roundContext)
Config.Autoplay
Config.AutoHold
dir, hold (activeHolds)
liveSongTime >= hold.endTime -
hr (dir)
activeHolds[dir] =
_, note (ctx.noteList)
note.Hit note.Missed handledNotes[note]
(note, ctx.roundContext)
jitter =
Config.HitMode ==
note._jitter
note._jitter = .(-Config.LegitJitter, Config.LegitJitter)
jitter = note._jitter
targetHitTime = note.TimeMs + jitter
liveSongTime >= targetHitTime
handledNotes[note] =
Config.ServerReplication
note.ResolvedSongTimeMs = note.TimeMs
hp (note.Dir)
note.Hit (note.Dir)
note.HoldMs note.HoldMs >
activeHolds[note.Dir] = {
dir = note.Dir,
endTime = note.TimeMs + note.HoldMs
}
.( + .() * , ()
hr activeHolds[note.Dir]
(note.Dir)
)
#ctx.noteList == (handledNotes) ~=
.(handledNotes)
.(connections, RunService.Heartbeat:(onHeartbeat))
targetParent = (gethui ()) :():() LocalPlayer:()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.ZIndexBehavior = .ZIndexBehavior.Sibling
mainFrame = .()
mainFrame.Name =
mainFrame.Size = .(, , , )
mainFrame.Position = .(, -, , -)
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.Active =
mainFrame.Draggable =
mainFrame.ClipsDescendants =
mainFrame.Parent = gui
mainCorner = .()
mainCorner.CornerRadius = .(, )
mainCorner.Parent = mainFrame
mainStroke = .()
mainStroke.Color = .(, , )
mainStroke.Thickness =
mainStroke.Parent = mainFrame
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundColor3 = .(, , )
titleBar.BorderSizePixel =
titleBar.Parent = mainFrame
titleCorner = .()
titleCorner.CornerRadius = .(, )
titleCorner.Parent = titleBar
titleFix = .()
titleFix.Size = .(, , , )
titleFix.Position = .(, , , -)
titleFix.BackgroundColor3 = .(, , )
titleFix.BorderSizePixel =
titleFix.Parent = titleBar
titleText = .()
titleText.Size = .(, -, , )
titleText.Position = .(, , , )
titleText.Text =
titleText.Font = .Font.GothamBold
titleText.TextSize =
titleText.TextColor3 = .(, , )
titleText.TextXAlignment = .TextXAlignment.Left
titleText.BackgroundTransparency =
titleText.Parent = titleBar
minBtn = .()
minBtn.Size = .(, , , )
minBtn.Position = .(, -, , -)
minBtn.Text =
minBtn.Font = .Font.GothamBold
minBtn.TextSize =
minBtn.TextColor3 = .(, , )
minBtn.BackgroundColor3 = .(, , )
minBtn.BorderSizePixel =
minBtn.AutoButtonColor =
minBtn.Parent = titleBar
minCorner = .()
minCorner.CornerRadius = .(, )
minCorner.Parent = minBtn
closeBtn = .()
closeBtn.Size = .(, , , )
closeBtn.Position = .(, -, , -)
closeBtn.Text =
closeBtn.Font = .Font.GothamBold
closeBtn.TextSize =
closeBtn.TextColor3 = .(, , )
closeBtn.BackgroundColor3 = .(, , )
closeBtn.BorderSizePixel =
closeBtn.AutoButtonColor =
closeBtn.Parent = titleBar
closeCorner = .()
closeCorner.CornerRadius = .(, )
closeCorner.Parent = closeBtn
floatIcon = .()
floatIcon.Name =
floatIcon.Size = .(, , , )
floatIcon.Position = .(, , , -)
floatIcon.BackgroundColor3 = .(, , )
floatIcon.BorderSizePixel =
floatIcon.Text =
floatIcon.Font = .Font.GothamBold
floatIcon.TextSize =
floatIcon.TextColor3 = .(, , )
floatIcon.Active =
floatIcon.Draggable =
floatIcon.Visible =
floatIcon.Parent = gui
iconCorner = .()
iconCorner.CornerRadius = .(, )
iconCorner.Parent = floatIcon
iconStroke = .()
iconStroke.Color = .(, , )
iconStroke.Thickness =
iconStroke.Parent = floatIcon
()
mainFrame.Visible =
floatIcon.Visible =
()
mainFrame.Visible =
floatIcon.Visible =
()
mainFrame.Visible
()
()
minBtn.MouseButton1Click:(minimizeToIcon)
closeBtn.MouseButton1Click:(minimizeToIcon)
floatIcon.MouseButton1Click:(showMain)
.(connections, UserInputService.InputBegan:((input, gpe)
gpe input.KeyCode == .KeyCode.RightShift
()
))
content = .()
content.Size = .(, -, , -)
content.Position = .(, , , )
content.BackgroundTransparency =
content.BorderSizePixel =
content.ScrollBarThickness =
content.ScrollBarImageColor3 = .(, , )
content.CanvasSize = .(, , , )
content.Parent = mainFrame
layout = .()
layout.Padding = .(, )
layout.SortOrder = .SortOrder.LayoutOrder
layout.Parent = content
(text)
sec = .()
sec.Size = .(, , , )
sec.Text = .(text)
sec.Font = .Font.GothamBold
sec.TextSize =
sec.TextColor3 = .(, , )
sec.TextXAlignment = .TextXAlignment.Left
sec.BackgroundTransparency =
sec.Parent = content
(label, initialVal, callback)
btn = .()
btn.Size = .(, , , )
btn.BackgroundColor3 = .(, , )
btn.BorderSizePixel =
btn.AutoButtonColor =
btn.Text =
btn.Parent = content
btnCorner = .()
btnCorner.CornerRadius = .(, )
btnCorner.Parent = btn
txt = .()
txt.Size = .(, -, , )
txt.Position = .(, , , )
txt.Text = label
txt.Font = .Font.GothamMedium
txt.TextSize =
txt.TextColor3 = .(, , )
txt.TextXAlignment = .TextXAlignment.Left
txt.BackgroundTransparency =
txt.Parent = btn
indicator = .()
indicator.Size = .(, , , )
indicator.Position = .(, -, , -)
indicator.BackgroundColor3 = initialVal .(, , ) .(, , )
indicator.BorderSizePixel =
indicator.Parent = btn
indCorner = .()
indCorner.CornerRadius = .(, )
indCorner.Parent = indicator
dot = .()
dot.Size = .(, , , )
dot.Position = initialVal .(, -, , -) .(, , , -)
dot.BackgroundColor3 = .(, , )
dot.BorderSizePixel =
dot.Parent = indicator
dotCorner = .()
dotCorner.CornerRadius = .(, )
dotCorner.Parent = dot
state = initialVal
btn.MouseButton1Click:(()
state = state
indicator.BackgroundColor3 = state .(, , ) .(, , )
dot.Position = state .(, -, , -) .(, , , -)
(state)
)
btn
(label, defaultVal, callback)
frame = .()
frame.Size = .(, , , )
frame.BackgroundColor3 = .(, , )
frame.BorderSizePixel =
frame.Parent = content
fCorner = .()
fCorner.CornerRadius = .(, )
fCorner.Parent = frame
txt = .()
txt.Size = .(, , , )
txt.Position = .(, , , )
txt.Text = label
txt.Font = .Font.GothamMedium
txt.TextSize =
txt.TextColor3 = .(, , )
txt.TextXAlignment = .TextXAlignment.Left
txt.BackgroundTransparency =
txt.Parent = frame
box = .()
box.Size = .(, -, , )
box.Position = .(, , , -)
box.BackgroundColor3 = .(, , )
box.BorderSizePixel =
box.Text = (defaultVal)
box.Font = .Font.GothamBold
box.TextSize =
box.TextColor3 = .(, , )
box.ClearTextOnFocus =
box.Parent = frame
bCorner = .()
bCorner.CornerRadius = .(, )
bCorner.Parent = box
box.FocusLost:(()
(box.Text)
)
box
()
(, Config.ServerReplication, (val) Config.ServerReplication = val )
(, Config.PreventMisses, (val) Config.PreventMisses = val )
()
(, Config.Autoplay, (val) Config.Autoplay = val )
(, Config.HitMode == , (val)
Config.HitMode = val
)
(, Config.AutoHold, (val) Config.AutoHold = val )
()
(, Config.SpoofEnabled, (val) Config.SpoofEnabled = val )
(, Config.LiveHudSpoof, (val) Config.LiveHudSpoof = val )
(, Config.ResultsSpoof, (val) Config.ResultsSpoof = val )
boxScore = (, Config.Score, (val) Config.Score = (val, ) )
boxAcc = (, Config.Accuracy, (val) Config.Accuracy = (val, , , ) )
boxSicks = (, Config.Sicks, (val) Config.Sicks = (val, ) )
boxGoods = (, Config.Goods, (val) Config.Goods = (val, ) )
boxOkays = (, Config.Okays, (val) Config.Okays = (val, ) )
boxBads = (, Config.Bads, (val) Config.Bads = (val, ) )
boxMisses = (, Config.Misses, (val) Config.Misses = (val, ) )
boxCombo = (, Config.MaxCombo, (val)
Config.MaxCombo = (val, )
Config.Combo = Config.MaxCombo
)
.FunkyDuelsCleanup = ()
_, conn (connections)
(() conn:() )
.(connections)
Note.TryHitNote = rawTryHitNote
Note.GetResults = rawGetResults
Note.ApplyGhostMiss = rawApplyGhostMiss
Note.SetNoteResolvedCallback = rawSetNoteResolvedCallback
originalMethods.RenderStats Hud.RenderStats = originalMethods.RenderStats
originalMethods.Show Results.Show = originalMethods.Show
(()
debug.(showStats, , origSetCount)
debug.(Results.Show, , origSetCount)
)
gui gui.Parent
gui:()
.FunkyDuelsCleanup =
()
gui.Parent = targetParent
()