
KeylessUniversal

-- ESP Module
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera
-- Cache services
local LocalPlayer = Players.LocalPlayer
local LocalCharacter = LocalPlayer and LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local LocalHumanoidRootPart = LocalCharacter:WaitForChild("HumanoidRootPart")
local ESP = {}
ESP.__index = ESP
function ESP.new()
local self = setmetatable({}, ESP)
self.espCache = {}
return self
end
function ESP:createDrawing(type, properties)
local drawing = Drawing.new(type)
for prop, val in pairs(properties) do
drawing[prop] = val
end
return drawing
end
function ESP:createComponents()
return {
Box = self:createDrawing("Square", {
Thickness = 1,
Transparency = 1,
Color = Color3.fromRGB(255, 255, 255),
Filled = false
}),
Tracer = self:createDrawing("Line", {
Thickness = 1,
Transparency = 1,
Color = Color3.fromRGB(255, 255, 255)
}),
DistanceLabel = self:createDrawing("Text", {
Size = 18,
Center = true,
Outline = true,
Color = Color3.fromRGB(255, 255, 255),
OutlineColor = Color3.fromRGB(0, 0, 0)
}),
NameLabel = self:createDrawing("Text", {
Size = 18,
Center = true,
Outline = true,
Color = Color3.fromRGB(255, 255, 255),
OutlineColor = Color3.fromRGB(0, 0, 0)
}),
HealthBar = {
Outline = self:createDrawing("Square", {
Thickness = 1,
Transparency = 1,
Color = Color3.fromRGB(0, 0, 0),
Filled = false
}),
Health = self:createDrawing("Square", {
Thickness = 1,
Transparency = 1,
Color = Color3.fromRGB(0, 255, 0),
Filled = true
})
},
ItemLabel = self:createDrawing("Text", {
Size = 18,
Center = true,
Outline = true,
Color = Color3.fromRGB(255, 255, 255),
OutlineColor = Color3.fromRGB(0, 0, 0)
}),
SkeletonLines = {},
ChamsParts = {}
}
end
local bodyConnections = {
R15 = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"LowerTorso", "LeftUpperLeg"},
{"LowerTorso", "RightUpperLeg"},
{"LeftUpperLeg", "LeftLowerLeg"},
{"LeftLowerLeg", "LeftFoot"},
{"RightUpperLeg", "RightLowerLeg"},
{"RightLowerLeg", "RightFoot"},
{"UpperTorso", "LeftUpperArm"},
{"UpperTorso", "RightUpperArm"},
{"LeftUpperArm", "LeftLowerArm"},
{"LeftLowerArm", "LeftHand"},
{"RightUpperArm", "RightLowerArm"},
{"RightLowerArm", "RightHand"}
},
R6 = {
{"Head", "Torso"},
{"Torso", "Left Arm"},
{"Torso", "Right Arm"},
{"Torso", "Left Leg"},
{"Torso", "Right Leg"}
}
}
function ESP:updateComponents(components, character, player)
local hrp = character:FindFirstChild("HumanoidRootPart")
local humanoid = character:FindFirstChild("Humanoid")
if hrp and humanoid then
local hrpPosition, onScreen = Camera:WorldToViewportPoint(hrp.Position)
local mousePosition = Camera:WorldToViewportPoint(LocalPlayer:GetMouse().Hit.p)
if onScreen then
local screenWidth, screenHeight = Camera.ViewportSize.X, Camera.ViewportSize.Y
local factor = 1 / (hrpPosition.Z * math.tan(math.rad(Camera.FieldOfView * 0.5)) * 2) * 100
local width, height = math.floor(screenHeight / 25 * factor), math.floor(screenWidth / 27 * factor)
local distanceFromPlayer = math.floor((LocalHumanoidRootPart.Position - hrp.Position).magnitude)
-- Box properties
components.Box.Size = Vector2.new(width, height)
components.Box.Position = Vector2.new(hrpPosition.X - width / 2, hrpPosition.Y - height / 2)
components.Box.Visible = true
-- Tracer properties
components.Tracer.From = Vector2.new(mousePosition.X, mousePosition.Y)
components.Tracer.To = Vector2.new(hrpPosition.X, hrpPosition.Y + height / 2)
components.Tracer.Visible = true
-- Distance label properties
components.DistanceLabel.Text = string.format("[%dM]", distanceFromPlayer)
components.DistanceLabel.Position = Vector2.new(hrpPosition.X, hrpPosition.Y + height / 2 + 15)
components.DistanceLabel.Visible = true
-- Name label properties
components.NameLabel.Text = string.format("[%s]", player.Name)
components.NameLabel.Position = Vector2.new(hrpPosition.X, hrpPosition.Y - height / 2 - 15)
components.NameLabel.Visible = true
-- Health bar properties
local healthBarHeight = height
local healthBarWidth = 5
local healthFraction = humanoid.Health / humanoid.MaxHealth
components.HealthBar.Outline.Size = Vector2.new(healthBarWidth, healthBarHeight)
components.HealthBar.Outline.Position = Vector2.new(components.Box.Position.X - healthBarWidth - 2, components.Box.Position.Y)
components.HealthBar.Outline.Visible = true
components.HealthBar.Health.Size = Vector2.new(healthBarWidth - 2, healthBarHeight * healthFraction)
components.HealthBar.Health.Position = Vector2.new(components.HealthBar.Outline.Position.X + 1, components.HealthBar.Outline.Position.Y + healthBarHeight * (1 - healthFraction))
components.HealthBar.Health.Visible = true
-- Item label properties
local backpack = player.Backpack
local tool = backpack:FindFirstChildOfClass("Tool") or character:FindFirstChildOfClass("Tool")
if tool then
components.ItemLabel.Text = string.format("[Holding: %s]", tool.Name)
else
components.ItemLabel.Text = "[Holding: No tool]"
end
components.ItemLabel.Position = Vector2.new(hrpPosition.X, hrpPosition.Y + height / 2 + 35)
components.ItemLabel.Visible = true
-- Skeleton properties
local connections = bodyConnections[humanoid.RigType.Name] or {}
for _, connection in ipairs(connections) do
local partA = character:FindFirstChild(connection[1])
local partB = character:FindFirstChild(connection[2])
if partA and partB then
local line = components.SkeletonLines[connection[1] .. "-" .. connection[2]] or self:createDrawing("Line", {Thickness = 1, Color = Color3.fromRGB(255, 255, 255)})
local posA, onScreenA = Camera:WorldToViewportPoint(partA.Position)
local posB, onScreenB = Camera:WorldToViewportPoint(partB.Position)
if onScreenA and onScreenB then
line.From = Vector2.new(posA.X, posA.Y)
line.To = Vector2.new(posB.X, posB.Y)
line.Visible = true
components.SkeletonLines[connection[1] .. "-" .. connection[2]] = line
else
line.Visible = false
end
end
end
-- Chams properties
for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") then
local chamsPart = components.ChamsParts[part] or Instance.new("BoxHandleAdornment")
chamsPart.Adornee = part
chamsPart.Size = part.Size
chamsPart.Color3 = Color3.fromRGB(255, 255, 255)
chamsPart.Transparency = 0.5
chamsPart.AlwaysOnTop = true
chamsPart.ZIndex = 0
chamsPart.Parent = part
components.ChamsParts[part] = chamsPart
end
end
else
self:hideComponents(components)
end
else
self:hideComponents(components)
end
end
function ESP:hideComponents(components)
components.Box.Visible = false
components.Tracer.Visible = false
components.DistanceLabel.Visible = false
components.NameLabel.Visible = false
components.HealthBar.Outline.Visible = false
components.HealthBar.Health.Visible = false
components.ItemLabel.Visible = false
for _, line in pairs(components.SkeletonLines) do
line.Visible = false
end
for _, chamsPart in pairs(components.ChamsParts) do
chamsPart:Destroy()
end
components.ChamsParts = {}
end
function ESP:removeEsp(player)
local components = self.espCache[player]
if components then
components.Box:Remove()
components.Tracer:Remove()
components.DistanceLabel:Remove()
components.NameLabel:Remove()
components.HealthBar.Outline:Remove()
components.HealthBar.Health:Remove()
components.ItemLabel:Remove()
for _, line in pairs(components.SkeletonLines) do
line:Remove()
end
for _, chamsPart in pairs(components.ChamsParts) do
chamsPart:Destroy()
end
self.espCache[player] = nil
end
end
local espInstance = ESP.new()
RunService.RenderStepped:Connect(function()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Team ~= LocalPlayer.Team then
local character = player.Character
if character then
if not espInstance.espCache[player] then
espInstance.espCache[player] = espInstance:createComponents()
end
espInstance:updateComponents(espInstance.espCache[player], character, player)
else
if espInstance.espCache[player] then
espInstance:hideComponents(espInstance.espCache[player])
end
end
end
end
end)
Players.PlayerRemoving:Connect(function(player)
espInstance:removeEsp(player)
end)



P.s. - team check and chams very basic so keep this in mind if you see some problems with it.