Gubby ESPs (read desc)
Key Required

Gubby ESPs (read desc)

Find the Gubbys (134)skeeplskeepl 646 views 211 executesUpdated Apr 6, 2026
Unrated
00
Lua Script•263 lines (8544 chars)
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

local localPlayer = Players.LocalPlayer
local playerToFindFolder = localPlayer:WaitForChild("ToFindFolder")
local workspaceToFind = Workspace:WaitForChild("ToFind")

local customFont = Font.new("rbxassetid://11322590111", Enum.FontWeight.Regular, Enum.FontStyle.Normal)

local function addShadow(parent)
	local stroke = Instance.new("UIStroke")
	stroke.Color = Color3.fromRGB(0, 0, 0)
	stroke.Thickness = 2
	stroke.Transparency = 0.4
	stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
	stroke.Parent = parent
	return stroke
end

local function addTextStroke(parent)
	local stroke = Instance.new("UIStroke")
	stroke.Color = Color3.fromRGB(0, 0, 0)
	stroke.Thickness = 1.5
	stroke.Transparency = 0
	stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Contextual
	stroke.Parent = parent
	return stroke
end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "GubbyTrackerUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = localPlayer:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 140, 0, 180)
mainFrame.Position = UDim2.new(0.05, 0, 0.2, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
addShadow(mainFrame) 

local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 6)
uiCorner.Parent = mainFrame

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 25)
title.Text = "Gubby Finder"
title.TextColor3 = Color3.new(1, 1, 1)
title.TextSize = 12
title.FontFace = customFont
title.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
title.Parent = mainFrame
Instance.new("UICorner", title).CornerRadius = UDim.new(0, 6)
addTextStroke(title)

local searchBar = Instance.new("TextBox")
searchBar.Size = UDim2.new(1, -10, 0, 20)
searchBar.Position = UDim2.new(0, 5, 0, 28)
searchBar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
searchBar.TextColor3 = Color3.new(1, 1, 1)
searchBar.PlaceholderText = "Search..."
searchBar.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
searchBar.Text = ""
searchBar.TextSize = 11
searchBar.FontFace = customFont
searchBar.Parent = mainFrame
Instance.new("UICorner", searchBar).CornerRadius = UDim.new(0, 4)
addShadow(searchBar) 
addTextStroke(searchBar)

local filterOnlyRed = false
local filterBtn = Instance.new("TextButton")
filterBtn.Size = UDim2.new(1, -10, 0, 20)
filterBtn.Position = UDim2.new(0, 5, 0, 51)
filterBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
filterBtn.Text = "Filter: All"
filterBtn.TextColor3 = Color3.new(1, 1, 1)
filterBtn.TextSize = 10
filterBtn.FontFace = customFont
filterBtn.Parent = mainFrame
Instance.new("UICorner", filterBtn).CornerRadius = UDim.new(0, 4)
addShadow(filterBtn)
addTextStroke(filterBtn)

local minBtn = Instance.new("TextButton")
minBtn.Size = UDim2.new(0, 20, 0, 20)
minBtn.Position = UDim2.new(1, -25, 0, 2)
minBtn.Text = "-"
minBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
minBtn.TextColor3 = Color3.new(1, 1, 1)
minBtn.FontFace = customFont
minBtn.Parent = mainFrame
Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 4)
addTextStroke(minBtn)

local restoreBtn = Instance.new("TextButton")
restoreBtn.Size = UDim2.new(0, 80, 0, 30)
restoreBtn.Position = UDim2.new(0, 10, 0, 10)
restoreBtn.Text = "Restore"
restoreBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
restoreBtn.TextColor3 = Color3.new(1, 1, 1)
restoreBtn.FontFace = customFont
restoreBtn.Visible = false
restoreBtn.Parent = screenGui
Instance.new("UICorner", restoreBtn).CornerRadius = UDim.new(0, 6)
addShadow(restoreBtn)
addTextStroke(restoreBtn)

local restoreStroke = Instance.new("UIStroke")
restoreStroke.Color = Color3.new(1, 1, 1)
restoreStroke.Thickness = 1
restoreStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
restoreStroke.Parent = restoreBtn

minBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
	restoreBtn.Visible = true
end)

restoreBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = true
	restoreBtn.Visible = false
end)

local scrollingFrame = Instance.new("ScrollingFrame")
scrollingFrame.Size = UDim2.new(1, -10, 1, -78) 
scrollingFrame.Position = UDim2.new(0, 5, 0, 75)
scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollingFrame.ScrollBarThickness = 2
scrollingFrame.BackgroundTransparency = 1
scrollingFrame.Parent = mainFrame

local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 4)
layout.Parent = scrollingFrame

local currentTarget = nil
local currentGubbyValue = nil 
local distanceConnection = nil

