Garry's Mod Wiki

Revision Difference

net.ReadTable#546017

<function name="ReadTable" parent="net" type="libraryfunc"> <description> Reads a table from the received net message. <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).</note> <warning>You **must** read information in same order as you write it.</warning> <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).</note> ⤶ <warning>You **must** read information in same order as you write it.</warning> See <page>net.WriteTable</page> for extra info. 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. ⤶ 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. </description> <realm>Shared</realm> <file line="115">lua/includes/extensions/net.lua</file> <file line="115-L128">lua/includes/extensions/net.lua</file> <rets> <ret name="" type="table">Table recieved 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:⤶ function SendTable() local Table = {} Table.Type = "Dining"⤶ Table.Legs = 4⤶ Table.Material = "Wood"⤶ net.Start("TableSend") net.WriteTable(Table) net.SendToServer() PrintTable(Table) -- Prints the order client side⤶ end⤶ ⤶ --Server:⤶ function GotTable(len, Player) PrintTable(net.ReadTable()) -- Prints the order server side⤶ end⤶ net.Receive("TableSend", GotTable)⤶ -- 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 )⤶ </code> <output> Client: ⤶ ```⤶ ```⤶ Type = "Dining" Legs = 4 Material = "Wood" ``` ⤶ ⤶ Server:⤶ ⤶ ```⤶ ⤶ Server:⤶ ```⤶ Legs = 4 Material = "Wood" Type = "Dining" ``` </output> ⤶ </example> </output> </example>