Garry's Mod Wiki


  net.WriteTable( table table, boolean sequential = false )


Appends a table to the current net message. Adds 16 extra bits per key/value pair, so you're better off writing each individual key/value as the exact type if possible.

All net messages have a 64kb buffer. This function will not check or error when that buffer is overflown. You might want to consider using util.TableToJSON and util.Compress and send the resulting string in 60kb chunks, doing the opposite on the receiving end.


1 table table
The table to be sent.
If the table contains a nil key the table may not be read correctly.

Not all objects can be sent over the network. Things like functions, IMaterials, etc will cause errors when reading the table from a net message.

Each element is also limited by the constraint of the net.Write<LuaType> function for the element type.

2 boolean sequential = false
Set to true if the input table is sequential. This saves on bandwidth, adding 8 extra bits per key/value pair instead of 16 bits.
To read the table you need to give net.ReadTable the same value!


This is an example of how the keys order may be switched:

if ( CLIENT ) then local tbl = { Type = "Dining", Legs = "4", Material = "Wood" } net.Start( "TableSend" ) net.WriteTable( tbl ) net.SendToServer() PrintTable( tbl ) -- Prints the order client-side. end if ( SERVER ) then net.Receive( "TableSend", function( len, ply ) PrintTable( net.ReadTable() ) -- Prints the order server-side. end ) end
Output: Client:
Type = "Dining" Legs = 4 Material = "Wood"


Legs = 4 Material = "Wood" Type = "Dining"