Sell Lemons OP MENU GUI
Sell Lemons ๐Ÿ‹ Keyless
Sell Lemons OP MENU GUI
๐Ÿ‘ค alexriderr ๐Ÿ‘ 10 views โค๏ธ 0 likes โฑ Jun 1, 2026
This is a **Sell Lemons** script made by **Fr0gz**. It took around a day to create, and it includes useful features designed to make gameplay smootherโ€”hope you enjoy using it!
โœจ Features
Auto Farm Auto Upgrade Auto Collect Fruit Auto Collect Cash Drops Auto Collect Money Auto Accept Phone Offers Auto Buy Infrastructure
๐Ÿ“‹ Script Code
-- FORCE-KILL ANY PREVIOUS RUNNING SCRIPTS TO PREVENT MEMORY LEAKS
local CoreGui = game:GetService("CoreGui")
if CoreGui:FindFirstChild("TycoonManager") then
    pcall(function() CoreGui.TycoonManager:Destroy() end)
end

if shared.KillAutoBuy then pcall(shared.KillAutoBuy) end
if shared.KillFruitPicker then pcall(shared.KillFruitPicker) end

-- State variables
local config = {
    autoIncome = false,
    autoBuy = false,
    upgradeStand = false,
    upgradeDepot = false,
    upgradeDash = false,
    upgradeTrading = false,
    upgradeLabs = false,
    upgradeRobotics = false, -- Added Robotics config flag
    autoPickFruit = false,
    phoneAutoAccept = true,
    incomeDelay = 0.3, 
    upgradeDelay = 0.3, -- Dynamic slider speed variable
    walkSpeed = 16
}

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local MyTycoon = nil
local TycoonNumber = "1" 

-- SAFE OWNER DETECTION 
local function FindMyTycoon()
    for _, folder in ipairs(workspace:GetChildren()) do
        if folder and string.match(folder.Name, "^Tycoon") then
            local ownerValue = folder:FindFirstChild("Owner") or folder:FindFirstChild("Player")
            if ownerValue and (ownerValue.Value == LocalPlayer or ownerValue.Value == LocalPlayer.Name) then
                MyTycoon = folder
                TycoonNumber = string.match(folder.Name, "%d+") or "1"
                break
            elseif folder:GetAttribute("Owner") == LocalPlayer.Name then
                MyTycoon = folder
                TycoonNumber = string.match(folder.Name, "%d+") or "1"
                break
            elseif string.find(folder.Name, LocalPlayer.Name) then
                MyTycoon = folder
                TycoonNumber = string.match(folder.Name, "%d+") or "1"
                break
            end
        end
    end
end
pcall(FindMyTycoon)

-- Map Remotes cleanly
local GlobalTycoonFolder = workspace:FindFirstChild("Tycoon" .. TycoonNumber)
local RemotesFolder = GlobalTycoonFolder and GlobalTycoonFolder:WaitForChild("Remotes", 2) or (MyTycoon and MyTycoon:WaitForChild("Remotes", 2))
local IncomeEvent = RemotesFolder and RemotesFolder:WaitForChild("WakeIncomeStream", 2)
local PurchasesFolder = MyTycoon and MyTycoon:WaitForChild("Purchases", 2)
local GlobalPurchases = GlobalTycoonFolder and GlobalTycoonFolder:FindFirstChild("Purchases") or PurchasesFolder

-- GUI SETUP
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "TycoonManager"
local successGui, errGui = pcall(function() ScreenGui.Parent = CoreGui end)
if not successGui then pcall(function() ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui", 2) end) end

local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 260, 0, 600) -- Expanded slightly to cleanly fit the new button
MainFrame.Position = UDim2.new(0.5, -130, 0.4, -255)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 9)
MainCorner.Parent = MainFrame

-- ANTI-AFK
local VirtualUser = game:GetService("VirtualUser")
task.spawn(function()
    while task.wait(math.random(15, 30)) do
        if not ScreenGui or not ScreenGui.Parent then break end
        pcall(function()
            VirtualUser:CaptureController()
            VirtualUser:ClickButton2(Vector2.new(0, 0))
        end)
    end
end)

-- DRAGGING ENGINE
local DragBar = Instance.new("Frame")
DragBar.Size = UDim2.new(1, 0, 0, 40)
DragBar.BackgroundTransparency = 1
DragBar.ZIndex = 2
DragBar.Parent = MainFrame

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -95, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.Text = "LEMON AUTOMATION"
Title.TextColor3 = Color3.fromRGB(0, 180, 255)
Title.BackgroundTransparency = 1
Title.Font = Enum.Font.GothamBold
Title.TextSize = 13
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.ZIndex = 3
Title.Parent = DragBar

