Garry's Mod Wiki

Revision Difference

Custom_SpawnMenu#527761

<cat>Dev.Lua</cat> <title>Custom SpawnMenu</title> # How do I make my own SpawnMenu? ## This requires, at a minimum, accessing all added tabs. You can do this like this: ```lua for k, v in SortedPairsByMemberValue( spawnmenu.GetCreationTabs(), 'Order' ) do for k, v in SortedPairsByMemberValue( spawnmenu.GetCreationTabs(), "Order" ) do PrintTable( v ) print( k ) -- The tab name print( k ) -- The tab name end ``` <example> <code> local menu = vgui.Create( 'DFrame' ) local menu = vgui.Create( "DFrame" ) menu:SetSize( 1000, 550 ) menu:Center() menu:MakePopup() local sheet = vgui.Create( 'DPropertySheet', menu ) local sheet = vgui.Create( "DPropertySheet", menu ) sheet:Dock( FILL ) for k, v in SortedPairsByMemberValue( spawnmenu.GetCreationTabs(), 'Order' ) do for k, v in SortedPairsByMemberValue( spawnmenu.GetCreationTabs(), "Order" ) do local panel = v.Function() panel:SetParent( sheet ) sheet:AddSheet( k, panel, v.Icon ) end </code> <output> <image src = 'https://i.imgur.com/CZU3dNh.png' alt = 'Autocomplete_showing_several_DarkRP_commands' /> </output> </example> ## Next you need to access the Tool part: ```lua for k, v in pairs( spawnmenu.GetTools() ) do for a, b in pairs( v ) do if ( istable( b ) ) then⤶ for l, p in pairs( b ) do print( p.Text ) -- Category name⤶ ⤶ for g, h in pairs( p ) do⤶ if ( istable( h ) ) then⤶ print( h.Text ) -- Name of the tool itself⤶ end⤶ end⤶ end⤶ end⤶ end⤶ for _, tool in ipairs( spawnmenu.GetTools() ) do for _, category in ipairs( tool.Items ) do print( category.Text ) -- Category name⤶ for _, item in ipairs( category ) do print( item.Text ) -- Name of the tool itself⤶ end⤶ end⤶ end ``` The most difficult thing has already been done, it remains only to substitute the VGUI part to these schemes and enjoy your SpawnMenu. # Example of a ready-made SpawnMenu ## SpawnMenu by Freline user: https://steamcommunity.com/sharedfiles/filedetails/?id=2032678386