
Key RequiredUniversal

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



Hmm