local UserInputService = game:GetService("UserInputService")
local dragging = false
local dragStart, startPos

DragBar.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
        
        local releaseConnection
        releaseConnection = UserInputService.InputEnded:Connect(function(endInput)
            if endInput.UserInputType == Enum.UserInputType.MouseButton1 or endInput.UserInputType == Enum.UserInputType.Touch then
                dragging = false
                releaseConnection:Disconnect()
            end
        end)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) 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)

-- CONTROLS
local SettingsBtn = Instance.new("TextButton")
SettingsBtn.Size = UDim2.new(0, 25, 0, 25)
SettingsBtn.Position = UDim2.new(1, -90, 0, 7)
SettingsBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
SettingsBtn.Text = "โš™๏ธ"
SettingsBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
SettingsBtn.Font = Enum.Font.GothamBold
SettingsBtn.TextSize = 12
SettingsBtn.ZIndex = 4
SettingsBtn.Parent = MainFrame

local SetCorner = Instance.new("UICorner")
SetCorner.CornerRadius = UDim.new(0, 4)
SetCorner.Parent = SettingsBtn

local MinimizeBtn = Instance.new("TextButton")
MinimizeBtn.Size = UDim2.new(0, 25, 0, 25)
MinimizeBtn.Position = UDim2.new(1, -60, 0, 7)
MinimizeBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
MinimizeBtn.Text = "-"
MinimizeBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
MinimizeBtn.Font = Enum.Font.GothamBold
MinimizeBtn.TextSize = 16
MinimizeBtn.ZIndex = 4
MinimizeBtn.Parent = MainFrame

local MinCorner = Instance.new("UICorner")
MinCorner.CornerRadius = UDim.new(0, 4)
MinCorner.Parent = MinimizeBtn

local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 25, 0, 25)
CloseBtn.Position = UDim2.new(1, -30, 0, 7)
CloseBtn.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 12
CloseBtn.ZIndex = 4
CloseBtn.Parent = MainFrame

local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 4)
CloseCorner.Parent = CloseBtn

local Line = Instance.new("Frame")
Line.Size = UDim2.new(0.9, 0, 0, 1)
Line.Position = UDim2.new(0.05, 0, 0, 40)
Line.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Line.BorderSizePixel = 0
Line.Parent = MainFrame

-- PAGE MANAGEMENT (Main Page & Settings Page Containers)
local MainPage = Instance.new("Frame")
MainPage.Size = UDim2.new(1, 0, 1, -45)
MainPage.Position = UDim2.new(0, 0, 0, 45)
MainPage.BackgroundTransparency = 1
MainPage.Parent = MainFrame

local SettingsPage = Instance.new("Frame")
SettingsPage.Size = UDim2.new(1, 0, 1, -45)
SettingsPage.Position = UDim2.new(1, 0, 0, 45)
SettingsPage.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
SettingsPage.BorderSizePixel = 0
SettingsPage.Parent = MainFrame

-- SPEED SLIDER COMPONENT (Main Page)
local SliderFrame = Instance.new("Frame")
SliderFrame.Name = "Slider_Frame"
SliderFrame.Size = UDim2.new(0.9, 0, 0, 45)
SliderFrame.Position = UDim2.new(0.05, 0, 0, 5)
SliderFrame.BackgroundColor3 = Color3.fromRGB(42, 42, 42)
SliderFrame.BorderSizePixel = 0
SliderFrame.Parent = MainPage

local SliderCorner = Instance.new("UICorner")
SliderCorner.CornerRadius = UDim.new(0, 6)
SliderCorner.Parent = SliderFrame

local SliderLabel = Instance.new("TextLabel")
SliderLabel.Size = UDim2.new(0.6, 0, 0, 20)
SliderLabel.Position = UDim2.new(0.05, 0, 0, 2)
SliderLabel.Text = "Player Speed"
SliderLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
SliderLabel.Font = Enum.Font.GothamSemibold
SliderLabel.TextSize = 12
SliderLabel.TextXAlignment = Enum.TextXAlignment.Left
SliderLabel.BackgroundTransparency = 1
SliderLabel.Parent = SliderFrame

