Camlock for npc and bot
Key RequiredUniversal

Camlock for npc and bot

Universal ScriptUnknown_personUnknown_person 7.6K views 106 executesUpdated Apr 10, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•121 lines (3918 chars)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
local RunService = game:GetService("RunService")
local StarterGui = game:GetService("StarterGui")
local UIS = game:GetService("UserInputService")

-- Notification
StarterGui:SetCore("SendNotification", {
    Title = "Camlock ON",
    Text = "Locking camera to NPC's Neck",
    Duration = 3
})

-- GUI
local screenGui = Instance.new("ScreenGui", game:GetService("CoreGui"))
screenGui.Name = "Camlock_GUI"

local button = Instance.new("TextButton")
button.Name = "CamlockToggle"
button.Size = UDim2.new(0, 150, 0, 50)
button.Position = UDim2.new(1, -155, 0.1, -25)  -- Button positioned at the top-right corner
button.BackgroundColor3 = Color3.new(0, 0, 0)
button.TextColor3 = Color3.new(1, 1, 1)
button.Text = "ᴄᴀᴍʟᴏᴄᴋ: ᴏɴ"
button.Font = Enum.Font.SourceSans
button.TextScaled = true
button.TextSize = 30
button.Parent = screenGui

local corner = Instance.new("UICorner", button)
corner.CornerRadius = UDim.new(0, 12)

-- Variables for dragging
local dragging = false
local dragInput, dragStart, startPos

-- Function to update the position of the button while dragging
local function update(input)
    local delta = input.Position - dragStart
    local newPosition = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    -- Smoothly updating button position
    button.Position = newPosition
end

-- Detect mouse button down
button.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = button.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

-- Detect mouse movement and update button position
button.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        dragInput = input
    end
end)

game:GetService("UserInputService").InputChanged:Connect(function(input)
    if dragging and input == dragInput then
        update(input)
    end
end)

-- Find closest NPC and lock onto their neck
local function getClosestNPC()
    local closest, shortestDist = nil, math.huge
    for _, obj in ipairs(workspace:GetDescendants()) do
        if obj:IsA("Model") and obj ~= player.Character then
            local hum = obj:FindFirstChildWhichIsA("Humanoid")
            local neck = obj:FindFirstChild("Neck") or obj:FindFirstChild("Head")
            if hum and neck and hum.Health > 0 then
                -- Ensure it's not a player
                local isPlayer = false
                for _, plr in ipairs(Players:GetPlayers()) do
                    if plr.Character == obj then
                        isPlayer = true
                        break
                    end
                end

                if not isPlayer then
                    local dist = (neck.Position - camera.CFrame.Position).Magnitude
                    if dist < shortestDist then
                        shortestDist = dist
                        closest = neck
                    end
                end
            end
        end
    end
    return closest
end

-- Camlock Logic
local camlockEnabled = false
local camlockLoop

button.MouseButton1Click:Connect(function()
    camlockEnabled = not camlockEnabled
    button.Text = camlockEnabled and "ᴄᴀᴍʟᴏᴄᴋ: ᴏɴ" or "ᴄᴀᴍʟᴏᴄᴋ: ᴏғғ"

    if camlockEnabled then
        camlockLoop = RunService.RenderStepped:Connect(function()
            local target = getClosestNPC()
            if target then
                camera.CFrame = CFrame.new(camera.CFrame.Position, target.Position)
            end
        end)
    else
        if camlockLoop then camlockLoop:Disconnect() end
    end
end)

Features & Information

Camlock for npc & bot universal It will not work on player only bot and npc and it's laggy I don't know how to fix it Please sub to my yt https://youtube.com/@carlll_54321?si=TxsYG84iBlqLDY9X

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts