Garry's Mod Wiki

Revision Difference

net.ReadTable#561314

<function name="ReadTable" parent="net" type="libraryfunc"> <description> Reads a table from the received net message. See <page>net.WriteTable</page> for extra info. <note>Sometimes when sending a table through the net library, the order of the keys may be switched. So be cautious when comparing (See example 1). You may get `net.ReadType: Couldn't read type X` during the execution of the function, the problem is that you are sending objects that **cannot** be serialized/sent over the network. </note> <warning>You **must** read information in same order as you write it.</warning> </description> <realm>Shared</realm> <file line="168-L195">lua/includes/extensions/net.lua</file> <args> <arg name="sequential" type="boolean" default="false" added="2023.09.06">Set to `true` if the input table is sequential. This saves on bandwidth.</arg> </args> <rets> <ret name="" type="table">Table received via the net message, or a blank table if no table could be read.</ret> </rets> </function> <example> <description>This is an example of how the keys order may be switched:</description> <code> -- Client:⤶ local tbl = { Type = "Dining", Legs = "4", Material = "Wood" } ⤶ net.Start( "TableSend" ) net.WriteTable( tbl ) net.SendToServer() ⤶ PrintTable( tbl ) -- Prints the order client-side.⤶ ⤶ -- Server:⤶ net.Receive( "TableSend", function( len, ply )⤶ PrintTable( net.ReadTable() ) -- Prints the order server-side.⤶ end ) 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⤶ </code> <output> Client: ``` Type = "Dining" Legs = 4 Material = "Wood" ``` Server: ``` Legs = 4 Material = "Wood" Type = "Dining" ``` </output> </example>