Garry The Friend
Key RequiredUniversal

Garry The Friend

Universal Scriptdaviddavidovich03daviddavidovich03 3.9K views 40 executesUpdated Mar 29, 2025
3.8/ 5(4 votes)
3175% Positive
Lua Script•85 lines (2382 chars)
local Player = game.Players.LocalPlayer
local Camera = workspace.CurrentCamera

local npc = Instance.new("Model")
npc.Name = "NPC"
npc.Parent = workspace

local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 2)
head.Shape = Enum.PartType.Ball
head.Position = Vector3.new(0, 3, 0)
head.Anchored = true
head.CanCollide = false
head.Parent = npc
head.Color = Color3.fromRGB(0, 0, 0)

local billboard = Instance.new("BillboardGui")
billboard.Size = UDim2.new(0, 100, 0, 100)
billboard.Adornee = head
billboard.Parent = head

local imageLabel = Instance.new("ImageLabel")
imageLabel.Image = "rbxassetid://8443724896"
imageLabel.Size = UDim2.new(1, 0, 1, 0)
imageLabel.BackgroundTransparency = 1
imageLabel.Parent = billboard

npc.PrimaryPart = head 

local function updateHeadOrientation()
    while true do
        local direction = (Camera.CFrame.Position - head.Position).unit
        head.CFrame = CFrame.lookAt(head.Position, head.Position + direction)
        wait(0.1)
    end
end

local function moveToPlayer()
    local targetPosition = Player.Character.HumanoidRootPart.Position
    local speed = 8

    while true do
        local npcPosition = npc.PrimaryPart.Position
        local direction = (targetPosition - npcPosition).unit
        local moveStep = direction * speed * 0.1
        npc:SetPrimaryPartCFrame(npc.PrimaryPart.CFrame + moveStep)

        local distance = (npc.PrimaryPart.Position - Player.Character.HumanoidRootPart.Position).magnitude
        if distance < 5 then
            onPlayerNear()
        end

        wait(0.1)
    end
end

local function onPlayerNear()
    local playerGui = Player:WaitForChild("PlayerGui")
    local guiElement = playerGui:FindFirstChild("YourGuiElement")

    if guiElement then
        guiElement.Size = UDim2.new(0, 200, 0, 200)
    end

    local resetSound = Instance.new("Sound")
    resetSound.SoundId = "rbxassetid://301964312"
    resetSound.Parent = npc
    resetSound.Looped = true
    resetSound:Play()

    local playerName = Player.Name
    Player:Kick("Error 1001: You can't run from this monster... (" .. playerName .. ")")
end

coroutine.wrap(updateHeadOrientation)()
coroutine.wrap(moveToPlayer)()

npc:SetPrimaryPartCFrame(CFrame.new(10, 3, 10))

for _, part in pairs(npc:GetChildren()) do
    if part:IsA("Part") then
        part.Color = Color3.fromRGB(0, 0, 0)
    end
end

Features & Information

dark dark DARKER THAN THE VOID
#the void

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts