ALL IN ONE
Key Required

ALL IN ONE

Lift a Cubezeanmrcastzeanmrcast 6.4K views 32.5K executesUpdated Sep 13, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•960 lines (37139 chars)
if _G.LiftACubeCleanup then
    pcall(_G.LiftACubeCleanup)
end

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local VirtualUser = game:GetService("VirtualUser")
local Workspace = game:GetService("Workspace")

local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui", 10)

-- BridgeNet2 Setup
local bridgenet2 = require(ReplicatedStorage.Packages.bridgenet2)
local GlobalReplicator = require(ReplicatedStorage.Modules.GlobalReplicator)
local LiftingModule = require(ReplicatedStorage.Modules.Lifting)
local CubeRollModule = require(ReplicatedStorage.Modules.CubeRoll)
local Schematics = {
    Cubes = require(ReplicatedStorage.Schematics.Cubes),
    Arms = require(ReplicatedStorage.Schematics.Arms),
    SpeedUpgrades = require(ReplicatedStorage.Schematics.SpeedUpgrades),
    Materials = require(ReplicatedStorage.Schematics.Materials)
}

local cleanUserId = tostring(LocalPlayer.UserId):gsub("-", "")

local Bridges = {
    Training = bridgenet2.ReferenceBridge(cleanUserId .. "_Training"),
    Cubes = bridgenet2.ReferenceBridge(cleanUserId .. "_Cubes"),
    Pops = bridgenet2.ReferenceBridge(cleanUserId .. "_Pops"),
    GroupReward = bridgenet2.ReferenceBridge(cleanUserId .. "_GroupReward"),
    AFK = bridgenet2.ReferenceBridge(cleanUserId .. "_AFK")
}

-- Locate Master Client Controllers via Garbage Collector
local Controllers = nil
local function getControllers()
    if Controllers then return Controllers end
    if getgc then
        for _, obj in ipairs(getgc(true)) do
            if type(obj) == "table" and rawget(obj, "name") == "Cubes" and rawget(obj, "controllers") then
                Controllers = obj.controllers
                return Controllers
            end
        end
    end
    return nil
end
getControllers()

-- Configuration: ALL OFF BY DEFAULT
local Config = {
    AutoTrain = false,
    AutoCubes = false,
    AutoArms = false,
    AutoSpeed = false,
    AutoPops = false,
    AutoRoll = false,
    AutoGroupReward = false,
    Noclip = false,
    AntiAFK = false,
    
    SelectedCube = 0, -- 0 = Auto Highest, 1-15 = Specific Cube
    SpeedMode = "HYPER", -- "NORMAL", "FAST", "TURBO", "HYPER"
    TrainDelay = 0.105,  -- 10 pushups/sec (maximum 100% accepted server rate)
    CubeDelay = 0.05     -- 20 lifts per second!
}

local Runtime = {
    Running = true,
    IsLifting = false,
    TotalPushups = 0,
    TotalCubesLifted = 0,
    TotalPopsClaimed = 0,
    Logs = {}
}

local function addLog(msg)
    table.insert(Runtime.Logs, 1, string.format("[%s] %s", os.date("%X"), msg))
    if #Runtime.Logs > 20 then
        table.remove(Runtime.Logs)
    end
end

-- Number Formatting
local Suffixes = {
    {1e+60, "Nod"}, {1e+57, "Ocd"}, {1e+54, "Spd"}, {1e+51, "Sxd"},
    {1e+48, "Qid"}, {1e+45, "Qad"}, {1e+42, "Td"},  {1e+39, "Dd"},
    {1e+36, "Ud"},  {1e+33, "Dc"},  {1e+30, "No"},  {1e+27, "Oc"},
    {1e+24, "Sp"},  {1e+21, "Sx"},  {1e+18, "Qi"},  {1e+15, "Qa"},
    {1e+12, "T"},   {1e+9, "B"},    {1e+6, "M"},    {1e+3, "K"}
}

local function formatNumber(n)
    local num = tonumber(n)
    if not num then return tostring(n or "0") end
    for _, item in ipairs(Suffixes) do
        if num >= item[1] then
            return string.format("%.2f%s", num / item[1], item[2])
        end
    end
    return tostring(math.floor(num))
end

local function getStrength()
    return LocalPlayer:GetAttribute("Strength") or 0
end

local function getCash()
    return LocalPlayer:GetAttribute("Cash") or 0
end

local function getEquippedArms()
    return LocalPlayer:GetAttribute("EquippedArms") or 0
end

local function getEquippedMaterial()
    local ctrl = getControllers()
    if ctrl and ctrl.Roll and ctrl.Roll.equipped then
        return tostring(ctrl.Roll.equipped)
    end
    return "None"
end