local masterHighlight = Instance.new("Highlight")
masterHighlight.FillColor = Color3.fromRGB(255, 0, 0)
masterHighlight.OutlineColor = Color3.new(1, 1, 1)
masterHighlight.Parent = screenGui 

local masterBillboard = Instance.new("BillboardGui")
masterBillboard.Size = UDim2.new(0, 120, 0, 40)
masterBillboard.AlwaysOnTop = true
masterBillboard.Enabled = false
masterBillboard.Parent = screenGui 

local distLabel = Instance.new("TextLabel")
distLabel.Size = UDim2.new(1, 0, 1, 0)
distLabel.BackgroundTransparency = 1
distLabel.TextColor3 = Color3.new(1, 1, 1)
distLabel.Font = Enum.Font.GothamBold 
distLabel.TextSize = 11
distLabel.Text = ""
distLabel.Parent = masterBillboard
addTextStroke(distLabel)

local labelStroke = Instance.new("UIStroke")
labelStroke.Color = Color3.new(0, 0, 0)
labelStroke.Thickness = 2
labelStroke.Transparency = 0
labelStroke.Parent = distLabel

local function clearTracking()
	if distanceConnection then distanceConnection:Disconnect() end
	masterHighlight.Adornee = nil
	masterBillboard.Adornee = nil
	masterBillboard.Enabled = false
	distLabel.Text = ""
	currentTarget = nil
	currentGubbyValue = nil
end

local function startTracking(gubbyObject)
	clearTracking()
	local name = gubbyObject.Name
	local target = nil
	for _, child in pairs(workspaceToFind:GetChildren()) do
		if child.Name:lower() == name:lower() then
			target = child
			break
		end
	end

	if not target then return end
	currentTarget = target
	currentGubbyValue = gubbyObject
	masterHighlight.Adornee = target
	masterBillboard.Adornee = target
	masterBillboard.Enabled = true

	distanceConnection = RunService.Heartbeat:Connect(function()
		local character = localPlayer.Character
		local hrp = character and character:FindFirstChild("HumanoidRootPart")
		if hrp and currentTarget and currentTarget.Parent then
			distLabel.TextColor3 = (currentGubbyValue and currentGubbyValue.Value == false) and Color3.fromRGB(255, 50, 50) or Color3.new(1, 1, 1)
			local dist = (hrp.Position - currentTarget:GetPivot().Position).Magnitude
			distLabel.Text = string.format("%s\n%.1f studs", name, dist)
		else
			clearTracking()
		end
	end)
end

local buttons = {}
local function updateVisibility()
	local searchText = searchBar.Text:lower()
	for _, data in pairs(buttons) do
		local nameMatch = data.Name:lower():find(searchText)
		local filterMatch = (not filterOnlyRed) or (data.Object.Value == false)
		data.Button.Visible = nameMatch and filterMatch
	end
end

searchBar:GetPropertyChangedSignal("Text"):Connect(updateVisibility)

filterBtn.MouseButton1Click:Connect(function()
	filterOnlyRed = not filterOnlyRed
	filterBtn.Text = filterOnlyRed and "Filter: Red Only" or "Filter: All"
	filterBtn.BackgroundColor3 = filterOnlyRed and Color3.fromRGB(100, 0, 0) or Color3.fromRGB(35, 35, 35)
	updateVisibility()
end)

for _, gubby in pairs(playerToFindFolder:GetChildren()) do
	if not gubby:IsA("BoolValue") then continue end

	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, 0, 0, 25)
	btn.Text = gubby.Name
	btn.TextColor3 = Color3.new(1, 1, 1)
	btn.FontFace = customFont
	btn.TextSize = 11
	btn.Parent = scrollingFrame
	Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
	addShadow(btn) 
	addTextStroke(btn)
	
	local function updateButtonStyle()
		btn.BackgroundColor3 = (gubby.Value == false) and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(55, 55, 55)
		if filterOnlyRed then updateVisibility() end 
	end

	gubby.Changed:Connect(updateButtonStyle)
	updateButtonStyle() 
	btn.MouseButton1Click:Connect(function() startTracking(gubby) end)
	table.insert(buttons, {Button = btn, Name = gubby.Name, Object = gubby})
end

local function updateCanvas()
	scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y)
end

layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateCanvas)
updateCanvas()

Features & Information

DISCLAIMER: This script only helps you know where the Gubbys are. It doesn't help you actually get all of them as some Gubbys are literally inaccessible without solving some kind of puzzle. This script helps you see where the Gubbys are by showing you their location. A red button and highlight means you haven't gotten that specific Gubby yet.
#open source

Community Comments (0)

No comments yet for this script.

More Scripts for Find the Gubbys (134)