Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Services
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UserInputService = game:GetService("UserInputService")
- -- Local Player
- local LocalPlayer = Players.LocalPlayer
- -- Camlock Toggle
- local camlockEnabled = false
- local targetPlayer = nil
- -- GUI Setup
- local ScreenGui = Instance.new("ScreenGui", LocalPlayer.PlayerGui)
- local MainFrame = Instance.new("Frame", ScreenGui)
- MainFrame.Size = UDim2.new(0, 200, 0, 100)
- MainFrame.Position = UDim2.new(0, 10, 0, 10) -- Top left corner
- MainFrame.Visible = true
- MainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
- MainFrame.BorderSizePixel = 0
- -- Make GUI Draggable
- local dragging = false
- local dragStart, startPos
- MainFrame.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- dragging = true
- dragStart = input.Position
- startPos = MainFrame.Position
- input.Changed:Connect(function()
- if input.UserInputState == Enum.UserInputState.End then
- dragging = false
- end
- end)
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
- local delta = input.Position - dragStart
- MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
- end
- end)
- -- Toggle Button
- local ToggleButton = Instance.new("TextButton", MainFrame)
- ToggleButton.Text = "Enable Camlock"
- ToggleButton.Size = UDim2.new(1, 0, 0.5, 0)
- ToggleButton.Position = UDim2.new(0, 0, 0, 0)
- ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
- -- Open/Close GUI Toggle
- local GuiToggleKey = Enum.KeyCode.P -- Change this key if desired
- UserInputService.InputBegan:Connect(function(input)
- if input.KeyCode == GuiToggleKey then
- MainFrame.Visible = not MainFrame.Visible
- end
- end)
- -- Functions
- local function isTeamMate(player)
- return false -- Implement team check logic here
- end
- local function isVisible(player)
- return true -- Implement wall check logic here
- end
- local function findNearestTarget()
- local nearestDistance = math.huge
- local nearestPlayer = nil
- for _, player in pairs(Players:GetPlayers()) do
- if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") and not isTeamMate(player) then
- local distance = (LocalPlayer.Character.HumanoidRootPart.Position - player.Character.HumanoidRootPart.Position).magnitude
- if distance < nearestDistance and isVisible(player) then
- nearestDistance = distance
- nearestPlayer = player
- end
- end
- end
- return nearestPlayer
- end
- local function onToggle()
- camlockEnabled = not camlockEnabled
- ToggleButton.Text = camlockEnabled and "Disable Camlock" or "Enable Camlock"
- ToggleButton.BackgroundColor3 = camlockEnabled and Color3.fromRGB(200, 0, 0) or Color3.fromRGB(0, 200, 0)
- end
- local function camlock()
- if camlockEnabled and targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
- local camera = workspace.CurrentCamera
- local humanoidRootPart = targetPlayer.Character.HumanoidRootPart
- camera.CFrame = CFrame.new(camera.CFrame.Position, humanoidRootPart.Position)
- end
- end
- -- Event Connections
- ToggleButton.MouseButton1Click:Connect(onToggle)
- RunService.RenderStepped:Connect(camlock)
- -- Main Loop
- RunService.RenderStepped:Connect(function()
- if camlockEnabled then
- targetPlayer = findNearestTarget()
- else
- targetPlayer = nil
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment