print("Custom inventory loaded") --Some calculations to draw the inventory nicely local scrx = ScrW() local scry = ScrH() --Make the menu 30% of the x to the closest 64 and 100% of the y local invxadj = ((scrx*0.4)%64) local invxsize = (scrx*0.40)-invxadj-38 --no idea why the 38 works, but it does local invysize = scry local function createMenuFor(menu, tbl) for k,v in pairs(tbl) do if(isfunction(v)) then --This is a dead-end, add the menu local thisoption = menu:AddOption(k,v) else --Otherwise it should be a table, recursively call to create local submenu = menu:AddSubMenu(k) createMenuFor(submenu,v) end end end local function createPanel() local frame = vgui.Create( "DFrame" ) frame:SetSize( invxsize, invysize ) frame:SetTitle( "Inventory" ) frame:MakePopup() frame:SetPos(scrx-invxsize,0) local tabsheet = vgui.Create("DPropertySheet", frame) tabsheet:Dock(FILL) local invtab = vgui.Create("DPanel",tabsheet) tabsheet:AddSheet( "Inventory", invtab, "icon16/database.png" ) local equiptab = vgui.Create("DPanel",tabsheet) tabsheet:AddSheet( "Equipment", equiptab, "icon16/user.png" ) local proptab = vgui.Create("DPanel",tabsheet) tabsheet:AddSheet( "Props", proptab, "icon16/wrench.png" ) if(LocalPlayer():IsAdmin()) then local admintab = vgui.Create("DPanel",tabsheet) tabsheet:AddSheet("Admin", admintab, "icon16/bullet_star.png") end --Inventory local layout = vgui.Create( "DTileLayout", invtab ) layout:SetBaseSize( 64 ) -- Tile size layout:Dock( FILL ) layout:MakeDroppable( "unique_name" ) -- Allows us to rearrange children PrintTable(Resources) for k, v in SortedPairs( Resources ) do local selection = vgui.Create("DImageButton") if(GMS.Resources[k] == nil) then --This resource is not registered! selection:SetImage("vgui/avatar_default") print("Resource:" .. k .. " not registed! This might be a bug!") continue elseif(GMS.Resources[k].Icon == nil) then selection:SetImage("vgui/avatar_default") print("Resource:" .. k .. " does not have an .Icon field! This might be a bug!") continue else selection:SetImage(GMS.Resources[k].Icon) end selection:SetSize(64,64) selection.DoClick = function() if(GMS.Resources[k].UniqueData) then print("We should expand menu to show all uniqueid's") else if(GMS.Resources[k].Actions == nil) then print("gamemode/client/cl_inventory.lua: Looking for actions for " .. k .. " but found nil!") return end local menu = vgui.Create("DMenu") createMenuFor(menu,GMS.Resources[k].Actions) menu:Open() end end layout:Add( selection ) end end local invpanel = nil function GM:OnSpawnMenuOpen() print("Spawn menu hooked correctly") if(invpanel == nil) then invpanel = createPanel() end end function GM:OnSpawnMenuClose() end function GM:SpawnMenuEnabled() return false end