
Key Required

-- ╔══════════════════════════════════════════════════════════════════════╗
-- ║ 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,
})No comments yet for this script.