
Key Required
NPC S*er Script
Lua Script•172 lines (5687 chars)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local RunService = game:GetService("RunService")
local camera = workspace.CurrentCamera
local npcFolder = Instance.new("Folder", workspace)
npcFolder.Name = "SpawnedNPCs"
-- UI Setup
local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
gui.Name = "NPCSpawnerUI"
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 250, 0, 200)
frame.Position = UDim2.new(0, 20, 0, 100)
frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
frame.BorderSizePixel = 2
local nameBox = Instance.new("TextBox", frame)
nameBox.Size = UDim2.new(1, -20, 0, 30)
nameBox.Position = UDim2.new(0, 10, 0, 10)
nameBox.PlaceholderText = "Enter NPC name"
nameBox.TextColor3 = Color3.new(1, 1, 1)
nameBox.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
local genderLabel = Instance.new("TextLabel", frame)
genderLabel.Size = UDim2.new(0.5, -15, 0, 20)
genderLabel.Position = UDim2.new(0, 10, 0, 50)
genderLabel.Text = "Gender:"
genderLabel.TextColor3 = Color3.new(1, 1, 1)
genderLabel.BackgroundTransparency = 1
genderLabel.TextXAlignment = Enum.TextXAlignment.Left
local genderSelect = Instance.new("TextButton", frame)
genderSelect.Size = UDim2.new(0.5, -15, 0, 30)
genderSelect.Position = UDim2.new(0.5, 5, 0, 45)
genderSelect.Text = "Boy"
genderSelect.TextColor3 = Color3.new(1, 1, 1)
genderSelect.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
local function toggleGender()
genderSelect.Text = genderSelect.Text == "Boy" and "Girl" or "Boy"
end
genderSelect.MouseButton1Click:Connect(toggleGender)
local spawnBtn = Instance.new("TextButton", frame)
spawnBtn.Size = UDim2.new(1, -20, 0, 30)
spawnBtn.Position = UDim2.new(0, 10, 0, 85)
spawnBtn.Text = "Spawn NPC"
spawnBtn.TextColor3 = Color3.new(1, 1, 1)
spawnBtn.BackgroundColor3 = Color3.new(0.2, 0.5, 0.2)
local clearBtn = Instance.new("TextButton", frame)
clearBtn.Size = UDim2.new(1, -20, 0, 30)
clearBtn.Position = UDim2.new(0, 10, 0, 125)
clearBtn.Text = "Clear NPCs"
clearBtn.TextColor3 = Color3.new(1, 1, 1)
clearBtn.BackgroundColor3 = Color3.new(0.5, 0.2, 0.2)
local toggleBtn = Instance.new("TextButton", gui)
toggleBtn.Size = UDim2.new(0, 100, 0, 40)
toggleBtn.Position = UDim2.new(0, 20, 0, 60)
toggleBtn.Text = "Toggle UI"
toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
toggleBtn.TextColor3 = Color3.new(1, 1, 1)
toggleBtn.MouseButton1Click:Connect(function()
frame.Visible = not frame.Visible
end)
clearBtn.MouseButton1Click:Connect(function()
for _, npc in pairs(npcFolder:GetChildren()) do
npc:Destroy()
end
end)
-- Helper functions
local function createPart(name, size, color, cframe, parent)
local part = Instance.new("Part")
part.Name = name
part.Size = size
part.CFrame = cframe
part.Anchored = false
part.CanCollide = true
part.BrickColor = BrickColor.new(color)
part.TopSurface = Enum.SurfaceType.Smooth
part.BottomSurface = Enum.SurfaceType.Smooth
part.Parent = parent
return part
end
local function weld(part0, part1)
local weld = Instance.new("WeldConstraint")
weld.Part0 = part0
weld.Part1 = part1
weld.Parent = part0
end
-- ESP Name
local function addBillboard(part, text)
local bb = Instance.new("BillboardGui", part)
bb.Size = UDim2.new(0, 200, 0, 30)
bb.AlwaysOnTop = true
bb.Adornee = part
local label = Instance.new("TextLabel", bb)
label.Size = UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1, 1, 1)
label.TextStrokeTransparency = 0
label.Font = Enum.Font.SourceSansBold
label.TextScaled = true
label.Text = text
end
-- Hair Part
local function createHair(gender, head)
local hair = Instance.new("Part")
hair.Size = gender == "Boy" and Vector3.new(2, 1, 2) or Vector3.new(2.5, 1.5, 2.5)
hair.BrickColor = BrickColor.new(gender == "Boy" and "Reddish brown" or "Hot pink")
hair.Anchored = false
hair.CanCollide = false
hair.Name = "Hair"
hair.CFrame = head.CFrame * CFrame.new(0, 0.6, 0)
hair.Parent = head.Parent
weld(head, hair)
end
-- Spawn NPC
local function spawnNPC()
local nameText = nameBox.Text ~= "" and nameBox.Text or "NPC"
local gender = genderSelect.Text
local model = Instance.new("Model", npcFolder)
model.Name = nameText
local spawnPos = player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player.Character.HumanoidRootPart.Position or Vector3.new(0, 5, 0)
local basePos = spawnPos + Vector3.new(5, 3, 0)
local torso = createPart("Torso", Vector3.new(2, 2, 1), "Bright blue", CFrame.new(basePos), model)
local head = createPart("Head", Vector3.new(2, 1, 2), "Bright yellow", torso.CFrame * CFrame.new(0, 1.5, 0), model)
local lArm = createPart("LeftArm", Vector3.new(1, 2, 1), "Bright green", torso.CFrame * CFrame.new(-1.5, 0, 0), model)
local rArm = createPart("RightArm", Vector3.new(1, 2, 1), "Bright green", torso.CFrame * CFrame.new(1.5, 0, 0), model)
local lLeg = createPart("LeftLeg", Vector3.new(1, 2, 1), "Bright red", torso.CFrame * CFrame.new(-0.5, -2, 0), model)
local rLeg = createPart("RightLeg", Vector3.new(1, 2, 1), "Bright red", torso.CFrame * CFrame.new(0.5, -2, 0), model)
local hum = Instance.new("Humanoid", model)
weld(torso, head)
weld(torso, lArm)
weld(torso, rArm)
weld(torso, lLeg)
weld(torso, rLeg)
createHair(gender, head)
addBillboard(head, nameText)
model.PrimaryPart = torso
model:SetPrimaryPartCFrame(CFrame.new(basePos))
-- Movement loop
task.spawn(function()
while model and model.Parent do
local moveTo = torso.Position + Vector3.new(math.random(-10, 10), 0, math.random(-10, 10))
hum:MoveTo(moveTo)
hum.MoveToFinished:Wait()
task.wait(1)
end
end)
end
spawnBtn.MouseButton1Click:Connect(spawnNPC)Features & Information
Good, Spawns NPC
Community Comments (0)
No comments yet for this script.