local function getBestLiftableCube()
    local str = getStrength()
    local cubesFolder = Workspace:FindFirstChild("World")
    cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Shared")
    cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Cubes")
    if not cubesFolder then return 1 end
    
    local best = 1
    for i = 1, #Schematics.Cubes do
        local scale = CubeRollModule.Scale(cubesFolder, i)
        local mass = CubeRollModule.Mass(i, scale)
        if LiftingModule.Possible(str, mass) then
            local minTime = LiftingModule.MinimumTime(str, mass)
            if minTime <= 1.5 then
                best = i
            end
        end
    end
    return best
end

local function getTargetCubeIndex()
    if Config.SelectedCube and Config.SelectedCube > 0 then
        return math.clamp(Config.SelectedCube, 1, 15)
    end
    return getBestLiftableCube()
end

local function ensureTrainToolEquipped()
    local char = LocalPlayer.Character
    if not char then return false end
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid or humanoid.Health <= 0 then return false end
    
    local toolInChar = char:FindFirstChild("Train")
    if toolInChar then
        local ctrl = getControllers()
        if ctrl and ctrl.Training and not ctrl.Training.locked then
            ctrl.Training:SetLocked(true)
        end
        return true
    end
    
    local backpack = LocalPlayer:FindFirstChildOfClass("Backpack")
    local toolInBp = backpack and backpack:FindFirstChild("Train")
    if toolInBp then
        toolInBp.Parent = char
        local ctrl = getControllers()
        if ctrl and ctrl.Training then
            ctrl.Training:SetLocked(true)
        end
        return true
    end
    return false
end

-- ====================================================================
-- MODULE 1: AUTO STRENGTH TRAINING (CLEAN INDEPENDENT LOOP)
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoTrain and not Runtime.IsLifting then
            pcall(function()
                local equipped = ensureTrainToolEquipped()
                if equipped and not Runtime.IsLifting then
                    Bridges.Training:Fire({
                        Function = "CompletePushup",
                        Args = { 1 }
                    })
                    Runtime.TotalPushups = Runtime.TotalPushups + 1
                end
            end)
        end
        task.wait(Config.TrainDelay)
    end
end)

-- ====================================================================
-- MODULE 2: AUTO CUBE DEMOLITION (FARM TARGET CUBE WITH REAL REWARD)
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoCubes then
            pcall(function()
                local ctrl = getControllers()
                if not ctrl or not ctrl.Cubes then return end
                
                local cubesFolder = Workspace:FindFirstChild("World")
                cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Shared")
                cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Cubes")
                if not cubesFolder then return end
                
                local char = LocalPlayer.Character
                local hrp = char and char:FindFirstChild("HumanoidRootPart")
                local humanoid = char and char:FindFirstChildOfClass("Humanoid")
                if not hrp or not humanoid or humanoid.Health <= 0 then return end
                
                local targetIndex = getTargetCubeIndex()
                local cubePart = cubesFolder:FindFirstChild(tostring(targetIndex))
                if cubePart then
                    local currentStr = getStrength()
                    local scale = CubeRollModule.Scale(cubesFolder, targetIndex)
                    local mass = CubeRollModule.Mass(targetIndex, scale)
                    local minTime = LiftingModule.MinimumTime(currentStr, mass)
                    
                    if not LiftingModule.Possible(currentStr, mass) then
                        addLog(string.format("Cube #%d too heavy! Need more Strength.", targetIndex))
                        task.wait(1.5)
                        return
                    end
                    
                    Runtime.IsLifting = true
                    local cashBefore = getCash()
                    
                    -- Teleport once if not near
                    if (hrp.Position - cubePart.Position).Magnitude > 8 then
                        hrp.CFrame = cubePart.CFrame + Vector3.new(0, 3, 2.5)
                        task.wait(0.08)
                    end
                    
                    humanoid:UnequipTools()
                    
                    ctrl.Cubes:Start(targetIndex, cubePart)
                    
                    -- Precise minimum wait required by server
                    local waitDuration = (minTime <= 0) and 0.02 or (minTime + 0.04)
                    task.wait(waitDuration)
                    
                    if ctrl.Cubes.active then
                        ctrl.Cubes.active.Progress = 1
                        ctrl.Cubes:_Finish(true)
                    end
                    
                    task.wait(0.03)
                    local cashAfter = getCash()
                    local gained = cashAfter - cashBefore
                    
                    if gained > 0 then
                        Runtime.TotalCubesLifted = Runtime.TotalCubesLifted + 1
                        addLog(string.format("Cube #%d: +$%s Cash! (Total: $%s)", targetIndex, formatNumber(gained), formatNumber(cashAfter)))
                    end
                    
                    Runtime.IsLifting = false
                end
            end)
        end
        task.wait(Config.CubeDelay)
    end
end)