local SliderValueLabel = Instance.new("TextLabel")
SliderValueLabel.Size = UDim2.new(0.3, 0, 0, 20)
SliderValueLabel.Position = UDim2.new(0.65, 0, 0, 2)
SliderValueLabel.Text = "16"
SliderValueLabel.TextColor3 = Color3.fromRGB(0, 180, 255)
SliderValueLabel.Font = Enum.Font.GothamBold
SliderValueLabel.TextSize = 12
SliderValueLabel.TextXAlignment = Enum.TextXAlignment.Right
SliderValueLabel.BackgroundTransparency = 1
SliderValueLabel.Parent = SliderFrame

local SliderTrack = Instance.new("TextButton")
SliderTrack.Name = "Track"
SliderTrack.Size = UDim2.new(0.9, 0, 0, 6)
SliderTrack.Position = UDim2.new(0.05, 0, 0, 28)
SliderTrack.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
SliderTrack.BorderSizePixel = 0
SliderTrack.Text = ""
SliderTrack.Parent = SliderFrame

local TrackCorner = Instance.new("UICorner")
TrackCorner.CornerRadius = UDim.new(0, 3)
TrackCorner.Parent = SliderTrack

local SliderFill = Instance.new("Frame")
SliderFill.Name = "Fill"
SliderFill.Size = UDim2.new(0, 0, 1, 0)
SliderFill.BackgroundColor3 = Color3.fromRGB(0, 180, 255)
SliderFill.BorderSizePixel = 0
SliderFill.Parent = SliderTrack

local FillCorner = Instance.new("UICorner")
FillCorner.CornerRadius = UDim.new(0, 3)
FillCorner.Parent = SliderFill

local SliderBtn = Instance.new("Frame")
SliderBtn.Name = "Button"
SliderBtn.Size = UDim2.new(0, 14, 0, 14)
SliderBtn.Position = UDim2.new(0, -7, 0.5, -7)
SliderBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
SliderBtn.BorderSizePixel = 0
SliderBtn.Parent = SliderTrack

local BtnCorner = Instance.new("UICorner")
BtnCorner.CornerRadius = UDim.new(1, 0)
BtnCorner.Parent = SliderBtn

local minSpeed = 16
local maxSpeed = 200
local isSliding = false

local function updateSlider(input)
    local trackWidth = SliderTrack.AbsoluteSize.X
    local mouseX = input.Position.X - SliderTrack.AbsolutePosition.X
    local percentage = math.clamp(mouseX / trackWidth, 0, 1)
    
    SliderFill.Size = UDim2.new(percentage, 0, 1, 0)
    SliderBtn.Position = UDim2.new(percentage, -7, 0.5, -7)
    
    local speedValue = math.floor(minSpeed + (percentage * (maxSpeed - minSpeed)))
    config.walkSpeed = speedValue
    SliderValueLabel.Text = tostring(speedValue)
end

SliderTrack.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        isSliding = true
        updateSlider(input)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if isSliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateSlider(input)
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        isSliding = false
    end
end)

task.spawn(function()
    while true do
        if not ScreenGui or not ScreenGui.Parent then break end
        pcall(function()
            local character = LocalPlayer.Character
            if character then
                local humanoid = character:FindFirstChildOfClass("Humanoid")
                if humanoid and humanoid.WalkSpeed ~= config.walkSpeed then
                    humanoid.WalkSpeed = config.walkSpeed
                end
            end
        end)
        task.wait(0.1)
    end
end)

-- UPGRADE DELAY SLIDER (Located on Settings Page)
local UpSliderFrame = Instance.new("Frame")
UpSliderFrame.Name = "UpSlider_Frame"
UpSliderFrame.Size = UDim2.new(0.9, 0, 0, 55)
UpSliderFrame.Position = UDim2.new(0.05, 0, 0, 15)
UpSliderFrame.BackgroundColor3 = Color3.fromRGB(42, 42, 42)
UpSliderFrame.BorderSizePixel = 0
UpSliderFrame.Parent = SettingsPage

local UpSliderCorner = Instance.new("UICorner")
UpSliderCorner.CornerRadius = UDim.new(0, 6)
UpSliderCorner.Parent = UpSliderFrame

local UpSliderLabel = Instance.new("TextLabel")
UpSliderLabel.Size = UDim2.new(0.6, 0, 0, 20)
UpSliderLabel.Position = UDim2.new(0.05, 0, 0, 5)
UpSliderLabel.Text = "Upgrade Speed (Delay)"
UpSliderLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
UpSliderLabel.Font = Enum.Font.GothamSemibold
UpSliderLabel.TextSize = 12
UpSliderLabel.TextXAlignment = Enum.TextXAlignment.Left
UpSliderLabel.BackgroundTransparency = 1
UpSliderLabel.Parent = UpSliderFrame

