
KeylessUniversal

-- Services
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local highlightEnabled = true
-- Colors for different teams
local enemyColor = Color3.fromRGB(255, 50, 50) -- Red
local teammateColor = Color3.fromRGB(50, 255, 50) -- Green
local neutralColor = Color3.fromRGB(100, 150, 255) -- Blue
-- Store player highlights
local playerHighlights = {}
-- Get color based on team
local function getTeamColor(player)
if LocalPlayer.Team and player.Team then
return LocalPlayer.Team == player.Team and teammateColor or enemyColor
else
return neutralColor
end
end
-- Create highlight for a player
local function createHighlight(player)
if player == LocalPlayer then return end
local highlight = {
main = nil,
nameTag = nil
}
local function setupCharacter(character)
if not character then return end
-- Clear old highlight
if highlight.main then
highlight.main:Destroy()
end
if highlight.nameTag then
highlight.nameTag:Destroy()
end
-- Create main highlight
highlight.main = Instance.new("Highlight")
highlight.main.Name = "ESP_" .. player.UserId
highlight.main.Adornee = character
highlight.main.FillColor = getTeamColor(player)
highlight.main.FillTransparency = 0.8
highlight.main.OutlineColor = getTeamColor(player)
highlight.main.OutlineTransparency = 0
highlight.main.Enabled = highlightEnabled
highlight.main.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.main.Parent = character
-- Create name tag
local head = character:WaitForChild("Head", 2)
if head then
local nameTag = Instance.new("BillboardGui")
nameTag.Name = "NameTag_" .. player.UserId
nameTag.Adornee = head
nameTag.AlwaysOnTop = true
nameTag.StudsOffset = Vector3.new(0, 2.5, 0)
nameTag.MaxDistance = 0 -- Infinite distance
-- Simple text label (no background)
local nameLabel = Instance.new("TextLabel")
nameLabel.Name = "Label"
nameLabel.Size = UDim2.new(0, 100, 0, 20)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = player.Name
nameLabel.TextColor3 = getTeamColor(player)
nameLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
nameLabel.TextStrokeTransparency = 0.2
nameLabel.Font = Enum.Font.GothamMedium
nameLabel.TextScaled = true -- Allow text scaling
nameLabel.TextXAlignment = Enum.TextXAlignment.Center
nameLabel.TextYAlignment = Enum.TextYAlignment.Center
nameLabel.Parent = nameTag
nameTag.Parent = head
highlight.nameTag = nameTag
nameTag.Enabled = highlightEnabled
end
end
-- Setup initial character
if player.Character then
setupCharacter(player.Character)
end
-- Listen for character changes
player.CharacterAdded:Connect(function(character)
setupCharacter(character)
end)
playerHighlights[player] = highlight
end
-- Update name sizes based on distance
RunService.RenderStepped:Connect(function()
if not highlightEnabled then return end
for player, highlight in pairs(playerHighlights) do
if highlight.nameTag and player.Character then
local head = player.Character:FindFirstChild("Head")
if head and highlight.nameTag.Enabled then
-- Calculate distance from camera to player
local distance = (head.Position - Camera.CFrame.Position).Magnitude
-- Get the name label
local nameLabel = highlight.nameTag:FindFirstChild("Label")
if nameLabel then
-- Scale text size based on distance
-- Closer = smaller text, farther = larger text
local baseSize = 100 -- Base size at 0 distance
local minSize = 80 -- Minimum size (very close)
local maxSize = 150 -- Maximum size (far away)
-- Calculate size (inverse relationship: closer = smaller)
local scaleFactor = math.clamp(distance / 100, 0.5, 2.0)
local calculatedSize = math.clamp(baseSize * scaleFactor, minSize, maxSize)
-- Update the BillboardGui size
highlight.nameTag.Size = UDim2.new(0, calculatedSize, 0, calculatedSize * 0.2)
-- Update text size based on distance
-- Text gets smaller as you get closer
local textSize = math.clamp(14 - (distance / 50), 8, 16)
nameLabel.TextSize = textSize
end
end
end
end
end)
-- Toggle highlights
UserInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.RightBracket then
highlightEnabled = not highlightEnabled
-- Update all highlights
for player, highlight in pairs(playerHighlights) do
if highlight.main then
highlight.main.Enabled = highlightEnabled
end
if highlight.nameTag then
highlight.nameTag.Enabled = highlightEnabled
end
end
print("Player Highlights: " .. (highlightEnabled and "ON" or "OFF"))
end
end)
-- Initialize highlights for existing players
for _, player in pairs(Players:GetPlayers()) do
createHighlight(player)
end
-- Handle new players
Players.PlayerAdded:Connect(function(player)
createHighlight(player)
end)
-- Clean up when players leave
Players.PlayerRemoving:Connect(function(player)
if playerHighlights[player] then
local highlight = playerHighlights[player]
if highlight.main then
highlight.main:Destroy()
end
if highlight.nameTag then
highlight.nameTag:Destroy()
end
playerHighlights[player] = nil
end
end)
-- Update team colors when teams change
local function updateAllColors()
for player, highlight in pairs(playerHighlights) do
if highlight.main then
highlight.main.FillColor = getTeamColor(player)
highlight.main.OutlineColor = getTeamColor(player)
end
if highlight.nameTag then
local label = highlight.nameTag:FindFirstChild("Label")
if label then
label.TextColor3 = getTeamColor(player)
end
end
end
end
-- Listen for team changes
LocalPlayer:GetPropertyChangedSignal("Team"):Connect(updateAllColors)



Guys if theres a problem tell me here
chatgpt detected
@orbit167 deepseek.it works perectly tho