aboutsummaryrefslogtreecommitdiff
path: root/gamemode/shared/player_lootventory.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/shared/player_lootventory.lua')
-rw-r--r--gamemode/shared/player_lootventory.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/gamemode/shared/player_lootventory.lua b/gamemode/shared/player_lootventory.lua
new file mode 100644
index 0000000..b973932
--- /dev/null
+++ b/gamemode/shared/player_lootventory.lua
@@ -0,0 +1,53 @@
+local insert = table.insert
+
+if (SERVER) then
+ util.AddNetworkString("OpenLootventory")
+ util.AddNetworkString("DemandLootventoryUpdate")
+
+ function OpenLootventory(pl,items,entity)
+ if (!IsValid(pl) or !items) then return end
+
+ net.Start("OpenLootventory")
+ net.WriteEntity(entity)
+ for k,v in pairs(items) do
+ if (v.Name and v.Quantity) then
+ net.WriteBit(true)
+ net.WriteString(v.Name)
+ net.WriteUInt(v.Quantity,32)
+ end
+ end
+ net.Send(pl)
+ end
+
+ net.Receive("DemandLootventoryUpdate",function(siz,pl)
+ local ent = net.ReadEntity()
+
+ if (!IsValid(ent) or !ent.GetItems) then return end
+ if (pl:GetPos():Distance(ent:GetPos()) > 200) then return end
+
+ OpenLootventory(pl,ent:GetItems(),ent)
+ end)
+else
+ net.Receive("OpenLootventory",function()
+ local dat = {}
+ local ent = net.ReadEntity()
+
+ while (util.tobool(net.ReadBit())) do
+ local Ab = GetItemByName(net.ReadString())
+ local Co = net.ReadUInt(32)
+
+ if (Ab and Co > 0) then insert(dat,{Name = Ab.Name, Quantity = Co}) end
+ end
+
+ MakeLootventory(dat,ent)
+ GAMEMODE:OnSpawnMenuOpen()
+ end)
+
+ function DemandLootventoryUpdate(entity)
+ if (!IsLootventoryOpen()) then return end
+
+ net.Start("DemandLootventoryUpdate")
+ net.WriteEntity(entity)
+ net.SendToServer()
+ end
+end \ No newline at end of file