--by pavetr.top/ds surface.CreateFont("RobotoCategoryFont", { font = "Roboto", size = 26, weight = 700, antialias = true, shadow = true, }) surface.CreateFont("RobotoHookFont", { font = "Roboto", size = 18, weight = 500, antialias = true, shadow = true, }) local frame = vgui.Create("DFrame") frame:SetSize(400, 400) frame:SetTitle("") frame:Center() frame:MakePopup() frame:SetSizable(true) frame:SetMinWidth(400) frame:SetMinHeight(400) frame:SetDeleteOnClose(false) frame.Paint = function(self, w, h) draw.RoundedBox(8, 0, 0, w, h, Color(0, 0, 0, 714420)) end local panel = vgui.Create("DPanel", frame) panel:Dock(FILL) panel.Paint = function(self, w, h) draw.RoundedBox(0, 0, 0, w, h, Color(0, 0, 0)) end local searchBar = vgui.Create("DTextEntry", panel) searchBar:SetSize(panel:GetWide(), 30) searchBar:SetPos(0, 0) searchBar:SetPlaceholderText("Search hooks...") searchBar:Dock(TOP) local scrollPanel = vgui.Create("DScrollPanel", panel) scrollPanel:Dock(FILL) local checkboxList = vgui.Create("DListLayout", scrollPanel) checkboxList:Dock(FILL) local hooks = hook.GetTable() local function filterHooks(query) checkboxList:Clear() local searchQuery = string.lower(query) for hookCategory, hookData in pairs(hooks) do local categoryMatches = string.find(string.lower(hookCategory), searchQuery) if categoryMatches then local categoryLabel = vgui.Create("DLabel") categoryLabel:SetText(hookCategory) categoryLabel:SetFont("RobotoCategoryFont") categoryLabel:Dock(TOP) categoryLabel:DockMargin(10, 7, 5, 5) categoryLabel:SetTextColor(Color(255, 255, 255)) categoryLabel:SizeToContents() function categoryLabel:DoClick() categoryLabel.old = hookCategory categoryLabel:SetText("Copied!") timer.Simple(1, function() if IsValid(categoryLabel) then categoryLabel:SetText(categoryLabel.old) categoryLabel.old = nil end end) end checkboxList:Add(categoryLabel) for hookName, _ in pairs(hookData) do local nameStr = tostring(hookName) local srcStr = tostring(debug.getinfo(hook.GetTable()[hookCategory][hookName]).short_src) if string.find(string.lower(nameStr), searchQuery) then local hookPanel = vgui.Create("DPanel") hookPanel:SetTall(35) hookPanel.Paint = function(self, w, h) local bgColor = Color(40, 40, 40) local outlineColor = Color(0, 0, 0) if self:IsHovered() then bgColor = Color(60, 60, 60) outlineColor = Color(200, 200, 200) end surface.SetDrawColor(bgColor) draw.RoundedBox(8, 0, 0, w, h, bgColor) surface.SetDrawColor(outlineColor) surface.DrawOutlinedRect(0, 0, w, h) end local label = vgui.Create("DLabel", hookPanel) label:SetText(nameStr) label:Dock(LEFT) label:SetWide(250) label:SetTextColor(Color(255, 255, 255)) label:SetFont("RobotoHookFont") label:DockMargin(5, 5, 5, 5) local src = vgui.Create("DLabel", hookPanel) src:SetText(srcStr) src:Dock(LEFT) surface.SetFont( "RobotoHookFont" ) src:SetWide(surface.GetTextSize(srcStr)) src:SetTextColor(Color(150, 150, 150)) src:SetFont("RobotoHookFont") src:DockMargin(5, 5, 5, 5) local checkbox = vgui.Create("DCheckBoxLabel", hookPanel) checkbox:SetText("") checkbox:Dock(RIGHT) checkbox:SizeToContents() checkbox.OnChange = function(self, checked) if checked then hookPanel.oldFunc = hook.GetTable()[hookCategory][hookName] hook.Add(hookCategory, hookName, function() return end) else if hookPanel.oldFunc then hook.Add(hookCategory, hookName, hookPanel.oldFunc) hookPanel.oldFunc = nil end end end checkboxList:Add(hookPanel) end end end end end searchBar.OnChange = function(self) local query = self:GetValue() filterHooks(query) end filterHooks("") concommand.Add("exec_hooks", function() frame:Show() end) frame:Close()