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!")