-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmsitemscrafting.lua
More file actions
101 lines (81 loc) · 2.65 KB
/
Copy pathmsitemscrafting.lua
File metadata and controls
101 lines (81 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
CraftingMenu = vgui.Create("DFrame")
CraftingMenu:SetSize(1000,500)
CraftingMenu:SetTitle("Crafting Bench")
CraftingMenu:Center()
CraftingMenu:MakePopup()
local craft = vgui.Create("DPanel")
local plyinv = vgui.Create("DPanel")
local divider = vgui.Create("DHorizontalDivider",CraftingMenu)
divider:Dock(FILL)
divider:SetLeft(craft)
divider:SetRight(plyinv)
divider:SetLeftMin(500)
divider:SetRightMin(500)
divider:SetDividerWidth(4)
divider:SetLeftWidth(500)
function craft:Paint(w,h)
derma.SkinHook("Paint","Frame",self,w,h)
draw.SimpleText("Crafting","DermaDefault",5,5,derma.GetDefaultSkin().Colours.Window.TitleActive)
end
function plyinv:Paint(w,h)
derma.SkinHook("Paint","Frame",self,w,h)
draw.SimpleText("Inventory","DermaDefault",5,5,derma.GetDefaultSkin().Colours.Window.TitleActive)
end
local chead = vgui.Create("DPanel",craft)
chead:Dock(TOP)
chead:SetTall(24)
function chead:Paint() end
local ihead = vgui.Create("DPanel",plyinv)
ihead:Dock(TOP)
ihead:SetTall(24)
function ihead:Paint() end
local pilist = vgui.Create("DPanelList", plyinv)
pilist:Dock(TOP)
pilist:SetTall(440)
pilist:EnableHorizontal(false)
pilist:EnableVerticalScrollbar(true)
pilist:SetSpacing(0)
function pilist:PaintOver()
surface.SetDrawColor( 150, 150, 150, 255 )
surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
end
local inventory = LocalPlayer():GetInventory()
local plyinv_items = {}
local function CheckCount(item, class, table)
local inventory = LocalPlayer():GetInventory()
/
item:SetCount(item:GetCount() - 1)
if item:GetCount() < 1 then
item:Remove()
inventory[class] = nil
plyinv_items[class] = nil
elseif IsValid(table.data.model) then
table.data.model:Remove()
end
end
for class, table in pairs(inventory) do
if not table.data then table.data = msitems.GetItemDataFromClass(class) end
if table.data then
local item = plyinv_items[class] or vgui.Create("msitems.ItemPanel", plyinv)
local text = msitems.GetInventoryInfo(class)
item:SetCount(table.count)
item:SetItemInfo(msitems.Get(class).WorldModel or blank, text.name, text.info)
item:SetMenu(function()
local menu = DermaMenu()
menu:SetPos(gui.MousePos())
menu:AddOption("Equip", function()
if IsValid(LocalPlayer():GetActiveItem()) then return end
RunConsoleCommand("msitems", "equip", class)
CheckCount(item, class, table)
end)
menu:AddOption("Drop", function()
RunConsoleCommand("msitems", "drop", class)
CheckCount(item, class, table)
end)
end)
if not plyinv_items[class] then
pilist:AddItem(item)
end
plyinv_items[class] = item
end
end