Noob S*er OP
Key RequiredUniversal

Noob S*er OP

Universal ScriptWFSBROWFSBRO 797 views 25 executesUpdated Dec 9, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•776 lines (25036 chars)
-- Noob Spawner System (English GUI with Hide/Show)
-- Place this LocalScript in StarterGui or ScreenGui

local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

-- Store created Noobs
local spawnedNoobs = {}
local noobCounter = 0
local mainWindowVisible = true
local restoreButton = nil

-- Create GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "NoobSpawnerGUI"
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.ResetOnSpawn = false -- IMPORTANT: GUI won't disappear on death
ScreenGui.Parent = PlayerGui

-- Main window (dark as in picture)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainWindow"
MainFrame.Size = UDim2.new(0, 300, 0, 230)
MainFrame.Position = UDim2.new(0.5, -150, 0.5, -115)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = false
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

-- Rounded corners
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 12)
UICorner.Parent = MainFrame

-- Thin border
local UIStroke = Instance.new("UIStroke")
UIStroke.Thickness = 1.5
UIStroke.Color = Color3.fromRGB(60, 60, 70)
UIStroke.Transparency = 0.3
UIStroke.Parent = MainFrame

-- Title bar (wide dark strip) - FOR DRAGGING
local TitleBar = Instance.new("Frame")
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, 0, 0, 40)
TitleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame

-- Make TitleBar active for dragging
TitleBar.Active = true
TitleBar.Selectable = true

local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 12, 0, 0)
TitleCorner.Parent = TitleBar

-- Close button (X in top left)
local CloseButton = Instance.new("TextButton")
CloseButton.Name = "CloseButton"
CloseButton.Size = UDim2.new(0, 30, 0, 30)
CloseButton.Position = UDim2.new(0, 5, 0, 5)
CloseButton.BackgroundColor3 = Color3.fromRGB(200, 60, 60)
CloseButton.BorderSizePixel = 0
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.TextSize = 16
CloseButton.Font = Enum.Font.GothamBold
CloseButton.Parent = TitleBar

local CloseButtonCorner = Instance.new("UICorner")
CloseButtonCorner.CornerRadius = UDim.new(0, 6)
CloseButtonCorner.Parent = CloseButton

-- Title text "Noob Spawner"
local TitleText = Instance.new("TextLabel")
TitleText.Name = "Title"
TitleText.Size = UDim2.new(1, -40, 1, 0)
TitleText.Position = UDim2.new(0, 40, 0, 0)
TitleText.BackgroundTransparency = 1
TitleText.Text = "Noob Spawner"
TitleText.TextColor3 = Color3.fromRGB(255, 255, 255)
TitleText.TextSize = 20
TitleText.Font = Enum.Font.GothamBold
TitleText.TextXAlignment = Enum.TextXAlignment.Left
TitleText.Parent = TitleBar

-- Content area
local ContentFrame = Instance.new("Frame")
ContentFrame.Name = "Content"
ContentFrame.Size = UDim2.new(1, 0, 1, -40)
ContentFrame.Position = UDim2.new(0, 0, 0, 40)
ContentFrame.BackgroundTransparency = 1
ContentFrame.Parent = MainFrame

-- Large SPAWN NOOB button
local SpawnButton = Instance.new("TextButton")
SpawnButton.Name = "SpawnButton"
SpawnButton.Size = UDim2.new(0.85, 0, 0, 50)
SpawnButton.Position = UDim2.new(0.075, 0, 0.1, 0)
SpawnButton.BackgroundColor3 = Color3.fromRGB(0, 120, 215)
SpawnButton.BorderSizePixel = 0
SpawnButton.Text = "SPAWN NOOB"
SpawnButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SpawnButton.TextSize = 18
SpawnButton.Font = Enum.Font.GothamBold
SpawnButton.Parent = ContentFrame

local SpawnButtonCorner = Instance.new("UICorner")
SpawnButtonCorner.CornerRadius = UDim.new(0, 8)
SpawnButtonCorner.Parent = SpawnButton

