Power GUI
Key Required

Power GUI

Hack A Businessthehackergamerthehackergamer 4.6K views 1.4K executesUpdated Jun 17, 2026
Unrated
00
Lua Script•791 lines (27449 chars)
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer
local mouse = player:GetMouse()

local selectedPlot
local collectibleObjects = {}
local autoCollectEnabled = false
local autoCollectThread
local collectDelay = 1 / 80  -- default 80 teleports/sec

-- Speed lock state
local speedEnabled   = false
local savedWalkSpeed = 16
local speedWatcher   = nil
local LOCK_SPEED     = 250

-- Weld-based teleport state
local teleportAnchor = nil
local teleportWeld   = nil

-- Position saved when AutoCollect is turned on
local savedReturnCFrame = nil

-- Auto Lock state
local autoLockEnabled = false
local autoLockThread  = nil

-- Minimise state
local minimised       = false
local EXPANDED_HEIGHT = 340  -- increased to fit the new Auto Lock row
local MINI_HEIGHT     = 42

-- ─── GUI ─────────────────────────────────────────────────────────────────────

local gui = Instance.new("ScreenGui")
gui.Name = "PlotChooser"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(350, 120)
frame.Position = UDim2.fromScale(0.5, 0.08)
frame.AnchorPoint = Vector2.new(0.5, 0)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.BorderSizePixel = 0
frame.ClipsDescendants = true
frame.Parent = gui

local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 10)
frameCorner.Parent = frame

local frameStroke = Instance.new("UIStroke")
frameStroke.Color = Color3.fromRGB(90, 90, 90)
frameStroke.Thickness = 1
frameStroke.Parent = frame

local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, -20, 0, 60)
title.Position = UDim2.fromOffset(10, 10)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold
title.TextSize = 24
title.TextColor3 = Color3.new(1, 1, 1)
title.TextWrapped = true
title.Text = "Choose Your Plot"
title.Parent = frame

local cancel = Instance.new("TextButton")
cancel.Size = UDim2.fromOffset(90, 32)
cancel.Position = UDim2.new(1, -100, 1, -36)
cancel.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
cancel.BorderSizePixel = 0
cancel.TextColor3 = Color3.new(1, 1, 1)
cancel.Font = Enum.Font.GothamBold
cancel.TextSize = 14
cancel.Text = "Cancel"
cancel.Parent = frame

local cancelCorner = Instance.new("UICorner")
cancelCorner.CornerRadius = UDim.new(0, 8)
cancelCorner.Parent = cancel

local cancelStroke = Instance.new("UIStroke")
cancelStroke.Color = Color3.fromRGB(90, 90, 90)
cancelStroke.Parent = cancel

-- ─── Fade-out & destroy ───────────────────────────────────────────────────────

local function unloadScript()
    autoCollectEnabled = false
    speedEnabled = false
    autoLockEnabled = false

    if speedWatcher then
        speedWatcher:Disconnect()
        speedWatcher = nil
    end

    local character = player.Character
    local humanoid  = character and character:FindFirstChildOfClass("Humanoid")

    if humanoid and humanoid.Parent then
        humanoid.WalkSpeed     = savedWalkSpeed
        humanoid.PlatformStand = false
    end

    if teleportWeld then
        teleportWeld:Destroy()
        teleportWeld = nil
    end
    if character then
        local hrp = character:FindFirstChild("HumanoidRootPart")
        if hrp then
            local att = hrp:FindFirstChild("_CollectAtt1")
            if att then att:Destroy() end
        end
        local anchor = character:FindFirstChild("_CollectAnchor")
        if anchor then anchor:Destroy() end
    end
    teleportAnchor = nil

    local FADE_TIME = 0.2
    local fadeInfo  = TweenInfo.new(FADE_TIME, Enum.EasingStyle.Linear)

    TweenService:Create(frame, fadeInfo, { BackgroundTransparency = 1 }):Play()

    for _, obj in ipairs(frame:GetDescendants()) do
        if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
            TweenService:Create(obj, fadeInfo,
                { TextTransparency = 1, BackgroundTransparency = 1 }):Play()
        elseif obj:IsA("Frame") then
            TweenService:Create(obj, fadeInfo, { BackgroundTransparency = 1 }):Play()
        elseif obj:IsA("UIStroke") then
            TweenService:Create(obj, fadeInfo, { Transparency = 1 }):Play()
        end
    end

    task.wait(FADE_TIME)
    gui:Destroy()
end

-- ─── Plot-selection helpers ───────────────────────────────────────────────────

