1 | -- Mobile Camlock Script for Da Strike on Roblox |
2 | |
3 | local Players = game:GetService("Players") |
4 | local UserInputService = game:GetService("UserInputService") |
5 | local RunService = game:GetService("RunService") |
6 | local Workspace = game:GetService("Workspace") |
7 | local Camera = game.Workspace.CurrentCamera |
8 | |
9 | local function FindClosestPlayer() |
10 | local closestDist = math.huge |
11 | local closestPlayer = nil |
12 | |
13 | for _, player in pairs(Players:GetPlayers()) do |
14 | if player ~= Players.LocalPlayer and player.Character and player.Character:FindFirstChild("UpperTorso") then |
15 | local dist = (player.Character.UpperTorso.Position - Players.LocalPlayer.Character.UpperTorso.Position).magnitude |
16 | if dist < closestDist then |
17 | closestDist = dist |
18 | closestPlayer = player |
19 | end |
20 | end |
21 | end |
22 | |
23 | return closestPlayer |
24 | end |
25 | |
26 | local function LockOn(player) |
27 | local targetPosition = player.Character.UpperTorso.Position |
28 | local targetScreenPosition = Camera:WorldToScreenPoint(targetPosition) |
29 | if targetScreenPosition.Z > 0 then |
30 | UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter |
31 | UserInputService.MouseIconEnabled = false |
32 | UserInputService.MouseBehavior = Enum.MouseBehavior.Default |
33 | UserInputService.MouseIconEnabled = true |
34 | UserInputService.MoveMouse(Vector2.new(targetScreenPosition.X, targetScreenPosition.Y)) |
35 | end |
36 | end |
37 | |
38 | local function IsPlayerAlive(player) |
39 | return player and player.Character and player.Character:FindFirstChild("Humanoid") and player.Character.Humanoid.Health > 0 |
40 | end |
41 | |
42 | UserInputService.InputBegan:Connect(function(input) |
43 | if input.KeyCode == Enum.KeyCode.Q then |
44 | local closestPlayer = FindClosestPlayer() |
45 | if closestPlayer and IsPlayerAlive(closestPlayer) then |
46 | LockOn(closestPlayer) |
47 | end |
48 | end |
49 | end) |
50 | |
51 | RunService.RenderStepped:Connect(function() |
52 | if UserInputService.TouchEnabled then |
53 | local closestPlayer = FindClosestPlayer() |
54 | if closestPlayer and IsPlayerAlive(closestPlayer) then |
55 | LockOn(closestPlayer) |
56 | end |
57 | end |
58 | end) |