
Keyless

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()No comments yet for this script.