What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

Plants Vs Brainrots Auto Buy + Auto Equip Best [OPEN SRC]

Version / Update: v1.0.0
Download / Script Link
_G.SeedBuyerToggle = _G.SeedBuyerToggle or false
_G.GearBuyerToggle = _G.GearBuyerToggle or false
_G.MiscToggle = _G.MiscToggle or false

local AutoBuyer = {}
AutoBuyer.Settings = {
seedEnabled = false,
gearEnabled = false,
miscEnabled = false,
seedBlacklist = {},
gearBlacklist = {},
delay = 0.5
}

AutoBuyer.Seeds = {
"Cactus Seed",
"Dragon Fruit Seed",
"Eggplant Seed",
"Watermelon Seed",
"Strawberry Seed",
"Pumpkin Seed",
"Grape Seed",
"Cocotank Seed",
"Carnivorous Plant Seed",
"Mr Carrot Seed",
"Tomatrio Seed",
"Shroombino Seed",
"Mango Seed",
"King Limone Seed"
}

AutoBuyer.Gear = {
"Water Bucket",
"Frost Grenade",
"Banana Gun",
"Frost Blower",
"Carrot Launcher"
}

function AutoBuyer:CreateGUI()
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "AutoBuyer"
ScreenGui.Parent = game:GetService("CoreGui")

local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 300, 0, 400)
MainFrame.Position = UDim2.new(0.5, -150, 0.5, -200)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui

local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 8)
Corner.Parent = MainFrame

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -20, 0, 30)
Title.Position = UDim2.new(0, 10, 0, 5)
Title.BackgroundTransparency = 1
Title.Text = "PVB Auto Buy Menu"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 16
Title.Font = Enum.Font.GothamBold
Title.Parent = MainFrame

local TabFrame = Instance.new("Frame")
TabFrame.Size = UDim2.new(1, -20, 0, 35)
TabFrame.Position = UDim2.new(0, 10, 0, 40)
TabFrame.BackgroundTransparency = 1
TabFrame.Parent = MainFrame

local tabs = {"Seeds", "Gear", "Misc"}
local tabButtons = {}

for i, tabName in ipairs(tabs) do
local tabBtn = Instance.new("TextButton")
tabBtn.Size = UDim2.new(0.33, -2, 1, 0)
tabBtn.Position = UDim2.new(0.33 * (i-1), 2, 0, 0)
tabBtn.BackgroundColor3 = i == 1 and Color3.fromRGB(80, 150, 80) or Color3.fromRGB(60, 60, 75)
tabBtn.BorderSizePixel = 0
tabBtn.Text = tabName
tabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
tabBtn.TextSize = 12
tabBtn.Font = Enum.Font.GothamBold
tabBtn.Parent = TabFrame

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 4)
corner.Parent = tabBtn

tabButtons[tabName] = tabBtn
end

local ContentFrame = Instance.new("Frame")
ContentFrame.Size = UDim2.new(1, -20, 1, -105)
ContentFrame.Position = UDim2.new(0, 10, 0, 80)
ContentFrame.BackgroundTransparency = 1
ContentFrame.Parent = MainFrame

local Credits = Instance.new("TextLabel")
Credits.Size = UDim2.new(1, -20, 0, 15)
Credits.Position = UDim2.new(0, 10, 1, -20)
Credits.BackgroundTransparency = 1
Credits.Text = "Credits: TheBoyWhoCried"
Credits.TextColor3 = Color3.fromRGB(150, 150, 150)
Credits.TextSize = 10
Credits.Font = Enum.Font.Gotham
Credits.TextXAlignment = Enum.TextXAlignment.Center
Credits.Parent = MainFrame

local SeedsTab = self:CreateSeedsTab(ContentFrame)
local GearTab = self:CreateGearTab(ContentFrame)
local MiscTab = self:CreateMiscTab(ContentFrame)

for tabName, tabBtn in pairs(tabButtons) do
tabBtn.MouseButton1Click:Connect(function()
self:SwitchTab(tabName, tabButtons, {Seeds = SeedsTab, Gear = GearTab, Misc = MiscTab})
end)
end

self.UI = {
ScreenGui = ScreenGui,
SeedsTab = SeedsTab,
GearTab = GearTab,
MiscTab = MiscTab
}
end