-- DELETE NOOB button
local DeleteButton = Instance.new("TextButton")
DeleteButton.Name = "DeleteButton"
DeleteButton.Size = UDim2.new(0.85, 0, 0, 50)
DeleteButton.Position = UDim2.new(0.075, 0, 0.4, 0)
DeleteButton.BackgroundColor3 = Color3.fromRGB(215, 60, 60)
DeleteButton.BorderSizePixel = 0
DeleteButton.Text = "DELETE NOOB"
DeleteButton.TextColor3 = Color3.fromRGB(255, 255, 255)
DeleteButton.TextSize = 18
DeleteButton.Font = Enum.Font.GothamBold
DeleteButton.Parent = ContentFrame

local DeleteButtonCorner = Instance.new("UICorner")
DeleteButtonCorner.CornerRadius = UDim.new(0, 8)
DeleteButtonCorner.Parent = DeleteButton

-- Noob counter
local CounterFrame = Instance.new("Frame")
CounterFrame.Name = "CounterFrame"
CounterFrame.Size = UDim2.new(0.85, 0, 0, 60)
CounterFrame.Position = UDim2.new(0.075, 0, 0.7, 0)
CounterFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 45)
CounterFrame.Parent = ContentFrame

local CounterCorner = Instance.new("UICorner")
CounterCorner.CornerRadius = UDim.new(0, 8)
CounterCorner.Parent = CounterFrame

local CounterLabel = Instance.new("TextLabel")
CounterLabel.Name = "CounterLabel"
CounterLabel.Size = UDim2.new(1, -20, 1, 0)
CounterLabel.Position = UDim2.new(0, 10, 0, 0)
CounterLabel.BackgroundTransparency = 1
CounterLabel.Text = "Noobs created: 0"
CounterLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
CounterLabel.TextSize = 16
CounterLabel.Font = Enum.Font.GothamMedium
CounterLabel.TextXAlignment = Enum.TextXAlignment.Left
CounterLabel.Parent = CounterFrame

-- Window dragging logic (FIXED)
local dragging = false
local dragInput, dragStart, startPos

local function update(input)
    local delta = input.Position - dragStart
    MainFrame.Position = UDim2.new(
        startPos.X.Scale, 
        startPos.X.Offset + delta.X, 
        startPos.Y.Scale, 
        startPos.Y.Offset + delta.Y
    )
end

-- Event handlers for dragging (added to TitleBar)
TitleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        
        -- Capture input for mouse
        local connection
        connection = input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
                connection:Disconnect()
            end
        end)
    end
end)

TitleBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

-- Use InputChanged for smooth dragging
UserInputService.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        update(input)
    end
end)

-- Function to update counter
local function updateCounter()
    CounterLabel.Text = "Noobs created: " .. #spawnedNoobs
    
    -- Change color and text of Delete button
    if #spawnedNoobs == 0 then
        DeleteButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
        DeleteButton.Text = "NO NOOBS TO DELETE"
    else
        DeleteButton.BackgroundColor3 = Color3.fromRGB(215, 60, 60)
        DeleteButton.Text = "DELETE NOOB"
    end
end

-- Function to create Noob NPC with VERY CLOSE arms (1.00)
local function createNoobNPC()
    local character = Player.Character
    if not character then return nil end
    
    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return nil end
    
    -- Position in front of player
    local spawnPosition = humanoidRootPart.Position + humanoidRootPart.CFrame.LookVector * 5
    spawnPosition = Vector3.new(spawnPosition.X, spawnPosition.Y + 2, spawnPosition.Z)
    
    -- Create Noob model (R6)
    local noobModel = Instance.new("Model")
    noobModel.Name = "Noob_" .. tostring(os.time())
    
    -- Torso (R6)
    local torso = Instance.new("Part")
    torso.Name = "Torso"
    torso.Size = Vector3.new(2, 2, 1)
    torso.Position = spawnPosition
    torso.BrickColor = BrickColor.new("Bright blue")
    torso.Material = Enum.Material.Plastic
    torso.CanCollide = true
    torso.Anchored = false
    torso.Parent = noobModel
    
    -- Head (SpecialMesh for rounding)
    local head = Instance.new("Part")
    head.Name = "Head"
    head.Size = Vector3.new(2, 1, 1)
    head.Position = spawnPosition + Vector3.new(0, 2, 0)
    head.BrickColor = BrickColor.new("Bright yellow")
    head.Material = Enum.Material.Plastic
    head.CanCollide = true
    head.Anchored = false
    head.Parent = noobModel
    
    -- SpecialMesh for rounded head
    local headMesh = Instance.new("SpecialMesh")
    headMesh.MeshType = Enum.MeshType.Head
    headMesh.Scale = Vector3.new(1.2, 1.2, 1.2)
    headMesh.Parent = head
    
    -- Noob face
    local face = Instance.new("Decal")
    face.Name = "face"
    face.Texture = "rbxasset://textures/face.png"
    face.Face = Enum.NormalId.Front
    face.Parent = head
    
    -- Left arm (VERY CLOSE to torso - almost touching)
    local leftArm = Instance.new("Part")
    leftArm.Name = "Left Arm"
    leftArm.Size = Vector3.new(1, 2, 1)
    leftArm.Position = spawnPosition + Vector3.new(-1.00, 0, 0) -- VERY CLOSE (was 1.02)
    leftArm.BrickColor = BrickColor.new("Bright yellow")
    leftArm.Material = Enum.Material.Plastic
    leftArm.CanCollide = true
    leftArm.Anchored = false
    leftArm.Parent = noobModel
    
    -- Right arm (VERY CLOSE to torso - almost touching)
    local rightArm = Instance.new("Part")
    rightArm.Name = "Right Arm"
    rightArm.Size = Vector3.new(1, 2, 1)
    rightArm.Position = spawnPosition + Vector3.new(1.00, 0, 0) -- VERY CLOSE (was 1.02)
    rightArm.BrickColor = BrickColor.new("Bright yellow")
    rightArm.Material = Enum.Material.Plastic
    rightArm.CanCollide = true
    rightArm.Anchored = false
    rightArm.Parent = noobModel
    
    -- Left leg
    local leftLeg = Instance.new("Part")
    leftLeg.Name = "Left Leg"
    leftLeg.Size = Vector3.new(1, 2, 1)
    leftLeg.Position = spawnPosition + Vector3.new(-0.5, -2, 0)
    leftLeg.BrickColor = BrickColor.new("Bright green")
    leftLeg.Material = Enum.Material.Plastic
    leftLeg.CanCollide = true
    leftLeg.Anchored = false
    leftLeg.Parent = noobModel
    
    -- Right leg
    local rightLeg = Instance.new("Part")
    rightLeg.Name = "Right Leg"
    rightLeg.Size = Vector3.new(1, 2, 1)
    rightLeg.Position = spawnPosition + Vector3.new(0.5, -2, 0)
    rightLeg.BrickColor = BrickColor.new("Bright green")
    rightLeg.Material = Enum.Material.Plastic
    rightLeg.CanCollide = true
    rightLeg.Anchored = false
    rightLeg.Parent = noobModel
    
    -- Humanoid for NPC (R6)
    local humanoid = Instance.new("Humanoid")
    humanoid.Name = "Humanoid"
    humanoid.WalkSpeed = 0
    humanoid.JumpPower = 0
    humanoid.MaxHealth = 100
    humanoid.Health = 100
    humanoid.Parent = noobModel
    
    -- Name above head with number
    noobCounter = noobCounter + 1
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Name = "NameTag"
    billboardGui.Size = UDim2.new(0, 200, 0, 50)
    billboardGui.StudsOffset = Vector3.new(0, 3, 0)
    billboardGui.AlwaysOnTop = true
    billboardGui.Parent = head
    
    local nameLabel = Instance.new("TextLabel")
    nameLabel.Name = "Name"
    nameLabel.Size = UDim2.new(1, 0, 1, 0)
    nameLabel.BackgroundTransparency = 1
    nameLabel.Text = "Noob #" .. noobCounter
    nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    nameLabel.TextSize = 18
    nameLabel.Font = Enum.Font.GothamBold
    nameLabel.TextStrokeTransparency = 0.5
    nameLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
    nameLabel.Parent = billboardGui
    
    -- Weld parts together with VERY close arms (1.00)
    local function weldParts(part0, part1, c0, c1)
        local weld = Instance.new("Weld")
        weld.Part0 = part0
        weld.Part1 = part1
        weld.C0 = c0 or CFrame.new()
        weld.C1 = c1 or CFrame.new()
        weld.Parent = part0
    end
    
    -- Create weld connections for R6 (arms VERY close - 1.00)
    weldParts(torso, head, CFrame.new(0, 1, 0), CFrame.new(0, -0.5, 0))
    weldParts(torso, leftArm, CFrame.new(-1.00, 0, 0), CFrame.new(0.5, 0, 0)) -- VERY close
    weldParts(torso, rightArm, CFrame.new(1.00, 0, 0), CFrame.new(-0.5, 0, 0)) -- VERY close
    weldParts(torso, leftLeg, CFrame.new(-0.5, -1, 0), CFrame.new(0, 1, 0))
    weldParts(torso, rightLeg, CFrame.new(0.5, -1, 0), CFrame.new(0, 1, 0))
    
    -- Add force for soft landing
    local bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.Velocity = Vector3.new(0, 5, 0)
    bodyVelocity.MaxForce = Vector3.new(0, 4000, 0)
    bodyVelocity.Parent = torso
    
    game:GetService("Debris"):AddItem(bodyVelocity, 0.2)
    
    -- Place model in workspace
    noobModel.PrimaryPart = torso
    noobModel.Parent = workspace
    
    -- Creation sound
    local sound = Instance.new("Sound")
    sound.SoundId = "rbxassetid://3570577731"
    sound.Volume = 0.3
    sound.Parent = torso
    sound:Play()
    game:GetService("Debris"):AddItem(sound, 2)
    
    -- Particle effect on appearance
    local particles = Instance.new("ParticleEmitter")
    particles.Texture = "rbxasset://textures/particles/sparkles_main.dds"
    particles.Color = ColorSequence.new(Color3.fromRGB(255, 255, 0))
    particles.Size = NumberSequence.new(0.5)
    particles.Lifetime = NumberRange.new(0.5)
    particles.Rate = 30
    particles.Speed = NumberRange.new(3)
    particles.Parent = head
    game:GetService("Debris"):AddItem(particles, 1)
    
    -- Add to created Noobs table
    table.insert(spawnedNoobs, {
        model = noobModel,
        id = noobCounter,
        timestamp = os.time()
    })
    
    updateCounter()
    print("Noob #" .. noobCounter .. " created! (arms at distance 1.00)")
    return noobModel
