local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local FOV_RAIO = 150 -- Test circle size local COLOR_LINE = Color3.fromRGB(0, 255, 0) -- Green local COLOR_BODY = Color3.fromRGB(255, 0, 0) -- Red local fovCircle = Drawing.new("Circle") fovCircle.Thickness = 2 fovCircle.Color = Color3.new(1, 1, 1) fovCircle.Filled = false fovCircle.Radius = FOV_RAIO fovCircle.Visible = true local function createEsp(player) if player == LocalPlayer then return end local line = Drawing.new("Line") line.Thickness = 1 line.Color = LINE_COLOR local highlight = Instance.new("Highlight") local function update() local connection connection = RunService.RenderStepped:Connect(function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then -- Update Highlight (Body) if not highlight.Parent then highlight.Parent = char end highlight.FillColor = BODY_COLOR -- Update Line (Tracer) local pos, onScreen = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position) if onScreen then line.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) line.To = Vector2.new(pos.X, pos.Y) line.Visible = true else line.Visible = false end else line.Visible = false highlight.Parent = nil end if not player.Parent then line:Remove() highlight:Destroy() connection:Disconnect() end end) end to update() end -- Update FOV circle position RunService.RenderStepped:Connect(function() fovCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) end) Players.PlayerAdded:Connect(createEsp) for _, p in pairs(Players:GetPlayers()) do gerarEsp(p) end