Auto Farm 7200 pops/h
Key Required

Auto Farm 7200 pops/h

[🤑EARN] Pop For FreeL0SRL0SR 1.9K views 20.3K executesUpdated Sep 5, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•1024 lines (32346 chars)
local function getExecutorName()
    local name = "unknown"
    pcall(function()
        if identifyexecutor then
            name = tostring(identifyexecutor())
        elseif getexecutorname then
            name = tostring(getexecutorname())
        end
    end)
    return name
end

local function fetch(url)
    local ok, body = pcall(function()
        return game:HttpGet(url)
    end)
    if ok and type(body) == "string" and #body > 0 then
        return body
    end

    local req = (syn and syn.request)
        or (http and http.request)
        or http_request
        or request

    if req then
        local ok2, res = pcall(req, { Url = url, Method = "GET" })
        if ok2 and type(res) == "table" then
            body = res.Body or res.body
            if type(body) == "string" and #body > 0 then
                return body
            end
        end
    end
    return nil
end

local EXEC = getExecutorName()
local IS_DELTA = string.find(string.lower(EXEC), "delta", 1, true) ~= nil

if IS_DELTA then
    -- ===================== DELTA ONLY =====================
    local src = fetch("https://pastebin.com/raw/CwxRJm9s")
    if not src then
        warn("[loader] delta fetch failed")
    else
        local fn, err = loadstring(src)
        if not fn then
            warn("[loader] loadstring failed: ", err)
        else
            local ok, runErr = pcall(fn)
            if not ok then
                warn("[loader] runtime error: ", runErr)
            end
        end
    end