function AutoBuyer:CreateSeedsTab(parent)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundTransparency = 1
frame.Parent = parent

local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(1, 0, 0, 35)
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.BorderSizePixel = 0
toggleBtn.Text = "Start Buying Seeds"
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextSize = 14
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Parent = frame

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = toggleBtn

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, -45)
scrollFrame.Position = UDim2.new(0, 0, 0, 40)
scrollFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 55)
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 4
scrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
scrollFrame.Parent = frame

local scrollCorner = Instance.new("UICorner")
scrollCorner.CornerRadius = UDim.new(0, 6)
scrollCorner.Parent = scrollFrame

local listLayout = Instance.new("UIListLayout")
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 2)
listLayout.Parent = scrollFrame

for i, seed in ipairs(self.Seeds) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -10, 0, 30)
btn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
btn.BorderSizePixel = 0
btn.Text = seed
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 11
btn.Font = Enum.Font.Gotham
btn.LayoutOrder = i
btn.Parent = scrollFrame

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 4)
btnCorner.Parent = btn

btn.MouseButton1Click:Connect(function()
self:ToggleSeedBlacklist(seed, btn)
end)
end

toggleBtn.MouseButton1Click:Connect(function()
self:ToggleSeedBuying(toggleBtn)
end)

return frame
end

function AutoBuyer:CreateGearTab(parent)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundTransparency = 1
frame.Visible = false
frame.Parent = parent

local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(1, 0, 0, 35)
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.BorderSizePixel = 0
toggleBtn.Text = "Start Buying Gear"
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextSize = 14
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Parent = frame

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = toggleBtn

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, -45)
scrollFrame.Position = UDim2.new(0, 0, 0, 40)
scrollFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 55)
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 4
scrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
scrollFrame.Parent = frame

local scrollCorner = Instance.new("UICorner")
scrollCorner.CornerRadius = UDim.new(0, 6)
scrollCorner.Parent = scrollFrame

local listLayout = Instance.new("UIListLayout")
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 2)
listLayout.Parent = scrollFrame

for i, gear in ipairs(self.Gear) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -10, 0, 30)
btn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
btn.BorderSizePixel = 0
btn.Text = gear
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 11
btn.Font = Enum.Font.Gotham
btn.LayoutOrder = i
btn.Parent = scrollFrame

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 4)
btnCorner.Parent = btn

btn.MouseButton1Click:Connect(function()
self:ToggleGearBlacklist(gear, btn)
end)
end

toggleBtn.MouseButton1Click:Connect(function()
self:ToggleGearBuying(toggleBtn)
end)

return frame
end

function AutoBuyer:CreateMiscTab(parent)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundTransparency = 1
frame.Visible = false
frame.Parent = parent

local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(1, 0, 0, 35)
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.BorderSizePixel = 0
toggleBtn.Text = "Start Auto Equip Best"
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextSize = 14
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Parent = frame

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = toggleBtn

local infoLabel = Instance.new("TextLabel")
infoLabel.Size = UDim2.new(1, 0, 0, 60)
infoLabel.Position = UDim2.new(0, 0, 0, 50)
infoLabel.BackgroundTransparency = 1
infoLabel.Text = "Auto equips best brainrots every 30 seconds"
infoLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
infoLabel.TextSize = 12
infoLabel.Font = Enum.Font.Gotham
infoLabel.TextWrapped = true
infoLabel.Parent = frame

toggleBtn.MouseButton1Click:Connect(function()
self:ToggleMisc(toggleBtn)
end)

return frame
end

function AutoBuyer:SwitchTab(tabName, tabButtons, tabs)
for name, btn in pairs(tabButtons) do
if name == tabName then
btn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
else
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
end
end

for name, tab in pairs(tabs) do
tab.Visible = (name == tabName)
end
end

function AutoBuyer:ToggleSeedBlacklist(seed, button)
if table.find(self.Settings.seedBlacklist, seed) then
for i, v in ipairs(self.Settings.seedBlacklist) do
if v == seed then
table.remove(self.Settings.seedBlacklist, i)
break
end
end
button.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
button.Text = seed
else
table.insert(self.Settings.seedBlacklist, seed)
button.BackgroundColor3 = Color3.fromRGB(150, 80, 80)
button.Text = seed .. " (BLACKLISTED)"
end
end