local highlights      = {}
local finished        = false
local clickConnection

local function cleanup()
    for _, highlight in pairs(highlights) do
        if highlight then highlight:Destroy() end
    end
    highlights = {}
    if clickConnection then
        clickConnection:Disconnect()
    end
end

-- ─── Weld-based teleport helpers ─────────────────────────────────────────────

local function createAnchorPart(character)
    local hrp = character:FindFirstChild("HumanoidRootPart")
    if not hrp then return nil end

    local part = Instance.new("Part")
    part.Name         = "_CollectAnchor"
    part.Size         = Vector3.new(0.1, 0.1, 0.1)
    part.Transparency = 1
    part.CanCollide   = false
    part.CanTouch     = false
    part.CanQuery     = false
    part.Anchored     = true
    part.CFrame       = hrp.CFrame
    part.Parent       = character
    return part
end

local function attachAnchorToHRP(anchorPart, hrp)
    local att0 = Instance.new("Attachment")
    att0.Name     = "_CollectAtt0"
    att0.Position = Vector3.zero
    att0.Parent   = anchorPart

    local att1 = Instance.new("Attachment")
    att1.Name     = "_CollectAtt1"
    att1.Position = Vector3.zero
    att1.Parent   = hrp

    local w = Instance.new("WeldConstraint")
    w.Name   = "_CollectWeld"
    w.Part0  = anchorPart
    w.Part1  = hrp
    w.Parent = anchorPart

    anchorPart.Anchored = false
    return w
end

local function cleanupAnchor(character)
    if teleportWeld then
        teleportWeld:Destroy()
        teleportWeld = nil
    end
    if character then
        local hrp = character:FindFirstChild("HumanoidRootPart")
        if hrp then
            local att1 = hrp:FindFirstChild("_CollectAtt1")
            if att1 then att1:Destroy() end
        end
    end
    if teleportAnchor and teleportAnchor.Parent then
        teleportAnchor:Destroy()
    end
    teleportAnchor = nil
end

local function teleportTo(targetCFrame)
    if not teleportAnchor or not teleportAnchor.Parent then return end
    teleportAnchor.Anchored = true
    teleportAnchor.CFrame   = targetCFrame
    task.wait()
    teleportAnchor.Anchored = false
end

-- ─── Speed lock ──────────────────────────────────────────────────────────────

local function startSpeedWatcher()
    if speedWatcher then speedWatcher:Disconnect() end

    local character = player.Character
    local humanoid  = character and character:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end

    speedWatcher = humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
        if not speedEnabled then return end
        local current = humanoid.WalkSpeed
        if current ~= LOCK_SPEED then
            savedWalkSpeed     = current
            humanoid.WalkSpeed = LOCK_SPEED
        end
    end)
end

local function stopSpeedWatcher()
    if speedWatcher then
        speedWatcher:Disconnect()
        speedWatcher = nil
    end
end

-- ─── Collectible object list ──────────────────────────────────────────────────

local function buildCollectibleObjects()
    table.clear(collectibleObjects)

    if selectedPlot and selectedPlot:FindFirstChild("Objects") then
        for _, object in ipairs(selectedPlot.Objects:GetChildren()) do
            local objectGui = object:FindFirstChild("ObjectGui")
            if objectGui then
                local frameObj = objectGui:FindFirstChild("Frame")
                if frameObj then
                    local amount = frameObj:FindFirstChild("Amount")
                    if amount and amount:IsA("TextLabel") then
                        if not string.find(amount.Text, "s") then
                            table.insert(collectibleObjects, object)
                        end
                    end
                end
            end
        end
    end

    print("Collectible Objects Found:", #collectibleObjects)
end

-- ─── Auto-collect loop ────────────────────────────────────────────────────────

local function startAutoCollect()
    if autoCollectThread then return end

    -- Rebuild collectibles fresh each time AutoCollect is enabled
    buildCollectibleObjects()

    autoCollectThread = task.spawn(function()
        local startCharacter = player.Character
        local startHRP       = startCharacter and startCharacter:FindFirstChild("HumanoidRootPart")
        savedReturnCFrame    = startHRP and startHRP.CFrame or nil

        while autoCollectEnabled do
            local character = player.Character
            local hrp       = character and character:FindFirstChild("HumanoidRootPart")
            local humanoid  = character and character:FindFirstChildOfClass("Humanoid")

            if hrp and humanoid then
                if not teleportAnchor or not teleportAnchor.Parent then
                    cleanupAnchor(character)
                    teleportAnchor = createAnchorPart(character)
                    if teleportAnchor then
                        teleportWeld           = attachAnchorToHRP(teleportAnchor, hrp)
                        humanoid.PlatformStand = true
                    end
                end

                for _, object in ipairs(collectibleObjects) do
                    if not autoCollectEnabled then break end

                    local primary = object:FindFirstChild("Primary")
                    if primary and primary:IsA("BasePart") then
                        teleportTo(primary.CFrame)
                        task.wait(collectDelay)
                    else
                        task.wait(0.03)
                    end
                end
            end

            task.wait(0.05)
        end

        local character = player.Character
        local humanoid  = character and character:FindFirstChildOfClass("Humanoid")
        cleanupAnchor(character)

        if humanoid and humanoid.Parent then
            humanoid.PlatformStand = false
        end

        if savedReturnCFrame then
            local hrp = character and character:FindFirstChild("HumanoidRootPart")
            if hrp then
                hrp.CFrame        = savedReturnCFrame
                savedReturnCFrame = nil
            end
        end

        autoCollectThread = nil
    end)
end

-- ─── Auto Lock loop ───────────────────────────────────────────────────────────

local function startAutoLock()
    if autoLockThread then return end

    autoLockThread = task.spawn(function()
        while autoLockEnabled do
            -- Safety: bail out if no plot selected
            if not selectedPlot then
                task.wait(0.1)
                continue
            end

            -- Locate the transparency sentinel and the pad to re-lock with
            local lockRings = selectedPlot:FindFirstChild("LockRings")
            local lockPlot  = selectedPlot:FindFirstChild("LockPlot")
            local entrance1 = lockRings and lockRings:FindFirstChild("Entrance1")
            local pad       = lockPlot  and lockPlot:FindFirstChild("Pad")

            -- If the plot is currently unlocked (Entrance1 is invisible), re-lock it
            if entrance1 and pad
                and entrance1:IsA("BasePart")
                and pad:IsA("BasePart")
                and entrance1.Transparency == 1
            then
                local character = player.Character
                local hrp       = character and character:FindFirstChild("HumanoidRootPart")

                if hrp then
                    -- Save the pad's original state so we can restore it exactly
                    local originalCFrame     = pad.CFrame
                    local originalCanCollide = pad.CanCollide

                    -- Disable collision so the teleport doesn't push the player around
                    pad.CanCollide = false

                    local ok, err = pcall(function()
                        -- Move the pad onto the player
                        pad.CFrame = hrp.CFrame
                        task.wait(0.15)

                        -- Move the pad back (total round-trip ≈ 0.3 s)
                        pad.CFrame = originalCFrame
                        task.wait(0.15)
                    end)

                    if not ok then
                        warn("AutoLock pad teleport error:", err)
                    end

                    -- Always restore collision regardless of errors
                    pad.CanCollide = originalCanCollide
                end
            end

            task.wait(0.1)  -- poll interval
        end

        autoLockThread = nil
    end)
end

-- ─── Main menu ────────────────────────────────────────────────────────────────

local function createMainMenu()
    -- Fade out the plot-selection title
    for _, obj in ipairs(frame:GetChildren()) do
        if obj:IsA("TextLabel") then
            TweenService:Create(obj, TweenInfo.new(0.35, Enum.EasingStyle.Linear),
                { TextTransparency = 1, TextStrokeTransparency = 1 }):Play()
            task.delay(0.35, function()
                if obj and obj.Parent then obj:Destroy() end
            end)
        end
    end

    task.wait(0.35)

    cancel.Text = "Close"

    -- ── Minimise button (created before expansion so it sits at the top) ──────
    local minBtn = Instance.new("TextButton")
    minBtn.Name             = "MinimiseBtn"
    minBtn.Size             = UDim2.fromOffset(24, 24)
    minBtn.Position         = UDim2.fromOffset(8, 6)
    minBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    minBtn.BorderSizePixel  = 0
    minBtn.TextColor3       = Color3.new(1, 1, 1)
    minBtn.Font             = Enum.Font.GothamBold
    minBtn.TextSize         = 16
    minBtn.Text             = "−"
    minBtn.ZIndex           = 10
    minBtn.Parent           = frame

    local minBtnCorner = Instance.new("UICorner")
    minBtnCorner.CornerRadius = UDim.new(0, 6)
    minBtnCorner.Parent       = minBtn

    local minBtnStroke = Instance.new("UIStroke")
    minBtnStroke.Color  = Color3.fromRGB(90, 90, 90)
    minBtnStroke.Parent = minBtn

    -- Expand the frame now
    frame.AnchorPoint = Vector2.new(1, 0)

    TweenService:Create(frame, TweenInfo.new(0.45, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
        Size     = UDim2.fromOffset(350, EXPANDED_HEIGHT),
        Position = UDim2.new(1, -20, 0, 20),
    }):Play()

    task.wait(0.45)

    cancel.Position = UDim2.new(1, -100, 1, -36)

    -- ── Shared helpers ────────────────────────────────────────────────────────

    local function makeLabel(text, yPos)
        local lbl = Instance.new("TextLabel")
        lbl.BackgroundTransparency = 1
        lbl.Size                   = UDim2.new(1, -100, 0, 40)
        lbl.Position               = UDim2.fromOffset(15, yPos)
        lbl.Font                   = Enum.Font.Gotham
        lbl.TextSize               = 18
        lbl.TextColor3             = Color3.new(1, 1, 1)
        lbl.TextXAlignment         = Enum.TextXAlignment.Left
        lbl.Text                   = text
        lbl.Parent                 = frame
        return lbl
    end

    local function makeSwitch(yPos)
        local sw = Instance.new("TextButton")
        sw.AutoButtonColor  = false
        sw.Text             = ""
        sw.Size             = UDim2.fromOffset(52, 28)
        sw.Position         = UDim2.new(1, -70, 0, yPos)
        sw.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
        sw.BorderSizePixel  = 0
        sw.Parent           = frame

        local corner = Instance.new("UICorner")
        corner.CornerRadius = UDim.new(1, 0)
        corner.Parent       = sw

        local knob = Instance.new("Frame")
        knob.Size             = UDim2.fromOffset(22, 22)
        knob.Position         = UDim2.fromOffset(3, 3)
        knob.BackgroundColor3 = Color3.fromRGB(230, 230, 230)
        knob.BorderSizePixel  = 0
        knob.Parent           = sw

        local knobCorner = Instance.new("UICorner")
        knobCorner.CornerRadius = UDim.new(1, 0)
        knobCorner.Parent       = knob

        return sw, knob
    end

    local function animateSwitch(sw, knob, state)
        if state then
            TweenService:Create(sw,   TweenInfo.new(0.2, Enum.EasingStyle.Quad),
                { BackgroundColor3 = Color3.fromRGB(0, 200, 70) }):Play()
            TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
                { Position = UDim2.fromOffset(27, 3) }):Play()
        else
            TweenService:Create(sw,   TweenInfo.new(0.2, Enum.EasingStyle.Quad),
                { BackgroundColor3 = Color3.fromRGB(55, 55, 55) }):Play()
            TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
                { Position = UDim2.fromOffset(3, 3) }):Play()
        end
    end

    -- ── Row offsets ───────────────────────────────────────────────────────────
    -- Offset labels/switches down by 36px to leave room for the minimise bar
    local ROW_OFFSET = 36

    -- ── Row 1 (y=10): AutoCollect ─────────────────────────────────────────────
    makeLabel("AutoCollect", 10 + ROW_OFFSET)
    local acSwitch, acKnob = makeSwitch(16 + ROW_OFFSET)

    local function updateAutoCollect(state)
        autoCollectEnabled = state
        animateSwitch(acSwitch, acKnob, state)
        if state then
            startAutoCollect()
        end
    end

    acSwitch.MouseButton1Click:Connect(function()
        updateAutoCollect(not autoCollectEnabled)
    end)

    -- ── Row 2 (y=60): Teleports/sec ──────────────────────────────────────────
    local tpsLabel = Instance.new("TextLabel")
    tpsLabel.BackgroundTransparency = 1
    tpsLabel.Size                   = UDim2.fromOffset(140, 30)
    tpsLabel.Position               = UDim2.fromOffset(15, 65 + ROW_OFFSET)
    tpsLabel.Font                   = Enum.Font.Gotham
    tpsLabel.TextSize               = 15
    tpsLabel.TextColor3             = Color3.fromRGB(180, 180, 180)
    tpsLabel.TextXAlignment         = Enum.TextXAlignment.Left
    tpsLabel.Text                   = "Teleports/sec"
    tpsLabel.Parent                 = frame

    local inputBox = Instance.new("TextBox")
    inputBox.Size             = UDim2.fromOffset(90, 28)
    inputBox.Position         = UDim2.new(1, -110, 0, 63 + ROW_OFFSET)
    inputBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    inputBox.BorderSizePixel  = 0
    inputBox.Font             = Enum.Font.GothamBold
    inputBox.TextSize         = 15
    inputBox.TextColor3       = Color3.new(1, 1, 1)
    inputBox.PlaceholderText  = "80"
    inputBox.Text             = "80"
    inputBox.ClearTextOnFocus = false
    inputBox.Parent           = frame

    local inputCorner = Instance.new("UICorner")
    inputCorner.CornerRadius = UDim.new(0, 6)
    inputCorner.Parent       = inputBox

    local inputStroke = Instance.new("UIStroke")
    inputStroke.Color  = Color3.fromRGB(90, 90, 90)
    inputStroke.Parent = inputBox

    inputBox.FocusLost:Connect(function()
        local raw = tonumber(inputBox.Text)
        if raw and raw > 0 then
            raw           = math.clamp(raw, 0.1, 100)
            collectDelay  = 1 / raw
            inputBox.Text = tostring(raw)
        else
            inputBox.Text = tostring(math.round(1 / collectDelay * 10) / 10)
        end
    end)

    -- ── Row 3 (y=110): Speed ─────────────────────────────────────────────────
    makeLabel("Speed", 110 + ROW_OFFSET)
    local spSwitch, spKnob = makeSwitch(116 + ROW_OFFSET)

    local function updateSpeed(state)
        speedEnabled = state
        animateSwitch(spSwitch, spKnob, state)

        local character = player.Character
        local humanoid  = character and character:FindFirstChildOfClass("Humanoid")
        if not humanoid then return end

        if state then
            savedWalkSpeed     = humanoid.WalkSpeed
            humanoid.WalkSpeed = LOCK_SPEED
            startSpeedWatcher()
        else
            stopSpeedWatcher()
            humanoid.WalkSpeed = savedWalkSpeed
        end
    end

    spSwitch.MouseButton1Click:Connect(function()
        updateSpeed(not speedEnabled)
    end)

    player.CharacterAdded:Connect(function(newChar)
        newChar:WaitForChild("Humanoid", 10)
        if speedEnabled then
            local hum = newChar:FindFirstChildOfClass("Humanoid")
            if hum then
                hum.WalkSpeed = LOCK_SPEED
                startSpeedWatcher()
            end
        end
    end)

    -- ── Row 4 (y=160): Collect stolen ────────────────────────────────────────
    makeLabel("Collect stolen", 160 + ROW_OFFSET)

    local collectStolenBtn = Instance.new("TextButton")
    collectStolenBtn.Size             = UDim2.fromOffset(90, 28)
    collectStolenBtn.Position         = UDim2.new(1, -110, 0, 163 + ROW_OFFSET)
    collectStolenBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    collectStolenBtn.BorderSizePixel  = 0
    collectStolenBtn.Font             = Enum.Font.GothamBold
    collectStolenBtn.TextSize         = 14
    collectStolenBtn.TextColor3       = Color3.new(1, 1, 1)
    collectStolenBtn.Text             = "Click me"
    collectStolenBtn.AutoButtonColor  = false
    collectStolenBtn.Parent           = frame

    local collectStolenCorner = Instance.new("UICorner")
    collectStolenCorner.CornerRadius = UDim.new(0, 8)
    collectStolenCorner.Parent       = collectStolenBtn

    local collectStolenStroke = Instance.new("UIStroke")
    collectStolenStroke.Color  = Color3.fromRGB(90, 90, 90)
    collectStolenStroke.Parent = collectStolenBtn

    collectStolenBtn.MouseButton1Click:Connect(function()
        if not selectedPlot then return end

        local teleportPart = selectedPlot:FindFirstChild("Teleport")
        if not teleportPart or not teleportPart:IsA("BasePart") then
            warn("Plot.Teleport not found or is not a BasePart")
            return
        end

        local character = player.Character
        local hrp       = character and character:FindFirstChild("HumanoidRootPart")
        if hrp then
            hrp.CFrame = teleportPart.CFrame
        end
    end)

    collectStolenBtn.MouseButton1Down:Connect(function()
        TweenService:Create(collectStolenBtn, TweenInfo.new(0.08, Enum.EasingStyle.Linear),
            { BackgroundColor3 = Color3.fromRGB(25, 25, 25) }):Play()
    end)

    collectStolenBtn.MouseButton1Up:Connect(function()
        TweenService:Create(collectStolenBtn, TweenInfo.new(0.12, Enum.EasingStyle.Linear),
            { BackgroundColor3 = Color3.fromRGB(45, 45, 45) }):Play()
    end)

    -- ── Row 5 (y=210): Auto Lock ──────────────────────────────────────────────
    makeLabel("Auto lock", 210 + ROW_OFFSET)
    local alSwitch, alKnob = makeSwitch(216 + ROW_OFFSET)

    local function updateAutoLock(state)
        autoLockEnabled = state
        animateSwitch(alSwitch, alKnob, state)
        if state then
            startAutoLock()
        end
    end

    alSwitch.MouseButton1Click:Connect(function()
        updateAutoLock(not autoLockEnabled)
    end)

    -- ── Minimise toggle ───────────────────────────────────────────────────────

    local function getMinimisableDescendants()
        local list = {}
        for _, obj in ipairs(frame:GetDescendants()) do
            if obj ~= minBtn
                and not minBtn:IsAncestorOf(obj)
                and obj ~= cancel
                and not cancel:IsAncestorOf(obj)
                and (obj:IsA("TextLabel") or obj:IsA("TextButton")
                    or obj:IsA("TextBox")  or obj:IsA("Frame")
                    or obj:IsA("UIStroke"))
            then
                table.insert(list, obj)
            end
        end
        return list
    end

    minBtn.MouseButton1Click:Connect(function()
        minimised = not minimised

        local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)

        if minimised then
            for _, obj in ipairs(getMinimisableDescendants()) do
                if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
                    TweenService:Create(obj, tweenInfo,
                        { TextTransparency = 1, BackgroundTransparency = 1 }):Play()
                elseif obj:IsA("Frame") then
                    TweenService:Create(obj, tweenInfo,
                        { BackgroundTransparency = 1 }):Play()
                elseif obj:IsA("UIStroke") then
                    TweenService:Create(obj, tweenInfo,
                        { Transparency = 1 }):Play()
                end
            end

            task.delay(0.2, function()
                TweenService:Create(frame, tweenInfo,
                    { Size = UDim2.fromOffset(350, MINI_HEIGHT) }):Play()
            end)

            minBtn.Text = "+"
        else
            TweenService:Create(frame, tweenInfo,
                { Size = UDim2.fromOffset(350, EXPANDED_HEIGHT) }):Play()

            task.delay(0.2, function()
                for _, obj in ipairs(getMinimisableDescendants()) do
                    if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
                        TweenService:Create(obj, tweenInfo,
                            { TextTransparency = 0, BackgroundTransparency = obj.BackgroundTransparency == 1
                                and (obj:IsA("TextLabel") and 1 or 0) or obj.BackgroundTransparency }):Play()
                    elseif obj:IsA("Frame") then
                        TweenService:Create(obj, tweenInfo,
                            { BackgroundTransparency = 0 }):Play()
                    elseif obj:IsA("UIStroke") then
                        TweenService:Create(obj, tweenInfo,
                            { Transparency = 0 }):Play()
                    end
                end
            end)

            minBtn.Text = "−"
        end
    end)

    -- Initialise all switches to off
    updateAutoCollect(false)
    updateSpeed(false)
    updateAutoLock(false)
end

-- ─── Plot selection ───────────────────────────────────────────────────────────

for _, plot in ipairs(workspace.Plots:GetChildren()) do
    local lockHitbox = plot:FindFirstChild("LockHitbox")

    if lockHitbox and lockHitbox:IsA("BasePart") then
        local highlight = Instance.new("Highlight")
        highlight.Adornee             = lockHitbox
        highlight.FillColor           = Color3.fromRGB(0, 170, 255)
        highlight.FillTransparency    = 0.6
        highlight.OutlineColor        = Color3.fromRGB(255, 255, 255)
        highlight.OutlineTransparency = 0
        highlight.DepthMode           = Enum.HighlightDepthMode.AlwaysOnTop
        highlight.Parent              = lockHitbox

        highlights[lockHitbox] = highlight
    end
end

clickConnection = mouse.Button1Down:Connect(function()
    if finished then return end
    local target = mouse.Target
    if not target then return end

    if highlights[target] then
        finished     = true
        selectedPlot = target.Parent
        cleanup()
        task.spawn(createMainMenu)
    end
end)

cancel.MouseButton1Click:Connect(function()
    finished = true
    cleanup()
    task.spawn(unloadScript)
end)

Features & Information

Autofarm Teleport to base Speed Auto lock
#keyless#minimalistic#easy#simple

Community Comments (1)

TiloTiloAug 5, 2026

chat is this good?

More Scripts for Hack A Business