local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local FOV_PIXELS = 200 local fovGui = Instance.new("ScreenGui") fovGui.Name = "SilentAimFOV" fovGui.ResetOnSpawn = false fovGui.IgnoreGuiInset = true fovGui.Parent = LocalPlayer.PlayerGui local fovCircle = Instance.new("Frame") fovCircle.BackgroundTransparency = 1 fovCircle.BorderSizePixel = 0 fovCircle.Size = UDim2.fromOffset(FOV_PIXELS * 2, FOV_PIXELS * 2) fovCircle.AnchorPoint = Vector2.new(0.5, 0.5) fovCircle.Parent = fovGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(1, 0) corner.Parent = fovCircle local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(255, 255, 255) stroke.Thickness = 1.2 stroke.Transparency = 0.3 stroke.Parent = fovCircle local dot = Instance.new("Frame") dot.Size = UDim2.fromOffset(8, 8) dot.AnchorPoint = Vector2.new(0.5, 0.5) dot.BackgroundColor3 = Color3.fromRGB(255, 50, 50) dot.BorderSizePixel = 0 dot.Visible = false dot.ZIndex = 2 dot.Parent = fovGui Instance.new("UICorner", dot).CornerRadius = UDim.new(1, 0) local function getClosestHead() local mousePos = UserInputService:GetMouseLocation() local bestDist = FOV_PIXELS local bestHead = nil local bestScreen = nil for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then local head = player.Character:FindFirstChild("Head") local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid") if head and humanoid and humanoid.Health > 0 then local screenPos, onScreen = Camera:WorldToViewportPoint(head.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude if dist < bestDist then bestDist = dist bestHead = head bestScreen = Vector2.new(screenPos.X, screenPos.Y) end end end end end return bestHead, bestScreen end RunService.RenderStepped:Connect(function() local mousePos = UserInputService:GetMouseLocation() fovCircle.Position = UDim2.fromOffset(mousePos.X, mousePos.Y) local head, screenPos = getClosestHead() if head and screenPos then dot.Visible = true dot.Position = UDim2.fromOffset(screenPos.X, screenPos.Y) stroke.Color = Color3.fromRGB(255, 50, 50) else dot.Visible = false stroke.Color = Color3.fromRGB(255, 255, 255) end end) local ok, Projectile = pcall(require, game:GetService("ReplicatedStorage").Modules.GunFramework.Modules.Projectile) if not ok then return end local originalNew = Projectile.new Projectile.new = function(params) if params and params.Origin and params.Direction then local head = getClosestHead() if head then local newDir = (head.Position - params.Origin).Unit params.Direction = newDir end end return originalNew(params) end