--==[[ quick execute: loadstring(game:HttpGet("https://pastebin.com/raw/PSNsEKug"))() ]]==--
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local localPlayer = Players.LocalPlayer
local espColors = {
Red = Color3.fromRGB(255, 0, 0),
Blue = Color3.fromRGB(0, 0, 255),
Green = Color3.fromRGB(0, 255, 0),
Yellow = Color3.fromRGB(255, 255, 0),
Pink = Color3.fromRGB(255, 105, 180),
Purple = Color3.fromRGB(128, 0, 128),
Black = Color3.fromRGB(0, 0, 0),
White = Color3.fromRGB(255, 255, 255),
Rainbow = "Rainbow",
["Team Color"] = "TeamColor",
}
local espStyles = {
"Small Square",
"Medium Square",
"Big Square",
"Lines",
}
local selectedColor = "Red"
local selectedStyle = "Small Square"
local espEnabled = true
local function getKeys(tbl)
local keys = {}
for k in pairs(tbl) do
table.insert(keys, k)
end
return keys
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FunnyStuffGoingOn"
screenGui.Parent = localPlayer:WaitForChild("PlayerGui")
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 280, 0, 450)
mainFrame.Position = UDim2.new(0, 50, 0, 50)
mainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
mainFrame.Active = true
mainFrame.Draggable = true
local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 30, 0, 30)
closeButton.Position = UDim2.new(1, -35, 0, 5)
closeButton.Text = "X"
closeButton.TextColor3 = Color3.new(1, 0, 0)
closeButton.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
closeButton.Parent = mainFrame
closeButton.Font = Enum.Font.SourceSansBold
closeButton.TextSize = 20
local reopenButton = Instance.new("TextButton")
reopenButton.Size = UDim2.new(0, 60, 0, 30)
reopenButton.Position = UDim2.new(0, 50, 0, 50)
reopenButton.Text = "OPEN"
reopenButton.TextColor3 = Color3.new(1, 1, 1)
reopenButton.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
reopenButton.Font = Enum.Font.SourceSansBold
reopenButton.TextSize = 22
reopenButton.Visible = false
reopenButton.Parent = screenGui
reopenButton.MouseButton1Click:Connect(function()
mainFrame.Visible = true
reopenButton.Visible = false
end)
local minimizeButton = Instance.new("TextButton")
minimizeButton.Size = UDim2.new(0, 30, 0, 30)
minimizeButton.Position = UDim2.new(1, -70, 0, 5)
minimizeButton.Text = "-"
minimizeButton.TextColor3 = Color3.new(1, 1, 1)
minimizeButton.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
minimizeButton.Font = Enum.Font.SourceSansBold
minimizeButton.TextSize = 28
minimizeButton.Parent = mainFrame
minimizeButton.MouseButton1Click:Connect(function()
mainFrame.Visible = false
reopenButton.Visible = true
end)
local title = Instance.new("TextLabel")
title.Position = UDim2.new(0, 10, 0, -30)
title.Size = UDim2.new(1, -20, 0, 20)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.new(1, 1, 1)
title.TextScaled = true
title.Text = "SKIRA'S UNIVERSAL ESP"
title.Parent = mainFrame
local function createLabel(text, parent, posY)
local label = Instance.new("TextLabel")
label.Text = text
label.Size = UDim2.new(1, -20, 0, 24)
label.Position = UDim2.new(0, 10, 0, posY)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1,1,1)
label.Font = Enum.Font.SourceSansBold
label.TextSize = 18
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = parent
return label
end
local function createButtonList(title, options, parent, posY, callback)
createLabel(title, parent, posY)
local buttonHeight = 40
local padding = 6
local totalHeight = (#options) * (buttonHeight + padding) - padding
local visibleHeight = math.min(totalHeight, 4 * (buttonHeight + padding))
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -20, 0, visibleHeight)
scroll.Position = UDim2.new(0, 10, 0, posY + 28)
scroll.BackgroundColor3 = Color3.fromRGB(50,50,50)
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 8
scroll.CanvasSize = UDim2.new(0, 0, 0, totalHeight)
scroll.Parent = parent
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, padding)
layout.Parent = scroll
for i, option in ipairs(options) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, buttonHeight)
btn.Text = option
btn.Font = Enum.Font.SourceSans
btn.TextSize = 20
btn.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
btn.TextColor3 = Color3.new(1,1,1)
btn.Parent = scroll
btn.MouseEnter:Connect(function()
btn.BackgroundColor3 = Color3.fromRGB(120, 120, 120)
end)
btn.MouseLeave:Connect(function()
btn.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
end)
btn.MouseButton1Click:Connect(function()
callback(option)
end)
end
return scroll, buttonHeight + padding, totalHeight
end
local markers = {}
local function clearMarkers()
for player, markerList in pairs(markers) do
for _, m in ipairs(markerList) do
if m.gui then
m.gui:Destroy()
end
if m.line then
if m.line.att0 then m.line.att0:Destroy() end
if m.line.att1 then m.line.att1:Destroy() end
m.line.beam:Destroy()
end
end
markers[player] = nil
end
end
local function createBillboard(part, size, color)
if not part then return end
local billboard = Instance.new("BillboardGui")
billboard.Size = UDim2.new(0, size, 0, size)
billboard.AlwaysOnTop = true
billboard.Adornee = part
billboard.Parent = part
billboard.Name = "ESP_Billboard"
local frame = Instance.new("Frame")
frame.BackgroundColor3 = color
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BorderSizePixel = 0
frame.Parent = billboard
return billboard
end
local function createLine(part0, part1, color)
if not (part0 and part1) then return end
local attachment0 = part0:FindFirstChild("ESP_Attachment0")
if not attachment0 then
attachment0 = Instance.new("Attachment")
attachment0.Name = "ESP_Attachment0"
attachment0.Parent = part0
end
local attachment1 = part1:FindFirstChild("ESP_Attachment1")
if not attachment1 then
attachment1 = Instance.new("Attachment")
attachment1.Name = "ESP_Attachment1"
attachment1.Parent = part1
end
local beam = part0:FindFirstChild("ESP_Beam")
if not beam then
beam = Instance.new("Beam")
beam.Name = "ESP_Beam"
beam.FaceCamera = true
beam.Width0 = 0.15
beam.Width1 = 0.15
beam.Transparency = NumberSequence.new(0)
beam.Attachment0 = attachment0
beam.Attachment1 = attachment1
beam.Parent = part0
end
beam.Color = ColorSequence.new(color)
return {
beam = beam,
att0 = attachment0,
att1 = attachment1,
}
end
local partConnections = {
Torso = {"Head", "LeftUpperArm", "RightUpperArm", "LeftUpperLeg", "RightUpperLeg"},
Head = {},
LeftUpperArm = {"LeftLowerArm"},
RightUpperArm = {"RightLowerArm"},
LeftUpperLeg = {"LeftLowerLeg"},
RightUpperLeg = {"RightLowerLeg"},
LeftLowerArm = {"LeftHand"},
RightLowerArm = {"RightHand"},
LeftLowerLeg = {"LeftFoot"},
RightLowerLeg = {"RightFoot"},
}
local function getColor(colorName, time, player)
if colorName == "Rainbow" then
local hue = (time % 5) / 5
return Color3.fromHSV(hue, 1, 1)
elseif colorName == "Team Color" and player and player.TeamColor then
return player.TeamColor.Color
end
return espColors[colorName] or Color3.new(1, 0, 0)
end
local function updateMarkersForPlayer(player)
if not espEnabled then return end
local character = player.Character
if not character then return end
markers[player] = markers[player] or {}
for _, m in ipairs(markers[player]) do
if m.gui then m.gui:Destroy() end
if m.line then
if m.line.att0 then m.line.att0:Destroy() end
if m.line.att1 then m.line.att1:Destroy() end
m.line.beam:Destroy()
end
end
markers[player] = {}
if selectedStyle == "Lines" then
for partName, connectedParts in pairs(partConnections) do
local part0 = character:FindFirstChild(partName)
if part0 then
for _, conPartName in ipairs(connectedParts) do
local part1 = character:FindFirstChild(conPartName)
if part1 then
local color = getColor(selectedColor, tick(), player)
local lineData = nil
for _, marker in ipairs(markers[player]) do
if marker.line and marker.line.att0.Parent == part0 and marker.line.att1.Parent == part1 then
lineData = marker.line
break
end
end
if not lineData then
lineData = createLine(part0, part1, color)
table.insert(markers[player], {line = lineData})
else
lineData.beam.Color = ColorSequence.new(color)
end
end
end
end
end
else
local sizeMap = {
["Small Square"] = 8,
["Medium Square"] = 16,
["Big Square"] = 28,
}
local size = sizeMap[selectedStyle] or 8
for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") then
local color = getColor(selectedColor, tick(), player)
local gui = createBillboard(part, size, color)
if gui then
table.insert(markers[player], {gui = gui})
end
end
end
end
end
local function refreshAllESP()
clearMarkers()
for _, player in pairs(Players:GetPlayers()) do
if player.Character then
updateMarkersForPlayer(player)
end
end
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function()
refreshAllESP()
end)
end)
for _, player in pairs(Players:GetPlayers()) do
player.CharacterAdded:Connect(function()
refreshAllESP()
end)
end
RunService.Heartbeat:Connect(function()
if not espEnabled then return end
if selectedColor == "Rainbow" or selectedColor == "Team Color" or selectedStyle == "Lines" then
for player, list in pairs(markers) do
for _, m in ipairs(list) do
if m.gui then
m.gui.Frame.BackgroundColor3 = getColor(selectedColor, tick(), player)
elseif m.line and m.line.beam then
m.line.beam.Color = ColorSequence.new(getColor(selectedColor, tick(), player))
end
end
end
end
end)
closeButton.MouseButton1Click:Connect(function()
espEnabled = false
clearMarkers()
screenGui:Destroy()
end)
local colorScroll, colorBtnHeight, colorTotalHeight = createButtonList("ESP Colors", getKeys(espColors), mainFrame, 10, function(selection)
selectedColor = selection
refreshAllESP()
end)
local styleScroll, styleBtnHeight, styleTotalHeight = createButtonList("ESP Styles", espStyles, mainFrame, 230, function(selection)
selectedStyle = selection
refreshAllESP()
end)
refreshAllESP()