end

-- Function to delete last Noob
local function deleteLastNoob()
    if #spawnedNoobs == 0 then
        -- Effect for empty list
        TweenService:Create(
            DeleteButton,
            TweenInfo.new(0.1, Enum.EasingStyle.Back, Enum.EasingDirection.Out, 2, true),
            {Position = UDim2.new(0.075, 5, 0.4, 0)}
        ):Play()
        return
    end
    
    -- Get last Noob
    local lastNoob = spawnedNoobs[#spawnedNoobs]
    
    if lastNoob and lastNoob.model and lastNoob.model.Parent then
        -- Delete effect
        local torso = lastNoob.model:FindFirstChild("Torso")
        if torso then
            -- Delete sound
            local sound = Instance.new("Sound")
            sound.SoundId = "rbxassetid://138186576"
            sound.Volume = 0.5
            sound.Parent = torso
            sound:Play()
            game:GetService("Debris"):AddItem(sound, 2)
            
            -- Particle effect on deletion
            local particles = Instance.new("ParticleEmitter")
            particles.Texture = "rbxasset://textures/particles/smoke_main.dds"
            particles.Color = ColorSequence.new(Color3.fromRGB(255, 50, 50))
            particles.Size = NumberSequence.new(0.8)
            particles.Lifetime = NumberRange.new(0.8)
            particles.Rate = 80
            particles.Speed = NumberRange.new(8)
            particles.Parent = torso
            game:GetService("Debris"):AddItem(particles, 1)
            
            -- Disappearance animation
            for _, part in pairs(lastNoob.model:GetChildren()) do
                if part:IsA("BasePart") then
                    TweenService:Create(
                        part,
                        TweenInfo.new(0.3),
                        {Transparency = 1}
                    ):Play()
                end
            end
            
            wait(0.3)
            lastNoob.model:Destroy()
        else
            lastNoob.model:Destroy()
        end
        
        -- Remove from table
        table.remove(spawnedNoobs, #spawnedNoobs)
        updateCounter()
        
        print("Noob #" .. lastNoob.id .. " deleted!")
    else
        -- Cleanup non-existent records
        table.remove(spawnedNoobs, #spawnedNoobs)
        updateCounter()
    end
end

-- Function to hide main window and show restore button
local function hideWindow()
    if not mainWindowVisible then return end
    
    mainWindowVisible = false
    
    -- Animation for hiding window
    local hideTween = TweenService:Create(
        MainFrame,
        TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In),
        {Size = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0.5, 0, 0.5, 0)}
    )
    
    hideTween.Completed:Connect(function()
        MainFrame.Visible = false
        
        -- Create restore button "Noob •_•"
        if restoreButton and restoreButton.Parent then
            restoreButton:Destroy()
        end
        
        restoreButton = Instance.new("TextButton")
        restoreButton.Name = "RestoreButton"
        restoreButton.Size = UDim2.new(0, 120, 0, 40) -- Rectangular button
        restoreButton.Position = UDim2.new(0, 20, 0, 20) -- Top left corner
        restoreButton.BackgroundColor3 = Color3.fromRGB(255, 200, 0) -- Yellow
        restoreButton.BorderSizePixel = 0
        restoreButton.Text = "Noob •_•"
        restoreButton.TextColor3 = Color3.fromRGB(0, 0, 0) -- Black text
        restoreButton.TextSize = 16
        restoreButton.Font = Enum.Font.GothamBold
        restoreButton.Parent = ScreenGui
        
        local restoreCorner = Instance.new("UICorner")
        restoreCorner.CornerRadius = UDim.new(0, 6)
        restoreCorner.Parent = restoreButton
        
        local restoreStroke = Instance.new("UIStroke")
        restoreStroke.Thickness = 2
        restoreStroke.Color = Color3.fromRGB(255, 220, 50)
        restoreStroke.Parent = restoreButton
        
        -- Restore button effects
        restoreButton.MouseEnter:Connect(function()
            TweenService:Create(
                restoreButton,
                TweenInfo.new(0.2),
                {BackgroundColor3 = Color3.fromRGB(255, 220, 30)}
            ):Play()
        end)
        
        restoreButton.MouseLeave:Connect(function()
            TweenService:Create(
                restoreButton,
                TweenInfo.new(0.2),
                {BackgroundColor3 = Color3.fromRGB(255, 200, 0)}
            ):Play()
        end)
        
        -- Click to restore window
        restoreButton.MouseButton1Click:Connect(function()
            if mainWindowVisible then return end
            
            restoreButton.Visible = false
            
            -- Show main window
            MainFrame.Visible = true
            MainFrame.Size = UDim2.new(0, 0, 0, 0)
            MainFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
            
            local showTween = TweenService:Create(
                MainFrame,
                TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
                {Size = UDim2.new(0, 300, 0, 230), Position = UDim2.new(0.5, -150, 0.5, -115)}
            )
            
            showTween.Completed:Connect(function()
                mainWindowVisible = true
            end)
            
            showTween:Play()
        end)
    end)
    
    hideTween:Play()
end

-- Close button effects
CloseButton.MouseEnter:Connect(function()
    TweenService:Create(
        CloseButton,
        TweenInfo.new(0.2),
        {BackgroundColor3 = Color3.fromRGB(220, 80, 80)}
    ):Play()
end)

CloseButton.MouseLeave:Connect(function()
    TweenService:Create(
        CloseButton,
        TweenInfo.new(0.2),
        {BackgroundColor3 = Color3.fromRGB(200, 60, 60)}
    ):Play()
end)

CloseButton.MouseButton1Click:Connect(function()
    hideWindow()
end)

-- Spawn button effects
SpawnButton.MouseEnter:Connect(function()
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.2),
        {BackgroundColor3 = Color3.fromRGB(0, 140, 235)}
    ):Play()
end)

SpawnButton.MouseLeave:Connect(function()
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.2),
        {BackgroundColor3 = Color3.fromRGB(0, 120, 215)}
    ):Play()
end)

SpawnButton.MouseButton1Down:Connect(function()
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.1),
        {Size = UDim2.new(0.83, 0, 0, 48)}
    ):Play()
end)

SpawnButton.MouseButton1Up:Connect(function()
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.1),
        {Size = UDim2.new(0.85, 0, 0, 50)}
    ):Play()
end)

-- Delete button effects
DeleteButton.MouseEnter:Connect(function()
    if #spawnedNoobs > 0 then
        TweenService:Create(
            DeleteButton,
            TweenInfo.new(0.2),
            {BackgroundColor3 = Color3.fromRGB(235, 80, 80)}
        ):Play()
    end
end)

DeleteButton.MouseLeave:Connect(function()
    if #spawnedNoobs > 0 then
        TweenService:Create(
            DeleteButton,
            TweenInfo.new(0.2),
            {BackgroundColor3 = Color3.fromRGB(215, 60, 60)}
        ):Play()
    else
        DeleteButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
    end
end)

DeleteButton.MouseButton1Down:Connect(function()
    if #spawnedNoobs > 0 then
        TweenService:Create(
            DeleteButton,
            TweenInfo.new(0.1),
            {Size = UDim2.new(0.83, 0, 0, 48)}
        ):Play()
    end
end)

DeleteButton.MouseButton1Up:Connect(function()
    TweenService:Create(
        DeleteButton,
        TweenInfo.new(0.1),
        {Size = UDim2.new(0.85, 0, 0, 50)}
    ):Play()
end)

-- Click handlers
local spawnDebounce = false
SpawnButton.MouseButton1Click:Connect(function()
    if spawnDebounce then return end
    spawnDebounce = true
    
    -- Press animation
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.1),
        {BackgroundColor3 = Color3.fromRGB(0, 100, 195)}
    ):Play()
    
    -- Create Noob
    local success, errorMsg = pcall(function()
        createNoobNPC()
    end)
    
    if not success then
        warn("Error creating Noob:", errorMsg)
        
        -- Error animation
        local originalColor = SpawnButton.BackgroundColor3
        TweenService:Create(
            SpawnButton,
            TweenInfo.new(0.1),
            {BackgroundColor3 = Color3.fromRGB(255, 50, 50)}
        ):Play()
        wait(0.2)
        TweenService:Create(
            SpawnButton,
            TweenInfo.new(0.2),
            {BackgroundColor3 = originalColor}
        ):Play()
    end
    
    -- Restore button
    wait(0.3)
    TweenService:Create(
        SpawnButton,
        TweenInfo.new(0.2),
        {BackgroundColor3 = Color3.fromRGB(0, 120, 215)}
    ):Play()
    
    spawnDebounce = false
end)

local deleteDebounce = false
DeleteButton.MouseButton1Click:Connect(function()
    if deleteDebounce or #spawnedNoobs == 0 then return end
    deleteDebounce = true
    
    -- Press animation
    TweenService:Create(
        DeleteButton,
        TweenInfo.new(0.1),
        {BackgroundColor3 = Color3.fromRGB(195, 40, 40)}
    ):Play()
    
    -- Delete last Noob
    deleteLastNoob()
    
    -- Restore button
    wait(0.3)
    if #spawnedNoobs > 0 then
        TweenService:Create(
            DeleteButton,
            TweenInfo.new(0.2),
            {BackgroundColor3 = Color3.fromRGB(215, 60, 60)}
        ):Play()
    end
    
    deleteDebounce = false
end)

-- Hotkeys
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    
    if input.KeyCode == Enum.KeyCode.Backspace then
        deleteLastNoob()
    elseif input.KeyCode == Enum.KeyCode.N then
        -- Hotkey for creation (N)
        if not spawnDebounce then
            spawnDebounce = true
            createNoobNPC()
            wait(0.5)
            spawnDebounce = false
        end
    elseif input.KeyCode == Enum.KeyCode.H then
        -- Hotkey to hide window (H)
        hideWindow()
    end
end)

-- Auto-cleanup non-existent Noobs
coroutine.wrap(function()
    while wait(5) do
        local validNoobs = {}
        for _, noobData in ipairs(spawnedNoobs) do
            if noobData.model and noobData.model.Parent then
                table.insert(validNoobs, noobData)
            end
        end
        if #validNoobs ~= #spawnedNoobs then
            spawnedNoobs = validNoobs
            updateCounter()
        end
    end
end)()

-- Initialization
updateCounter()

print("=== Noob Spawner GUI loaded ===")
print("Features:")
print("1. English interface")
print("2. GUI won't disappear on player death (ResetOnSpawn = false)")
print("3. Close button (X) in top left - hides window")
print("4. Yellow rectangular button 'Noob •_•' appears when window is hidden")
print("5. Click 'Noob •_•' to restore window")
print("6. Window can be dragged by title bar")
print("7. Noob R6 with rounded head")
print("8. Arms VERY close to torso (distance 1.00)")
print("9. Hotkeys: Backspace - delete, N - create, H - hide")

Features & Information

Uhh spawner

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts