Noob Avatar in Nds [OPEN SOURCE]
Key Required

Noob Avatar in Nds [OPEN SOURCE]

Natural Disaster SurvivalItzKhenzItzKhenz 195 views 192 executesUpdated Oct 3, 2026
Unrated
00
Lua Script•441 lines (14442 chars)
--[[
    KHENZ // Billboard 500K Loop — Anti-Lag Edition
]]

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local CoreGui = game:GetService("CoreGui")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local LP = Players.LocalPlayer

_G.ANTI_PURCHASE = false
_G.FPS_GUARD = true
_G.AUTO_UNSPAM = true

local THEME = {
    bg      = Color3.fromRGB(15, 15, 20),
    bg_card = Color3.fromRGB(24, 24, 32),
    bg_input= Color3.fromRGB(34, 34, 44),
    accent  = Color3.fromRGB(0, 220, 180),
    purple  = Color3.fromRGB(140, 100, 255),
    danger  = Color3.fromRGB(240, 70, 90),
    gold    = Color3.fromRGB(255, 200, 60),
    warn    = Color3.fromRGB(255, 180, 60),
    text    = Color3.fromRGB(235, 235, 245),
}

-- FIX 500K (TURUN DARI 1M) + RADIUS AUTO
local FIXED_LOOP = 500000
local FIXED_BATCH = 2500
local CLICK_RADIUS = 5000

local State = {
    spamEnabled = false,
    loopCount = FIXED_LOOP,
    batchSize = FIXED_BATCH,
    successCount = 0,
    blockedCount = 0,
    detectors = {},
    fps = 60,
    fpsHistory = {},
    normalFpsCounter = 0,
    unspamActive = false,
}

local function log(msg)
    print("[KHENZ] " .. msg)
end

-- ============ FPS TRACKER ============
local frameCount = 0
local lastFpsUpdate = tick()

RunService.RenderStepped:Connect(function()
    frameCount = frameCount + 1
    local now = tick()
    if now - lastFpsUpdate >= 0.5 then
        local elapsed = now - lastFpsUpdate
        local currentFPS = math.floor(frameCount / elapsed)
        State.fps = currentFPS
        table.insert(State.fpsHistory, currentFPS)
        if #State.fpsHistory > 6 then table.remove(State.fpsHistory, 1) end
        frameCount = 0
        lastFpsUpdate = now
    end
end)