local UpSliderValueLabel = Instance.new("TextLabel")
UpSliderValueLabel.Size = UDim2.new(0.3, 0, 0, 20)
UpSliderValueLabel.Position = UDim2.new(0.65, 0, 0, 5)
UpSliderValueLabel.Text = "0.30s"
UpSliderValueLabel.TextColor3 = Color3.fromRGB(0, 180, 255)
UpSliderValueLabel.Font = Enum.Font.GothamBold
UpSliderValueLabel.TextSize = 12
UpSliderValueLabel.TextXAlignment = Enum.TextXAlignment.Right
UpSliderValueLabel.BackgroundTransparency = 1
UpSliderValueLabel.Parent = UpSliderFrame

local UpSliderTrack = Instance.new("TextButton")
UpSliderTrack.Name = "Track"
UpSliderTrack.Size = UDim2.new(0.9, 0, 0, 6)
UpSliderTrack.Position = UDim2.new(0.05, 0, 0, 36)
UpSliderTrack.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
UpSliderTrack.BorderSizePixel = 0
UpSliderTrack.Text = ""
UpSliderTrack.Parent = UpSliderFrame

local UpTrackCorner = Instance.new("UICorner")
UpTrackCorner.CornerRadius = UDim.new(0, 3)
UpTrackCorner.Parent = UpSliderTrack

local UpSliderFill = Instance.new("Frame")
UpSliderFill.Name = "Fill"
UpSliderFill.Size = UDim2.new(0.15, 0, 1, 0)
UpSliderFill.BackgroundColor3 = Color3.fromRGB(0, 180, 255)
UpSliderFill.BorderSizePixel = 0
UpSliderFill.Parent = UpSliderTrack

local UpFillCorner = Instance.new("UICorner")
UpFillCorner.CornerRadius = UDim.new(0, 3)
UpFillCorner.Parent = UpSliderFill

local UpSliderBtn = Instance.new("Frame")
UpSliderBtn.Name = "Button"
UpSliderBtn.Size = UDim2.new(0, 14, 0, 14)
UpSliderBtn.Position = UDim2.new(0.15, -7, 0.5, -7)
UpSliderBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
UpSliderBtn.BorderSizePixel = 0
UpSliderBtn.Parent = UpSliderTrack

local UpBtnCorner = Instance.new("UICorner")
UpBtnCorner.CornerRadius = UDim.new(1, 0)
UpBtnCorner.Parent = UpSliderBtn

local minDelay = 0.01
local maxDelay = 2.0
local isUpSliding = false

local function updateUpSlider(input)
    local trackWidth = UpSliderTrack.AbsoluteSize.X
    local mouseX = input.Position.X - UpSliderTrack.AbsolutePosition.X
    local percentage = math.clamp(mouseX / trackWidth, 0, 1)
    
    UpSliderFill.Size = UDim2.new(percentage, 0, 1, 0)
    UpSliderBtn.Position = UDim2.new(percentage, -7, 0.5, -7)
    
    local delayValue = minDelay + (percentage * (maxDelay - minDelay))
    config.upgradeDelay = delayValue
    UpSliderValueLabel.Text = string.format("%.2fs", delayValue)
end

UpSliderTrack.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        isUpSliding = true
        updateUpSlider(input)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if isUpSliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateUpSlider(input)
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        isUpSliding = false
    end
end)

