Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.23 KB | None | 0 0
  1. include("autorun/sh_inventory.lua")
  2.  
  3. local scrw = ScrW()
  4. local scrh = ScrH()
  5. local titleBar = Color(0,0,0,225)
  6. local foreground = Color(30,30,30,225)
  7. local itemoverlay = Material("inv/itemoverlay.png")
  8. local slotSize
  9.  
  10. function DINVENTORY.AdminMenuOpen()
  11.  
  12.     if not LocalPlayer():Alive() then return end
  13.     DINVENTORY.Close()
  14.     DINVENTORY.AdminMenu = vgui.Create("InventoryMainFrame")
  15.     local amenu = DINVENTORY.AdminMenu
  16.     amenu:SetSize(scrw * .5, scrh * .75)
  17.     amenu:Center()
  18.     amenu:MakePopup()
  19.     amenu:SetTitle("")
  20.     local titleBarH = amenu:GetTall() * .05
  21.     amenu:Header("ADMIN")
  22.     amenu:ShowClose(true)
  23.     amenu.ExitButton.DoClick = function()
  24.         amenu:Remove()
  25.         DINVENTORY.Open()
  26.     end
  27.     amenu:ForceSetHeader(amenu:GetWide() * .02)
  28.     amenu:ForceSetHeaderAlign(TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  29.     amenu.Panel = vgui.Create("DPanel", amenu)
  30.     amenu.Panel:SetPos(0,amenu.titleSize)
  31.     amenu.Panel:SetSize(amenu:GetWide(), amenu:GetTall() - amenu.titleSize)
  32.  
  33.     local lineColor = amenu.Themes["blur_theme"].line_separator
  34.     amenu.Panel.Paint = function(me,w,h)
  35.  
  36.     end
  37.  
  38.     DINVENTORY.AdminItemPanel()
  39.  
  40. end
  41.  
  42. local adminReg = {}
  43. local checks = {
  44.     "weapon",
  45.     "entity",
  46.     "ammo",
  47.  
  48. }
  49. local function SortReg()
  50.  
  51.     if #adminReg <= 0 then
  52.         for i = 1, #checks do
  53.             for k,v in pairs(DINVENTORY.RegisteredItems) do
  54.                 if v.itemtype == checks[i] then
  55.                     adminReg[#adminReg + 1 or 1] = v
  56.                 end
  57.             end
  58.         end
  59.  
  60.     end
  61. end
  62.  
  63. local function giveItem(item, v)
  64.  
  65.     net.Start("inventory_admin_spawn")
  66.     net.WriteString(item.classname)
  67.     net.WriteInt(v, 16)
  68.     net.SendToServer()
  69.  
  70. end
  71.  
  72.  
  73. local itemOptions = {
  74.     {icon = "icon16/shield.png", title = "Give", subOptions = {}},
  75.  
  76. }
  77.  
  78. local giveAmounts = {
  79.     1,2,5,10,25,50,100,500,1000,
  80. }
  81.  
  82. for k,v in pairs(giveAmounts) do
  83.     itemOptions[1].subOptions[k] = {title = "Give x" .. v, doclick = function(item, slot) giveItem(item, v) end,}
  84. end
  85.  
  86. function DINVENTORY.AdminItemPanel()
  87.  
  88.     local hoverClass = ""
  89.     local ply = LocalPlayer()
  90.     local amenu = DINVENTORY.AdminMenu
  91.     local invPanel = amenu.Panel
  92.     if IsValid(invPanel.ItemPanel) then
  93.         invPanel.ItemPanel:Remove()
  94.     end
  95.     SortReg()
  96.     invPanel.ItemPanel = vgui.Create("DPanel", invPanel)
  97.     local itemPanel = invPanel.ItemPanel
  98.     itemPanel:SetPos(0, 0)
  99.     itemPanel:SetSize(invPanel:GetWide(), invPanel:GetTall())
  100.     local textColor = textColor or DINVENTORY.AdminMenu.Themes["blur_theme"].textcolor
  101.     itemPanel.Paint = function(me,w,h)
  102.         Manager.DrawText("ITEMS", "CSI.Font.24", w / 2 * .072, w * .05, textColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
  103.         Manager.DrawText(hoverClass, "CSI.Font.24", w - (w / 2 * .075), w * .05, textColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
  104.     end
  105.     local ypos = itemPanel:GetTall() * .075
  106.     local scrollPanel = vgui.Create("DScrollPanel", itemPanel)
  107.     scrollPanel:SetPos(0,ypos)
  108.     scrollPanel:SetSize(itemPanel:GetWide(), itemPanel:GetTall() - ypos)
  109.     Manager.PaintBar( scrollPanel, nil, nil, Color(255,255,255) )
  110.     itemPanel.itemList = vgui.Create("DIconLayout", scrollPanel)
  111.     local itemList = itemPanel.itemList
  112.     itemList:SetPos(itemPanel:GetWide() / 2 * 0.072,0)
  113.     itemList:SetSize(scrollPanel:GetWide(), scrollPanel:GetTall())
  114.     itemList:SetSpaceX( itemList:GetWide() * .0175)
  115.     itemList:SetSpaceY( itemList:GetWide() * .0175)
  116.     slotSize = ( itemList:GetWide() / 2 ) * .177
  117.     local reg = DINVENTORY.RegisteredItems
  118.     for k,v in ipairs(adminReg) do
  119.     local item = reg[v.classname]
  120.         local slotPanel = itemList:Add("DPanel")
  121.         slotPanel:SetSize(slotSize, slotSize)
  122.         slotPanel.Paint = function(me, w, h)
  123.             DINVENTORY.DrawSlot(0, 0, w, nil)
  124.         end
  125.         if item then
  126.             local slotItem = vgui.Create("DModelPanel", slotPanel)
  127.             slotItem:SetTooltip("Name: ".. item.name)
  128.             slotItem:SetPos(0,0)
  129.             slotItem:SetSize(slotPanel:GetWide(), slotPanel:GetTall())
  130.             slotItem:SetModel(item.model)
  131.             function slotItem:LayoutEntity( Entity ) return end
  132.             slotItem.Entity:SetPos( slotItem.Entity:GetPos() - Vector( 0, 0, 4 ) )
  133.             slotItem:SetCamPos( Vector( 15, -6, 60 ) )
  134.             slotItem:SetLookAt( Vector( 0, 0, 60 ) )
  135.             slotItem:SetFOV(50)
  136.             local min, max = slotItem.Entity:GetRenderBounds()
  137.             slotItem:SetCamPos(min:Distance(max) * Vector(.7, .7, .7))
  138.             slotItem:SetLookAt((max + min) / 2)
  139.             local oldPaint = baseclass.Get("DModelPanel")
  140.             local itemColor = Color(textColor.r + 20, textColor.g + 20, textColor.b + 20, 255)
  141.             function slotItem:Paint(w,h)
  142.                
  143.                 if self:IsHovered() then
  144.                     Manager.DrawRect(0,0,w,h , Color(255, 255, 255, 3))
  145.                     hoverClass = item.name
  146.                 end
  147.                 surface.SetDrawColor(DINVENTORY.ItemColors[item.itemtype])
  148.                 surface.SetMaterial(itemoverlay)
  149.                 surface.DrawTexturedRect(0,0,w,h)
  150.                 oldPaint.Paint(self,w,h)
  151.                 Manager.DrawText(item.name, "CSI.Font.14", w / 2, h * .125, itemColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  152.             end
  153.             function slotItem:DoClick()
  154.                 local Menu = DermaMenu()
  155.                 for k,v in ipairs(itemOptions) do
  156.                     if v.subOptions then
  157.                         local option, parent = Menu:AddSubMenu( v.title )
  158.                         parent:SetIcon(v.icon)
  159.                         for _,s in ipairs(v.subOptions) do
  160.                             local suboption = option:AddOption(s.title)
  161.                             suboption.DoClick = function()
  162.                                 s.doclick(item,i)
  163.                             end
  164.                         end
  165.                     end
  166.  
  167.                 end
  168.                 Menu:Open()
  169.             end
  170.         end
  171.     end
  172.  
  173.  
  174.  
  175. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement