--================================================================== -- 🍋 LEMON HUB — modern auto-farm for "Sell Lemons" -- Tabbed UI. RightCtrl hides, — minimizes, ✕ closes. -- _G.LemonFarm.Destroy() removes it. Re-run after teleport/rejoin. --================================================================== if _G.LemonFarm and _G.LemonFarm.Destroy then pcall(_G.LemonFarm.Destroy) end local Players=game:GetService("Players") local CollectionService=game:GetService("CollectionService") local UserInputService=game:GetService("UserInputService") local TweenService=game:GetService("TweenService") local RS=game:GetService("ReplicatedStorage") local VirtualUser=game:GetService("VirtualUser") local lp=Players.LocalPlayer local POWERS={"UpgradeStack","BuyNext","Manage","WalkSpeed","ClickFruitValue"} local function getMyTycoon() for _,f in ipairs(workspace:GetChildren()) do if f:IsA("Folder") and f.Name:match("^Tycoon%d+$") then local o=f:FindFirstChild("Owner") if o and o:IsA("ObjectValue") and o.Value==lp then return f end end end end local function rem(myT,name) if myT and myT:FindFirstChild("Remotes") then return myT.Remotes:FindFirstChild(name) end end local S={upgrade=false,buy=false,drops=false,click=false,rebirth=false,ascend=false,evolve=false, powers=false,wake=false,offers=false,offline=false,mini=false,antiafk=false, cUp=0,cBuy=0,cDrop=0,cMini=0} local ACCENT=Color3.fromRGB(120,220,90) local ACCENT2=Color3.fromRGB(255,214,60) local BG=Color3.fromRGB(18,19,24) local BG2=Color3.fromRGB(26,28,35) local BG3=Color3.fromRGB(34,37,46) local TXT=Color3.fromRGB(236,238,243) local SUB=Color3.fromRGB(150,155,168) local function corner(p,r) local c=Instance.new("UICorner") c.CornerRadius=UDim.new(0,r) c.Parent=p return c end local function pad(p,t,b,l,r) local u=Instance.new("UIPadding") u.PaddingTop=UDim.new(0,t) u.PaddingBottom=UDim.new(0,b) u.PaddingLeft=UDim.new(0,l) u.PaddingRight=UDim.new(0,r) u.Parent=p return u end local function gradient(p,c1,c2,rot) local g=Instance.new("UIGradient") g.Color=ColorSequence.new(c1,c2) g.Rotation=rot or 0 g.Parent=p return g end local parent=(gethui and gethui()) or game:GetService("CoreGui") local gui=Instance.new("ScreenGui"); gui.Name="LemonHub"; gui.ResetOnSpawn=false gui.ZIndexBehavior=Enum.ZIndexBehavior.Sibling; gui.IgnoreGuiInset=true; gui.Parent=parent local main=Instance.new("Frame"); main.Size=UDim2.fromOffset(500,330); main.Position=UDim2.fromScale(0.5,0.5) main.AnchorPoint=Vector2.new(0.5,0.5); main.BackgroundColor3=BG; main.BorderSizePixel=0; main.ClipsDescendants=true; main.Parent=gui corner(main,16) local mst=Instance.new("UIStroke",main); mst.Color=Color3.fromRGB(60,64,76); mst.Thickness=1; mst.Transparency=0.2 local shadow=Instance.new("ImageLabel"); shadow.BackgroundTransparency=1; shadow.Image="rbxassetid://5554236805" shadow.ImageColor3=Color3.new(0,0,0); shadow.ImageTransparency=0.45; shadow.ScaleType=Enum.ScaleType.Slice shadow.SliceCenter=Rect.new(23,23,277,277); shadow.Size=UDim2.new(1,40,1,40); shadow.Position=UDim2.fromOffset(-20,-16) shadow.ZIndex=0; shadow.Parent=main local header=Instance.new("Frame"); header.Size=UDim2.new(1,0,0,56); header.BackgroundColor3=BG2; header.BorderSizePixel=0; header.Parent=main corner(header,16) local hfix=Instance.new("Frame"); hfix.Size=UDim2.new(1,0,0,16); hfix.Position=UDim2.new(0,0,1,-16); hfix.BackgroundColor3=BG2; hfix.BorderSizePixel=0; hfix.Parent=header local logo=Instance.new("TextLabel"); logo.Size=UDim2.fromOffset(40,40); logo.Position=UDim2.fromOffset(14,8); logo.BackgroundTransparency=1 logo.Font=Enum.Font.GothamBold; logo.Text="🍋"; logo.TextSize=28; logo.Parent=header local titleC=Instance.new("TextLabel"); titleC.Size=UDim2.fromOffset(200,22); titleC.Position=UDim2.fromOffset(58,11); titleC.BackgroundTransparency=1 titleC.Font=Enum.Font.GothamBold; titleC.TextSize=19; titleC.TextColor3=TXT; titleC.Text="Lemon Hub"; titleC.TextXAlignment=Enum.TextXAlignment.Left; titleC.Parent=header gradient(titleC,ACCENT2,ACCENT,0) local cashL=Instance.new("TextLabel"); cashL.Size=UDim2.fromOffset(280,16); cashL.Position=UDim2.fromOffset(58,32); cashL.BackgroundTransparency=1 cashL.Font=Enum.Font.GothamMedium; cashL.TextSize=12; cashL.TextColor3=SUB; cashL.Text="—"; cashL.TextXAlignment=Enum.TextXAlignment.Left; cashL.Parent=header local function hbtn(txt,x) local b=Instance.new("TextButton"); b.Size=UDim2.fromOffset(28,28); b.Position=UDim2.new(1,x,0,14) b.BackgroundColor3=BG3; b.Text=txt; b.TextColor3=TXT; b.Font=Enum.Font.GothamBold; b.TextSize=15; b.AutoButtonColor=true; b.Parent=header; corner(b,8); return b end local closeB=hbtn("✕",-40); local minB=hbtn("—",-74) local body=Instance.new("Frame"); body.Size=UDim2.new(1,0,1,-56); body.Position=UDim2.fromOffset(0,56); body.BackgroundTransparency=1; body.Parent=main local side=Instance.new("Frame"); side.Size=UDim2.new(0,140,1,0); side.BackgroundColor3=BG2; side.BorderSizePixel=0; side.Parent=body pad(side,12,12,10,10) local sl=Instance.new("UIListLayout",side); sl.Padding=UDim.new(0,6); sl.SortOrder=Enum.SortOrder.LayoutOrder local content=Instance.new("Frame"); content.Size=UDim2.new(1,-140,1,0); content.Position=UDim2.fromOffset(140,0); content.BackgroundTransparency=1; content.Parent=body local tabs={}; local pages={}; local activeTab=nil local function selectTab(name) activeTab=name for n,m in pairs(tabs) do local on=(n==name) TweenService:Create(m.btn,TweenInfo.new(0.18),{BackgroundColor3=on and BG3 or BG2}):Play() m.accent.Visible=on m.lbl.TextColor3=on and TXT or SUB end for n,p in pairs(pages) do p.Visible=(n==name) end end local tabOrder=0 local function makeTab(name,icon) tabOrder+=1 local b=Instance.new("TextButton"); b.Size=UDim2.new(1,0,0,40); b.BackgroundColor3=BG2; b.AutoButtonColor=false b.Text=""; b.LayoutOrder=tabOrder; b.Parent=side; corner(b,10) local acc=Instance.new("Frame"); acc.Size=UDim2.fromOffset(3,20); acc.Position=UDim2.fromOffset(0,10) acc.BackgroundColor3=ACCENT; acc.BorderSizePixel=0; acc.Visible=false; acc.Parent=b; corner(acc,2) local lbl=Instance.new("TextLabel"); lbl.Size=UDim2.new(1,-16,1,0); lbl.Position=UDim2.fromOffset(14,0) lbl.BackgroundTransparency=1; lbl.Font=Enum.Font.GothamMedium; lbl.TextSize=13.5; lbl.TextColor3=SUB lbl.Text=icon.." "..name; lbl.TextXAlignment=Enum.TextXAlignment.Left; lbl.Parent=b tabs[name]={btn=b,accent=acc,lbl=lbl} b.MouseEnter:Connect(function() if activeTab~=name then b.BackgroundColor3=BG3 end end) b.MouseLeave:Connect(function() if activeTab~=name then b.BackgroundColor3=BG2 end end) b.MouseButton1Click:Connect(function() selectTab(name) end) local page=Instance.new("ScrollingFrame"); page.Size=UDim2.new(1,0,1,0); page.BackgroundTransparency=1; page.BorderSizePixel=0 page.ScrollBarThickness=3; page.ScrollBarImageColor3=ACCENT; page.CanvasSize=UDim2.new(); page.AutomaticCanvasSize=Enum.AutomaticSize.Y page.Visible=false; page.Parent=content; pad(page,14,14,16,14) local pl=Instance.new("UIListLayout",page); pl.Padding=UDim.new(0,9); pl.SortOrder=Enum.SortOrder.LayoutOrder pages[name]=page return page end local rowOrder=0 local function makeToggle(page,label,desc,key) rowOrder+=1 local row=Instance.new("Frame"); row.Size=UDim2.new(1,0,0,46); row.BackgroundColor3=BG2; row.BorderSizePixel=0; row.LayoutOrder=rowOrder; row.Parent=page corner(row,10) local st=Instance.new("UIStroke",row); st.Color=Color3.fromRGB(46,49,60); st.Thickness=1; st.Transparency=0.4 local t=Instance.new("TextLabel"); t.Size=UDim2.new(1,-70,0,18); t.Position=UDim2.fromOffset(12,6); t.BackgroundTransparency=1 t.Font=Enum.Font.GothamMedium; t.TextSize=13.5; t.TextColor3=TXT; t.Text=label; t.TextXAlignment=Enum.TextXAlignment.Left; t.Parent=row local d=Instance.new("TextLabel"); d.Size=UDim2.new(1,-70,0,13); d.Position=UDim2.fromOffset(12,25); d.BackgroundTransparency=1 d.Font=Enum.Font.Gotham; d.TextSize=10.5; d.TextColor3=SUB; d.Text=desc; d.TextXAlignment=Enum.TextXAlignment.Left; d.Parent=row local sw=Instance.new("Frame"); sw.Size=UDim2.fromOffset(44,24); sw.Position=UDim2.new(1,-56,0.5,-12); sw.BackgroundColor3=BG3; sw.BorderSizePixel=0; sw.Parent=row corner(sw,12) local knob=Instance.new("Frame"); knob.Size=UDim2.fromOffset(18,18); knob.Position=UDim2.fromOffset(3,3); knob.BackgroundColor3=Color3.fromRGB(245,246,250); knob.BorderSizePixel=0; knob.Parent=sw corner(knob,9) local btn=Instance.new("TextButton"); btn.Size=UDim2.fromScale(1,1); btn.BackgroundTransparency=1; btn.Text=""; btn.Parent=row local function render() local on=S[key] TweenService:Create(sw,TweenInfo.new(0.18),{BackgroundColor3=on and ACCENT or BG3}):Play() TweenService:Create(knob,TweenInfo.new(0.18,Enum.EasingStyle.Back),{Position=on and UDim2.fromOffset(23,3) or UDim2.fromOffset(3,3)}):Play() TweenService:Create(st,TweenInfo.new(0.18),{Color=on and ACCENT or Color3.fromRGB(46,49,60)}):Play() end btn.MouseButton1Click:Connect(function() S[key]=not S[key]; render() end) render() end local function sectionInfo(page,text) rowOrder+=1 local l=Instance.new("TextLabel"); l.Size=UDim2.new(1,0,0,0); l.AutomaticSize=Enum.AutomaticSize.Y; l.BackgroundTransparency=1 l.Font=Enum.Font.Gotham; l.TextSize=11.5; l.TextColor3=SUB; l.TextWrapped=true; l.RichText=true l.TextXAlignment=Enum.TextXAlignment.Left; l.Text=text; l.LayoutOrder=rowOrder; l.Parent=page end local pFarm=makeTab("Farm","🌱") makeToggle(pFarm,"Auto Upgrade","Bulk-upgrades all income sources","upgrade") makeToggle(pFarm,"Auto Buy","Buys unlocked tycoon buttons","buy") makeToggle(pFarm,"Auto Collect Drops","Instantly grabs cash drops","drops") makeToggle(pFarm,"Auto Click Fruit","Auto-clicks the lemon trees","click") local pPrest=makeTab("Prestige","🔼") makeToggle(pPrest,"Auto Rebirth","Rebirths for investors when able","rebirth") makeToggle(pPrest,"Auto Ascend","Ascends when progress is full","ascend") makeToggle(pPrest,"Auto Evolve","Evolves when able","evolve") makeToggle(pPrest,"Auto Power Upgrade","Levels UpgradeStack / BuyNext / etc","powers") sectionInfo(pPrest,"⚠ Ascend & Evolve reset your tycoon for permanent multipliers.") local pBonus=makeTab("Bonus","💎") makeToggle(pBonus,"Auto Wake Income","Keeps every earner producing","wake") makeToggle(pBonus,"Auto Phone Offers","Auto-accepts deal calls","offers") makeToggle(pBonus,"Auto Offline Cash","Claims free 2x offline (no Robux)","offline") makeToggle(pBonus,"Auto Minigame","Auto-wins LemonDash (5m cooldown)","mini") local pMisc=makeTab("Misc","⚙️") makeToggle(pMisc,"Anti-AFK","Never get idle-kicked","antiafk") local stats=Instance.new("TextLabel"); stats.Size=UDim2.new(1,0,0,0); stats.AutomaticSize=Enum.AutomaticSize.Y; stats.BackgroundTransparency=1 stats.Font=Enum.Font.Code; stats.TextSize=12; stats.TextColor3=ACCENT; stats.TextXAlignment=Enum.TextXAlignment.Left; stats.RichText=true; stats.LayoutOrder=99; stats.Text=""; stats.Parent=pMisc sectionInfo(pMisc,"RightCtrl hides the menu • drag the header to move") selectTab("Farm") do local drag,sp,si header.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then drag=true; sp=main.Position; si=i.Position i.Changed:Connect(function() if i.UserInputState==Enum.UserInputState.End then drag=false end end) end end) UserInputService.InputChanged:Connect(function(i) if drag and (i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch) then local dd=i.Position-si; main.Position=UDim2.new(sp.X.Scale,sp.X.Offset+dd.X,sp.Y.Scale,sp.Y.Offset+dd.Y) end end) end local mini=false minB.MouseButton1Click:Connect(function() mini=not mini TweenService:Create(main,TweenInfo.new(0.2,Enum.EasingStyle.Quad),{Size=mini and UDim2.fromOffset(500,56) or UDim2.fromOffset(500,330)}):Play() body.Visible=not mini end) UserInputService.InputBegan:Connect(function(i,gpe) if gpe then return end if i.KeyCode==Enum.KeyCode.RightControl then main.Visible=not main.Visible end end) local alive=true local function loop(iv,fn) task.spawn(function() while alive do pcall(fn) task.wait(iv) end end) end loop(0.25,function() if not S.upgrade then return end local myT=getMyTycoon() if not myT then return end for _,e in ipairs(CollectionService:GetTagged("Tycoon.Earner")) do if not S.upgrade then break end if e:IsDescendantOf(myT) then local r=e:FindFirstChild("Upgrade") if r and r:IsA("RemoteFunction") then local n=1 while alive and S.upgrade and n<=1e6 do if pcall(function() return r:InvokeServer(n) end) then S.cUp+=n; n*=2 else break end end end end end end) loop(0.35,function() if not S.buy then return end local myT=getMyTycoon() if not myT then return end for _,p in ipairs(CollectionService:GetTagged("Tycoon.Purchase")) do if not S.buy then break end if p:IsDescendantOf(myT) and p:GetAttribute("Enabled") and p:GetAttribute("Shown") and not p:GetAttribute("Purchased") then local r=p:FindFirstChild("Purchase") if r and r:IsA("RemoteFunction") then pcall(function() r:InvokeServer(false) end) if p:GetAttribute("Purchased") then S.cBuy+=1 end end end end end) task.spawn(function() local nv=RS.Core.RemoteSignal:FindFirstChild("CashDropService.New") local rd=RS.Core.RemoteRequest:FindFirstChild("CashDropService.Redeem") if nv and rd then nv.OnClientEvent:Connect(function(id) if S.drops and id~=nil then task.spawn(function() if pcall(function() return rd:InvokeServer(id) end) then S.cDrop+=1 end end) end end) end end) loop(0.2,function() if not (S.click and fireclickdetector) then return end local myT=getMyTycoon() if not myT then return end for _,d in ipairs(myT:GetDescendants()) do if not S.click then break end if d:IsA("ClickDetector") then pcall(fireclickdetector,d) end end end) loop(10,function() if not S.rebirth then return end local r=rem(getMyTycoon(),"Rebirth") if r then pcall(function() r:InvokeServer() end) end end) loop(8,function() if not S.ascend then return end local r=rem(getMyTycoon(),"Ascend") if r then pcall(function() r:InvokeServer() end) end end) loop(8,function() if not S.evolve then return end local r=rem(getMyTycoon(),"Evolve") if r then pcall(function() r:InvokeServer() end) end end) loop(0.5,function() if not S.powers then return end local r=rem(getMyTycoon(),"UpgradePowerLevel") if not r then return end for _,n in ipairs(POWERS) do if not S.powers then break end pcall(function() r:InvokeServer(n) end) end end) loop(8,function() if not S.wake then return end local myT=getMyTycoon() local r=rem(myT,"WakeIncomeStream") if not r then return end for _,e in ipairs(CollectionService:GetTagged("Tycoon.Earner")) do if e:IsDescendantOf(myT) then pcall(function() r:InvokeServer(e.Name) end) end end end) task.spawn(function() while alive do local myT=getMyTycoon() local ev=myT and rem(myT,"PhoneOffer") if ev and ev:IsA("RemoteEvent") and not ev:GetAttribute("_LH") then ev:SetAttribute("_LH",true) ev.OnClientEvent:Connect(function(v) if S.offers and type(v)=="number" then pcall(function() ev:FireServer("Accept") end) end end) end task.wait(2) end end) loop(20,function() if not S.offline then return end local r=rem(getMyTycoon(),"DoubleOfflineCash") if r then pcall(function() r:InvokeServer() end) end end) loop(5,function() if not S.mini then return end local sr=RS.Core.RemoteRequest:FindFirstChild("MinigameRaceService.Start") local er=RS.Core.RemoteRequest:FindFirstChild("MinigameRaceService.End") if not (sr and er) then return end local ok,res=pcall(function() return sr:InvokeServer() end) if ok and res then task.wait(0.25) pcall(function() er:InvokeServer(1) end) S.cMini+=1 end end) lp.Idled:Connect(function() if S.antiafk then pcall(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) end end) loop(0.4,function() local myT=getMyTycoon() local cash=lp:FindFirstChild("leaderstats") and lp.leaderstats:FindFirstChild("Cash") and lp.leaderstats.Cash.Value or "?" cashL.Text="💰 "..tostring(cash).." • "..(myT and myT.Name or "?") stats.Text=string.format("Upgrades %d\nBuys %d\nDrops %d\nRaces %d",S.cUp,S.cBuy,S.cDrop,S.cMini) end) closeB.MouseButton1Click:Connect(function() if _G.LemonFarm then _G.LemonFarm.Destroy() end end) _G.LemonFarm={Destroy=function() alive=false for k in pairs(S) do if type(S[k])=="boolean" then S[k]=false end end if gui then gui:Destroy() end end} print("[🍋 Lemon Hub] Loaded — modern UI. RightCtrl hides, ✕ closes.")