local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local TweenService = game:GetService("TweenService") local localPlayer = Players.LocalPlayer local workspace = game.Workspace local cam = workspace.CurrentCamera -- Remove other players & name tags (clean scene) for _, p in pairs(Players:GetPlayers()) do if p ~= localPlayer then if p.Character then p.Character:Destroy() end p:Destroy() end end for _, gui in pairs(workspace:GetDescendants()) do if gui:IsA("BillboardGui") then gui.Enabled = false end end -- Freeze player local function freezePlayer() local char = localPlayer.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if hum then hum.WalkSpeed = 0 hum.JumpPower = 0 end if root then root.Anchored = true end end freezePlayer() -- Tall creepy NPC creation function local function createTallWhistlerNPC() local npc = Instance.new("Model") npc.Name = "Whistler" local rootPart = Instance.new("Part") rootPart.Name = "HumanoidRootPart" rootPart.Size = Vector3.new(2, 2, 1) rootPart.Anchored = true rootPart.CanCollide = false rootPart.BrickColor = BrickColor.new("Really black") rootPart.Material = Enum.Material.Neon rootPart.Parent = npc npc.PrimaryPart = rootPart -- Head: long and narrow local head = Instance.new("Part") head.Name = "Head" head.Size = Vector3.new(2, 3, 1) head.Anchored = true head.BrickColor = BrickColor.new("Really black") head.Material = Enum.Material.Neon head.Parent = npc -- Eyes decal (right eye example) local face = Instance.new("Decal") face.Texture = "rbxassetid://17062591783" face.Face = Enum.NormalId.Front face.Parent = head local torso = Instance.new("Part") torso.Name = "Torso" torso.Size = Vector3.new(2, 8, 1) torso.Anchored = true torso.BrickColor = BrickColor.new("Really black") torso.Material = Enum.Material.Neon torso.Parent = npc local function createLimb(name) local limb = Instance.new("Part") limb.Name = name limb.Size = Vector3.new(1, 6, 1) limb.Anchored = true limb.BrickColor = BrickColor.new("Really black") limb.Material = Enum.Material.Neon limb.Parent = npc return limb end local leftArm = createLimb("Left Arm") local rightArm = createLimb("Right Arm") local leftLeg = createLimb("Left Leg") local rightLeg = createLimb("Right Leg") -- Position parts relative to rootPart local rootCFrame = CFrame.new(0, 10, 0) rootPart.CFrame = rootCFrame head.CFrame = rootCFrame * CFrame.new(0, 7, 0) torso.CFrame = rootCFrame * CFrame.new(0, 3, 0) leftArm.CFrame = rootCFrame * CFrame.new(-1.5, 3, 0) rightArm.CFrame = rootCFrame * CFrame.new(1.5, 3, 0) leftLeg.CFrame = rootCFrame * CFrame.new(-0.5, -3, 0) rightLeg.CFrame = rootCFrame * CFrame.new(0.5, -3, 0) npc.Parent = workspace return npc, head end local npc, head = createTallWhistlerNPC() -- Place NPC 50 studs in front of player if localPlayer.Character then local root = localPlayer.Character:FindFirstChild("HumanoidRootPart") if root then local spawnPos = root.CFrame * CFrame.new(0, 0, -50) npc:SetPrimaryPartCFrame(spawnPos) end end -- Make NPC stare at player & twitch head only RunService.Heartbeat:Connect(function() if localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart") and npc.PrimaryPart then local playerPos = localPlayer.Character.HumanoidRootPart.Position local npcPos = npc.PrimaryPart.Position local lookVector = (playerPos - npcPos).Unit npc.PrimaryPart.CFrame = CFrame.new(npcPos.X, npcPos.Y, npcPos.Z) * CFrame.Angles(0, math.atan2(lookVector.X, lookVector.Z), 0) -- Head twitching rotation only (relative to NPC root) local twitchX = math.rad(math.random(-15, 15)) local twitchY = math.rad(math.random(-15, 15)) local twitchZ = math.rad(math.random(-15, 15)) head.CFrame = npc.PrimaryPart.CFrame * CFrame.new(0, 7, 0) * CFrame.Angles(twitchX, twitchY, twitchZ) -- Keep body parts aligned npc.Torso.CFrame = npc.PrimaryPart.CFrame * CFrame.new(0, 3, 0) npc["Left Arm"].CFrame = npc.PrimaryPart.CFrame * CFrame.new(-1.5, 3, 0) npc["Right Arm"].CFrame = npc.PrimaryPart.CFrame * CFrame.new(1.5, 3, 0) npc["Left Leg"].CFrame = npc.PrimaryPart.CFrame * CFrame.new(-0.5, -3, 0) npc["Right Leg"].CFrame = npc.PrimaryPart.CFrame * CFrame.new(0.5, -3, 0) end end) -- Looping whistle sound local whistleSound = Instance.new("Sound", workspace) whistleSound.SoundId = "rbxassetid://9118826885" -- real whistle whistleSound.Looped = true whistleSound.Volume = 0.5 whistleSound:Play() -- Creepy red text GUI (no fade) local ScreenGui = Instance.new("ScreenGui", localPlayer.PlayerGui) local TextLabel = Instance.new("TextLabel", ScreenGui) TextLabel.Size = UDim2.new(1,0,0.2,0) TextLabel.Position = UDim2.new(0,0,0.4,0) TextLabel.BackgroundTransparency = 1 TextLabel.Text = "Do you hear the whistle?" TextLabel.TextColor3 = Color3.new(1,0,0) TextLabel.TextStrokeColor3 = Color3.new(0,0,0) TextLabel.TextStrokeTransparency = 0 TextLabel.Font = Enum.Font.Arcade TextLabel.TextScaled = true -- Flickering red/black lighting effect cycling day/night fast local t = 0 RunService.Heartbeat:Connect(function(dt) t = t + dt * 10 Lighting.ClockTime = (t % 24) local flicker = math.abs(math.sin(t*3)) Lighting.Ambient = Color3.new(flicker*0.2,0,0) Lighting.OutdoorAmbient = Color3.new(flicker*0.2,0,0) Lighting.FogColor = Color3.new(flicker*0.1,0,0) end) -- Lock camera first person cam.CameraType = Enum.CameraType.Custom localPlayer.CameraMode = Enum.CameraMode.LockFirstPerson cam.CameraSubject = localPlayer.Character and localPlayer.Character:FindFirstChild("Humanoid") or nil