-- ╔══════════════════════════════════════════════════════════════════════╗ -- ║ NUKE AUTO UPGRADE — Wind UI • LocalScript ║ -- ╚══════════════════════════════════════════════════════════════════════╝ local cloneref = (cloneref or clonereference or function(i) return i end) -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ Wind UI загрузка │ -- └──────────────────────────────────────────────────────────────────────┘ local WindUI do local ok, result = pcall(function() return require("./src/Init") end) if ok then WindUI = result else if cloneref(game:GetService("RunService")):IsStudio() then WindUI = require(cloneref( game:GetService("ReplicatedStorage") :WaitForChild("WindUI") :WaitForChild("Init") )) else WindUI = loadstring(game:HttpGet( "https://raw.githubusercontent.com/Footagesus/WindUI/main/dist/main.lua" ))() end end end -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ REMOTE │ -- └──────────────────────────────────────────────────────────────────────┘ local PurchaseUpgrade = game:GetService("ReplicatedStorage") :WaitForChild("NukeRemotes") :WaitForChild("PurchaseUpgrade") local RequestLockBase = game:GetService("ReplicatedStorage") :WaitForChild("NukeRemotes") :WaitForChild("RequestLockBase") -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ СОСТОЯНИЕ │ -- └──────────────────────────────────────────────────────────────────────┘ local State = { running = false, thread = nil, interval = 100, doLockbase = true, doTier = true, doMax = true, doRequestLockBase = true, totalFires = 0, } -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ ЛОГИКА АПГРЕЙДОВ │ -- └──────────────────────────────────────────────────────────────────────┘ local function fireUpgrades() if State.doLockbase then PurchaseUpgrade:FireServer("LOCKBASE") State.totalFires += 1 end if State.doTier then PurchaseUpgrade:FireServer("TIER") State.totalFires += 1 end if State.doMax then PurchaseUpgrade:FireServer("MAX") State.totalFires += 1 end if State.doRequestLockBase then RequestLockBase:FireServer() State.totalFires += 1 end end local statusLabel -- заполнится после создания UI local function runLoop() while State.running do fireUpgrades() if statusLabel then statusLabel:SetDesc("Всего отправлено: " .. State.totalFires) end task.wait(State.interval / 1000) end end local function startLoop() if State.running then return end if not (State.doLockbase or State.doTier or State.doMax or State.doRequestLockBase) then WindUI:Notify({ Title = "Ничего не выбрано", Content = "Выбери хотя бы один апгрейд.", Icon = "triangle-alert", Duration = 3, }) return end State.running = true State.thread = task.spawn(runLoop) end local function stopLoop() State.running = false if State.thread then task.cancel(State.thread) State.thread = nil end end -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ СКРЫТИЕ NotifFrame │ -- └──────────────────────────────────────────────────────────────────────┘ local function hideNotifFrames() local playerGui = game:GetService("Players").LocalPlayer :WaitForChild("PlayerGui") -- Скрыть уже существующие for _, obj in ipairs(playerGui:GetDescendants()) do if obj:IsA("Frame") and obj.Name:lower():find("notif") then obj.Visible = false end end -- Скрывать новые при появлении playerGui.DescendantAdded:Connect(function(obj) if obj:IsA("Frame") and obj.Name:lower():find("notif") then task.defer(function() obj.Visible = false end) end end) end task.spawn(hideNotifFrames) -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ ОКНО │ -- └──────────────────────────────────────────────────────────────────────┘ local Window = WindUI:CreateWindow({ Title = "Nuke Auto Upgrade", Author = "AutoScript", Folder = "NukeAutoUpgrade", Icon = "zap", NewElements = true, OpenButton = { Title = "Nuke Upgrade", CornerRadius = UDim.new(1, 0), StrokeThickness = 2, Enabled = true, Draggable = true, OnlyMobile = false, Scale = 0.5, Color = ColorSequence.new( Color3.fromHex("#a855f7"), Color3.fromHex("#6366f1") ), }, Topbar = { Height = 44, ButtonsType = "Mac", }, }) -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ ВКЛАДКИ │ -- └──────────────────────────────────────────────────────────────────────┘ local MainTab = Window:Tab({ Title = "Main", Icon = "zap", }) local SettTab = Window:Tab({ Title = "Settings", Icon = "settings", }) -- ════════════════════════════════════════════════════════════ -- MAIN TAB -- ════════════════════════════════════════════════════════════ -- ── Секция: выбор апгрейдов ────────────────────────────── local TargetsSection = MainTab:Section({ Title = "Upgrade Targets", Opened = true, }) TargetsSection:Toggle({ Title = "LOCKBASE", Desc = "FireServer(\"LOCKBASE\") каждый тик", Value = true, Callback = function(v) State.doLockbase = v end, }) TargetsSection:Space() TargetsSection:Toggle({ Title = "TIER", Desc = "FireServer(\"TIER\") каждый тик", Value = true, Callback = function(v) State.doTier = v end, }) TargetsSection:Space() TargetsSection:Toggle({ Title = "MAX", Desc = "FireServer(\"MAX\") каждый тик", Value = true, Callback = function(v) State.doMax = v end, }) TargetsSection:Space() TargetsSection:Toggle({ Title = "RequestLockBase", Desc = "NukeRemotes.RequestLockBase:FireServer()", Value = true, Callback = function(v) State.doRequestLockBase = v end, }) MainTab:Space() -- ── Секция: управление ─────────────────────────────────── local ControlSection = MainTab:Section({ Title = "Control", Opened = true, }) -- Кнопка Start/Stop (меняет текст сама себя) local startStopBtn startStopBtn = ControlSection:Button({ Title = "▶ Start Auto Upgrade", Desc = "Запустить цикл апгрейдов", Color = Color3.fromHex("#a855f7"), Icon = "play", Justify = "Left", Callback = function() if State.running then stopLoop() startStopBtn:SetTitle("▶ Start Auto Upgrade") startStopBtn:SetDesc("Запустить цикл апгрейдов") startStopBtn:SetIcon("play") startStopBtn:SetColor(Color3.fromHex("#a855f7")) WindUI:Notify({ Title = "Остановлено", Content = "Цикл апгрейдов остановлен.", Icon = "square", Duration = 2, }) else startLoop() if State.running then startStopBtn:SetTitle("⏹ Stop Auto Upgrade") startStopBtn:SetDesc("Нажми чтобы остановить") startStopBtn:SetIcon("square") startStopBtn:SetColor(Color3.fromHex("#ef4444")) WindUI:Notify({ Title = "Запущено", Content = "Цикл апгрейдов активен!", Icon = "zap", Duration = 2, }) end end end, }) ControlSection:Space() ControlSection:Button({ Title = "Однократный запуск", Desc = "Выполнить выбранные апгрейды один раз", Icon = "mouse-pointer-click", Callback = function() local before = State.totalFires fireUpgrades() local fired = State.totalFires - before WindUI:Notify({ Title = "Выполнено", Content = "Отправлено " .. fired .. " запрос(ов).", Icon = "check", Duration = 2, }) if statusLabel then statusLabel:SetDesc("Всего отправлено: " .. State.totalFires) end end, }) MainTab:Space() -- ── Секция: статус ──────────────────────────────────────── local StatusSection = MainTab:Section({ Title = "Status", Opened = true, }) statusLabel = StatusSection:Section({ Title = "Ожидание запуска...", Desc = "Всего отправлено: 0", TextSize = 14, }) StatusSection:Space() StatusSection:Section({ Title = "NotifFrame", Desc = "Скрывается автоматически ✓", TextSize = 14, }) -- ════════════════════════════════════════════════════════════ -- SETTINGS TAB -- ════════════════════════════════════════════════════════════ local IntervalSection = SettTab:Section({ Title = "Interval", Opened = true, }) IntervalSection:Slider({ Title = "Delay (мс)", Desc = "Задержка между тиками цикла", Step = 50, Value = { Min = 50, Max = 2000, Default = 100, }, Callback = function(v) State.interval = v end, }) SettTab:Space() local NotifSection = SettTab:Section({ Title = "Notifications", Opened = true, }) NotifSection:Toggle({ Title = "Скрывать NotifFrame", Desc = "Авто-скрытие уведомлений игры", Value = true, Callback = function(v) if v then task.spawn(hideNotifFrames) end end, }) NotifSection:Space() NotifSection:Button({ Title = "Скрыть NotifFrame сейчас", Desc = "Принудительно скрыть все фреймы", Icon = "eye-off", Callback = function() local count = 0 for _, obj in ipairs(game:GetService("Players").LocalPlayer :WaitForChild("PlayerGui"):GetDescendants()) do if obj:IsA("Frame") and obj.Name:lower():find("notif") then obj.Visible = false count += 1 end end WindUI:Notify({ Title = "NotifFrame", Content = "Скрыто фреймов: " .. count, Icon = "eye-off", Duration = 3, }) end, }) SettTab:Space() local ResetSection = SettTab:Section({ Title = "Misc", Opened = true, }) ResetSection:Button({ Title = "Сбросить счётчик", Icon = "rotate-ccw", Callback = function() State.totalFires = 0 if statusLabel then statusLabel:SetDesc("Всего отправлено: 0") end WindUI:Notify({ Title = "Сброшено", Content = "Счётчик обнулён.", Icon = "check", Duration = 2, }) end, }) -- ┌──────────────────────────────────────────────────────────────────────┐ -- │ СТАРТ УВЕДОМЛЕНИЕ │ -- └──────────────────────────────────────────────────────────────────────┘ WindUI:Notify({ Title = "Nuke Auto Upgrade", Content = "Скрипт загружен. Выбери цели → Start.", Icon = "zap", Duration = 4, })