-- ====================================================================
-- MODULE 3: AUTO BUY BEST ARMS
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoArms and not Runtime.IsLifting then
            pcall(function()
                local armsFolder = Workspace:FindFirstChild("World")
                armsFolder = armsFolder and armsFolder:FindFirstChild("Shared")
                armsFolder = armsFolder and armsFolder:FindFirstChild("Arms")
                if not armsFolder then return end
                
                local currentArms = getEquippedArms()
                local currentCash = getCash()
                local char = LocalPlayer.Character
                local hrp = char and char:FindFirstChild("HumanoidRootPart")
                if not hrp then return end
                
                local bestAffordable = nil
                for tier = #Schematics.Arms, (currentArms + 1), -1 do
                    local data = Schematics.Arms[tier]
                    if data and currentCash >= data.Price then
                        local pad = armsFolder:FindFirstChild(tostring(tier))
                        if pad and pad:FindFirstChild("Main") then
                            bestAffordable = { tier = tier, pad = pad, price = data.Price, time = data.PushUpTime }
                            break
                        end
                    end
                end
                
                if bestAffordable then
                    local oldPos = hrp.CFrame
                    hrp.CFrame = CFrame.new(bestAffordable.pad.Main.Position + Vector3.new(0, 3, 0))
                    task.wait(0.35)
                    local newArms = getEquippedArms()
                    if newArms >= bestAffordable.tier then
                        addLog(string.format("Bought Arms Tier %d (Speed: %gs)", newArms, bestAffordable.time))
                    end
                    hrp.CFrame = oldPos
                end
            end)
        end
        task.wait(3.0)
    end
end)

-- ====================================================================
-- MODULE 4: AUTO SPEED UPGRADES
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoSpeed and not Runtime.IsLifting then
            pcall(function()
                local speedFolder = Workspace:FindFirstChild("World")
                speedFolder = speedFolder and speedFolder:FindFirstChild("Shared")
                speedFolder = speedFolder and speedFolder:FindFirstChild("SpeedUpgrades")
                if not speedFolder then return end
                
                local currentCash = getCash()
                local char = LocalPlayer.Character
                local hrp = char and char:FindFirstChild("HumanoidRootPart")
                if not hrp then return end
                
                for tier = 1, #Schematics.SpeedUpgrades do
                    local data = Schematics.SpeedUpgrades[tier]
                    if data and currentCash >= data.Price then
                        local pad = speedFolder:FindFirstChild(tostring(tier))
                        if pad and pad:FindFirstChild("Main") then
                            local oldPos = hrp.CFrame
                            hrp.CFrame = CFrame.new(pad.Main.Position + Vector3.new(0, 3, 0))
                            task.wait(0.3)
                            hrp.CFrame = oldPos
                        end
                    end
                end
            end)
        end
        task.wait(4.0)
    end
end)

-- ====================================================================
-- MODULE 5: AUTO CLAIM MULTIPLIER POPS
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoPops then
            pcall(function()
                local ctrl = getControllers()
                if ctrl and ctrl.Pops and ctrl.Pops.live then
                    for popId, _ in pairs(ctrl.Pops.live) do
                        if type(popId) == "number" then
                            ctrl.Pops:_Claim(popId)
                            Runtime.TotalPopsClaimed = Runtime.TotalPopsClaimed + 1
                            addLog(string.format("Auto Claimed Pop #%d!", popId))
                            task.wait(0.05)
                        end
                    end
                end
            end)
        end
        task.wait(0.2)
    end
end)

-- ====================================================================
-- MODULE 6: AUTO ROLL & BUY MATERIALS
-- ====================================================================
local MaterialTierOrder = {
    "Sand", "Wood", "Grass", "Snow", "Rock", "Metal", 
    "Water", "Brick", "Magma", "Candy", "Tiles", "Illusion"
}

task.spawn(function()
    while Runtime.Running do
        if Config.AutoRoll and not Runtime.IsLifting then
            pcall(function()
                local ctrl = getControllers()
                if not ctrl or not ctrl.Roll then return end
                
                local currentCash = getCash()
                local owned = ctrl.Roll.owned or {}
                
                local targetMat = nil
                for i = #MaterialTierOrder, 1, -1 do
                    local name = MaterialTierOrder[i]
                    local matData = Schematics.Materials[name]
                    if matData and not owned[name] and currentCash >= matData.Price then
                        targetMat = name
                        break
                    end
                end
                
                if targetMat then
                    ctrl.Roll:ForceNext(targetMat)
                    local chests = ctrl.Roll.chests
                    if chests then
                        for _, chestData in pairs(chests) do
                            if chestData.ready and chestData.point then
                                local char = LocalPlayer.Character
                                local hrp = char and char:FindFirstChild("HumanoidRootPart")
                                if hrp then
                                    local oldPos = hrp.CFrame
                                    hrp.CFrame = chestData.point.CFrame + Vector3.new(0, 3, 2)
                                    task.wait(0.25)
                                    ctrl.Roll:Play(chestData)
                                    task.wait(0.7)
                                    ctrl.Roll:Buy()
                                    task.wait(0.4)
                                    hrp.CFrame = oldPos
                                    if ctrl.Roll.owned[targetMat] then
                                        addLog(string.format("Unlocked Material: %s (%dx)!", targetMat, Schematics.Materials[targetMat].StrengthMultiplier))
                                    end
                                    break
                                end
                            end
                        end
                    end
                end
            end)
        end
        task.wait(5.0)
    end
end)

-- ====================================================================
-- MODULE 7: AUTO CLAIM GROUP REWARD
-- ====================================================================
task.spawn(function()
    while Runtime.Running do
        if Config.AutoGroupReward then
            pcall(function()
                local ctrl = getControllers()
                if ctrl and ctrl.GroupReward and not ctrl.GroupReward:IsClaimed() then
                    Bridges.GroupReward:Fire({ Function = "RequestClaim", Args = {} })
                    addLog("Claimed Group Reward!")
                end
            end)
        end
        task.wait(20)
    end
end)

-- ====================================================================
-- MODULE 8: NOCLIP & BARRIER BYPASS
-- ====================================================================
local NoclipConnection = nil
NoclipConnection = RunService.Stepped:Connect(function()
    if Config.Noclip then
        pcall(function()
            local char = LocalPlayer.Character
            if char then
                for _, part in ipairs(char:GetDescendants()) do
                    if part:IsA("BasePart") and part.CanCollide then
                        part.CanCollide = false
                    end
                end
            end
            local world = Workspace:FindFirstChild("World")
            local client = world and world:FindFirstChild("Client")
            local barriers = client and (client:FindFirstChild("Barries") or client:FindFirstChild("Barriers"))
            if barriers then
                for _, barrier in ipairs(barriers:GetChildren()) do
                    for _, p in ipairs(barrier:GetDescendants()) do
                        if p:IsA("BasePart") and p.CanCollide then
                            p.CanCollide = false
                        end
                    end
                end
            end
        end)
    end
end)

-- ====================================================================
-- MODULE 9: ANTI-AFK
-- ====================================================================
local IdledConnection = nil
pcall(function()
    IdledConnection = LocalPlayer.Idled:Connect(function()
        if Config.AntiAFK then
            VirtualUser:CaptureController()
            VirtualUser:ClickButton2(Vector2.new())
            Bridges.AFK:Fire({ Function = "Ping", Args = {} })
            addLog("Anti-AFK: Prevented Disconnect")
        end
    end)
end)

-- ====================================================================
-- MODULE 10: USER INTERFACE (CLEAN RESPONSIVE ACTIVATED EVENTS)
-- ====================================================================
local GuiParent = (gethui and gethui()) or PlayerGui
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "LiftACube_MasterHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.DisplayOrder = 100
ScreenGui.Parent = GuiParent

-- Main Container Frame (Draggable = false to avoid click-blocking!)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 360, 0, 530)
MainFrame.Position = UDim2.new(0.02, 0, 0.15, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 18, 28)
MainFrame.BackgroundTransparency = 0.12
MainFrame.BorderSizePixel = 0
MainFrame.Active = false
MainFrame.Draggable = false
MainFrame.Parent = ScreenGui

local UICorner = Instance.new("UICorner", MainFrame)
UICorner.CornerRadius = UDim.new(0, 14)

local UIStroke = Instance.new("UIStroke", MainFrame)
UIStroke.Color = Color3.fromRGB(80, 160, 255)
UIStroke.Thickness = 1.8
UIStroke.Transparency = 0.35

-- Title Bar (DRAGGABLE IS HANDLED ONLY HERE)
local TitleBar = Instance.new("Frame", MainFrame)
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, 0, 0, 46)
TitleBar.BackgroundColor3 = Color3.fromRGB(24, 30, 48)
TitleBar.BackgroundTransparency = 0.3
TitleBar.BorderSizePixel = 0
TitleBar.Active = true

local TitleCorner = Instance.new("UICorner", TitleBar)
TitleCorner.CornerRadius = UDim.new(0, 14)

local TitleLabel = Instance.new("TextLabel", TitleBar)
TitleLabel.Size = UDim2.new(1, -50, 1, 0)
TitleLabel.Position = UDim2.new(0, 14, 0, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Font = Enum.Font.FredokaOne
TitleLabel.TextSize = 17
TitleLabel.Text = "LIFT A CUBE | MASTER HUB"
TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left

local TitleGradient = Instance.new("UIGradient", TitleLabel)
TitleGradient.Color = ColorSequence.new(Color3.fromRGB(80, 210, 255), Color3.fromRGB(255, 140, 220))

-- Smooth TitleBar Draggable Handler
local dragging, dragInput, dragStart, startPos
TitleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

TitleBar.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
        MainFrame.Position = UDim2.new(
            startPos.X.Scale,
            startPos.X.Offset + delta.X,
            startPos.Y.Scale,
            startPos.Y.Offset + delta.Y
        )
    end
end)

-- Speed Mode Button (Normal / Fast / Turbo)
local SpeedModeBtn = Instance.new("TextButton", TitleBar)
SpeedModeBtn.Size = UDim2.new(0, 75, 0, 30)
SpeedModeBtn.Position = UDim2.new(1, -118, 0.5, -15)
SpeedModeBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 60)
SpeedModeBtn.Font = Enum.Font.FredokaOne
SpeedModeBtn.Text = "⚡ TURBO"
SpeedModeBtn.TextColor3 = Color3.new(1, 1, 1)
SpeedModeBtn.TextSize = 12
local SpeedCorner = Instance.new("UICorner", SpeedModeBtn)
SpeedCorner.CornerRadius = UDim.new(0, 8)

local function updateSpeedModeUI()
    if Config.SpeedMode == "HYPER" then
        Config.TrainDelay = 0.105
        Config.CubeDelay = 0.05
        SpeedModeBtn.Text = "🔥 HYPER"
        SpeedModeBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 80)
    elseif Config.SpeedMode == "TURBO" then
        Config.TrainDelay = 0.15
        Config.CubeDelay = 0.1
        SpeedModeBtn.Text = "⚡ TURBO"
        SpeedModeBtn.BackgroundColor3 = Color3.fromRGB(220, 40, 50)
    elseif Config.SpeedMode == "FAST" then
        Config.TrainDelay = 0.22
        Config.CubeDelay = 0.25
        SpeedModeBtn.Text = "🚀 FAST"
        SpeedModeBtn.BackgroundColor3 = Color3.fromRGB(200, 130, 20)
    else
        Config.TrainDelay = 0.34
        Config.CubeDelay = 0.5
        SpeedModeBtn.Text = "🐢 NORMAL"
        SpeedModeBtn.BackgroundColor3 = Color3.fromRGB(40, 80, 150)
    end
end

SpeedModeBtn.Activated:Connect(function()
    if Config.SpeedMode == "HYPER" then
        Config.SpeedMode = "NORMAL"
    elseif Config.SpeedMode == "NORMAL" then
        Config.SpeedMode = "FAST"
    elseif Config.SpeedMode == "FAST" then
        Config.SpeedMode = "TURBO"
    else
        Config.SpeedMode = "HYPER"
    end
    updateSpeedModeUI()
    addLog("Speed Mode: " .. Config.SpeedMode)
end)

-- Minimize Button
local CloseBtn = Instance.new("TextButton", TitleBar)
CloseBtn.Size = UDim2.new(0, 30, 0, 30)
CloseBtn.Position = UDim2.new(1, -38, 0.5, -15)
CloseBtn.BackgroundColor3 = Color3.fromRGB(45, 50, 70)
CloseBtn.Font = Enum.Font.FredokaOne
CloseBtn.Text = "—"
CloseBtn.TextColor3 = Color3.fromRGB(200, 210, 230)
CloseBtn.TextSize = 14
local CloseCorner = Instance.new("UICorner", CloseBtn)
CloseCorner.CornerRadius = UDim.new(0, 8)

-- Live Stats Dashboard Card
local StatsFrame = Instance.new("Frame", MainFrame)
StatsFrame.Name = "StatsFrame"
StatsFrame.Size = UDim2.new(1, -24, 0, 78)
StatsFrame.Position = UDim2.new(0, 12, 0, 52)
StatsFrame.BackgroundColor3 = Color3.fromRGB(22, 26, 42)
StatsFrame.BackgroundTransparency = 0.45
local StatsCorner = Instance.new("UICorner", StatsFrame)
StatsCorner.CornerRadius = UDim.new(0, 10)
local StatsStroke = Instance.new("UIStroke", StatsFrame)
StatsStroke.Color = Color3.fromRGB(60, 80, 120)
StatsStroke.Thickness = 1

local StatRow1 = Instance.new("TextLabel", StatsFrame)
StatRow1.Size = UDim2.new(1, -16, 0, 22)
StatRow1.Position = UDim2.new(0, 8, 0, 4)
StatRow1.BackgroundTransparency = 1
StatRow1.Font = Enum.Font.FredokaOne
StatRow1.TextSize = 13
StatRow1.TextColor3 = Color3.fromRGB(255, 215, 60)
StatRow1.TextXAlignment = Enum.TextXAlignment.Left
StatRow1.Text = "Strength: ... | Cash: ..."

local StatRow2 = Instance.new("TextLabel", StatsFrame)
StatRow2.Size = UDim2.new(1, -16, 0, 22)
StatRow2.Position = UDim2.new(0, 8, 0, 26)
StatRow2.BackgroundTransparency = 1
StatRow2.Font = Enum.Font.FredokaOne
StatRow2.TextSize = 13
StatRow2.TextColor3 = Color3.fromRGB(110, 220, 255)
StatRow2.TextXAlignment = Enum.TextXAlignment.Left
StatRow2.Text = "Arms: ... | Material: ..."

local StatRow3 = Instance.new("TextLabel", StatsFrame)
StatRow3.Size = UDim2.new(1, -16, 0, 22)
StatRow3.Position = UDim2.new(0, 8, 0, 48)
StatRow3.BackgroundTransparency = 1
StatRow3.Font = Enum.Font.FredokaOne
StatRow3.TextSize = 13
StatRow3.TextColor3 = Color3.fromRGB(140, 255, 180)
StatRow3.TextXAlignment = Enum.TextXAlignment.Left
StatRow3.Text = "Lifts: 0 | Pushups: 0"

-- Cube Selector Card
local CubeSelectFrame = Instance.new("Frame", MainFrame)
CubeSelectFrame.Name = "CubeSelectFrame"
CubeSelectFrame.Size = UDim2.new(1, -24, 0, 40)
CubeSelectFrame.Position = UDim2.new(0, 12, 0, 136)
CubeSelectFrame.BackgroundColor3 = Color3.fromRGB(20, 24, 38)
local CSCorner = Instance.new("UICorner", CubeSelectFrame)
CSCorner.CornerRadius = UDim.new(0, 8)

local PrevCubeBtn = Instance.new("TextButton", CubeSelectFrame)
PrevCubeBtn.Size = UDim2.new(0, 36, 1, -8)
PrevCubeBtn.Position = UDim2.new(0, 4, 0, 4)
PrevCubeBtn.BackgroundColor3 = Color3.fromRGB(35, 42, 65)
PrevCubeBtn.Font = Enum.Font.FredokaOne
PrevCubeBtn.Text = "<"
PrevCubeBtn.TextColor3 = Color3.new(1, 1, 1)
PrevCubeBtn.TextSize = 16
local PrevCorner = Instance.new("UICorner", PrevCubeBtn)
PrevCorner.CornerRadius = UDim.new(0, 6)

local CubeLabel = Instance.new("TextLabel", CubeSelectFrame)
CubeLabel.Size = UDim2.new(1, -160, 1, 0)
CubeLabel.Position = UDim2.new(0, 44, 0, 0)
CubeLabel.BackgroundTransparency = 1
CubeLabel.Font = Enum.Font.FredokaOne
CubeLabel.TextSize = 13
CubeLabel.TextColor3 = Color3.fromRGB(255, 230, 100)
CubeLabel.Text = "Target: Auto Highest"

local NextCubeBtn = Instance.new("TextButton", CubeSelectFrame)
NextCubeBtn.Size = UDim2.new(0, 36, 1, -8)
NextCubeBtn.Position = UDim2.new(1, -114, 0, 4)
NextCubeBtn.BackgroundColor3 = Color3.fromRGB(35, 42, 65)
NextCubeBtn.Font = Enum.Font.FredokaOne
NextCubeBtn.Text = ">"
NextCubeBtn.TextColor3 = Color3.new(1, 1, 1)
NextCubeBtn.TextSize = 16
local NextCorner = Instance.new("UICorner", NextCubeBtn)
NextCorner.CornerRadius = UDim.new(0, 6)

local TpCubeBtn = Instance.new("TextButton", CubeSelectFrame)
TpCubeBtn.Size = UDim2.new(0, 70, 1, -8)
TpCubeBtn.Position = UDim2.new(1, -74, 0, 4)
TpCubeBtn.BackgroundColor3 = Color3.fromRGB(40, 110, 180)
TpCubeBtn.Font = Enum.Font.FredokaOne
TpCubeBtn.Text = "TP Cube"
TpCubeBtn.TextColor3 = Color3.new(1, 1, 1)
TpCubeBtn.TextSize = 12
local TpCorner = Instance.new("UICorner", TpCubeBtn)
TpCorner.CornerRadius = UDim.new(0, 6)

local function updateCubeLabel()
    if Config.SelectedCube == 0 then
        CubeLabel.Text = string.format("Target: Auto (#%d)", getBestLiftableCube())
    else
        CubeLabel.Text = string.format("Target: Cube #%d", Config.SelectedCube)
    end
end

PrevCubeBtn.Activated:Connect(function()
    Config.SelectedCube = Config.SelectedCube - 1
    if Config.SelectedCube < 0 then Config.SelectedCube = 15 end
    updateCubeLabel()
end)

NextCubeBtn.Activated:Connect(function()
    Config.SelectedCube = Config.SelectedCube + 1
    if Config.SelectedCube > 15 then Config.SelectedCube = 0 end
    updateCubeLabel()
end)

