
KeylessUniversal

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local selectedHighlight
local selectedBillboard
local autoUpdate = false
local minimized = false
-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "PromptDebug"
gui.ResetOnSpawn = false
gui.Parent = player.PlayerGui
-- Main frame
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 300, 0, 450)
frame.Position = UDim2.new(0.05, 0, 0.2, 0)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Parent = gui
local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 8)
frameCorner.Parent = frame
-- Title bar
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 40)
titleBar.BackgroundColor3 = Color3.fromRGB(40, 40, 52)
titleBar.BorderSizePixel = 0
titleBar.ZIndex = 2
titleBar.Parent = frame
local titleBarCorner = Instance.new("UICorner")
titleBarCorner.CornerRadius = UDim.new(0, 8)
titleBarCorner.Parent = titleBar
-- Patch for making bottom edges straight
local titleBarPatch = Instance.new("Frame")
titleBarPatch.Size = UDim2.new(1, 0, 0.5, 0)
titleBarPatch.Position = UDim2.new(0, 0, 0.5, 0)
titleBarPatch.BackgroundColor3 = Color3.fromRGB(40, 40, 52)
titleBarPatch.BorderSizePixel = 0
titleBarPatch.ZIndex = 2
titleBarPatch.Parent = titleBar
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -80, 1, 0)
title.Position = UDim2.new(0, 12, 0, 0)
title.Text = "Prompt Debug"
title.TextScaled = true
title.BackgroundTransparency = 1
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.ZIndex = 3
title.Parent = titleBar
-- Minimize button
local minBtn = Instance.new("TextButton")
minBtn.Size = UDim2.new(0, 28, 0, 28)
minBtn.Position = UDim2.new(1, -34, 0, 6)
minBtn.Text = "-"
minBtn.BackgroundColor3 = Color3.fromRGB(65, 65, 80)
minBtn.TextColor3 = Color3.new(1, 1, 1)
minBtn.Font = Enum.Font.GothamBold
minBtn.TextScaled = true
minBtn.BorderSizePixel = 0
minBtn.ZIndex = 4
minBtn.Parent = titleBar
local minBtnCorner = Instance.new("UICorner")
minBtnCorner.CornerRadius = UDim.new(0, 6)
minBtnCorner.Parent = minBtn
-- Hidden content when minimized
local content = Instance.new("Frame")
content.Size = UDim2.new(1, 0, 1, -40)
content.Position = UDim2.new(0, 0, 0, 40)
content.BackgroundTransparency = 1
content.ClipsDescendants = true
content.Parent = frame
-- Refresh / Auto buttons
local btnRow = Instance.new("Frame")
btnRow.Size = UDim2.new(1, 0, 0, 38)
btnRow.BackgroundTransparency = 1
btnRow.Parent = content
local refresh = Instance.new("TextButton")
refresh.Size = UDim2.new(0.5, -6, 1, -6)
refresh.Position = UDim2.new(0, 5, 0, 3)
refresh.Text = "Refresh"
refresh.BackgroundColor3 = Color3.fromRGB(50, 115, 220)
refresh.TextColor3 = Color3.new(1, 1, 1)
refresh.Font = Enum.Font.GothamSemibold
refresh.TextScaled = true
refresh.BorderSizePixel = 0
refresh.Parent = btnRow
Instance.new("UICorner", refresh).CornerRadius = UDim.new(0, 6)
local auto = Instance.new("TextButton")
auto.Size = UDim2.new(0.5, -6, 1, -6)
auto.Position = UDim2.new(0.5, 1, 0, 3)
auto.Text = "Auto: OFF"
auto.BackgroundColor3 = Color3.fromRGB(65, 65, 80)
auto.TextColor3 = Color3.new(1, 1, 1)
auto.Font = Enum.Font.GothamSemibold
auto.TextScaled = true
auto.BorderSizePixel = 0
auto.Parent = btnRow
Instance.new("UICorner", auto).CornerRadius = UDim.new(0, 6)
-- Prompt list section
local listSection = Instance.new("Frame")
listSection.Size = UDim2.new(1, 0, 1, -155)
listSection.Position = UDim2.new(0, 0, 0, 42)
listSection.BackgroundTransparency = 1
listSection.Parent = content
local listLabel = Instance.new("TextLabel")
listLabel.Size = UDim2.new(1, -10, 0, 20)
listLabel.Position = UDim2.new(0, 5, 0, 0)
listLabel.Text = "Prompts:"
listLabel.TextScaled = true
listLabel.BackgroundTransparency = 1
listLabel.TextColor3 = Color3.fromRGB(155, 155, 175)
listLabel.Font = Enum.Font.Gotham
listLabel.TextXAlignment = Enum.TextXAlignment.Left
listLabel.Parent = listSection
local list = Instance.new("ScrollingFrame")
list.Size = UDim2.new(1, -10, 1, -24)
list.Position = UDim2.new(0, 5, 0, 22)
list.CanvasSize = UDim2.new(0, 0, 0, 0)
list.BackgroundColor3 = Color3.fromRGB(18, 18, 23)
list.BorderSizePixel = 0
list.ScrollBarThickness = 4
list.ScrollBarImageColor3 = Color3.fromRGB(80, 80, 100)
list.Parent = listSection
Instance.new("UICorner", list).CornerRadius = UDim.new(0, 6)
-- Log section
local logSection = Instance.new("Frame")
logSection.Size = UDim2.new(1, 0, 0, 108)
logSection.Position = UDim2.new(0, 0, 1, -113)
logSection.BackgroundTransparency = 1
logSection.Parent = content
local logLabel = Instance.new("TextLabel")
logLabel.Size = UDim2.new(1, -10, 0, 20)
logLabel.Position = UDim2.new(0, 5, 0, 0)
logLabel.Text = "Log:"
logLabel.TextScaled = true
logLabel.BackgroundTransparency = 1
logLabel.TextColor3 = Color3.fromRGB(155, 155, 175)
logLabel.Font = Enum.Font.Gotham
logLabel.TextXAlignment = Enum.TextXAlignment.Left
logLabel.Parent = logSection
local logScroll = Instance.new("ScrollingFrame")
logScroll.Size = UDim2.new(1, -10, 1, -24)
logScroll.Position = UDim2.new(0, 5, 0, 22)
logScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
logScroll.BackgroundColor3 = Color3.fromRGB(14, 14, 18)
logScroll.BorderSizePixel = 0
logScroll.ScrollBarThickness = 3
logScroll.ScrollBarImageColor3 = Color3.fromRGB(70, 70, 90)
logScroll.Parent = logSection
Instance.new("UICorner", logScroll).CornerRadius = UDim.new(0, 6)
local logLayout = Instance.new("UIListLayout")
logLayout.SortOrder = Enum.SortOrder.LayoutOrder
logLayout.Padding = UDim.new(0, 2)
logLayout.Parent = logScroll
local logPad = Instance.new("UIPadding")
logPad.PaddingLeft = UDim.new(0, 5)
logPad.PaddingRight = UDim.new(0, 5)
logPad.PaddingTop = UDim.new(0, 3)
logPad.Parent = logScroll
local logOrder = 0
local function addLog(msg)
logOrder += 1
local time = os.date("%H:%M:%S")
local entry = Instance.new("TextLabel")
entry.Size = UDim2.new(1, 0, 0, 17)
entry.Text = "[" .. time .. "] " .. msg
entry.TextScaled = true
entry.BackgroundTransparency = 1
entry.TextColor3 = Color3.fromRGB(150, 220, 160)
entry.Font = Enum.Font.Code
entry.TextXAlignment = Enum.TextXAlignment.Left
entry.LayoutOrder = logOrder
entry.Parent = logScroll
task.defer(function()
logScroll.CanvasSize = UDim2.new(0, 0, 0, logLayout.AbsoluteContentSize.Y + 6)
logScroll.CanvasPosition = Vector2.new(0, math.huge)
end)
end
-- Minimize / expand
minBtn.MouseButton1Click:Connect(function()
minimized = not minimized
content.Visible = not minimized
minBtn.Text = minimized and "+" or "-"
frame.Size = minimized
and UDim2.new(0, 300, 0, 40)
or UDim2.new(0, 300, 0, 450)
end)
-- Highlight
local function clearHighlight()
if selectedHighlight then
selectedHighlight:Destroy()
selectedHighlight = nil
end
if selectedBillboard then
selectedBillboard:Destroy()
selectedBillboard = nil
end
end
local function highlightPrompt(prompt)
clearHighlight()
local part = prompt.Parent
if not part:IsA("BasePart") then
part = part:FindFirstChildWhichIsA("BasePart", true)
end
if not part then
addLog("No BasePart found: " .. prompt:GetFullName())
return
end
selectedHighlight = Instance.new("Highlight")
selectedHighlight.FillColor = Color3.fromRGB(0, 230, 100)
selectedHighlight.OutlineColor = Color3.new(1, 1, 1)
selectedHighlight.FillTransparency = 0.5
selectedHighlight.Adornee = part
selectedHighlight.Parent = part
selectedBillboard = Instance.new("BillboardGui")
selectedBillboard.Size = UDim2.new(0, 200, 0, 50)
selectedBillboard.StudsOffset = Vector3.new(0, 3, 0)
selectedBillboard.AlwaysOnTop = true
selectedBillboard.Adornee = part
selectedBillboard.Parent = part
local text = Instance.new("TextLabel")
text.Size = UDim2.fromScale(1, 1)
text.BackgroundTransparency = 1
text.TextColor3 = Color3.new(1, 1, 1)
text.TextStrokeTransparency = 0
text.TextScaled = true
text.Font = Enum.Font.GothamBold
text.Text = prompt.ObjectText ~= "" and prompt.ObjectText or prompt.ActionText
text.Parent = selectedBillboard
local name = prompt.ObjectText ~= "" and prompt.ObjectText or prompt.ActionText
addLog("Selected: " .. name .. " (" .. part.Name .. ")")
end
-- Update prompt list
local function updateList()
for _, v in ipairs(list:GetChildren()) do
if v:IsA("TextButton") then
v:Destroy()
end
end
local y = 0
local count = 0
for _, prompt in ipairs(workspace:GetDescendants()) do
if prompt:IsA("ProximityPrompt") then
local name = prompt.ObjectText ~= "" and prompt.ObjectText or prompt.ActionText
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -8, 0, 34)
btn.Position = UDim2.new(0, 4, 0, y)
btn.Text = name
btn.BackgroundColor3 = Color3.fromRGB(32, 32, 42)
btn.TextColor3 = Color3.fromRGB(220, 220, 235)
btn.Font = Enum.Font.Gotham
btn.TextScaled = true
btn.BorderSizePixel = 0
btn.Parent = list
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5)
btn.MouseButton1Click:Connect(function()
for _, b in ipairs(list:GetChildren()) do
if b:IsA("TextButton") then
b.BackgroundColor3 = Color3.fromRGB(32, 32, 42)
end
end
btn.BackgroundColor3 = Color3.fromRGB(50, 115, 220)
highlightPrompt(prompt)
end)
y += 38
count += 1
end
end
list.CanvasSize = UDim2.new(0, 0, 0, y + 4)
title.Text = "Prompts (" .. count .. ")"
addLog("List updated: " .. count .. " prompt(s)")
end
-- Events
refresh.MouseButton1Click:Connect(updateList)
auto.MouseButton1Click:Connect(function()
autoUpdate = not autoUpdate
auto.Text = autoUpdate and "Auto: ON" or "Auto: OFF"
auto.BackgroundColor3 = autoUpdate
and Color3.fromRGB(45, 175, 80)
or Color3.fromRGB(65, 65, 80)
addLog("Auto update " .. (autoUpdate and "enabled" or "disabled"))
end)
-- Auto update loop
task.spawn(function()
while true do
if autoUpdate then
updateList()
end
task.wait(1)
end
end)
updateList()No comments yet for this script.



