hood customs cam lock
Key RequiredUniversal

hood customs cam lock

Universal ScriptGuest666Guest666 3.2K views 7K executesUpdated Apr 22, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•374 lines (10000 chars)
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
local playerGui = player:WaitForChild("PlayerGui")

local lockedTarget = nil
local lockEnabled = false
local systemEnabled = true
local maxDistance = 120

local keybind = Enum.KeyCode.X
local waitingForKeybind = false

local function getPart(character, name)
	if character then
		return character:FindFirstChild(name)
	end
end

local function validTarget(other)
	if other == player then return false end

	local char = other.Character
	if not char then return false end

	local hum = char:FindFirstChildOfClass("Humanoid")
	local head = getPart(char, "Head")
	local root = getPart(char, "HumanoidRootPart")

	if not hum or hum.Health <= 0 then return false end
	if not head or not root then return false end

	local myChar = player.Character
	local myRoot = myChar and getPart(myChar, "HumanoidRootPart")
	if not myRoot then return false end

	local dist = (root.Position - myRoot.Position).Magnitude
	return dist <= maxDistance
end

local function closestTarget()
	local best = nil
	local bestDist = math.huge
	local center = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)

	for _, p in ipairs(Players:GetPlayers()) do
		if validTarget(p) then
			local head = getPart(p.Character, "Head")
			local pos, visible = camera:WorldToViewportPoint(head.Position)

			if visible then
				local screenPos = Vector2.new(pos.X, pos.Y)
				local d = (screenPos - center).Magnitude

				if d < bestDist then
					bestDist = d
					best = p
				end
			end
		end
	end

	return best
end

-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "ModernCamLockUI"
gui.ResetOnSpawn = false
gui.Parent = playerGui

local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.new(0, 300, 0, 170)
main.Position = UDim2.new(0, 25, 0.5, -85)
main.BackgroundColor3 = Color3.fromRGB(12, 14, 28)
main.BorderSizePixel = 0
main.ZIndex = 1
main.Parent = gui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 18)
mainCorner.Parent = main

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(65, 115, 255)
stroke.Thickness = 2
stroke.Transparency = 0
stroke.Parent = main

local topBar = Instance.new("Frame")
topBar.Name = "TopBar"
topBar.Size = UDim2.new(1, 0, 0, 40)
topBar.BackgroundColor3 = Color3.fromRGB(18, 22, 40)
topBar.BorderSizePixel = 0
topBar.ZIndex = 2
topBar.Parent = main

local topCorner = Instance.new("UICorner")
topCorner.CornerRadius = UDim.new(0, 18)
topCorner.Parent = topBar

local topFill = Instance.new("Frame")
topFill.Size = UDim2.new(1, 0, 0, 18)
topFill.Position = UDim2.new(0, 0, 1, -18)
topFill.BackgroundColor3 = Color3.fromRGB(18, 22, 40)
topFill.BorderSizePixel = 0
topFill.ZIndex = 2
topFill.Parent = topBar

local accent = Instance.new("Frame")
accent.Size = UDim2.new(1, 0, 0, 2)
accent.Position = UDim2.new(0, 0, 0, 40)
accent.BackgroundColor3 = Color3.fromRGB(65, 115, 255)
accent.BorderSizePixel = 0
accent.ZIndex = 2
accent.Parent = main

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 24)
title.Position = UDim2.new(0, 14, 0, 8)
title.BackgroundTransparency = 1
title.Text = "Cam Lock Panel"
title.TextColor3 = Color3.fromRGB(245, 247, 255)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Font = Enum.Font.GothamBold
title.TextSize = 17
title.ZIndex = 3
title.Parent = main

local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -28, 0, 18)
subtitle.Position = UDim2.new(0, 14, 0, 54)
subtitle.BackgroundTransparency = 1
subtitle.Text = "Press chosen key to lock to nearest head"
subtitle.TextColor3 = Color3.fromRGB(150, 160, 190)
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 12
subtitle.ZIndex = 3
subtitle.Parent = main

local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -28, 0, 20)
status.Position = UDim2.new(0, 14, 0, 82)
status.BackgroundTransparency = 1
status.Text = "Status: Enabled"
status.TextColor3 = Color3.fromRGB(90, 255, 140)
status.TextXAlignment = Enum.TextXAlignment.Left
status.Font = Enum.Font.GothamMedium
status.TextSize = 14
status.ZIndex = 3
status.Parent = main

local targetLabel = Instance.new("TextLabel")
targetLabel.Size = UDim2.new(1, -28, 0, 20)
targetLabel.Position = UDim2.new(0, 14, 0, 106)
targetLabel.BackgroundTransparency = 1
targetLabel.Text = "Target: None"
targetLabel.TextColor3 = Color3.fromRGB(215, 220, 235)
targetLabel.TextXAlignment = Enum.TextXAlignment.Left
targetLabel.Font = Enum.Font.Gotham
targetLabel.TextSize = 14
targetLabel.ZIndex = 3
targetLabel.Parent = main

local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(0, 105, 0, 34)
toggleButton.Position = UDim2.new(1, -119, 1, -48)
toggleButton.BackgroundColor3 = Color3.fromRGB(65, 115, 255)
toggleButton.BorderSizePixel = 0
toggleButton.Text = "ON"
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.Font = Enum.Font.GothamBold
toggleButton.TextSize = 14
toggleButton.AutoButtonColor = false
toggleButton.ZIndex = 3
toggleButton.Parent = main

