NPC S*er Script
Key Required

NPC S*er Script

Transformers Time Before Earth *V0.1*craftblockskeiferavcraftblockskeiferav 1.5K views 136 executesUpdated Aug 15, 2025
Unrated
00
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
#Universal Script

Community Comments (0)

No comments yet for this script.