TpCubeBtn.Activated:Connect(function()
    local targetIdx = getTargetCubeIndex()
    local cubesFolder = Workspace:FindFirstChild("World")
    cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Shared")
    cubesFolder = cubesFolder and cubesFolder:FindFirstChild("Cubes")
    local cubePart = cubesFolder and cubesFolder:FindFirstChild(tostring(targetIdx))
    local char = LocalPlayer.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    if hrp and cubePart then
        hrp.CFrame = cubePart.CFrame + Vector3.new(0, 3, 2.5)
        addLog(string.format("Teleported to Cube #%d", targetIdx))
    end
end)

-- Feature Toggles List Container
local ScrollToggles = Instance.new("ScrollingFrame", MainFrame)
ScrollToggles.Name = "ScrollToggles"
ScrollToggles.Size = UDim2.new(1, -24, 0, 210)
ScrollToggles.Position = UDim2.new(0, 12, 0, 182)
ScrollToggles.BackgroundTransparency = 1
ScrollToggles.BorderSizePixel = 0
ScrollToggles.ScrollBarThickness = 6
ScrollToggles.ScrollBarImageColor3 = Color3.fromRGB(80, 160, 255)
ScrollToggles.CanvasSize = UDim2.new(0, 0, 0, 365)
ScrollToggles.CanvasPosition = Vector2.new(0, 0)

local TogglesLayout = Instance.new("UIListLayout", ScrollToggles)
TogglesLayout.SortOrder = Enum.SortOrder.LayoutOrder
TogglesLayout.Padding = UDim.new(0, 5)

local function createToggle(name, configKey)
    local btn = Instance.new("TextButton", ScrollToggles)
    btn.Size = UDim2.new(1, -8, 0, 34)
    btn.BackgroundColor3 = Config[configKey] and Color3.fromRGB(28, 48, 40) or Color3.fromRGB(45, 28, 35)
    btn.Font = Enum.Font.FredokaOne
    btn.TextSize = 13
    btn.Text = ""
    btn.AutoButtonColor = true
    
    local bCorner = Instance.new("UICorner", btn)
    bCorner.CornerRadius = UDim.new(0, 8)
    local bStroke = Instance.new("UIStroke", btn)
    bStroke.Thickness = 1
    bStroke.Color = Config[configKey] and Color3.fromRGB(60, 180, 90) or Color3.fromRGB(180, 60, 60)
    
    local titleLbl = Instance.new("TextLabel", btn)
    titleLbl.Size = UDim2.new(1, -65, 1, 0)
    titleLbl.Position = UDim2.new(0, 10, 0, 0)
    titleLbl.BackgroundTransparency = 1
    titleLbl.Font = Enum.Font.FredokaOne
    titleLbl.TextSize = 13
    titleLbl.TextColor3 = Color3.new(1, 1, 1)
    titleLbl.TextXAlignment = Enum.TextXAlignment.Left
    titleLbl.Text = name
    
    local statusLbl = Instance.new("TextLabel", btn)
    statusLbl.Size = UDim2.new(0, 45, 1, 0)
    statusLbl.Position = UDim2.new(1, -55, 0, 0)
    statusLbl.BackgroundTransparency = 1
    statusLbl.Font = Enum.Font.FredokaOne
    statusLbl.TextSize = 13
    statusLbl.TextColor3 = Config[configKey] and Color3.fromRGB(120, 255, 140) or Color3.fromRGB(255, 120, 120)
    statusLbl.Text = Config[configKey] and "ON" or "OFF"
    
    -- Activated event is 100% reliable for clicks/touch
    btn.Activated:Connect(function()
        Config[configKey] = not Config[configKey]
        local isEnabled = Config[configKey]
        btn.BackgroundColor3 = isEnabled and Color3.fromRGB(28, 48, 40) or Color3.fromRGB(45, 28, 35)
        bStroke.Color = isEnabled and Color3.fromRGB(60, 180, 90) or Color3.fromRGB(180, 60, 60)
        statusLbl.TextColor3 = isEnabled and Color3.fromRGB(120, 255, 140) or Color3.fromRGB(255, 120, 120)
        statusLbl.Text = isEnabled and "ON" or "OFF"
        addLog(string.format("%s: %s", name, isEnabled and "ENABLED" or "DISABLED"))
        
        if configKey == "AutoTrain" then
            pcall(function()
                local ctrl = getControllers()
                if not isEnabled then
                    if ctrl and ctrl.Training then
                        ctrl.Training:SetLocked(false)
                    end
                    local char = LocalPlayer.Character
                    local humanoid = char and char:FindFirstChildOfClass("Humanoid")
                    if humanoid then humanoid:UnequipTools() end
                else
                    ensureTrainToolEquipped()
                end
            end)
        end
    end)
end

createToggle("Auto Strength (Pushups)", "AutoTrain")
createToggle("Auto Cube Farm (Instant Cash)", "AutoCubes")
createToggle("Auto Buy Best Arms", "AutoArms")
createToggle("Auto Speed Upgrades", "AutoSpeed")
createToggle("Auto Claim Multiplier Pops", "AutoPops")
createToggle("Auto Roll & Buy Materials", "AutoRoll")
createToggle("Auto Claim Group Reward", "AutoGroupReward")
createToggle("Noclip (Walk Through Gates)", "Noclip")
createToggle("Anti-AFK Protection", "AntiAFK")

-- Live Logs Card
local LogFrame = Instance.new("Frame", MainFrame)
LogFrame.Name = "LogFrame"
LogFrame.Size = UDim2.new(1, -24, 0, 120)
LogFrame.Position = UDim2.new(0, 12, 0, 398)
LogFrame.BackgroundColor3 = Color3.fromRGB(12, 14, 22)
LogFrame.BorderSizePixel = 0
local LogCorner = Instance.new("UICorner", LogFrame)
LogCorner.CornerRadius = UDim.new(0, 8)

local LogLabel = Instance.new("TextLabel", LogFrame)
LogLabel.Size = UDim2.new(1, -12, 1, -8)
LogLabel.Position = UDim2.new(0, 6, 0, 4)
LogLabel.BackgroundTransparency = 1
LogLabel.Font = Enum.Font.Code
LogLabel.TextSize = 11
LogLabel.TextColor3 = Color3.fromRGB(150, 225, 180)
LogLabel.TextXAlignment = Enum.TextXAlignment.Left
LogLabel.TextYAlignment = Enum.TextYAlignment.Top
LogLabel.TextWrapped = true
LogLabel.Text = "System ready. All functions are OFF by default.\nClick any toggle above to start individual features."

-- Floating Toggle Icon when Minimized
local FloatIcon = Instance.new("TextButton", ScreenGui)
FloatIcon.Name = "FloatIcon"
FloatIcon.Size = UDim2.new(0, 46, 0, 46)
FloatIcon.Position = UDim2.new(0.02, 0, 0.12, 0)
FloatIcon.BackgroundColor3 = Color3.fromRGB(20, 24, 38)
FloatIcon.Font = Enum.Font.FredokaOne
FloatIcon.Text = "⚡"
FloatIcon.TextSize = 22
FloatIcon.TextColor3 = Color3.fromRGB(100, 220, 255)
FloatIcon.Visible = false
FloatIcon.Active = true
local FloatCorner = Instance.new("UICorner", FloatIcon)
FloatCorner.CornerRadius = UDim.new(0, 12)
local FloatStroke = Instance.new("UIStroke", FloatIcon)
FloatStroke.Color = Color3.fromRGB(80, 180, 255)
FloatStroke.Thickness = 1.8

CloseBtn.Activated:Connect(function()
    MainFrame.Visible = false
    FloatIcon.Visible = true
end)

FloatIcon.Activated:Connect(function()
    MainFrame.Visible = true
    FloatIcon.Visible = false
end)

-- Live UI Update Loop
task.spawn(function()
    while Runtime.Running do
        pcall(function()
            StatRow1.Text = string.format("Strength: %s  |  Cash: $%s", formatNumber(getStrength()), formatNumber(getCash()))
            StatRow2.Text = string.format("Arms: Tier %d  |  Material: %s", getEquippedArms(), getEquippedMaterial())
            StatRow3.Text = string.format("Lifts: %d  |  Pushups: %d  |  Pops: %d", Runtime.TotalCubesLifted, Runtime.TotalPushups, Runtime.TotalPopsClaimed)
            updateCubeLabel()
            
            local displayLogs = {}
            for i = 1, math.min(6, #Runtime.Logs) do
                table.insert(displayLogs, Runtime.Logs[i])
            end
            if #displayLogs > 0 then
                LogLabel.Text = table.concat(displayLogs, "\n")
            end
        end)
        task.wait(0.5)
    end
end)

-- Global Cleanup Routine
_G.LiftACubeCleanup = function()
    Runtime.Running = false
    pcall(function()
        local ctrl = getControllers()
        if ctrl and ctrl.Training then
            ctrl.Training:SetLocked(false)
        end
    end)
    if NoclipConnection then NoclipConnection:Disconnect() end
    if IdledConnection then IdledConnection:Disconnect() end
    if ScreenGui then ScreenGui:Destroy() end
end

addLog("Hub V2 loaded. Choose features to activate!")
print("[LIFT A CUBE] Master Hub V2 Loaded successfully!")

Features & Information

OP SC

Community Comments (1)

LollollilLollollilSep 13, 2026

Hmm

More Scripts for Lift a Cube