local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LP = Players.LocalPlayer local Stat = require(ReplicatedStorage:WaitForChild("Stat")) local _AB = false local _IM = false local _UV = true local function safeGet(statName) local ok, val = pcall(function() return Stat.Get(LP, statName) end) if ok and val then return val.Value end return nil end local function getPlayerState() local money = safeGet("Money") or 0 local plotNum = nil pcall(function() plotNum = LP.TempValues.Plot.Value end) return { money = money, plotNum = plotNum } end local function getPlotButtons() local state = getPlayerState() if not state.plotNum then return {} end local ok, plot = pcall(function() return workspace:WaitForChild("Plots"):FindFirstChild(tostring(state.plotNum)) end) if not ok or not plot then return {} end local bf = plot:FindFirstChild("Buttons") if not bf then return {} end local buttons = {} for _, btn in ipairs(bf:GetChildren()) do if btn:IsA("BasePart") then local pv = btn:FindFirstChild("Price") local dv = btn:FindFirstChild("UnlockedByButton") table.insert(buttons, { id = tonumber(btn.Name) or 0, part = btn, price = pv and pv.Value or 0, dep = dv and dv.Value or 0, bought = safeGet("Button" .. btn.Name) == true, position = btn.Position, }) end end return buttons end local function isDepMet(depId) if depId == 0 then return true end return safeGet("Button" .. depId) == true end local function getNextBuyableButton() local buttons = getPlotButtons() local state = getPlayerState() local buyable = {} for _, btn in ipairs(buttons) do if not btn.bought and isDepMet(btn.dep) and state.money >= btn.price then table.insert(buyable, btn) end end table.sort(buyable, function(a, b) return a.price < b.price end) return buyable[1] end local SG = Instance.new("ScreenGui", LP:WaitForChild("PlayerGui")) SG.Name = "LonelyHub_Official" SG.ResetOnSpawn = false local Main = Instance.new("Frame", SG) Main.Size = UDim2.new(0, 230, 0, 225) Main.Position = UDim2.new(0.5, -115, 0.5, -112) Main.BackgroundColor3 = Color3.fromRGB(15, 15, 20) Main.BorderSizePixel = 0 Main.Active = true Main.Draggable = true local Corner = Instance.new("UICorner", Main) Corner.CornerRadius = UDim.new(0, 10) local Title = Instance.new("TextLabel", Main) Title.Size = UDim2.new(1, -40, 0, 45) Title.Position = UDim2.new(0, 10, 0, 0) Title.BackgroundTransparency = 1 Title.Text = "LONELY HUB" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.TextXAlignment = Enum.TextXAlignment.Left local MinBtn = Instance.new("TextButton", Main) MinBtn.Size = UDim2.new(0, 30, 0, 30) MinBtn.Position = UDim2.new(1, -35, 0, 8) MinBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45) MinBtn.Text = "-" MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255) MinBtn.Font = Enum.Font.GothamBold MinBtn.TextSize = 18 Instance.new("UICorner", MinBtn).CornerRadius = UDim.new(0, 6) MinBtn.MouseButton1Click:Connect(function() _UV = not _UV for _, child in ipairs(Main:GetChildren()) do if child ~= Title and child ~= MinBtn and child ~= Corner and child.ClassName ~= "UIStroke" then child.Visible = _UV end end Main.Size = _UV and UDim2.new(0, 230, 0, 225) or UDim2.new(0, 230, 0, 45) end) local function NewButton(text, y, callback) local b = Instance.new("TextButton", Main) b.Size = UDim2.new(0.85, 0, 0, 45) b.Position = UDim2.new(0.075, 0, 0, y) b.BackgroundColor3 = Color3.fromRGB(30, 30, 35) b.Text = text b.TextColor3 = Color3.fromRGB(220, 220, 220) b.Font = Enum.Font.GothamSemibold Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) b.MouseButton1Click:Connect(function() callback(b) end) return b end NewButton("Auto Buy", 55, function(btn) _AB = not _AB btn.BackgroundColor3 = _AB and Color3.fromRGB(0, 150, 80) or Color3.fromRGB(30, 30, 35) if _AB then task.spawn(function() while _AB do local nextBtn = getNextBuyableButton() if nextBtn then local char = LP.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if hrp then hrp.CFrame = CFrame.new(nextBtn.position + Vector3.new(0, 3, 0)) pcall(function() firetouchinterest(hrp, nextBtn.part, 0) firetouchinterest(hrp, nextBtn.part, 1) end) end end task.wait() end end) end end) NewButton("Infinite Money", 110, function(btn) _IM = not _IM btn.BackgroundColor3 = _IM and Color3.fromRGB(0, 150, 80) or Color3.fromRGB(30, 30, 35) end) NewButton("WalkSpeed", 165, function(btn) local h = LP.Character and LP.Character:FindFirstChild("Humanoid") if h then h.WalkSpeed = (h.WalkSpeed == 16) and 100 or 16 btn.BackgroundColor3 = (h.WalkSpeed == 100) and Color3.fromRGB(0, 150, 80) or Color3.fromRGB(30, 30, 35) end end) task.spawn(function() local ev = game:GetService("ReplicatedStorage"):WaitForChild("DropperEvents"):WaitForChild("CollectDrop") while task.wait(0.05) do if _IM then pcall(function() ev:FireServer(Vector3.new(-684.7, 1.9, 301.2), math.huge) end) end end end) UIS.InputBegan:Connect(function(i, p) if not p and i.KeyCode == Enum.KeyCode.RightShift then Main.Visible = not Main.Visible end end)