True power of  bot script
Key Required

True power of bot script

[LULLABY] Funky Fridaydalinswasdithxng27dalinswasdithxng27 908 views 7.6K executesUpdated Sep 15, 2026
Unrated
00
Lua Script•453 lines (17223 chars)
-- Made by 0_Void (Zero-Lag Engine + Funky Friday Deep-Scan Hazard Detection)
-- SUPPORT: NOTETYPE 0-17 + NIL/NORMAL NOTES + ADVANCED HAZARD/MINE FILTERING

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

    -- ==========================================
    -- ACCURACY-TUNED TIMING & DYNAMIC BUFFERS
    -- ==========================================
    local TAP_HOLD_MS         = 90     -- Shorter, crisp tap duration
    local BASE_DELAY_MS       = -9.5   -- Best Tuned Base Delay (-9.5ms Offset)
    local HARDWARE_BIAS_MS    = 0.0    -- Hardware Bias set to 0.0ms
    local BASE_RELEASE_PAD_MS = 10     -- Minimal tail pad for long notes
    local GUI_UPDATE_RATE     = 0.033  -- GUI update rate (~30 FPS)
    local TOGGLE_KEY          = Enum.KeyCode.RightControl
    -- ==========================================

    local autoPlayerEnabled = true
    local keyHitCounts = {} 
    local keyCounterLabels = {} 
    local keyFrames = {} 
    local counterContainerFrame = nil
    local renderConnection = nil
    local inputConnection = nil

    local COLOR_ACTIVE = Color3.fromRGB(0, 255, 150)
    local COLOR_INACTIVE = Color3.fromRGB(25, 25, 35)

    -- Comprehensive Hazard & Mine Keyword List for Funky Friday
    local HAZARD_KEYWORDS = {
        "hazard", "death", "danger", "mine", "hurt", 
        "warning", "poison", "bomb", "kill", "nightmare", 
        "run", "forced", "skin", "caution", "avoid", "trap"
    }

    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
        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 (DEEP-SCAN ACTIVE)"
        title.TextColor3 = Color3.fromRGB(0, 255, 170)
        title.TextXAlignment = Enum.TextXAlignment.Left
        title.Font = Enum.Font.SourceSansBold
        title.TextSize = 13
        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

        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)

        if inputConnection then inputConnection:Disconnect() end
        inputConnection = 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 = COLOR_INACTIVE
            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

    -- =======================================================
    -- DEEP-SCAN HAZARD FILTER FOR FUNKY FRIDAY
    -- =======================================================
    local function isSafeNote(noteObject, noteConfig)
        if not noteObject then return false end

        -- 1. Direct Flag Checks (ตรวจหา Property ที่ระบุว่าเป็นความเสียหายหรือระเบิดโดยตรง)
        if noteObject.IsMine or noteObject.IsHazard or noteObject.Damage or noteObject.Hurt or noteObject.Ignore then
            return false
        end

        -- 2. Note Type Range Validation (ถ้าเป็นตัวเลข ต้องไม่อยู่ในกลุ่มเกิน 17)
        local noteType = noteObject.Type
        if noteType ~= nil then
            local numType = tonumber(noteType)
            if numType and (numType < 0 or numType > 17) then
                return false
            end
        end

        -- 3. Deep String Property Scanning (สแกนหาคำต้องห้ามในทุก Field ของ Object โน้ต)
        for key, val in pairs(noteObject) do
            if type(val) == "string" then
                local valLower = val:lower()
                for i = 1, #HAZARD_KEYWORDS do
                    if valLower:find(HAZARD_KEYWORDS[i], 1, true) then
                        return false
                    end
                end
            end
        end

        -- 4. Funky Friday Config Table Deep Inspection
        if noteConfig and type(noteConfig) == "table" then
            if noteConfig.IsMine or noteConfig.IsHazard or noteConfig.Damage or noteConfig.Hurt then
                return false
            end

            for key, propVal in pairs(noteConfig) do
                if type(propVal) == "string" then
                    local valLower = propVal:lower()
                    for i = 1, #HAZARD_KEYWORDS do
                        if valLower:find(HAZARD_KEYWORDS[i], 1, true) then
                            return false
                        end
                    end
                elseif type(propVal) == "boolean" and propVal == true then
                    local keyLower = tostring(key):lower()
                    for i = 1, #HAZARD_KEYWORDS do
                        if keyLower:find(HAZARD_KEYWORDS[i], 1, true) then
                            return false
                        end
                    end
                end
            end
        end

        return true
    end

    local newgame, gamehandler
    for _, 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()
        if renderConnection then 
            renderConnection:Disconnect() 
            renderConnection = nil
        end

        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
        if rate <= 0 then rate = 1 end
        
        local offsetSec = (BASE_DELAY_MS + HARDWARE_BIAS_MS) / 1000
        local releasePadSec = (BASE_RELEASE_PAD_MS / rate) / 1000
        local tapHoldSec = (TAP_HOLD_MS / math.max(1, rate)) / 1000

        local noteConfigs = game.NoteConfigs and game.NoteConfigs.NoteData

        local maxDirection = 4
        for _, v in pairs(game.Notes) do
            if v.Direction then
                local dNum = tonumber(v.Direction)
                if dNum and dNum > maxDirection then
                    maxDirection = dNum
                end
            end
        end

        setupKeyCounterUI(maxDirection)

        local events = {}
        local eventCount = 0

        for _, v in pairs(game.Notes) do
            local noteConfig = noteConfigs and (noteConfigs[tostring(v.Type)] or noteConfigs[v.Type])
            
            -- Deep-Scan Validation Check
            if isSafeNote(v, noteConfig) and (v.Field == side or v.Field == "All") then
                local dir = v.Direction
                local pressTime = v.Time + offsetSec
                local holdDuration = (v.Length and v.Length > 0) and (v.Length + releasePadSec) 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

        table.sort(events, function(a, b)
            if math.abs(a.time - b.time) < 0.00001 then
                return not a.state and b.state
            end
            return a.time < b.time
        end)

        local activeHolds = {}
        local eventIndex = 1
        
        local lastTimePosition = field.Game.TimePosition or 0
        local lastClock = os.clock()
        local lastFrameClock = os.clock()
        local lastGuiUpdate = 0

        renderConnection = RunService.RenderStepped:Connect(function()
            if not gamehandler.Field or not field.Game then 
                setUI("Status: Game Ended\nFPS: --\nEvents: Done")
                if renderConnection then renderConnection:Disconnect() end
                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)

            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, nowClock)
                        
                        if keyHitCounts[dir] then
                            local newCount = keyHitCounts[dir] + 1
                            keyHitCounts[dir] = newCount
                            if keyCounterLabels[dir] then
                                keyCounterLabels[dir].Text = tostring(newCount)
                            end
                        end

                        if keyFrames[dir] then
                            keyFrames[dir].BackgroundColor3 = COLOR_ACTIVE
                        end
                    else
                        local count = (activeHolds[dir] or 1) - 1
                        activeHolds[dir] = count
                        if count <= 0 then
                            activeHolds[dir] = 0
                            field:HitLane(dir, false, nowClock)
                            
                            if keyFrames[dir] then
                                keyFrames[dir].BackgroundColor3 = COLOR_INACTIVE
                            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 string.format("Active (Rate %.2fx)", rate) or "PAUSED"

                if eventIndex > eventCount then
                    setUI(string.format("Status: Complete\nFPS: %d\nEvents: %d / %d", currentFPS, eventCount, eventCount))
                    if renderConnection then renderConnection:Disconnect() end
                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))
]])

Features & Information

Such Close to 0 ms = true Less lag = true Status = true Universal mechanics note or song mechanics= false Support some mechanics= true The best? =False if not support mostly note mechanics like null fire

Community Comments (0)

No comments yet for this script.

More Scripts for [LULLABY] Funky Friday