CCCPaste Login

Universal ESP

--==[[ 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()