esp (update)
Key Required Patched

esp (update)

Depth Spelunkingzelazela 7.7K views 89 executesUpdated Jun 25, 2025
4.2/ 5(6 votes)
5183% Positive
Lua Script•211 lines (5216 chars)
--services
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local StarterGui = game:GetService("StarterGui")

--notif
local function notify(title, message)
	pcall(function()
		StarterGui:SetCore("SendNotification", {
			Title = title,
			Text = message,
			Duration = 90
		})
	end)
end

notify("Notice", "entity esp may take a moment to appear at the start of every floor")
notify("Notice", "i barely playtested this, report any bugs at the scriptblox post")
notify("Notice", "also i couldnt figure out how to make the codes work")

--esp

local function addESP(obj, color, label)
	local adornee = obj
	if obj:IsA("Model") then
		adornee =
			obj:FindFirstChild("HumanoidRootPart")
			or obj.PrimaryPart
			or obj:FindFirstChildWhichIsA("BasePart")
	end
	if not adornee then return end

	if adornee:FindFirstChild("BillboardGui") then
		adornee.BillboardGui:Destroy()
	end

	local billboard = Instance.new("BillboardGui")
	billboard.Name = "BillboardGui"
	billboard.Size = UDim2.new(0, 60, 0, 30)
	billboard.Adornee = adornee
	billboard.AlwaysOnTop = true
	billboard.Parent = adornee

	local text = Instance.new("TextLabel")
	text.Name = "Label"
	text.Size = UDim2.new(1, 0, 0.5, 0)
	text.Position = UDim2.new(0, 0, 0, 0)
	text.Text = label
	text.Font = Enum.Font.Cartoon
	text.TextColor3 = color
	text.BackgroundTransparency = 1
	text.TextScaled = true
	text.Parent = billboard

	local frame = Instance.new("Frame")
	frame.Name = "Dot"
	frame.Size = UDim2.new(0, 14, 0, 14)
	frame.Position = UDim2.new(0.5, -7, 0.55, 0)
	frame.BackgroundColor3 = color
	frame.Parent = billboard

	local uicorner = Instance.new("UICorner")
	uicorner.CornerRadius = UDim.new(1, 0)
	uicorner.Parent = frame
end

local function removeESP(obj)
	local adornee = obj
	if obj:IsA("Model") then
		adornee =
			obj:FindFirstChild("HumanoidRootPart")
			or obj.PrimaryPart
			or obj:FindFirstChildWhichIsA("BasePart")
	end
	if not adornee then return end

	local gui = adornee:FindFirstChild("BillboardGui")
	if gui then gui:Destroy() end
end

--player esp

local function addPlayerESP(char)
	if char and char:FindFirstChild("HumanoidRootPart") then
		addESP(char, Color3.fromRGB(220, 220, 220), char.Name)
	end
end

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(addPlayerESP)
end)

for _, player in ipairs(Players:GetPlayers()) do
	if player.Character then
		addPlayerESP(player.Character)
	end
end

--task esp + other useless stuff

local function onMapSwitch()
	local map = Workspace:FindFirstChild("CurrentMap")
	if not map then return end

	local tasks = map:FindFirstChild("CurrentTasks")
	if tasks then
		for _, task in pairs(tasks:GetChildren()) do
			if task.Name ~= "EchoGen" then
				removeESP(task)
				addESP(task, Color3.fromRGB(255, 255, 0), "Task")

				local completed = task:FindFirstChild("Completed")
				if completed and completed:IsA("BoolValue") then
					local function updateTaskColor()
						local adornee =
							task:FindFirstChild("HumanoidRootPart")
							or task.PrimaryPart
							or task:FindFirstChildWhichIsA("BasePart")

						if not adornee then return end
						local gui = adornee:FindFirstChild("BillboardGui")
						if not gui then return end

						local col = completed.Value
							and Color3.fromRGB(0, 255, 0)
							or Color3.fromRGB(255, 255, 0)

						local label = gui:FindFirstChild("Label")
						local dot = gui:FindFirstChild("Dot")

						if label then label.TextColor3 = col end
						if dot then dot.BackgroundColor3 = col end
					end

					updateTaskColor()

					completed:GetPropertyChangedSignal("Value"):Connect(updateTaskColor)
				end
			end
		end
	end

	local upgraders = map:FindFirstChild("CurrentUpgraders")
	if upgraders then
		for _, t in pairs(upgraders:GetChildren()) do
			removeESP(t)
			addESP(t, Color3.fromRGB(204, 153, 255), "Terminal")
		end
	end

	local keepers = map:FindFirstChild("Keepers")
	if keepers then
		for _, k in pairs(keepers:GetChildren()) do
			local clipboard = k:FindFirstChild("InfoEnvy")
			if clipboard then
				addESP(clipboard, Color3.fromRGB(0, 0, 255), "Clipboard")
			end
		end
	end

	for _, obj in pairs(map:GetChildren()) do
		if obj.Name == "EnvyTrap" then
			addESP(obj, Color3.fromRGB(255, 255, 0), "Trap")
		end
	end
end

--ele esp

local function setupElevatorESP()
	local ele = Workspace:FindFirstChild("MapElevator")
	if ele then
		local floor = ele:FindFirstChild("Floor")
		if floor then
			addESP(floor, Color3.fromRGB(255, 165, 0), "Elevator")
		end
	end
end

--sybau

setupElevatorESP()

Workspace.ChildAdded:Connect(function(child)
	if child.Name == "CurrentMap" then
		repeat task.wait(1)
		until child:FindFirstChild("SpawnedItems")
			and child:FindFirstChild("CurrentTasks")
		onMapSwitch()
	end
end)

Workspace.DescendantAdded:Connect(function(desc)
	if desc.Name == "MapElevator" or desc.Name == "Floor" then
		setupElevatorESP()
	end
end)

--entity esp

local entities = Workspace:FindFirstChild("Entities")
if entities then
	for _, e in ipairs(entities:GetChildren()) do
		addESP(e, Color3.fromRGB(255, 0, 0), e.Name)
	end

	entities.ChildAdded:Connect(function(ent)
		task.wait()
		addESP(ent, Color3.fromRGB(255, 0, 0), ent.Name)
	end)
end

Features & Information

currently: highlights uncompleted tasks yellow highlights completed tasks green highlights players white highlights the machine things purple highlights elevator floor orange to use: run script before first floor starts sorry if this is not good or laggy, i could not think of better way to perform this, and i am a fairly new coder highlights may also bug out when there is too many of them, i dont know how to fix feel free to debug, leave feedback, or fix my code help is appreciated this also has code for envy clipboards but for some reason did not work last time i checked

Community Comments (8)

GoonJoeGoonJoeJun 26, 2025

Not the best but is still very cool, +1 rep

zelazelaJun 27, 2025

ill try switching off of highlights soon - they are buggy and can only show a few at a time

miisatomiisatoJun 27, 2025(edited)

decent script however sometimes it doesn't highlight the en*y's and might not highlight all the tasks very cool hopefully u can improve the script

VisprVisprJun 27, 2025

FINALLY A DEPTH SPELUNKING SCRIPT

AY21AY21Jun 29, 2025

thank

aryanurrohman444aryanurrohman444Sep 17, 2025

can you make [ Into The Abyss ] ? just esp for door and en*y ?

AY21AY21Sep 30, 2025

@zela will you continue make this script like this?

EunoiaTheStarGazerEunoiaTheStarGazerNov 24, 2025

can you make it so it highlights the items too?

More Scripts for Depth Spelunking