
KeylessUniversal

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



it ai but nice you try your best :D