Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// Settings
- local lockKey = Enum.KeyCode.Q -- Key to toggle lock
- local breakKey = Enum.KeyCode.P -- Key to break script
- local fovRadius = 100 -- Field of View for camlock
- local lockTarget = nil
- local isLocked = false
- local running = true
- local UserInputService = game:GetService("UserInputService")
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local localPlayer = Players.LocalPlayer
- local camera = workspace.CurrentCamera
- local fovCircle = Drawing.new("Circle")
- fovCircle.Thickness = 1
- fovCircle.NumSides = 64
- fovCircle.Radius = fovRadius
- fovCircle.Filled = false
- fovCircle.Color = Color3.fromRGB(255, 0, 0)
- fovCircle.Visible = true
- local function getClosestPlayer()
- local closestPlayer = nil
- local shortestDistance = fovRadius
- for _, player in ipairs(Players:GetPlayers()) do
- if player ~= localPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- local targetPos = camera:WorldToViewportPoint(player.Character.HumanoidRootPart.Position)
- local mousePos = UserInputService:GetMouseLocation()
- local distance = (Vector2.new(targetPos.X, targetPos.Y) - mousePos).Magnitude
- if distance < shortestDistance then
- closestPlayer = player
- shortestDistance = distance
- end
- end
- end
- return closestPlayer
- end
- local function toggleLock()
- if isLocked then
- isLocked = false
- lockTarget = nil
- fovCircle.Color = Color3.fromRGB(255, 0, 0)
- else
- lockTarget = getClosestPlayer()
- if lockTarget then
- isLocked = true
- fovCircle.Color = Color3.fromRGB(0, 255, 0)
- end
- end
- end
- RunService.RenderStepped:Connect(function()
- local mousePos = UserInputService:GetMouseLocation()
- fovCircle.Position = Vector2.new(mousePos.X, mousePos.Y)
- if isLocked and lockTarget and lockTarget.Character and lockTarget.Character:FindFirstChild("HumanoidRootPart") then
- local target = lockTarget.Character.HumanoidRootPart
- camera.CFrame = CFrame.new(camera.CFrame.Position, target.Position)
- end
- end)
- UserInputService.InputBegan:Connect(function(input, isProcessed)
- if isProcessed then return end
- if input.KeyCode == lockKey then
- toggleLock()
- elseif input.KeyCode == breakKey then
- running = false
- isLocked = false
- lockTarget = nil
- fovCircle:Remove()
- script:Destroy()
- end
- end)
- while running do
- task.wait()
- end
Advertisement
Advertisement