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,26 +24,23 @@ local function isStackable( item )
end end
function Quantum.Server.Inventory.SetSlotItem( pl, char, pos, itemid, amount ) function Quantum.Server.Inventory.SetSlotItem( pl, char, pos, itemid, amount )
local setItemTbl = {}
if( amount < 1 ) then if( amount < 1 ) then
char.inventory[pos] = nil -- remove the item setItemTbl = nil
else
-- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
return
end
local item = Quantum.Item.Get( itemid ) local item = Quantum.Item.Get( itemid )
if( isEquippable( item ) || !isStackable( item ) ) then if( isEquippable( item ) || !isStackable( item ) ) then
amount = 1 amount = nil
char.inventory[pos] = { itemid } setItemTbl = { itemid }
-- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
else else
amount = amount || 1 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 -- Sent the new data to the client
Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount ) Quantum.Net.Inventory.SetItem( pl, pos, itemid, amount )
end
end end
function Quantum.Server.Inventory.GetSlotItem( char, pos ) return char.inventory[pos] 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 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" ) net.Start( "quantum_item_action" )
WriteIntcode( Quantum.IntCode.SET_ITEM ) -- write the opcode first WriteIntcode( Quantum.IntCode.SET_ITEM ) -- write the opcode first
net.WriteInt( index, calculateNeededBits( Quantum.Inventory.Size ) ) net.WriteInt( index, calculateNeededBits( Quantum.Inventory.Size ) )
net.WriteString( itemid ) net.WriteString( itemid )

Loading…
Cancel
Save