else
    -- ===================== NON-DELTA ONLY =====================
    local Players = game:GetService("Players")
    local UserInputService = game:GetService("UserInputService")
    local TweenService = game:GetService("TweenService")
    local VirtualInputManager = game:GetService("VirtualInputManager")
    local player = Players.LocalPlayer

    local CAPTCHA_PATHS = {
        { "Players", "LocalPlayer", "PlayerScripts", "ImageCaptchaClient" },
        { "StarterPlayer", "StarterPlayerScripts", "ImageCaptchaClient" },
        { "ReplicatedStorage", "ImageCaptchaRemotes" },
        { "CorePackages", "Workspace", "Packages", "_Index", "AuthCommon", "AuthCommon", "Utils", "GetCaptchaDataJson" },
        { "CorePackages", "Workspace", "Packages", "_Workspace", "GenericChallenges", "GenericChallenges", "Types", "CaptchaActionType" },
    }

    local function resolvePath(path)
        local ok, node = pcall(game.GetService, game, path[1])
        if not ok or not node then return nil end

        for i = 2, #path do
            local seg = path[i]
            local nextNode = nil

            local okIdx, res = pcall(function() return node[seg] end)
            if okIdx and typeof(res) == "Instance" then
                nextNode = res
            else
                local okFind, found = pcall(node.FindFirstChild, node, seg)
                if okFind then nextNode = found end
            end

            if not nextNode then return nil end
            node = nextNode
        end

        return node
    end

    for _, path in ipairs(CAPTCHA_PATHS) do
        local inst = resolvePath(path)
        if inst then
            pcall(function()
                if inst:IsA("BaseScript") then
                    inst.Disabled = true
                end
            end)
            pcall(function()
                inst:Destroy()
            end)
            pcall(function()
                if inst.Parent then
                    inst.Parent = nil
                end
            end)
        end
    end

    local running = false
    local glassRunning = false

    local sp5 = workspace:WaitForChild("SP5")
    local m5  = workspace:WaitForChild("M5")
    local sp4 = workspace:WaitForChild("SP4")
    local m4  = workspace:WaitForChild("M4")

    local longNear  = Vector3.new(123.245, 1.767, -2168.231)
    local longFinal = Vector3.new(123, 1.767, -2185)

    local expertNear  = Vector3.new(169.847, 9.066, 406.401)
    local expertFinal = Vector3.new(169.847, 9.066, 410.743)

    local teleportBackPosition = Vector3.new(111.426445, 3.08507466, -27.5621033)

    local COOLDOWN = 2.6

    local SPECIAL_READY_TEXT = "Cooldown - 30:00"
    local SPECIAL_STEP_WAIT = 1.2
    local SPECIAL_TWEEN_TIME = 0.5
    local SPECIAL_PORTAL_TIMEOUT = 20
    local SPECIAL_LEVEL_RETRIES = 3
    local SPECIAL_POST_CLEAR_WAIT = 0.8
    local SPEEDRUN_FOLDER_NAME = "LocalSpeedrun_10468409402"

    local SPECIAL_NEAR = {
        [1]  = Vector3.new(-448.992, 8143.671, 148.113),
        [2]  = Vector3.new(-482.006, 7980.944,  99.267),
        [3]  = Vector3.new(-268.096, 8023.735, 129.359),
        [4]  = Vector3.new(-559.159, 7946.341, -32.635),
        [5]  = Vector3.new(-511.265, 7957.707, -69.979),
        [6]  = Vector3.new(-370.253, 8007.919, 129.163),
        [7]  = Vector3.new(-359.910, 8006.653, 129.371),
        [8]  = Vector3.new(-359.882, 8017.465, 129.044),
        [9]  = Vector3.new(-359.413, 8027.473, 129.161),
        [10] = Vector3.new(-452.861, 8113.436, -62.913),
    }

    local GLASS_DEFAULT_DELAY = 0.25
    local GLASS_FINAL_WAIT = 1
    local GLASS_FINAL_PART_NAME = "425d9aba-1a85-4ca6-a18a-1dd9f1236e93"

    local WASD = {
        Enum.KeyCode.W,
        Enum.KeyCode.A,
        Enum.KeyCode.S,
        Enum.KeyCode.D,
    }
    local heldKey = nil
    local statusLabel = nil
    local glassBtn = nil
    local glassDelayBox = nil

    local function setStatus(text)
        if statusLabel then
            statusLabel.Text = text
        end
    end

    local function releaseHeldKey()
        if heldKey then
            pcall(function()
                VirtualInputManager:SendKeyEvent(false, heldKey, false, game)
            end)
            heldKey = nil
        end
    end

    local function tapRandomWASD()
        releaseHeldKey()
        local key = WASD[math.random(1, #WASD)]
        heldKey = key
        pcall(function()
            VirtualInputManager:SendKeyEvent(true, key, false, game)
        end)
        task.wait(Random.new():NextNumber(0.08, 0.18))
        releaseHeldKey()
    end

    local function getRoot()
        local character = player.Character
        return character and character:FindFirstChild("HumanoidRootPart")
    end

    local function resetCharacterState()
        local character = player.Character
        if not character then return end

        for _, inst in ipairs(character:GetDescendants()) do
            if inst:IsA("BasePart") then
                inst.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
                inst.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
            end
        end

        local root = character:FindFirstChild("HumanoidRootPart")
        if root then
            root.Anchored = false
        end

        local hum = character:FindFirstChildOfClass("Humanoid")
        if hum then
            pcall(function()
                hum:ChangeState(Enum.HumanoidStateType.Running)
            end)
        end
    end

    local function cooldownWait(label)
        local t0 = os.clock()
        local duration = COOLDOWN

        while running do
            local elapsed = os.clock() - t0
            local remaining = duration - elapsed
            if remaining <= 0 then
                break
            end
            setStatus(string.format("%s (%.1fs)", label, remaining))
            task.wait(0.05)
        end

        if running then
            setStatus(string.format("%s (0.0s)", label))
        end
    end

    local function farmOnce(touchA, touchB, nearPos, finalPos)
        local rootPart = getRoot()
        if not (rootPart and touchA and touchB) then
            return false
        end

        firetouchinterest(rootPart, touchA, 0)
        firetouchinterest(rootPart, touchA, 1)

        task.wait(0.5)
        if not running then return false end

        rootPart = getRoot()
        if not rootPart then return false end

        firetouchinterest(rootPart, touchB, 0)
        firetouchinterest(rootPart, touchB, 1)

        task.wait(0.5)
        if not running then return false end

        rootPart = getRoot()
        if not rootPart then return false end

        rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        rootPart.CFrame = CFrame.new(nearPos)

        task.wait(0.3)
        if not running then return false end

        rootPart = getRoot()
        if not rootPart then return false end

        local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
        local tween = TweenService:Create(rootPart, tweenInfo, {CFrame = CFrame.new(finalPos)})
        tween:Play()
        tween.Completed:Wait()

        if not running then return false end

        task.wait(0.3)
        if not running then return false end

        rootPart = getRoot()
        if not rootPart then return false end

        rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        rootPart.CFrame = CFrame.new(teleportBackPosition)

        task.wait(0.2)
        return true
    end

    local function runLongObby()
        setStatus("long obby")
        return farmOnce(sp5, m5, longNear, longFinal)
    end

    local function runExpertObby()
        setStatus("expert obby")
        return farmOnce(sp4, m4, expertNear, expertFinal)
    end

    local function getSpecialCooldownLabel()
        local startPart = workspace:FindFirstChild("StartPart8")
        if not startPart then return nil end
        local cooldown = startPart:FindFirstChild("Cooldown")
        if not cooldown then return nil end
        return cooldown:FindFirstChild("TextLabel")
    end

    local function isSpecialAvailable()
        local label = getSpecialCooldownLabel()
        if not label then return false end
        return label.Text == SPECIAL_READY_TEXT
    end

    local function findSpeedrunFolder()
        local exact = workspace:FindFirstChild(SPEEDRUN_FOLDER_NAME)
        if exact then return exact end
        for _, child in ipairs(workspace:GetChildren()) do
            if string.match(child.Name, "^LocalSpeedrun_") then
                return child
            end
        end
        return nil
    end

    local function waitFor(predictor, timeout, statusText)
        local t0 = os.clock()
        while running and (os.clock() - t0) < timeout do
            local result = predictor()
            if result then
                return result
            end
            local left = timeout - (os.clock() - t0)
            if statusText then
                setStatus(string.format("%s (%.1fs)", statusText, left))
            end
            task.wait(0.1)
        end
        return predictor()
    end

    local function stepGap(i, total)
        local t0 = os.clock()
        while running and (os.clock() - t0) < SPECIAL_STEP_WAIT do
            local left = SPECIAL_STEP_WAIT - (os.clock() - t0)
            setStatus(string.format("speedrun (%d/%d) %.2fs", i, total, left))
            task.wait(0.05)
        end
    end

    local function doStartZone()
        setStatus("speedrun (1/11 start)")

        local startPortal = workspace:FindFirstChild("StartPortal")
        local startZone = startPortal and startPortal:FindFirstChild("StartZone")
        if not startZone then
            setStatus("speedrun (no startzone)")
            return false
        end

        local rootPart = getRoot()
        if not rootPart then return false end

        pcall(function()
            firetouchinterest(rootPart, startZone, 0)
            firetouchinterest(rootPart, startZone, 1)
        end)

        task.wait(0.3)

        rootPart = getRoot()
        if rootPart then
            pcall(function()
                firetouchinterest(rootPart, startZone, 0)
                firetouchinterest(rootPart, startZone, 1)
            end)
        end

        task.wait(0.2)
        return true
    end

    local function getEndPortalPart(endPortal)
        if not endPortal then return nil end

        local children = endPortal:GetChildren()
        local preferred = children[12]
        if preferred and preferred:IsA("BasePart") then
            return preferred
        end

        for _, child in ipairs(children) do
            if child:IsA("BasePart") then
                return child
            end
        end

        if endPortal:IsA("BasePart") then
            return endPortal
        end

        return endPortal:FindFirstChildWhichIsA("BasePart", true)
    end

    local function waitForLevelClear(levelIndex, timeout)
        local levelName = "CurrentLevel" .. levelIndex
        local t0 = os.clock()

        while running and (os.clock() - t0) < timeout do
            local folder = findSpeedrunFolder()
            if not folder then
                return true
            end

            local level = folder:FindFirstChild(levelName)
            if not level then
                return true
            end

            local ep = level:FindFirstChild("End Portal")
            if not ep then
                return true
            end

            local nextLevel = folder:FindFirstChild("CurrentLevel" .. (levelIndex + 1))
            if nextLevel then
                return true
            end

            local left = timeout - (os.clock() - t0)
            setStatus(string.format("speedrun confirm L%d (%.1fs)", levelIndex, left))
            task.wait(0.1)
        end

        return false
    end

    local function doLevelPortalOnce(levelIndex, endPortal)
        local rootPart = getRoot()
        if not rootPart then return false end

        local part = getEndPortalPart(endPortal)
        if not part then return false end

        local nearPos = SPECIAL_NEAR[levelIndex]
        if not nearPos then return false end

        resetCharacterState()
        task.wait(0.05)

        rootPart = getRoot()
        if not rootPart then return false end

        rootPart.Anchored = true
        rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)

        rootPart.CFrame = CFrame.new(nearPos)

        task.wait(0.12)
        if not running then
            rootPart.Anchored = false
            return false
        end

        rootPart = getRoot()
        if not rootPart then return false end

        local folder = findSpeedrunFolder()
        local level = folder and folder:FindFirstChild("CurrentLevel" .. levelIndex)
        local livePortal = level and level:FindFirstChild("End Portal") or endPortal
        local livePart = getEndPortalPart(livePortal) or part
        local targetPos = livePart.Position

        local tweenInfo = TweenInfo.new(SPECIAL_TWEEN_TIME, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
        local tween = TweenService:Create(rootPart, tweenInfo, {CFrame = CFrame.new(targetPos)})
        tween:Play()
        tween.Completed:Wait()

        if not running then
            if rootPart then rootPart.Anchored = false end
            return false
        end

        task.wait(0.08)

        rootPart = getRoot()
        if rootPart then
            rootPart.Anchored = false
            rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
            rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        end

        task.wait(0.35)

        rootPart = getRoot()
        if rootPart then
            rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
            rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        end

        return true
    end

    local function doLevelPortal(levelIndex, endPortal, label)
        for attempt = 1, SPECIAL_LEVEL_RETRIES do
            if not running then return false end

            setStatus(string.format("%s try %d", label, attempt))

            local folder = findSpeedrunFolder()
            local level = folder and folder:FindFirstChild("CurrentLevel" .. levelIndex)
            local portal = level and level:FindFirstChild("End Portal") or endPortal

            doLevelPortalOnce(levelIndex, portal)

            local cleared = waitForLevelClear(levelIndex, 3.0)
            if cleared then
                resetCharacterState()
                return true
            end

            setStatus(string.format("speedrun L%d retry", levelIndex))
            resetCharacterState()
            task.wait(0.4)
        end

        return false
    end

    local function runSpecialObby()
        setStatus("speedrun obby")
        local total = 11

        resetCharacterState()

        if not doStartZone() then
            resetCharacterState()
            return false
        end
        stepGap(1, total)

        local speedrun = waitFor(findSpeedrunFolder, SPECIAL_PORTAL_TIMEOUT, "special wait folder")
        if not speedrun then
            setStatus("special (no speedrun)")
            resetCharacterState()
            task.wait(0.5)
            return false
        end

        for i = 1, 10 do
            if not running then
                resetCharacterState()
                return false
            end

            local endPortal = waitFor(function()
                local folder = findSpeedrunFolder()
                if not folder then return nil end
                local level = folder:FindFirstChild("CurrentLevel" .. i)
                if not level then return nil end
                local ep = level:FindFirstChild("End Portal")
                if not ep then return nil end
                if getEndPortalPart(ep) then
                    return ep
                end
                return nil
            end, SPECIAL_PORTAL_TIMEOUT, string.format("speedrun wait L%d", i))

            if not endPortal then
                setStatus(string.format("speedrun (miss L%d)", i))
                resetCharacterState()
                task.wait(0.5)
                return false
            end

            task.wait(0.25)

            local ok = doLevelPortal(i, endPortal, string.format("speedrun (%d/11 L%d)", i + 1, i))
            if not ok then
                setStatus(string.format("speedrun (fail L%d)", i))
                resetCharacterState()
                task.wait(0.5)
                return false
            end

            if i < 10 then
                task.wait(SPECIAL_POST_CLEAR_WAIT)
                stepGap(i + 1, total)
            end
        end

        local rootPart = getRoot()
        if rootPart then
            rootPart.Anchored = false
            rootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
            rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
            rootPart.CFrame = CFrame.new(teleportBackPosition)
        end
        resetCharacterState()
        task.wait(0.2)
        setStatus("speedrun done")
        return true
    end

    local function getGlassDelay()
        local n = tonumber(glassDelayBox and glassDelayBox.Text)
        if not n or n < 0 then
            return GLASS_DEFAULT_DELAY
        end
        return n
    end

    local function getGlassTouchPart(panel)
        if not panel then return nil end

        local children = panel:GetChildren()
        local c2 = children[2]
        if c2 and c2:IsA("BasePart") then
            if c2:FindFirstChildOfClass("TouchTransmitter") or c2:FindFirstChild("TouchInterest") then
                return c2
            end
            return c2
        end

        for _, child in ipairs(children) do
            if child:IsA("BasePart") then
                if child:FindFirstChildOfClass("TouchTransmitter") or child:FindFirstChild("TouchInterest") then
                    return child
                end
            end
        end

        for _, d in ipairs(panel:GetDescendants()) do
            if d:IsA("TouchTransmitter") or d.Name == "TouchInterest" then
                local parent = d.Parent
                if parent and parent:IsA("BasePart") then
                    return parent
                end
            end
        end

        if panel:IsA("BasePart") then
            return panel
        end
        return panel:FindFirstChildWhichIsA("BasePart", true)
    end

    local function fireGlassPart(root, part)
        if not (root and part and part:IsA("BasePart")) then
            return
        end
        pcall(function()
            firetouchinterest(root, part, 0)
            firetouchinterest(root, part, 1)
        end)
    end

    local function fireGlassFinal(root)
        local part = workspace:FindFirstChild(GLASS_FINAL_PART_NAME)
        if not part then
            part = workspace:FindFirstChild(GLASS_FINAL_PART_NAME, true)
        end
        if not part then
            return false, "glass final missing"
        end

        if part:IsA("TouchTransmitter") or part.Name == "TouchInterest" then
            part = part.Parent
        end
        if not (part and part:IsA("BasePart")) then
            local ti = part:FindFirstChildOfClass("TouchTransmitter") or part:FindFirstChild("TouchInterest")
            if ti and ti.Parent and ti.Parent:IsA("BasePart") then
                part = ti.Parent
            elseif not part:IsA("BasePart") then
                return false, "glass final not part"
            end
        end

        setStatus("glass final...")
        fireGlassPart(root, part)
        return true, nil
    end

    local function runGlassBridge(delay)
        local root = getRoot()
        if not root then
            return "no root"
        end

        local folder = workspace:FindFirstChild("GlassBridgeParts")
        if not folder then
            return "no glass folder"
        end

        local total = 40
        local n = 0

        for i = 1, 20 do
            for _, side in ipairs({ "A", "B" }) do
                if not glassRunning then
                    return nil
                end

                n += 1
                local name = tostring(i) .. side
                local panel = folder:FindFirstChild(name)
                local part = getGlassTouchPart(panel)

                fireGlassPart(root, part)
                setStatus(string.format("glass %s  %d/%d", name, n, total))
                task.wait(delay)
            end
        end

        if glassRunning then
            local t0 = os.clock()
            while glassRunning and (os.clock() - t0) < GLASS_FINAL_WAIT do
                local left = GLASS_FINAL_WAIT - (os.clock() - t0)
                setStatus(string.format("glass wait final (%.1fs)", left))
                task.wait(0.05)
            end

            if not glassRunning then
                return nil
            end

            root = getRoot() or root
            local ok, err = fireGlassFinal(root)
            if not ok then
                return err
            end
        end

        return nil
    end

    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "gui"
    screenGui.ResetOnSpawn = false
    screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    screenGui.Parent = player:WaitForChild("PlayerGui")

    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(0, 200, 0, 210)
    frame.Position = UDim2.new(0.05, 0, 0.05, 0)
    frame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
    frame.BackgroundTransparency = 0.3
    frame.BorderSizePixel = 0
    frame.Active = true
    frame.Parent = screenGui

    local uiCorner = Instance.new("UICorner")
    uiCorner.CornerRadius = UDim.new(0, 8)
    uiCorner.Parent = frame

    local uiStroke = Instance.new("UIStroke")
    uiStroke.Thickness = 2
    uiStroke.Parent = frame

    task.spawn(function()
        while uiStroke.Parent do
            local hue = (tick() % 5) / 5
            uiStroke.Color = Color3.fromHSV(hue, 1, 1)
            task.wait(0.05)
        end
    end)

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(0, 140, 0, 25)
    titleLabel.Position = UDim2.new(0, 10, 0, 6)
    titleLabel.BackgroundTransparency = 1
    titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    titleLabel.Text = "Auto Farm"
    titleLabel.Font = Enum.Font.GothamBold
    titleLabel.TextSize = 14
    titleLabel.TextXAlignment = Enum.TextXAlignment.Left
    titleLabel.Parent = frame

    statusLabel = Instance.new("TextLabel")
    statusLabel.Size = UDim2.new(0, 180, 0, 18)
    statusLabel.Position = UDim2.new(0, 10, 0, 28)
    statusLabel.BackgroundTransparency = 1
    statusLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
    statusLabel.Text = "Idle"
    statusLabel.Font = Enum.Font.Gotham
    statusLabel.TextSize = 12
    statusLabel.TextXAlignment = Enum.TextXAlignment.Left
    statusLabel.Parent = frame

    local closeBtn = Instance.new("TextButton")
    closeBtn.Size = UDim2.new(0, 22, 0, 22)
    closeBtn.Position = UDim2.new(1, -28, 0, 8)
    closeBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
    closeBtn.BackgroundTransparency = 0.2
    closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    closeBtn.Text = "X"
    closeBtn.Font = Enum.Font.GothamBold
    closeBtn.TextSize = 12
    closeBtn.Parent = frame

    local closeCorner = Instance.new("UICorner")
    closeCorner.CornerRadius = UDim.new(0, 4)
    closeCorner.Parent = closeBtn

    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 180, 0, 34)
    toggleBtn.Position = UDim2.new(0, 10, 0, 52)
    toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    toggleBtn.BackgroundTransparency = 0.2
    toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    toggleBtn.Text = "Farm: OFF"
    toggleBtn.Font = Enum.Font.GothamBold
    toggleBtn.TextSize = 14
    toggleBtn.Parent = frame

    local toggleCorner = Instance.new("UICorner")
    toggleCorner.CornerRadius = UDim.new(0, 6)
    toggleCorner.Parent = toggleBtn

    local glassDelayLabel = Instance.new("TextLabel")
    glassDelayLabel.Size = UDim2.new(0, 70, 0, 26)
    glassDelayLabel.Position = UDim2.new(0, 10, 0, 96)
    glassDelayLabel.BackgroundTransparency = 1
    glassDelayLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
    glassDelayLabel.Text = "glass delay"
    glassDelayLabel.Font = Enum.Font.Gotham
    glassDelayLabel.TextSize = 11
    glassDelayLabel.TextXAlignment = Enum.TextXAlignment.Left
    glassDelayLabel.Parent = frame

    glassDelayBox = Instance.new("TextBox")
    glassDelayBox.Size = UDim2.new(0, 100, 0, 26)
    glassDelayBox.Position = UDim2.new(0, 90, 0, 96)
    glassDelayBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    glassDelayBox.BackgroundTransparency = 0.2
    glassDelayBox.TextColor3 = Color3.fromRGB(255, 255, 255)
    glassDelayBox.PlaceholderText = "0.45"
    glassDelayBox.Text = tostring(GLASS_DEFAULT_DELAY)
    glassDelayBox.Font = Enum.Font.Gotham
    glassDelayBox.TextSize = 13
    glassDelayBox.ClearTextOnFocus = false
    glassDelayBox.Parent = frame

    local glassDelayCorner = Instance.new("UICorner")
    glassDelayCorner.CornerRadius = UDim.new(0, 6)
    glassDelayCorner.Parent = glassDelayBox

    glassBtn = Instance.new("TextButton")
    glassBtn.Size = UDim2.new(0, 180, 0, 34)
    glassBtn.Position = UDim2.new(0, 10, 0, 132)
    glassBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    glassBtn.BackgroundTransparency = 0.2
    glassBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    glassBtn.Text = "Glass Bridge"
    glassBtn.Font = Enum.Font.GothamBold
    glassBtn.TextSize = 14
    glassBtn.Parent = frame

    local glassCorner = Instance.new("UICorner")
    glassCorner.CornerRadius = UDim.new(0, 6)
    glassCorner.Parent = glassBtn

    local hintLabel = Instance.new("TextLabel")
    hintLabel.Size = UDim2.new(0, 180, 0, 16)
    hintLabel.Position = UDim2.new(0, 10, 0, 172)
    hintLabel.BackgroundTransparency = 1
    hintLabel.TextColor3 = Color3.fromRGB(120, 120, 120)
    hintLabel.Text = "By loser"
    hintLabel.Font = Enum.Font.Gotham
    hintLabel.TextSize = 10
    hintLabel.TextXAlignment = Enum.TextXAlignment.Left
    hintLabel.Parent = frame

    local dragging, dragInput, dragStart, startPos

    frame.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            dragStart = input.Position
            startPos = frame.Position

            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)

    frame.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
            dragInput = input
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if input == dragInput and dragging then
            local delta = input.Position - dragStart
            frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)

    glassDelayBox:GetPropertyChangedSignal("Text"):Connect(function()
        local text = glassDelayBox.Text
        if text ~= "" and not string.match(text, "^%d*%.?%d*$") then
            glassDelayBox.Text = string.match(text, "^%d*%.?%d*") or ""
        end
    end)

    toggleBtn.MouseButton1Click:Connect(function()
        running = not running
        if running then
            toggleBtn.Text = "Farm: ON"
            toggleBtn.BackgroundColor3 = Color3.fromRGB(20, 70, 20)
        else
            toggleBtn.Text = "Farm: OFF"
            toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
            if not glassRunning then
                setStatus("Idle")
            end
            resetCharacterState()
            releaseHeldKey()
        end
    end)

    glassBtn.MouseButton1Click:Connect(function()
        if glassRunning then return end

        local delay = getGlassDelay()
        glassRunning = true
        glassBtn.Text = "glass: wait..."
        glassBtn.BackgroundColor3 = Color3.fromRGB(20, 70, 20)
        setStatus(string.format("glass delay %.2fs", delay))

        task.spawn(function()
            local err = runGlassBridge(delay)

            if err then
                setStatus(err)
            else
                setStatus("glass done")
            end

            glassRunning = false
            glassBtn.Text = "Glass Bridge"
            glassBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
        end)
    end)

    closeBtn.MouseButton1Click:Connect(function()
        running = false
        glassRunning = false
        resetCharacterState()
        setStatus("Idle")
        releaseHeldKey()
        screenGui:Destroy()
    end)

    task.spawn(function()
        while screenGui.Parent do
            if running then
                pcall(tapRandomWASD)
                task.wait(Random.new():NextNumber(0.45, 0.55))
            else
                releaseHeldKey()
                task.wait(0.1)
            end
        end
    end)

    task.spawn(function()
        while screenGui.Parent do
            if running then
                local specialReady = false
                pcall(function()
                    specialReady = isSpecialAvailable()
                end)

                if specialReady and running then
                    pcall(function()
                        runSpecialObby()
                    end)
                end

                if running then
                    pcall(function()
                        runLongObby()
                    end)
                end

                if running then
                    cooldownWait("cooldown")
                elseif not glassRunning then
                    setStatus("Idle")
                end

                if running then
                    pcall(function()
                        runExpertObby()
                    end)
                end

                if running then
                    cooldownWait("cooldown")
                elseif not glassRunning then
                    setStatus("Idle")
                end
            else
                if not glassRunning then
                    setStatus("Idle")
                end
                task.wait(0.1)
            end
        end
    end)
end

Features & Information

auto farm, it does the long obby, expert and speedrun when available (this last one being a little bit buggy) also has a button to complete the glass bridge (might not work sometimes or you may click it more times) 120 pops / spins per minute 7200 per hour 172800 per day (without counting the +100 of the speedrun) !! DO NOT MERGE AUTO FARM AND GLASS BRIDGE !!
#auto farm#auto#farm#pop for free

Community Comments (3)

L0SRL0SRSep 5, 2026(edited)

DELTA ISSUE SOLVED GO AND TRY IT NOW

Replying to @L0SR
quackers129quackers129Sep 30, 2026

@L0SR kicks me out for being afk

Replying to @quackers129
L0SRL0SROct 2, 2026

@quackers129 hmm okay I will add anti-afk, but what executor you use so I can know, because if I dont remember wrong I could use it on delta and it didnt kicked me

More Scripts for [🤑EARN] Pop For Free