-- Delta Mobile: Visual FOV + Lock-On Camera + Red Locked Button (Top Right) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local UserInputService = game:GetService("UserInputService") local Radius = 100 local MaxDistance = 100 local rainbowFOV = false local hue = 0 local currentTarget = nil -- Draw FOV circle local circle = Drawing.new("Circle") circle.Visible = true circle.Radius = Radius circle.Thickness = 2 circle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) circle.Color = Color3.fromRGB(0, 0, 0) circle.Transparency = 0.6 circle.Filled = false -- GUI setup local gui = Instance.new("ScreenGui", game:GetService("CoreGui")) gui.Name = "FOV_GUI" -- Button: Locked On indicator (TOP RIGHT) local lockedButton = Instance.new("TextLabel") lockedButton.Size = UDim2.new(0, 160, 0, 40) lockedButton.Position = UDim2.new(1, -170, 0.02, 0) lockedButton.AnchorPoint = Vector2.new(0, 0) lockedButton.BackgroundColor3 = Color3.fromRGB(200, 0, 0) -- red lockedButton.TextColor3 = Color3.fromRGB(255, 255, 255) lockedButton.Text = "🔒 LOCKED ON" lockedButton.TextScaled = true lockedButton.Font = Enum.Font.SourceSansBold lockedButton.Visible = false lockedButton.Parent = gui -- Buttons: FOV Color and Rainbow toggle (bottom left) local button1 = Instance.new("TextButton") button1.Size = UDim2.new(0, 140, 0, 40) button1.Position = UDim2.new(0.02, 0, 0.82, 0) button1.BackgroundColor3 = Color3.fromRGB(0, 0, 0) button1.TextColor3 = Color3.new(1, 1, 1) button1.Text = "Change FOV Color" button1.TextScaled = true button1.Font = Enum.Font.SourceSansBold button1.Parent = gui local button2 = Instance.new("TextButton") button2.Size = UDim2.new(0, 140, 0, 40) button2.Position = UDim2.new(0.02, 0, 0.90, 0) button2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) button2.TextColor3 = Color3.new(1, 1, 1) button2.Text = "Rainbow FOV: OFF" button2.TextScaled = true button2.Font = Enum.Font.SourceSansBold button2.Parent = gui -- Make buttons draggable local function makeDraggable(button) local dragging, dragInput, dragStart, startPos button.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or 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) button.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart button.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end makeDraggable(button1) makeDraggable(button2) -- Color options local fovColors = { Color3.fromRGB(0, 0, 0), Color3.fromRGB(255, 0, 0), Color3.fromRGB(0, 255, 0), Color3.fromRGB(0, 170, 255), Color3.fromRGB(255, 255, 0) } local colorIndex = 1 button1.MouseButton1Click:Connect(function() rainbowFOV = false button2.Text = "Rainbow FOV: OFF" colorIndex += 1 if colorIndex > #fovColors then colorIndex = 1 end circle.Color = fovColors[colorIndex] end) button2.MouseButton1Click:Connect(function() rainbowFOV = not rainbowFOV button2.Text = "Rainbow FOV: " .. (rainbowFOV and "ON" or "OFF") end) -- Lock-on target detection local function getClosestTarget() local closest = nil local closestDist = math.huge for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local hrp = player.Character.HumanoidRootPart local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position) local distFromCenter = (Vector2.new(pos.X, pos.Y) - circle.Position).Magnitude local distFromPlayer = (hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude if onScreen and distFromCenter <= Radius and distFromPlayer <= MaxDistance then if distFromCenter < closestDist then closestDist = distFromCenter closest = player end end end end return closest end -- Main loop RunService.RenderStepped:Connect(function() if rainbowFOV then hue += 0.005 if hue > 1 then hue = 0 end circle.Color = Color3.fromHSV(hue, 1, 1) end local newTarget = getClosestTarget() -- Lock-on logic if newTarget ~= currentTarget then currentTarget = newTarget if currentTarget then lockedButton.Visible = true else lockedButton.Visible = false end end -- Camera aim assist (look at target) if currentTarget and currentTarget.Character and currentTarget.Character:FindFirstChild("HumanoidRootPart") then local targetHRP = currentTarget.Character.HumanoidRootPart.Position local camPos = Camera.CFrame.Position local newLook = CFrame.new(camPos, targetHRP) Camera.CFrame = CFrame.new(camPos, targetHRP) end -- Highlight logic for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local char = player.Character local hrp = char.HumanoidRootPart local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position) local distFromCenter = (Vector2.new(pos.X, pos.Y) - circle.Position).Magnitude local distFromPlayer = (hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude if onScreen and distFromCenter <= Radius and distFromPlayer <= MaxDistance then if not char:FindFirstChild("FOVHighlight") then local hl = Instance.new("Highlight") hl.Name = "FOVHighlight" hl.Adornee = char hl.FillColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.75 hl.OutlineTransparency = 1 hl.Parent = char end else local existing = char:FindFirstChild("FOVHighlight") if existing then existing:Destroy() end end end end end)