function AutoBuyer:ToggleGearBlacklist(gear, button)
if table.find(self.Settings.gearBlacklist, gear) then
for i, v in ipairs(self.Settings.gearBlacklist) do
if v == gear then
table.remove(self.Settings.gearBlacklist, i)
break
end
end
button.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
button.Text = gear
else
table.insert(self.Settings.gearBlacklist, gear)
button.BackgroundColor3 = Color3.fromRGB(150, 80, 80)
button.Text = gear .. " (BLACKLISTED)"
end
end

function AutoBuyer:ToggleSeedBuying(toggleBtn)
_G.SeedBuyerToggle = not _G.SeedBuyerToggle
self.Settings.seedEnabled = _G.SeedBuyerToggle

if self.Settings.seedEnabled then
toggleBtn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
toggleBtn.Text = "Stop Buying Seeds"
self:StartSeedBuying()
else
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.Text = "Start Buying Seeds"
end
end

function AutoBuyer:ToggleGearBuying(toggleBtn)
_G.GearBuyerToggle = not _G.GearBuyerToggle
self.Settings.gearEnabled = _G.GearBuyerToggle

if self.Settings.gearEnabled then
toggleBtn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
toggleBtn.Text = "Stop Buying Gear"
self:StartGearBuying()
else
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.Text = "Start Buying Gear"
end
end

function AutoBuyer:ToggleMisc(toggleBtn)
_G.MiscToggle = not _G.MiscToggle
self.Settings.miscEnabled = _G.MiscToggle

if self.Settings.miscEnabled then
toggleBtn.BackgroundColor3 = Color3.fromRGB(80, 150, 80)
toggleBtn.Text = "Stop Auto Equip"
self:StartMisc()
else
toggleBtn.BackgroundColor3 = Color3.fromRGB(220, 80, 80)
toggleBtn.Text = "Start Auto Equip Best"
end
end

function AutoBuyer:StartSeedBuying()
task.spawn(function()
while _G.SeedBuyerToggle and self.Settings.seedEnabled do
for _, seed in ipairs(self.Seeds) do
if not _G.SeedBuyerToggle or not self.Settings.seedEnabled then
break
end

if not table.find(self.Settings.seedBlacklist, seed) then
self:BuySeed(seed)
task.wait(self.Settings.delay)
end
end
task.wait(0.1)
end
end)
end

function AutoBuyer:StartGearBuying()
task.spawn(function()
while _G.GearBuyerToggle and self.Settings.gearEnabled do
for _, gear in ipairs(self.Gear) do
if not _G.GearBuyerToggle or not self.Settings.gearEnabled then
break
end

if not table.find(self.Settings.gearBlacklist, gear) then
self:BuyGear(gear)
task.wait(self.Settings.delay)
end
end
task.wait(0.1)
end
end)
end

function AutoBuyer:StartMisc()
task.spawn(function()
while _G.MiscToggle and self.Settings.miscEnabled do
self:EquipBest()
task.wait(30)
end
end)
end

function AutoBuyer:BuySeed(seedName)
local args = {seedName, true}
local success = pcall(function()
game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("BuyItem"):FireServer(unpack(args))
end)

if not success then
warn("Failed to buy: " .. seedName)
end
end

function AutoBuyer:BuyGear(gearName)
local args = {gearName, true}
local success = pcall(function()
game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("BuyGear"):FireServer(unpack(args))
end)

if not success then
warn("Failed to buy gear: " .. gearName)
end
end

function AutoBuyer:EquipBest()
local success = pcall(function()
game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("EquipBestBrainrots"):FireServer()
end)

if not success then
warn("Failed to equip best brainrots")
end
end

function AutoBuyer:Initialize()
self:CreateGUI()
end

AutoBuyer:Initialize()
[ View More ]
ab57c3b0-d2ee-4c72-b3b1-86ca08c24bf5.webp


Seeds Tab:Automatically buys 14 different plant seeds (Cactus, Dragon Fruit, Watermelon, etc.)Click any seed to blacklist it (won't buy that one)Toggle on/off to start/stop buyingGear Tab:Automatically buys 5 different gear items (Water Bucket, Frost Grenade, Banana Gun, etc.)Click any gear to blacklist itToggle on/off to start/stop buyingMisc Tab:Automatically equips your best brainrots every 30 secondsToggle on/off to start/stop
 
Works on mobile
  1. Yes
Back
Top