-- SETTINGS TOGGLE ANIMATION
local onSettingsPage = false
SettingsBtn.MouseButton1Click:Connect(function()
    onSettingsPage = not onSettingsPage
    if onSettingsPage then
        MainPage:TweenPosition(UDim2.new(-1, 0, 0, 45), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        SettingsPage:TweenPosition(UDim2.new(0, 0, 0, 45), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        SettingsBtn.Text = "๐Ÿ "
    else
        MainPage:TweenPosition(UDim2.new(0, 0, 0, 45), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        SettingsPage:TweenPosition(UDim2.new(1, 0, 0, 45), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        SettingsBtn.Text = "โš™๏ธ"
    end
end)

-- TOGGLES GENERATOR
local function createModernToggle(name, labelText, positionY)
    local ButtonFrame = Instance.new("Frame")
    ButtonFrame.Name = name .. "_Frame"
    ButtonFrame.Size = UDim2.new(0.9, 0, 0, 38)
    ButtonFrame.Position = UDim2.new(0.05, 0, 0, positionY)
    ButtonFrame.BackgroundColor3 = Color3.fromRGB(42, 42, 42)
    ButtonFrame.BorderSizePixel = 0
    ButtonFrame.Parent = MainPage

    local BCorner = Instance.new("UICorner")
    BCorner.CornerRadius = UDim.new(0, 6)
    BCorner.Parent = ButtonFrame

    local Text = Instance.new("TextLabel")
    Text.Size = UDim2.new(0.7, 0, 1, 0)
    Text.Position = UDim2.new(0.05, 0, 0, 0)
    Text.Text = labelText
    Text.TextColor3 = Color3.fromRGB(200, 200, 200)
    Text.Font = Enum.Font.GothamSemibold
    Text.TextSize = 11
    Text.TextXAlignment = Enum.TextXAlignment.Left
    Text.BackgroundTransparency = 1
    Text.Parent = ButtonFrame

    local Indicator = Instance.new("Frame")
    Indicator.Size = UDim2.new(0, 11, 0, 11)
    Indicator.Position = UDim2.new(0.85, 0, 0.35, 0)
    Indicator.BackgroundColor3 = Color3.fromRGB(180, 60, 60)
    Indicator.BorderSizePixel = 0
    Indicator.Parent = ButtonFrame

    local ICorner = Instance.new("UICorner")
    ICorner.CornerRadius = UDim.new(1, 0)
    ICorner.Parent = Indicator

    local ClickTarget = Instance.new("TextButton")
    ClickTarget.Size = UDim2.new(1, 0, 1, 0)
    ClickTarget.BackgroundTransparency = 1
    ClickTarget.Text = ""
    ClickTarget.Parent = ButtonFrame

    return ClickTarget, Indicator
end

local IncomeClick, IncomeDot = createModernToggle("Income", "Auto Collect Money", 55)
local BuyClick, BuyDot = createModernToggle("Buy", "Auto Buy Infrastructure", 100)
local StandClick, StandDot = createModernToggle("Stand", "Upgrade Lemon Stand", 145)
local DepotClick, DepotDot = createModernToggle("Depot", "Upgrade Lemon Depot", 190)
local DashClick, DashDot = createModernToggle("Dash", "Upgrade Lemon Dash", 235)
local TradingClick, TradingDot = createModernToggle("Trading", "Upgrade Lemon Trading", 280)
local LabsClick, LabsDot = createModernToggle("Labs", "Upgrade Lemon Labs", 325)
local RoboticsClick, RoboticsDot = createModernToggle("Robotics", "Upgrade Lemon Robotics", 370) -- Added Robotics Button Layout
local FruitClick, FruitDot = createModernToggle("FruitPicker", "Auto Collect Fruit (TP)", 415) -- Shifted position up to fill gap cleanly

local isMinimized = false
MinimizeBtn.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    if isMinimized then
        MainFrame:TweenSize(UDim2.new(0, 260, 0, 40), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        MinimizeBtn.Text = "+"
    else
        MainFrame:TweenSize(UDim2.new(0, 260, 0, 600), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
        MinimizeBtn.Text = "-"
    end
end)

CloseBtn.MouseButton1Click:Connect(function()
    if shared.KillAutoBuy then pcall(shared.KillAutoBuy) end
    if shared.KillFruitPicker then pcall(shared.KillFruitPicker) end
    
    pcall(function()
        local character = LocalPlayer.Character
        if character then
            local humanoid = character:FindFirstChildOfClass("Humanoid")
            if humanoid then humanoid.WalkSpeed = 16 end
        end
    end)
    pcall(function() ScreenGui:Destroy() end)
end)

-- 1. MONEY COLLECT & STAND ALONE AUTO-CLICK ENGINE
task.spawn(function()
    while true do
        if not ScreenGui or not ScreenGui.Parent then break end
        if config.autoIncome then
            pcall(function()
                if not MyTycoon or not MyTycoon.Parent then
                    FindMyTycoon()
                end
                
                local currentGlobal = workspace:FindFirstChild("Tycoon" .. TycoonNumber)
                RemotesFolder = currentGlobal and currentGlobal:FindFirstChild("Remotes") or (MyTycoon and MyTycoon:FindFirstChild("Remotes"))
                IncomeEvent = RemotesFolder and RemotesFolder:FindFirstChild("WakeIncomeStream")

                if IncomeEvent and IncomeEvent:IsA("RemoteFunction") then
                    task.spawn(function() pcall(function() IncomeEvent:InvokeServer("LemonStand") end) end)
                    task.spawn(function() pcall(function() IncomeEvent:InvokeServer("LemonDepot") end) end)
                    task.spawn(function() pcall(function() IncomeEvent:InvokeServer("LemonDash") end) end)
                    task.spawn(function() pcall(function() IncomeEvent:InvokeServer("LemonTrading") end) end)
                    task.spawn(function() pcall(function() IncomeEvent:InvokeServer("LemonLabs") end) end)
                end

                local character = LocalPlayer.Character
                local rootPart = character and (character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("UpperTorso"))
                local cashDropsFolder = workspace:FindFirstChild("CashDrops")
                
                if rootPart and cashDropsFolder then
                    for _, cashDrop in ipairs(cashDropsFolder:GetChildren()) do
                        if cashDrop.Name == "CashDrop" and cashDrop:IsA("BasePart") then
                            firetouchinterest(rootPart, cashDrop, 0)
                            task.wait()
                            firetouchinterest(rootPart, cashDrop, 1)
                        end
                    end
                end
            end)
        end
        task.wait(config.incomeDelay)
    end
end)

-- 2. CENTRALIZED WORKING ORIGINAL AUTO BUY INFRASTRUCTURE
local activeBuyThread = nil
shared.KillAutoBuy = function()
    config.autoBuy = false
    if activeBuyThread then
        task.cancel(activeBuyThread)
        activeBuyThread = nil
    end
end

local function toggleAutoBuySystem(bool)
    config.autoBuy = bool
    if bool and GlobalPurchases then
        activeBuyThread = task.spawn(function()
            while config.autoBuy do
                pcall(function()
                    for _, obj in ipairs(GlobalPurchases:GetDescendants()) do
                        if not config.autoBuy then break end
                        
                        if obj and obj.Name == "Purchase" and (obj:IsA("RemoteFunction") or obj:IsA("RemoteEvent")) then
                            local buttonModel = obj.Parent
                            if buttonModel then
                                local targetPart = buttonModel:FindFirstChild("Head") 
                                    or buttonModel:FindFirstChild("Pad") 
                                    or buttonModel:FindFirstChild("Button")
                                    or buttonModel:FindFirstChildOfClass("BasePart")
                                
                                if targetPart and targetPart:IsA("BasePart") and targetPart.Transparency < 1 then
                                    pcall(function()
                                        if obj:IsA("RemoteFunction") then
                                            obj:InvokeServer(false)
                                        else
                                            obj:FireServer(false)
                                        end
                                    end)
                                end
                            end
                        end
                    end
                end)
                task.wait(0.15) 
            end
        end)
    else
        if activeBuyThread then
            task.cancel(activeBuyThread)
            activeBuyThread = nil
        end
    end
end

-- BACKGROUND PHONE AUTO-ACCEPT ENGINE
task.spawn(function()
    while true do
        if not ScreenGui or not ScreenGui.Parent then break end
        if config.phoneAutoAccept and RemotesFolder then
            pcall(function()
                local PhoneOffer = RemotesFolder:FindFirstChild("PhoneOffer")
                local SpecialIncome = RemotesFolder:FindFirstChild("SpecialIncome")
                local fire = firesignal or (syn and syn.firesignal)
                
                if fire then
                    if PhoneOffer then pcall(function() fire(PhoneOffer.OnClientEvent, true) end) end
                    if SpecialIncome then pcall(function() fire(SpecialIncome.OnClientEvent, "PhoneOffer", 19.68505631765) end) end
                end
                
                if PhoneOffer then
                    if PhoneOffer:IsA("RemoteEvent") then
                        PhoneOffer:FireServer("Accept")
                    elseif PhoneOffer:IsA("RemoteFunction") then
                        pcall(function() PhoneOffer:InvokeServer("Accept") end)
                    end
                end
            end)
        end
        task.wait(0.5)
    end
end)

-- 4. OPTIMIZED UPGRADE MANAGER WITH DYNAMIC DELAY SLIDER
task.spawn(function()
    while true do
        if not ScreenGui or not ScreenGui.Parent then break end
        if GlobalPurchases then
            pcall(function()
                if config.upgradeStand and GlobalPurchases:FindFirstChild("Lemon Stand") then
                    local model = GlobalPurchases["Lemon Stand"]:FindFirstChild("Lemon Stand")
                    local subModel = model and model:FindFirstChild("Lemon Stand")
                    local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                    if upgrade then pcall(function() upgrade:InvokeServer(1) end) end
                    task.wait(0.05)
                end
                if config.upgradeDepot and GlobalPurchases:FindFirstChild("Lemon Depot") then
                    local model = GlobalPurchases["Lemon Depot"]:FindFirstChild("Lemon Depot")
                    local subModel = model and model:FindFirstChild("Lemon Depot")
                    local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                    if upgrade then pcall(function() upgrade:InvokeServer(1) end) end
                    task.wait(0.05)
                end
                if config.upgradeDash then
                    local dashFolder = GlobalPurchases:FindFirstChild("Lemon Dash") or GlobalPurchases:FindFirstChild("LemonDash")
                    if dashFolder then
                        local model = dashFolder:FindFirstChild("Lemon Dash") or dashFolder:FindFirstChild("LemonDash")
                        local subModel = model and (model:FindFirstChild("Lemon Dash") or model:FindFirstChild("LemonDash"))
                        local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                        if upgrade then pcall(function() upgrade:InvokeServer(1) end) end
                    end
                    task.wait(0.05)
                end
                if config.upgradeTrading and GlobalPurchases:FindFirstChild("Lemon Trading") then
                    local model = GlobalPurchases["Lemon Trading"]:FindFirstChild("Lemon Trading")
                    local subModel = model and model:FindFirstChild("Lemon Trading")
                    local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                    if upgrade then pcall(function() upgrade:InvokeServer(1) end) end
                    task.wait(0.05)
                end
                if config.upgradeLabs and GlobalPurchases:FindFirstChild("Lemon Labs") then
                    local model = GlobalPurchases["Lemon Labs"]:FindFirstChild("Lemon Labs")
                    local subModel = model and model:FindFirstChild("Lemon Labs")
                    local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                    if upgrade then pcall(function() upgrade:InvokeServer(5) end) end
                    task.wait(0.05)
                end
                if config.upgradeRobotics and GlobalPurchases:FindFirstChild("Lemon Robotics") then
                    local model = GlobalPurchases["Lemon Robotics"]:FindFirstChild("Lemon Robotics")
                    local subModel = model and model:FindFirstChild("Lemon Robotics")
                    local upgrade = subModel and subModel:FindFirstChild("Upgrade")
                    if upgrade then pcall(function() upgrade:InvokeServer(25) end) end
                    task.wait(0.05)
                end
            end)
        end
        task.wait(config.upgradeDelay) 
    end
end)

-- 5. RESTORED PHYSICAL TP HARVEST PIPELINE (WITH STRICT TREE-ONLY FRUIT TARGETING FILTER)
local activeFruitThread = nil
shared.KillFruitPicker = function()
    config.autoPickFruit = false
    if activeFruitThread then
        task.cancel(activeFruitThread)
        activeFruitThread = nil
    end
end

local function toggleFruitSystem(bool)
    config.autoPickFruit = bool
    if bool then
        activeFruitThread = task.spawn(function()
            while config.autoPickFruit do
                pcall(function()
                    local character = LocalPlayer.Character
                    local rootPart = character and (character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("UpperTorso"))
                    if not rootPart then return end

                    for _, fruitObj in ipairs(workspace:GetDescendants()) do
                        if not config.autoPickFruit then break end
                        
                        local objName = string.lower(fruitObj.Name)
                        local parentName = fruitObj.Parent and string.lower(fruitObj.Parent.Name) or ""
                        local grandName = (fruitObj.Parent and fruitObj.Parent.Parent) and string.lower(fruitObj.Parent.Parent.Name) or ""
                        local fullPath = string.lower(fruitObj:GetFullName())
                        
                        local isValidHarvestable = (
                            string.find(objName, "fruit") or string.find(parentName, "fruit") or string.find(grandName, "fruit") or
                            string.find(objName, "lemon") or string.find(parentName, "lemon") or string.find(grandName, "lemon") or
                            string.find(objName, "drop") or string.find(parentName, "drop") or
                            string.find(objName, "tree") or string.find(parentName, "tree")
                        )
                        
                        if isValidHarvestable then
                            -- STRICT PROTECTION FILTER: Ensure it belongs under a Constant/Trees folder path and isn't a shop prop
                            if not string.find(fullPath, "constant") or not string.find(fullPath, "trees") then
                                continue
                            end
                            
                            -- Skip UI elements/buttons/shop items
                            if string.find(fullPath, "purchases") or string.find(fullPath, "buttons") or string.find(fullPath, "multiplier") or string.find(fullPath, "billboard") then
                                continue
                            end
                            
                            local targetPos = nil
                            local triggerInstance = nil
                            
                            if fruitObj:IsA("ClickDetector") or fruitObj:IsA("ProximityPrompt") then
                                triggerInstance = fruitObj
                                if fruitObj.Parent:IsA("BasePart") then
                                    targetPos = fruitObj.Parent.CFrame
                                end
                            elseif fruitObj:IsA("BasePart") then
                                local cd = fruitObj:FindFirstChildOfClass("ClickDetector")
                                local pp = fruitObj:FindFirstChildOfClass("ProximityPrompt")
                                if cd or pp then
                                    triggerInstance = cd or pp
                                    targetPos = fruitObj.CFrame
                                end
                            end
                            
                            if targetPos and triggerInstance then
                                local savedCFrame = rootPart.CFrame
                                
                                -- Physical TP loop sequence
                                rootPart.CFrame = targetPos
                                task.wait(0.08)
                                
                                if triggerInstance:IsA("ClickDetector") then
                                    fireclickdetector(triggerInstance)
                                else
                                    fireproximityprompt(triggerInstance)
                                end
                                
                                -- FIX: Added verification pause if prompt/object still exists to prevent skipping
                                if fruitObj.Parent and triggerInstance.Parent then
                                    task.wait(0.06) 
                                end
                                
                                task.wait(0.08)
                                rootPart.CFrame = savedCFrame
                                task.wait(0.1)
                            end
                        end
                    end
                end)
                task.wait(0.5) 
            end
        end)
    else
        if activeFruitThread then
            task.cancel(activeFruitThread)
            activeFruitThread = nil
        end
    end
end

-- CONFIGURATION HANDLERS
local function handleToggle(configKey, dotElement)
    if configKey == "autoBuy" then
        local targetState = not config.autoBuy
        dotElement.BackgroundColor3 = targetState and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(180, 60, 60)
        toggleAutoBuySystem(targetState)
    elseif configKey == "autoPickFruit" then
        local targetState = not config.autoPickFruit
        dotElement.BackgroundColor3 = targetState and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(180, 60, 60)
        toggleFruitSystem(targetState)
    else
        config[configKey] = not config[configKey]
        dotElement.BackgroundColor3 = config[configKey] and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(180, 60, 60)
    end
end

IncomeClick.MouseButton1Click:Connect(function() handleToggle("autoIncome", IncomeDot) end)
BuyClick.MouseButton1Click:Connect(function() handleToggle("autoBuy", BuyDot) end)
StandClick.MouseButton1Click:Connect(function() handleToggle("upgradeStand", StandDot) end)
DepotClick.MouseButton1Click:Connect(function() handleToggle("upgradeDepot", DepotDot) end)
DashClick.MouseButton1Click:Connect(function() handleToggle("upgradeDash", DashDot) end)
TradingClick.MouseButton1Click:Connect(function() handleToggle("upgradeTrading", TradingDot) end)
LabsClick.MouseButton1Click:Connect(function() handleToggle("upgradeLabs", LabsDot) end)
RoboticsClick.MouseButton1Click:Connect(function() handleToggle("upgradeRobotics", RoboticsDot) end) -- Robotics connection
FruitClick.MouseButton1Click:Connect(function() handleToggle("autoPickFruit", FruitDot) end)
๐ŸŽฎ Similar Scripts
๐Ÿ’ฌ Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game Sell Lemons ๐Ÿ‹
TypeKeyless
Authoralexriderr
Views10
Likes0
PublishedJun 1, 2026
๐ŸŽฎ Play Game on Roblox
๐Ÿ• Recent Scripts
The Everything Factory Auto Collect Script OP
The Everything Factory Auto Collect Script OP
The Everything Factory โ€ข ๐Ÿ‘ 7
Keyless
Sell Lemons Auto Buy Auto Fruit Script Keyless
Sell Lemons Auto Buy Auto Fruit Script Keyless
Sell Lemons ๐Ÿ‹ โ€ข ๐Ÿ‘ 9
Keyless
Dumpling Squishy Race Auto Farm Wins Script
Dumpling Squishy Race Auto Farm Wins Script
Dumpling Squishy Race๐ŸฅŸ โ€ข ๐Ÿ‘ 25
Keyless
Guess my Country Auto Guess script OP keyless
Guess my Country Auto Guess script OP keyless
[๐ŸŒ]Guess My Country! โ€ข ๐Ÿ‘ 25
Keyless
Free gamepass script on client
Free gamepass script on client
Hide and Seek Extreme โ€ข ๐Ÿ‘ 25
Keyless