Optimized dynamic network API

master
AlmTech Software 5 years ago
parent 4532357eec
commit e119203ab9
  1. 23
      gamemode/engine/lib/server/sv_inventory.lua
  2. 1
      gamemode/engine/lib/server/sv_networking.lua

@ -24,27 +24,24 @@ local function isStackable( item )
end
function Quantum.Server.Inventory.SetSlotItem( pl, char, pos, itemid, amount )
local setItemTbl = {}
if( amount < 1 ) then
char.inventory[pos] = nil -- remove the item
-- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
return
end
setItemTbl = nil
else
local item = Quantum.Item.Get( itemid )
if( isEquippable( item ) || !isStackable( item ) ) then
amount = 1
char.inventory[pos] = { itemid }
-- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
amount = nil
setItemTbl = { itemid }
else
amount = amount || 1
char.inventory[pos] = { itemid, amount }
setItemTbl = { itemid, amount }
end
end
char.inventory[pos] = setItemTbl -- remove the item
-- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
end
end
function Quantum.Server.Inventory.GetSlotItem( char, pos ) return char.inventory[pos] end

@ -125,6 +125,7 @@ local function WriteIntcode( intcode ) net.WriteInt( intcode, Quantum.IntCode.BI
function Quantum.Net.Inventory.SetItem( pl, index, itemid, amount ) -- sends a item to the client with amount of it, this is a DYNAMIC networking solution
net.Start( "quantum_item_action" )
WriteIntcode( Quantum.IntCode.SET_ITEM ) -- write the opcode first
net.WriteInt( index, calculateNeededBits( Quantum.Inventory.Size ) )
net.WriteString( itemid )

Loading…
Cancel
Save