
KeylessUniversal

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local MAIN_COLOR = Color3.fromRGB(28, 28, 28)
local SECONDARY_COLOR = Color3.fromRGB(40, 40, 40)
local ACCENT_COLOR = Color3.fromRGB(0, 170, 255)
local TEXT_COLOR = Color3.fromRGB(255, 255, 255)
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "PlayerESP"
ScreenGui.Parent = PlayerGui
local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(0, 300, 0, 180)
Frame.Position = UDim2.new(0.5, -150, 0, 10)
Frame.AnchorPoint = Vector2.new(0.5, 0)
Frame.BackgroundColor3 = MAIN_COLOR
Frame.BorderSizePixel = 0
Frame.ClipsDescendants = true
Frame.Parent = ScreenGui
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 8)
UICorner.Parent = Frame
local UIStroke = Instance.new("UIStroke")
UIStroke.Color = Color3.fromRGB(60, 60, 60)
UIStroke.Thickness = 2
UIStroke.Parent = Frame
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 30)
TitleBar.BackgroundColor3 = SECONDARY_COLOR
TitleBar.BorderSizePixel = 0
TitleBar.Parent = Frame
local UICorner2 = Instance.new("UICorner")
UICorner2.CornerRadius = UDim.new(0, 8)
UICorner2.Parent = TitleBar
local Title = Instance.new("TextLabel")
Title.Text = "PLAYER ESP"
Title.Size = UDim2.new(1, -40, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.BackgroundTransparency = 1
Title.TextColor3 = TEXT_COLOR
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TitleBar
local CloseButton = Instance.new("TextButton")
CloseButton.Text = "X"
CloseButton.Size = UDim2.new(0, 30, 1, 0)
CloseButton.Position = UDim2.new(1, -30, 0, 0)
CloseButton.BackgroundColor3 = SECONDARY_COLOR
CloseButton.TextColor3 = TEXT_COLOR
CloseButton.Font = Enum.Font.GothamBold
CloseButton.Parent = TitleBar
local dragging
local dragInput
local dragStart
local startPos
local function updateInput(input)
local delta = input.Position - dragStart
Frame.Position =
UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
TitleBar.InputBegan:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = Frame.Position
input.Changed:Connect(
function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end
)
end
end
)
TitleBar.InputChanged:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end
)
UserInputService.InputChanged:Connect(
function(input)
if input == dragInput and dragging then
updateInput(input)
end
end
)
local SearchBox = Instance.new("TextBox")
SearchBox.PlaceholderText = "Search player..."
SearchBox.Size = UDim2.new(0.9, 0, 0, 35)
SearchBox.Position = UDim2.new(0.05, 0, 0, 40)
SearchBox.BackgroundColor3 = SECONDARY_COLOR
SearchBox.TextColor3 = TEXT_COLOR
SearchBox.ClearTextOnFocus = false
SearchBox.Font = Enum.Font.Gotham
SearchBox.TextSize = 14
SearchBox.Parent = Frame
local SearchBoxCorner = Instance.new("UICorner")
SearchBoxCorner.CornerRadius = UDim.new(0, 6)
SearchBoxCorner.Parent = SearchBox
local SuggestionsFrame = Instance.new("ScrollingFrame")
SuggestionsFrame.Size = UDim2.new(0.9, 0, 0, 120)
SuggestionsFrame.Position = UDim2.new(0.05, 0, 0, 80)
SuggestionsFrame.BackgroundColor3 = SECONDARY_COLOR
SuggestionsFrame.Visible = false
SuggestionsFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
SuggestionsFrame.ScrollBarThickness = 4
SuggestionsFrame.ScrollBarImageColor3 = ACCENT_COLOR
SuggestionsFrame.Parent = Frame
local SuggestionsCorner = Instance.new("UICorner")
SuggestionsCorner.CornerRadius = UDim.new(0, 6)
SuggestionsCorner.Parent = SuggestionsFrame
local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Padding = UDim.new(0, 5)
UIListLayout.Parent = SuggestionsFrame
local ToggleButton = Instance.new("TextButton")
ToggleButton.Text = "TOGGLE ESP"
ToggleButton.Size = UDim2.new(0.9, 0, 0, 35)
ToggleButton.Position = UDim2.new(0.05, 0, 0, 140)
ToggleButton.BackgroundColor3 = ACCENT_COLOR
ToggleButton.TextColor3 = TEXT_COLOR
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.TextSize = 14
ToggleButton.Parent = Frame
local ToggleButtonCorner = Instance.new("UICorner")
ToggleButtonCorner.CornerRadius = UDim.new(0, 6)
ToggleButtonCorner.Parent = ToggleButton
local ESP = {
Enabled = false,
Players = {},
Boxes = {},
HealthBars = {},
Names = {},
Tracers = false
}
function ESP:Add(player)
if self.Players[player] then
return
end
local character = player.Character
if not character then
player.CharacterAdded:Wait()
character = player.Character
end
local humanoid = character:WaitForChild("Humanoid")
local box = Instance.new("BoxHandleAdornment")
box.Name = "ESP_Box"
box.Adornee = character
box.AlwaysOnTop = true
box.ZIndex = 10
box.Size = character:GetExtentsSize() * 1.1
box.Transparency = 0.7
box.Color3 = player.TeamColor.Color
box.Parent = character
local healthBar = Instance.new("BillboardGui")
healthBar.Name = "ESP_HealthBar"
healthBar.Adornee = character
healthBar.AlwaysOnTop = true
healthBar.Size = UDim2.new(2, 0, 0.2, 0)
healthBar.StudsOffset = Vector3.new(0, character:GetExtentsSize().Y / 2 + 0.5, 0)
healthBar.Parent = character
local barFrame = Instance.new("Frame")
barFrame.BackgroundColor3 = Color3.new(0, 0, 0)
barFrame.BorderSizePixel = 1
barFrame.BorderColor3 = Color3.new(1, 1, 1)
barFrame.Size = UDim2.new(1, 0, 1, 0)
barFrame.Parent = healthBar
local healthFill = Instance.new("Frame")
healthFill.BackgroundColor3 = Color3.new(0, 1, 0)
healthFill.BorderSizePixel = 0
healthFill.Size = UDim2.new(humanoid.Health / humanoid.MaxHealth, 0, 1, 0)
healthFill.Parent = barFrame
local nameLabel = Instance.new("BillboardGui")
nameLabel.Name = "ESP_Name"
nameLabel.Adornee = character
nameLabel.AlwaysOnTop = true
nameLabel.Size = UDim2.new(0, 200, 0, 50)
nameLabel.StudsOffset = Vector3.new(0, character:GetExtentsSize().Y / 2 + 1.5, 0)
nameLabel.Parent = character
local nameText = Instance.new("TextLabel")
nameText.BackgroundTransparency = 1
nameText.Text = player.Name
nameText.TextColor3 = player.TeamColor.Color
nameText.TextStrokeTransparency = 0
nameText.TextSize = 14
nameText.Font = Enum.Font.GothamBold
nameText.Size = UDim2.new(1, 0, 1, 0)
nameText.Parent = nameLabel
self.Players[player] = true
self.Boxes[player] = box
self.HealthBars[player] = {
gui = healthBar,
fill = healthFill,
humanoid = humanoid
}
self.Names[player] = nameLabel
humanoid.HealthChanged:Connect(
function()
if humanoid.Health <= 0 then
healthFill.Size = UDim2.new(0, 0, 1, 0)
else
healthFill.Size = UDim2.new(humanoid.Health / humanoid.MaxHealth, 0, 1, 0)
healthFill.BackgroundColor3 =
Color3.new(1 - (humanoid.Health / humanoid.MaxHealth), humanoid.Health / humanoid.MaxHealth, 0)
end
end
)
character.AncestryChanged:Connect(
function(_, parent)
if not parent then
self:Remove(player)
end
end
)
player.CharacterAdded:Connect(
function(newChar)
self:Remove(player)
wait()
self:Add(player)
end
)
end
function ESP:Remove(player)
if self.Boxes[player] then
self.Boxes[player]:Destroy()
self.Boxes[player] = nil
end
if self.HealthBars[player] then
self.HealthBars[player].gui:Destroy()
self.HealthBars[player] = nil
end
if self.Names[player] then
self.Names[player]:Destroy()
self.Names[player] = nil
end
self.Players[player] = nil
end
function ESP:TogglePlayer(player, state)
if state then
self:Add(player)
else
self:Remove(player)
end
end
local selectedPlayer = nil
local function updateSuggestions(searchText)
SuggestionsFrame:ClearAllChildren()
if searchText == "" then
SuggestionsFrame.Visible = false
return
end
local foundAny = false
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and string.find(string.lower(player.Name), string.lower(searchText)) then
local suggestionButton = Instance.new("TextButton")
suggestionButton.Text = player.Name
suggestionButton.Size = UDim2.new(1, -10, 0, 30)
suggestionButton.Position = UDim2.new(0, 5, 0, 0)
suggestionButton.BackgroundColor3 = MAIN_COLOR
suggestionButton.TextColor3 = TEXT_COLOR
suggestionButton.Font = Enum.Font.Gotham
suggestionButton.TextSize = 14
suggestionButton.AutoButtonColor = false
suggestionButton.Parent = SuggestionsFrame
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 4)
buttonCorner.Parent = suggestionButton
suggestionButton.MouseEnter:Connect(
function()
suggestionButton.BackgroundColor3 = SECONDARY_COLOR
end
)
suggestionButton.MouseLeave:Connect(
function()
suggestionButton.BackgroundColor3 = MAIN_COLOR
end
)
suggestionButton.MouseButton1Click:Connect(
function()
SearchBox.Text = player.Name
selectedPlayer = player
SuggestionsFrame.Visible = false
end
)
foundAny = true
end
end
SuggestionsFrame.Visible = foundAny
end
SearchBox:GetPropertyChangedSignal("Text"):Connect(
function()
updateSuggestions(SearchBox.Text)
end
)
SearchBox.Focused:Connect(
function()
updateSuggestions(SearchBox.Text)
end
)
SearchBox.FocusLost:Connect(
function()
wait(0.1)
SuggestionsFrame.Visible = false
end
)
ToggleButton.MouseButton1Click:Connect(
function()
if selectedPlayer then
ESP:TogglePlayer(selectedPlayer, not ESP.Players[selectedPlayer])
ToggleButton.BackgroundColor3 = ESP.Players[selectedPlayer] and Color3.fromRGB(255, 50, 50) or ACCENT_COLOR
ToggleButton.Text = ESP.Players[selectedPlayer] and "ESP ACTIVE" or "TOGGLE ESP"
end
end
)
CloseButton.MouseButton1Click:Connect(
function()
ScreenGui:Destroy()
end
)
Players.PlayerRemoving:Connect(
function(player)
ESP:Remove(player)
if selectedPlayer == player then
selectedPlayer = nil
SearchBox.Text = ""
ToggleButton.BackgroundColor3 = ACCENT_COLOR
ToggleButton.Text = "TOGGLE ESP"
end
end
)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
player.CharacterAdded:Connect(
function(character)
if selectedPlayer == player and ESP.Players[player] then
ESP:Add(player)
end
end
)
end
end
Players.PlayerAdded:Connect(
function(player)
player.CharacterAdded:Connect(
function(character)
if selectedPlayer == player and ESP.Players[player] then
ESP:Add(player)
end
end
)
end
)No comments yet for this script.