local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 10)
buttonCorner.Parent = toggleButton

local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = Color3.fromRGB(150, 185, 255)
buttonStroke.Thickness = 1
buttonStroke.Transparency = 0.2
buttonStroke.Parent = toggleButton

local keybindTag = Instance.new("TextButton")
keybindTag.Size = UDim2.new(0, 70, 0, 24)
keybindTag.Position = UDim2.new(0, 14, 1, -43)
keybindTag.BackgroundColor3 = Color3.fromRGB(20, 24, 42)
keybindTag.BorderSizePixel = 0
keybindTag.Text = "Key: X"
keybindTag.TextColor3 = Color3.fromRGB(210, 220, 255)
keybindTag.Font = Enum.Font.GothamMedium
keybindTag.TextSize = 13
keybindTag.AutoButtonColor = false
keybindTag.ZIndex = 3
keybindTag.Parent = main

local keyCorner = Instance.new("UICorner")
keyCorner.CornerRadius = UDim.new(0, 8)
keyCorner.Parent = keybindTag

local keyStroke = Instance.new("UIStroke")
keyStroke.Color = Color3.fromRGB(70, 90, 150)
keyStroke.Thickness = 1
keyStroke.Transparency = 0.35
keyStroke.Parent = keybindTag

local function updateUI()
	if systemEnabled then
		status.Text = "Status: Enabled"
		status.TextColor3 = Color3.fromRGB(90, 255, 140)
		toggleButton.Text = "ON"
		TweenService:Create(toggleButton, TweenInfo.new(0.15), {
			BackgroundColor3 = Color3.fromRGB(65, 115, 255)
		}):Play()
	else
		status.Text = "Status: Disabled"
		status.TextColor3 = Color3.fromRGB(255, 110, 110)
		toggleButton.Text = "OFF"
		TweenService:Create(toggleButton, TweenInfo.new(0.15), {
			BackgroundColor3 = Color3.fromRGB(80, 85, 100)
		}):Play()
	end

	if waitingForKeybind then
		keybindTag.Text = "..."
	else
		keybindTag.Text = "Key: " .. keybind.Name
	end

	if lockedTarget and lockedTarget.Character and lockedTarget.Character:FindFirstChild("Head") then
		targetLabel.Text = "Target: " .. lockedTarget.Name
	else
		targetLabel.Text = "Target: None"
	end
end

toggleButton.MouseButton1Click:Connect(function()
	systemEnabled = not systemEnabled

	if not systemEnabled then
		lockEnabled = false
		lockedTarget = nil
	end

	updateUI()
end)

toggleButton.MouseEnter:Connect(function()
	TweenService:Create(toggleButton, TweenInfo.new(0.12), {
		Size = UDim2.new(0, 110, 0, 36)
	}):Play()
end)

toggleButton.MouseLeave:Connect(function()
	TweenService:Create(toggleButton, TweenInfo.new(0.12), {
		Size = UDim2.new(0, 105, 0, 34)
	}):Play()
end)

keybindTag.MouseButton1Click:Connect(function()
	waitingForKeybind = true
	lockEnabled = false
	lockedTarget = nil
	TweenService:Create(keybindTag, TweenInfo.new(0.12), {
		BackgroundColor3 = Color3.fromRGB(35, 45, 75)
	}):Play()
	updateUI()
end)

-- Dragging
local dragging = false
local dragStart
local startPos
local dragInput

topBar.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = main.Position

		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
			end
		end)
	end
end)

topBar.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement then
		dragInput = input
	end
end)

UIS.InputChanged:Connect(function(input)
	if dragging and input == dragInput then
		local delta = input.Position - dragStart
		main.Position = UDim2.new(
			startPos.X.Scale,
			startPos.X.Offset + delta.X,
			startPos.Y.Scale,
			startPos.Y.Offset + delta.Y
		)
	end
end)

UIS.InputBegan:Connect(function(input, gpe)
	if gpe then return end

	if waitingForKeybind then
		if input.UserInputType == Enum.UserInputType.Keyboard then
			keybind = input.KeyCode
			waitingForKeybind = false
			TweenService:Create(keybindTag, TweenInfo.new(0.12), {
				BackgroundColor3 = Color3.fromRGB(20, 24, 42)
			}):Play()
			updateUI()
		end
		return
	end

	if not systemEnabled then return end

	if input.KeyCode == keybind then
		if lockEnabled then
			lockEnabled = false
			lockedTarget = nil
		else
			lockedTarget = closestTarget()
			lockEnabled = lockedTarget ~= nil
		end

		updateUI()
	end
end)

RunService.RenderStepped:Connect(function()
	if not systemEnabled then return end
	if not lockEnabled or not lockedTarget then return end

	if not validTarget(lockedTarget) then
		lockEnabled = false
		lockedTarget = nil
		updateUI()
		return
	end

	local head = lockedTarget.Character and lockedTarget.Character:FindFirstChild("Head")
	if not head then
		lockEnabled = false
		lockedTarget = nil
		updateUI()
		return
	end

	local camPos = camera.CFrame.Position
	local targetCF = CFrame.lookAt(camPos, head.Position)
	camera.CFrame = camera.CFrame:Lerp(targetCF, 0.18)

	targetLabel.Text = "Target: " .. lockedTarget.Name
end)

updateUI()

Features & Information

CAMLOCK

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts