-- Combined Auto-Click + Auto-Upgrade + Auto-Rebirth GUI -- Auto-Click: fires PlusOne.Action:FireServer("click", nil) every 500ms -- Auto-Upgrade: buys affordable, unowned upgrades (EXCLUDES rebirth) -- Auto-Rebirth: triggers rebirth via Action:FireServer("upgrade", "rebirth") local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local StarterGui = game:GetService("StarterGui") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer if not player then local list = Players:GetPlayers() if #list > 0 then player = list[1] end end local playerGui = player and (player:FindFirstChild("PlayerGui") or player:WaitForChild("PlayerGui",5)) or StarterGui local GUI_NAME = "AutoPlusOneGUI2" local ex = playerGui:FindFirstChild(GUI_NAME); if ex then ex:Destroy() end if StarterGui:FindFirstChild(GUI_NAME) and StarterGui ~= playerGui then StarterGui:FindFirstChild(GUI_NAME):Destroy() end local PlusOne = ReplicatedStorage:WaitForChild("PlusOne", 5) local Action = PlusOne and PlusOne:FindFirstChild("Action") -- ===== Config ===== local CLICK_INTERVAL = 0.5 local UPGRADE_INTERVAL = 0.75 local REBIRTH_INTERVAL = 2.0 -- ================== local suffixes = {K=1e3, M=1e6, B=1e9, T=1e12, Qa=1e15, Qi=1e18, Sx=1e21, Sp=1e24, Oc=1e27, No=1e30, Dc=1e33} local function parseNum(s) if not s then return nil end s = tostring(s):gsub("%s","") local num, suf = s:match("^([%d%.]+)(%a*)$") if not num then return nil end local n = tonumber(num) if not n then return nil end if suf and suf ~= "" then local mult = suffixes[suf] if not mult then return nil end n = n * mult end return n end local function getBalanceText() local ui = playerGui:FindFirstChild("PlusOneUI") if ui then local bal = ui:FindFirstChild("UpgradeTree", true) and ui.UpgradeTree:FindFirstChild("Balance", true) if bal and bal:IsA("TextLabel") then return bal.Text end local total = ui:FindFirstChild("TopHUD", true) and ui.TopHUD:FindFirstChild("Total", true) if total and total:IsA("TextLabel") then return total.Text end end return nil end local function getBalance() return parseNum(getBalanceText()) end -- GUI local sg = Instance.new("ScreenGui"); sg.Name=GUI_NAME; sg.ResetOnSpawn=false; sg.IgnoreGuiInset=true; sg.ZIndexBehavior=Enum.ZIndexBehavior.Sibling; sg.Parent=playerGui local frame = Instance.new("Frame"); frame.Size=UDim2.new(0,290,0,210); frame.Position=UDim2.new(0,12,0,12); frame.BackgroundColor3=Color3.fromRGB(30,30,42); frame.BorderSizePixel=0; frame.Active=true; frame.Parent=sg local fc=Instance.new("UICorner"); fc.CornerRadius=UDim.new(0,10); fc.Parent=frame local stroke=Instance.new("UIStroke"); stroke.Color=Color3.fromRGB(90,90,110); stroke.Thickness=1; stroke.Parent=frame local dragging,ds,sp=false,nil,nil frame.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 then dragging=true; ds=i.Position; sp=frame.Position end end) UserInputService.InputChanged:Connect(function(i) if dragging and i.UserInputType==Enum.UserInputType.MouseMovement then local d=i.Position-ds; frame.Position=UDim2.new(sp.X.Scale,sp.X.Offset+d.X,sp.Y.Scale,sp.Y.Offset+d.Y) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 then dragging=false end end) local title=Instance.new("TextLabel"); title.Size=UDim2.new(1,-10,0,24); title.Position=UDim2.new(0,8,0,6); title.BackgroundTransparency=1; title.Text="PlusOne Auto"; title.TextColor3=Color3.fromRGB(255,255,255); title.Font=Enum.Font.GothamBold; title.TextSize=15; title.TextXAlignment=Enum.TextXAlignment.Left; title.Parent=frame local balLbl=Instance.new("TextLabel"); balLbl.Size=UDim2.new(1,-16,0,18); balLbl.Position=UDim2.new(0,8,0,30); balLbl.BackgroundTransparency=1; balLbl.Text="Balance: ..."; balLbl.TextColor3=Color3.fromRGB(180,220,180); balLbl.Font=Enum.Font.Gotham; balLbl.TextSize=12; balLbl.TextXAlignment=Enum.TextXAlignment.Left; balLbl.Parent=frame local statusLbl=Instance.new("TextLabel"); statusLbl.Size=UDim2.new(1,-16,0,18); statusLbl.Position=UDim2.new(0,8,0,48); statusLbl.BackgroundTransparency=1; statusLbl.Text="Idle"; statusLbl.TextColor3=Color3.fromRGB(180,180,180); statusLbl.Font=Enum.Font.Gotham; statusLbl.TextSize=12; statusLbl.TextXAlignment=Enum.TextXAlignment.Left; statusLbl.Parent=frame local function makeToggle(y, label) local btn=Instance.new("TextButton"); btn.Size=UDim2.new(1,-16,0,30); btn.Position=UDim2.new(0,8,0,y); btn.BackgroundColor3=Color3.fromRGB(220,60,60); btn.TextColor3=Color3.fromRGB(255,255,255); btn.Font=Enum.Font.GothamBold; btn.TextSize=14; btn.Text=label..": OFF"; btn.AutoButtonColor=true; btn.Parent=frame local c=Instance.new("UICorner"); c.CornerRadius=UDim.new(0,8); c.Parent=btn return btn end local clickBtn = makeToggle(72, "Auto-Click") local upgBtn = makeToggle(108, "Auto-Upgrade") local rebBtn = makeToggle(144, "Auto-Rebirth") local clickOn, upgOn, rebOn = false, false, false local function setToggle(btn, label, on) if on then btn.Text = label .. ": ON" btn.BackgroundColor3 = Color3.fromRGB(60,200,90) else btn.Text = label .. ": OFF" btn.BackgroundColor3 = Color3.fromRGB(220,60,60) end end -- Auto-click local clickLoopRunning = false local function startClick() if clickLoopRunning then return end clickLoopRunning = true task.spawn(function() while clickOn do if Action then pcall(function() Action:FireServer("click", nil) end) end task.wait(CLICK_INTERVAL) end clickLoopRunning = false end) end -- Auto-upgrade (excludes rebirth) local upgLoopRunning = false local function runUpgradePass() local ui = playerGui:FindFirstChild("PlusOneUI") if not ui then return 0 end local nodesFolder = ui:FindFirstChild("UpgradeTree", true) and ui.UpgradeTree:FindFirstChild("Viewport", true) and ui.UpgradeTree.Viewport:FindFirstChild("Nodes", true) if not nodesFolder then return 0 end local bal = getBalance() local bought = 0 for _, node in ipairs(nodesFolder:GetChildren()) do if node:IsA("TextButton") and node.Name ~= "rebirth" then local purchased = node:FindFirstChild("Purchased") local owned = false if purchased and purchased:IsA("ImageLabel") and purchased.Visible then owned = true end local priceFrame = node:FindFirstChild("Price") local costLbl = priceFrame and priceFrame:FindFirstChild("Cost") local costText = costLbl and costLbl:IsA("TextLabel") and costLbl.Text or "" if costText == "OWNED" then owned = true end if not owned then local cost = parseNum(costText) if cost and bal and cost <= bal then pcall(function() Action:FireServer("upgrade", node.Name) end) bought = bought + 1 end end end end return bought end local function startUpgrade() if upgLoopRunning then return end upgLoopRunning = true task.spawn(function() while upgOn do local ok, bought = pcall(runUpgradePass) if ok and bought and bought > 0 then statusLbl.Text = "Bought " .. bought .. " upgrade(s)" end task.wait(UPGRADE_INTERVAL) end upgLoopRunning = false end) end -- Auto-rebirth local rebLoopRunning = false local function startRebirth() if rebLoopRunning then return end rebLoopRunning = true task.spawn(function() while rebOn do if Action then pcall(function() Action:FireServer("upgrade", "rebirth") end) end task.wait(REBIRTH_INTERVAL) end rebLoopRunning = false end) end clickBtn.MouseButton1Click:Connect(function() clickOn = not clickOn setToggle(clickBtn, "Auto-Click", clickOn) if clickOn then startClick() end end) upgBtn.MouseButton1Click:Connect(function() upgOn = not upgOn setToggle(upgBtn, "Auto-Upgrade", upgOn) if upgOn then startUpgrade() end end) rebBtn.MouseButton1Click:Connect(function() rebOn = not rebOn setToggle(rebBtn, "Auto-Rebirth", rebOn) if rebOn then startRebirth() end end) task.spawn(function() while sg and sg.Parent do local bt = getBalanceText() if bt then balLbl.Text = "Balance: " .. bt end task.wait(0.5) end end) if not Action then statusLbl.Text = "Action remote not found!" end print("[AutoPlusOneGUI2] Ready.")