--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] --Made by 0_Void --Test by BOT_Extream on delta executor about pc? Only high unc lol run_on_actor(game:GetService("Players").LocalPlayer.PlayerScripts.ClientActor, [[ if not newlclosure then getgenv().newlclosure = function(func) local env = getfenv(func) local t = {F = func} setrawmetatable(t, {index = env, newindex = env}) local closure = function(...) return F(...) end setfenv(closure, t) return closure end end local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- ========================================== -- CONFIGURATION -- ========================================== local TAP_HOLD_MS = 120 -- Tap note hold length (ms) local GUI_UPDATE_RATE = 0.016 -- Refresh UI/FPS every 100ms local TOGGLE_KEY = Enum.KeyCode.RightControl -- ========================================== local autoPlayerEnabled = true local keyHitCounts = {} local keyCounterLabels = {} local keyFrames = {} local counterContainerFrame = nil local function createStatusGUI() local playerGui = LocalPlayer:FindFirstChildOfClass("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui", 5) if not playerGui then return nil end local existing = playerGui:FindFirstChild("AutoPlayerStatus") if existing then existing:Destroy() end local screenGui = Instance.new("ScreenGui") screenGui.Name = "AutoPlayerStatus" screenGui.ResetOnSpawn = false screenGui.DisplayOrder = 999999999 -- Maximum Z-index layer depth screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global screenGui.Parent = playerGui local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 240, 0, 160) frame.Position = UDim2.new(0.02, 0, 0.3, 0) frame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.ZIndex = 10 frame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -10, 0, 25) title.Position = UDim2.new(0, 10, 0, 0) title.BackgroundTransparency = 1 title.Text = "ENGINE STATUS" title.TextColor3 = Color3.fromRGB(0, 255, 170) title.TextXAlignment = Enum.TextXAlignment.Left title.Font = Enum.Font.SourceSansBold title.TextSize = 14 title.ZIndex = 11 title.Parent = frame local statusText = Instance.new("TextLabel") statusText.Size = UDim2.new(1, -20, 0, 45) statusText.Position = UDim2.new(0, 10, 0, 25) statusText.BackgroundTransparency = 1 statusText.Text = "Status: Idle\nFPS: --\nEvents: 0 / 0" statusText.TextColor3 = Color3.fromRGB(220, 220, 220) statusText.TextXAlignment = Enum.TextXAlignment.Left statusText.TextYAlignment = Enum.TextYAlignment.Top statusText.Font = Enum.Font.Code statusText.TextSize = 11 statusText.ZIndex = 11 statusText.Parent = frame -- Single Row Key Counters Container counterContainerFrame = Instance.new("Frame") counterContainerFrame.Size = UDim2.new(1, -20, 0, 42) counterContainerFrame.Position = UDim2.new(0, 10, 0, 72) counterContainerFrame.BackgroundTransparency = 1 counterContainerFrame.ZIndex = 11 counterContainerFrame.Parent = frame local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(1, -20, 0, 28) toggleBtn.Position = UDim2.new(0, 10, 0, 122) toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 100) toggleBtn.BorderSizePixel = 0 toggleBtn.Font = Enum.Font.SourceSansBold toggleBtn.Text = "AUTOPLAY: ON [RCtrl]" toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) toggleBtn.TextSize = 12 toggleBtn.ZIndex = 11 toggleBtn.Parent = frame local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 5) btnCorner.Parent = toggleBtn local function updateToggleState() if autoPlayerEnabled then toggleBtn.Text = "AUTOPLAY: ON [RCtrl]" toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 100) else toggleBtn.Text = "AUTOPLAY: OFF [RCtrl]" toggleBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50) end end toggleBtn.MouseButton1Click:Connect(function() autoPlayerEnabled = not autoPlayerEnabled updateToggleState() end) UserInputService.InputBegan:Connect(function(input, gpe) if not gpe and input.KeyCode == TOGGLE_KEY then autoPlayerEnabled = not autoPlayerEnabled updateToggleState() end end) return statusText end local statusUI = createStatusGUI() local function setupKeyCounterUI(keyCount) if not counterContainerFrame then return end counterContainerFrame:ClearAllChildren() keyCounterLabels = {} keyHitCounts = {} keyFrames = {} local spacing = 3 local totalAvailableWidth = 220 local itemWidth = math.floor((totalAvailableWidth - ((keyCount - 1) * spacing)) / keyCount) local itemHeight = 40 for lane = 1, keyCount do keyHitCounts[lane] = 0 local keyFrame = Instance.new("Frame") keyFrame.Size = UDim2.new(0, itemWidth, 0, itemHeight) keyFrame.Position = UDim2.new(0, (lane - 1) * (itemWidth + spacing), 0, 0) keyFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35) keyFrame.BorderSizePixel = 0 keyFrame.ZIndex = 12 keyFrame.Parent = counterContainerFrame local keyCorner = Instance.new("UICorner") keyCorner.CornerRadius = UDim.new(0, 4) keyCorner.Parent = keyFrame local keyTitle = Instance.new("TextLabel") keyTitle.Size = UDim2.new(1, 0, 0, 12) keyTitle.Position = UDim2.new(0, 0, 0, 2) keyTitle.BackgroundTransparency = 1 keyTitle.Text = "K" .. lane keyTitle.TextColor3 = Color3.fromRGB(0, 255, 170) keyTitle.Font = Enum.Font.SourceSansBold keyTitle.TextSize = 10 keyTitle.ZIndex = 13 keyTitle.Parent = keyFrame local countLabel = Instance.new("TextLabel") countLabel.Size = UDim2.new(1, 0, 1, -14) countLabel.Position = UDim2.new(0, 0, 0, 12) countLabel.BackgroundTransparency = 1 countLabel.Text = "0" countLabel.TextColor3 = Color3.fromRGB(255, 255, 255) countLabel.Font = Enum.Font.Code countLabel.TextSize = 11 countLabel.ZIndex = 13 countLabel.Parent = keyFrame keyCounterLabels[lane] = countLabel keyFrames[lane] = keyFrame end end local function setUI(text) if statusUI then statusUI.Text = text end end local function isIgnoredType(noteType) if not noteType then return false end local numType = tonumber(noteType) return numType and numType >= 18 and numType <= 30 end local newgame, gamehandler for i, v in pairs(getgc(true)) do if type(v) == "table" and rawget(v, "Games") and rawget(v, "NewGame") then newgame = v.StartGame gamehandler = v break end end if not gamehandler then warn("[AutoPlayer] GameHandler not found in GC!") return end local function ongamestarted() setUI("Status: Syncing...\nFPS: Measuring\nEvents: Loading...") local gameid, game = next(gamehandler.Games) local timeout = 0 repeat task.wait(0.05) timeout = timeout + 0.05 until (gamehandler.Field and gamehandler.Field.Game and gamehandler.Field.Game.TimePosition) or timeout > 10 if not gamehandler.Field or not gamehandler.Field.Game then setUI("Status: Failed to Hook Game") return end local field = gamehandler.Field local side = field.Team local rate = field.Game.AdjustedPlayback or 1 local tapHoldSec = (TAP_HOLD_MS / 1000) / rate local noteConfigs = game.NoteConfigs and game.NoteConfigs.NoteData local maxDirection = 4 for _, v in pairs(game.Notes) do if v.Direction and tonumber(v.Direction) then if v.Direction > maxDirection then maxDirection = v.Direction end end end setupKeyCounterUI(maxDirection) local events = {} local eventCount = 0 for i, v in pairs(game.Notes) do if not isIgnoredType(v.Type) and (v.Field == side or v.Field == "All") then local isDeathNote = v.Type and noteConfigs and noteConfigs[tostring(v.Type)] and noteConfigs[tostring(v.Type)].Type == "Death" if not isDeathNote then local dir = v.Direction local pressTime = v.Time local holdDuration = (v.Length and v.Length > 0) and (v.Length / rate) or tapHoldSec local releaseTime = pressTime + holdDuration eventCount = eventCount + 1 events[eventCount] = { time = pressTime, dir = dir, state = true } eventCount = eventCount + 1 events[eventCount] = { time = releaseTime, dir = dir, state = false } end end end table.sort(events, function(a, b) return a.time < b.time end) local activeHolds = {} local eventIndex = 1 local lastTimePosition = field.Game.TimePosition local lastClock = os.clock() local lastFrameClock = os.clock() local lastGuiUpdate = 0 local connection connection = RunService.RenderStepped:Connect(function() if not gamehandler.Field or not field.Game then setUI("Status: Game Ended\nFPS: --\nEvents: Done") connection:Disconnect() return end local nowClock = os.clock() local frameDelta = nowClock - lastFrameClock lastFrameClock = nowClock local rawTime = field.Game.TimePosition or 0 if rawTime ~= lastTimePosition then lastTimePosition = rawTime lastClock = nowClock end local preciseTime = rawTime + ((nowClock - lastClock) * rate) local currentTick = tick() while eventIndex <= eventCount do local ev = events[eventIndex] if preciseTime < ev.time then break end local dir = ev.dir if autoPlayerEnabled then if ev.state then activeHolds[dir] = (activeHolds[dir] or 0) + 1 field:HitLane(dir, true, currentTick) -- INSTANT INCREMENT & COLOR FILL if keyHitCounts[dir] then keyHitCounts[dir] = keyHitCounts[dir] + 1 if keyCounterLabels[dir] then keyCounterLabels[dir].Text = tostring(keyHitCounts[dir]) end end if keyFrames[dir] then keyFrames[dir].BackgroundColor3 = Color3.fromRGB(0, 200, 120) end else local count = (activeHolds[dir] or 1) - 1 activeHolds[dir] = count if count <= 0 then activeHolds[dir] = 0 field:HitLane(dir, false, currentTick) -- INSTANT UNFILL ON RELEASE if keyFrames[dir] then keyFrames[dir].BackgroundColor3 = Color3.fromRGB(25, 25, 35) end end end end eventIndex = eventIndex + 1 end if nowClock - lastGuiUpdate >= GUI_UPDATE_RATE then lastGuiUpdate = nowClock local currentFPS = frameDelta > 0 and math.floor(1 / frameDelta) or 0 local statusState = autoPlayerEnabled and "Active (0ms)" or "PAUSED" if eventIndex > eventCount then setUI(string.format("Status: Complete\nFPS: %d\nEvents: %d / %d", currentFPS, eventCount, eventCount)) connection:Disconnect() else setUI(string.format("Status: %s\nFPS: %d\nEvents: %d / %d", statusState, currentFPS, eventIndex - 1, eventCount)) end end end) end if isfunctionhooked and isfunctionhooked(newgame) then restorefunction(newgame) end local old; old = hookfunction(newgame, newlclosure(function(...) local res = old(...) task.spawn(ongamestarted) return res end)) ]])