local function avgFPS()
    if #State.fpsHistory == 0 then return State.fps end
    local sum = 0
    for _, v in ipairs(State.fpsHistory) do sum = sum + v end
    return math.floor(sum / #State.fpsHistory)
end

-- ============ AUTO UNSPAM ============
task.spawn(function()
    while true do
        task.wait(1)
        if _G.AUTO_UNSPAM and State.spamEnabled then
            local fps = avgFPS()
            if fps > 50 then
                State.normalFpsCounter = State.normalFpsCounter + 1
                if State.normalFpsCounter >= 5 then
                    State.unspamActive = true
                    log("AUTO UNSPAM: 5s")
                    task.wait(5)
                    State.unspamActive = false
                    State.normalFpsCounter = 0
                    log("AUTO UNSPAM: done")
                end
            else
                State.normalFpsCounter = 0
            end
        end
    end
end)

-- ============ AUTO-SCAN BILLBOARD ============
local function detectBillboardDetectors()
    local detectors = {}
    for _, obj in ipairs(Workspace:GetChildren()) do
        if obj.Name:lower():find("billboard") then
            local board = obj:FindFirstChild("Board")
            if board then
                local cd = board:FindFirstChild("ClickDetector")
                if cd and cd:IsA("ClickDetector") then
                    table.insert(detectors, cd)
                end
            end
            for _, v in ipairs(obj:GetDescendants()) do
                if v:IsA("ClickDetector") then
                    table.insert(detectors, v)
                end
            end
        end
    end
    if #detectors == 0 then
        for _, v in ipairs(Workspace:GetDescendants()) do
            if v:IsA("ClickDetector") and v.Parent then
                local p = v.Parent
                local gp = p.Parent
                if p.Name:lower():find("board")
                   or (gp and gp.Name:lower():find("board"))
                   or (gp and gp.Name:lower():find("billboard")) then
                    table.insert(detectors, v)
                end
            end
        end
    end
    return detectors
end

task.spawn(function()
    while true do
        State.detectors = detectBillboardDetectors()
        task.wait(2)
    end
end)

-- ============ SPAM LOOP — 500K ============
task.spawn(function()
    while true do
        if State.spamEnabled and #State.detectors > 0 and not State.unspamActive then
            local fps = avgFPS()
            local curLoop = FIXED_LOOP
            local curBatch = FIXED_BATCH

            if _G.FPS_GUARD then
                if fps < 15 then
                    task.wait(1)
                    local waitCount = 0
                    while avgFPS() < 20 and waitCount < 10 do
                        task.wait(0.5)
                        waitCount = waitCount + 1
                    end
                elseif fps < 30 then
                    curLoop = 50000
                    curBatch = 250
                elseif fps < 50 then
                    curLoop = 250000
                    curBatch = 1000
                end
            end

            local batch = 0
            for i = 1, curLoop do
                if not State.spamEnabled or State.unspamActive then break end
                if i % 1000 == 0 and _G.FPS_GUARD and avgFPS() < 15 then break end

                for _, cd in ipairs(State.detectors) do
                    pcall(function()
                        fireclickdetector(cd, CLICK_RADIUS, 1)
                    end)
                    State.successCount = State.successCount + 1
                    batch = batch + 1
                end

                if batch >= curBatch then
                    batch = 0
                    task.wait()
                end
            end

            task.wait()
        else
            task.wait(0.05)
        end
    end
end)

-- ============ ANTI PURCHASE ============
local function disablePrompt()
    pcall(function()
        local prompt = CoreGui:FindFirstChild("PurchasePromptApp")
        if prompt and prompt.Enabled then
            prompt.Enabled = false
            State.blockedCount = State.blockedCount + 1
        end
    end)
    pcall(function()
        local overlay = CoreGui:FindFirstChild("FoundationOverlay")
        if overlay and overlay.Enabled then
            overlay.Enabled = false
        end
    end)
end

RunService.RenderStepped:Connect(function()
    if _G.ANTI_PURCHASE then disablePrompt() end
end)

CoreGui.ChildAdded:Connect(function(ins)
    if _G.ANTI_PURCHASE and (ins.Name == "PurchasePromptApp" or ins.Name == "FoundationOverlay") then
        task.wait(0.05)
        pcall(function() ins.Enabled = false end)
    end
end)

CoreGui.DescendantAdded:Connect(function(ins)
    if _G.ANTI_PURCHASE and (ins.Name == "PurchasePromptApp" or ins.Name == "FoundationOverlay") then
        task.wait(0.05)
        pcall(function() ins.Enabled = false end)
    end
end)

-- ============ GUI ============
if CoreGui:FindFirstChild("KHENZ_Billboard") then CoreGui.KHENZ_Billboard:Destroy() end

local gui = Instance.new("ScreenGui")
gui.Name = "KHENZ_Billboard"
gui.ResetOnSpawn = false
gui.DisplayOrder = 9999
pcall(function() gui.Parent = CoreGui end)
if not gui.Parent then gui.Parent = LP:WaitForChild("PlayerGui") end

local main = Instance.new("Frame")
main.Size = UDim2.new(0, 260, 0, 280)
main.Position = UDim2.new(0, 20, 0.5, -140)
main.BackgroundColor3 = THEME.bg
main.BorderSizePixel = 0
main.Active = true
main.Parent = gui
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 10)
local stroke = Instance.new("UIStroke")
stroke.Color = THEME.danger
stroke.Transparency = 0.5
stroke.Thickness = 1.5
stroke.Parent = main

local topbar = Instance.new("Frame")
topbar.Size = UDim2.new(1, 0, 0, 28)
topbar.BackgroundColor3 = THEME.bg_card
topbar.BorderSizePixel = 0
topbar.Active = true
topbar.Parent = main
Instance.new("UICorner", topbar).CornerRadius = UDim.new(0, 10)

local titleLbl = Instance.new("TextLabel")
titleLbl.Size = UDim2.new(1, -60, 1, 0)
titleLbl.Position = UDim2.new(0, 10, 0, 0)
titleLbl.BackgroundTransparency = 1
titleLbl.Text = "BILLBOARD 500K"
titleLbl.TextColor3 = THEME.danger
titleLbl.Font = Enum.Font.GothamBold
titleLbl.TextSize = 11
titleLbl.TextXAlignment = Enum.TextXAlignment.Left
titleLbl.Parent = topbar

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 20, 0, 20)
closeBtn.Position = UDim2.new(1, -24, 0.5, -10)
closeBtn.BackgroundColor3 = THEME.bg_input
closeBtn.TextColor3 = THEME.danger
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 11
closeBtn.Text = "X"
closeBtn.Parent = topbar
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 4)
closeBtn.MouseButton1Click:Connect(function() gui.Enabled = false end)

local dragging, dragStart, startPos
topbar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
       or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true; dragStart = input.Position; startPos = main.Position
    end
end)
topbar.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
       or input.UserInputType == Enum.UserInputType.Touch then dragging = false end
end)
UIS.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
                     or input.UserInputType == Enum.UserInputType.Touch) then
        local d = input.Position - dragStart
        main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
                                  startPos.Y.Scale, startPos.Y.Offset + d.Y)
    end
end)

local body = Instance.new("Frame")
body.Size = UDim2.new(1, -12, 1, -36)
body.Position = UDim2.new(0, 6, 0, 32)
body.BackgroundTransparency = 1
body.Parent = main

local statusLbl = Instance.new("TextLabel")
statusLbl.Size = UDim2.new(1, 0, 0, 44)
statusLbl.BackgroundColor3 = THEME.bg_card
statusLbl.TextColor3 = THEME.text
statusLbl.Font = Enum.Font.Code
statusLbl.TextSize = 9
statusLbl.TextYAlignment = Enum.TextYAlignment.Top
statusLbl.TextXAlignment = Enum.TextXAlignment.Left
statusLbl.Text = "spam: 0 | block: 0\nFPS: 60 | loop: 500K\nradius: 5000"
statusLbl.Parent = body
Instance.new("UICorner", statusLbl).CornerRadius = UDim.new(0, 5)

task.spawn(function()
    while statusLbl.Parent do
        task.wait(0.5)
        local fps = avgFPS()
        local status = ""
        if State.unspamActive then status = " ⏸"
        elseif fps < 30 then status = " ⚠" end

        statusLbl.Text = string.format(
            "spam: %d | block: %d\nFPS: %d | loop: 500K%s\nradius: %d",
            State.successCount, State.blockedCount, fps, status, CLICK_RADIUS
        )
    end
end)

local btnHolder = Instance.new("Frame")
btnHolder.Size = UDim2.new(1, 0, 1, -50)
btnHolder.Position = UDim2.new(0, 0, 0, 50)
btnHolder.BackgroundTransparency = 1
btnHolder.Parent = body
local btnList = Instance.new("UIListLayout")
btnList.Padding = UDim.new(0, 4)
btnList.Parent = btnHolder

local function makeBtn(text, color, callback)
    local b = Instance.new("TextButton")
    b.Size = UDim2.new(1, 0, 0, 26)
    b.BackgroundColor3 = color
    b.TextColor3 = THEME.bg
    b.Font = Enum.Font.GothamBold
    b.TextSize = 10
    b.Text = text
    b.AutoButtonColor = false
    b.Parent = btnHolder
    Instance.new("UICorner", b).CornerRadius = UDim.new(0, 5)
    b:SetAttribute("CurrentColor", color)

    b.MouseEnter:Connect(function()
        local c = b:GetAttribute("CurrentColor") or color
        TweenService:Create(b, TweenInfo.new(0.1), {
            BackgroundColor3 = Color3.new(math.min(c.R + 0.15, 1),
                                          math.min(c.G + 0.15, 1),
                                          math.min(c.B + 0.15, 1))
        }):Play()
    end)
    b.MouseLeave:Connect(function()
        local c = b:GetAttribute("CurrentColor") or color
        TweenService:Create(b, TweenInfo.new(0.1), { BackgroundColor3 = c }):Play()
    end)
    b.MouseButton1Click:Connect(function() callback(b) end)
    return b
end

local spamBtn = makeBtn("SPAM: OFF", THEME.bg_input, function(btn)
    State.spamEnabled = not State.spamEnabled
    if State.spamEnabled then
        btn.Text = "SPAM: ON (500K)"
        btn.BackgroundColor3 = THEME.danger
        btn.TextColor3 = THEME.bg
        btn:SetAttribute("CurrentColor", THEME.danger)
    else
        btn.Text = "SPAM: OFF"
        btn.BackgroundColor3 = THEME.bg_input
        btn.TextColor3 = THEME.text
        btn:SetAttribute("CurrentColor", THEME.bg_input)
    end
end)
spamBtn.TextColor3 = THEME.text

local antiBtn = makeBtn("ANTI PURCHASE: OFF", THEME.bg_input, function(btn)
    _G.ANTI_PURCHASE = not _G.ANTI_PURCHASE
    if _G.ANTI_PURCHASE then
        btn.Text = "ANTI PURCHASE: ON"
        btn.BackgroundColor3 = THEME.danger
        btn.TextColor3 = THEME.bg
        btn:SetAttribute("CurrentColor", THEME.danger)
        disablePrompt()
    else
        btn.Text = "ANTI PURCHASE: OFF"
        btn.BackgroundColor3 = THEME.bg_input
        btn.TextColor3 = THEME.text
        btn:SetAttribute("CurrentColor", THEME.bg_input)
    end
end)
antiBtn.TextColor3 = THEME.text

local fpsBtn = makeBtn("FPS GUARD: ON", THEME.warn, function(btn)
    _G.FPS_GUARD = not _G.FPS_GUARD
    btn.Text = "FPS GUARD: " .. (_G.FPS_GUARD and "ON" or "OFF")
    btn.BackgroundColor3 = _G.FPS_GUARD and THEME.warn or THEME.bg_input
    btn.TextColor3 = _G.FPS_GUARD and THEME.bg or THEME.text
    btn:SetAttribute("CurrentColor", _G.FPS_GUARD and THEME.warn or THEME.bg_input)
end)
fpsBtn.TextColor3 = THEME.bg

local unspamBtn = makeBtn("AUTO UNSPAM: ON", THEME.accent, function(btn)
    _G.AUTO_UNSPAM = not _G.AUTO_UNSPAM
    btn.Text = "AUTO UNSPAM: " .. (_G.AUTO_UNSPAM and "ON" or "OFF")
    btn.BackgroundColor3 = _G.AUTO_UNSPAM and THEME.accent or THEME.bg_input
    btn.TextColor3 = _G.AUTO_UNSPAM and THEME.bg or THEME.text
    btn:SetAttribute("CurrentColor", _G.AUTO_UNSPAM and THEME.accent or THEME.bg_input)
end)
unspamBtn.TextColor3 = THEME.bg

makeBtn("FORCE UNSPAM 5s", THEME.purple, function()
    task.spawn(function()
        State.unspamActive = true
        log("FORCE UNSPAM: 5s")
        task.wait(5)
        State.unspamActive = false
        log("FORCE UNSPAM: done")
    end)
end)

UIS.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == Enum.KeyCode.RightShift then
        gui.Enabled = not gui.Enabled
    end
end)

print("[KHENZ] Billboard 500K loaded. Anti-lag.")

Features & Information

Attention ⚠️ This script is very laggy for Nds Because this script spams 500k times and has anti-purchase and guard fps features but this applies to natural disasters. You can modified this my Script 😉 Script by Khenz

Community Comments (0)

No comments yet for this script.

More Scripts for Natural Disaster Survival