
KeylessUniversal

---------------------------------------------------------------------------
-- Ultimate ESP :3
---------------------------------------------------------------------------
local Settings = {
-- ESP
ShowOutline = true, -- Enables player outline
OutlineTransparency = 0.2, -- Outline transparency
FillTransparency = 0.6, -- Fill transparency
AlwaysOnTopHighlight = true, -- Visible through walls
RainbowOutline = false, -- So gaemer effect
-- Text
ShowBillboard = true, -- Enables text ESP
ShowNames = true, -- Shows player names
ShowHealth = true, -- Shows player health
ShowHealthPercent = true, -- Shows health percentage
ShowItem = true, -- Shows equipped tool
ShowDistanceInStuds = true, -- Shows distance
ShowTeam = false, -- Shows team name
TextStroke = true, -- Enables text outline
TextSize = 5, -- Text size
BillboardSize = UDim2.new(0, 160, 0, 60),
BillboardOffset = Vector3.new(0, 2.8, 0),
AlwaysOnTopBillboard = true, -- Text visible through walls
DefaultTextColor = Color3.fromRGB(255,255,255),
-- Other
HideLocalPlayer = true, -- Hides ESP on yourself
MaxDistance = 1000, -- Maximum ESP distance (recommended something lower than 10000)
-- Dont touch
HighlightName = "PlayerHighlight",
BillboardName = "PlayerInfo",
}
-- .__ __
-- ______ ___________|__|______/ |_
-- / ___// ___\_ __ \ \____ \ __\
-- \___ \\ \___| | \/ | |_> > |
--/____ >\___ >__| |__| __/|__|
-- \/ \/ |__|
---------------------------------------------------------------------------
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
---------------------------------------------------------------------------
local function removeOldInstances(character)
local oldHighlight = character:FindFirstChild(Settings.HighlightName)
if oldHighlight then
oldHighlight:Destroy()
end
local head = character:FindFirstChild("Head")
if head then
local oldBillboard = head:FindFirstChild(Settings.BillboardName)
if oldBillboard then
oldBillboard:Destroy()
end
end
end
local function updateOutlineColor(highlight, humanoid)
if not highlight or not humanoid then
return
end
local healthPercent =
math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1)
local red = 1 - healthPercent
local green = healthPercent
highlight.OutlineColor = Color3.new(red, green, 0)
end
local function updateInfoText(label, humanoid, character, player)
if not label then
return
end
local lines = {}
if Settings.ShowNames then
table.insert(lines, player.Name)
end
if Settings.ShowTeam and player.Team then
table.insert(lines, "[" .. player.Team.Name .. "]")
end
if Settings.ShowHealth and humanoid then
local healthText =
math.floor(humanoid.Health)
.. "/"
.. math.floor(humanoid.MaxHealth)
if Settings.ShowHealthPercent then
local percent =
math.floor((humanoid.Health / humanoid.MaxHealth) * 100)
healthText =
healthText
.. " ("
.. percent
.. "%)"
end
table.insert(lines, healthText)
end
if Settings.ShowItem then
local equippedTool = "None"
for _, obj in pairs(character:GetChildren()) do
if obj:IsA("Tool") then
equippedTool = obj.Name
break
end
end
table.insert(lines, equippedTool)
end
if Settings.ShowDistanceInStuds then
local localCharacter = LocalPlayer.Character
if localCharacter
and localCharacter:FindFirstChild("HumanoidRootPart")
then
local targetHRP =
character:FindFirstChild("HumanoidRootPart")
if targetHRP then
local distance =
(localCharacter.HumanoidRootPart.Position
- targetHRP.Position).Magnitude
table.insert(
lines,
math.floor(distance) .. " studs"
)
end
end
end
label.Text = table.concat(lines, "\n")
end
local function setupCharacter(player, character)
local humanoid = character:WaitForChild("Humanoid")
local head = character:WaitForChild("Head")
removeOldInstances(character)
local highlight
if Settings.ShowOutline then
highlight = Instance.new("Highlight")
highlight.Name = Settings.HighlightName
highlight.DepthMode =
Settings.AlwaysOnTopHighlight
and Enum.HighlightDepthMode.AlwaysOnTop
or Enum.HighlightDepthMode.Occluded
highlight.FillTransparency = Settings.FillTransparency
highlight.OutlineTransparency =
Settings.OutlineTransparency
if player.Team then
highlight.FillColor = player.Team.TeamColor.Color
else
highlight.FillColor = Settings.DefaultTextColor
end
highlight.Parent = character
if Settings.RainbowOutline then
task.spawn(function()
while highlight and highlight.Parent do
local hue = tick() % 5 / 5
highlight.OutlineColor =
Color3.fromHSV(hue,1,1)
task.wait()
end
end)
else
updateOutlineColor(highlight, humanoid)
end
end
local textLabel
if Settings.ShowBillboard then
local billboard = Instance.new("BillboardGui")
billboard.Name = Settings.BillboardName
billboard.Size = Settings.BillboardSize
billboard.StudsOffset = Settings.BillboardOffset
billboard.AlwaysOnTop =
Settings.AlwaysOnTopBillboard
billboard.Parent = head
textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1,0,1,0)
textLabel.BackgroundTransparency = 1
textLabel.TextScaled = true
textLabel.TextSize = Settings.TextSize
textLabel.Font = Enum.Font.GothamBold
textLabel.TextStrokeTransparency =
Settings.TextStroke and 0 or 1
if player.Team then
textLabel.TextColor3 = player.Team.TeamColor.Color
else
textLabel.TextColor3 = Settings.DefaultTextColor
end
textLabel.Parent = billboard
updateInfoText(
textLabel,
humanoid,
character,
player
)
end
humanoid.HealthChanged:Connect(function()
if highlight and not Settings.RainbowOutline then
updateOutlineColor(highlight, humanoid)
end
if textLabel then
updateInfoText(
textLabel,
humanoid,
character,
player
)
end
end)
player:GetPropertyChangedSignal("Team"):Connect(function()
local color =
player.Team
and player.Team.TeamColor.Color
or Settings.DefaultTextColor
if highlight then
highlight.FillColor = color
end
if textLabel then
textLabel.TextColor3 = color
end
end)
character.ChildAdded:Connect(function(child)
if child:IsA("Tool") and textLabel then
updateInfoText(
textLabel,
humanoid,
character,
player
)
end
end)
character.ChildRemoved:Connect(function(child)
if child:IsA("Tool") and textLabel then
updateInfoText(
textLabel,
humanoid,
character,
player
)
end
end)
RunService.RenderStepped:Connect(function()
if not character or not character.Parent then
return
end
local localCharacter = LocalPlayer.Character
if not localCharacter then
return
end
local localHRP =
localCharacter:FindFirstChild("HumanoidRootPart")
local targetHRP =
character:FindFirstChild("HumanoidRootPart")
if not localHRP or not targetHRP then
return
end
local distance =
(localHRP.Position - targetHRP.Position).Magnitude
local visible =
distance <= Settings.MaxDistance
if highlight then
highlight.Enabled = visible
end
if textLabel then
textLabel.Visible = visible
updateInfoText(
textLabel,
humanoid,
character,
player
)
end
end)
end
local function setupPlayer(player)
if Settings.HideLocalPlayer
and player == LocalPlayer
then
return
end
if player.Character then
setupCharacter(player, player.Character)
end
player.CharacterAdded:Connect(function(character)
setupCharacter(player, character)
end)
end
for _, player in pairs(Players:GetPlayers()) do
setupPlayer(player)
end
Players.PlayerAdded:Connect(setupPlayer)No comments yet for this script.



