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