Garry's Mod Wiki

Revision Difference

net.Receive#561310

<function name="Receive" parent="net" type="libraryfunc"> <description> Adds a net message handler. Only one receiver can be used to receive the net message. <note>The message-name is converted to lower-case so the message-names "`BigBlue`" and "`bigblue`" would be equal.</note>⤶ <warning>You **must** put this function **outside** of any other function or hook for it to work properly unless you know what you are doing!⤶ ⤶ You can use the `net.Read*` functions within the message handler callback.⤶ <note>The message-name is converted to lower-case so the message-names "`BigBlue`" and "`bigblue`" would be equal.</note>⤶ <warning>You **should** put this function **outside** of any other function or hook for it to work properly unless you know what you are doing!⤶ You **must** read information in the same order as you write it. Each net message has a length limit of **64KB**!</warning> </description> <realm>Shared</realm> <file line="14-L18">lua/includes/extensions/net.lua</file> <args> <arg name="messageName" type="string">The message name to hook to.</arg> <arg name="callback" type="function">The function to be called if the specified message was received. Arguments are: * <page>number</page> len - Length of the message, in bits.<br/> * <page>Player</page> ply - The player that sent the message, works **only** server-side.</arg> </args> </function> <example> <description>A simple callback.</description> <description>An example with receiving message clientside, when sent from the server.</description> <code> net.Receive( "my_message", function( len, ply )⤶ if ( IsValid( ply ) and ply:IsPlayer() ) then⤶ print( "Message from " .. ply:Nick() .. " received. Its length is " .. len .. "." ) else⤶ if ( SERVER ) then⤶ util.AddNetworkString( "message_to_clients" )⤶ ⤶ concommand.Add( "send_message", function( ply, cmd, args ) net.Start( "message_to_clients" )⤶ net.WriteString( args[ 1 ] or "my very cool message, yeah!" )⤶ net.WriteUInt( 1337, 16 )⤶ net.Broadcast()⤶ end )⤶ else⤶ net.Receive( "message_to_clients", function( len, ply )⤶ print( "Message from server received. Its length is " .. len .. "." ) end⤶ end ) ⤶ -- We read in the same order as we written⤶ local message = net.ReadString() local myCoolNumber = net.ReadUInt( 16 )⤶ print( "The message was: ", message )⤶ print( "The cool number was: ", myCoolNumber )⤶ end )⤶ end⤶ </code> <output> When run server-side:⤶ ``` Message from John received. Its length is 4.⤶ ] send_message test⤶ Message from server received. Its length is 56.⤶ The message was: test⤶ The cool number was: 1337⤶ ``` And client-side:⤶ </output>⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>An example with receiving message serverside, when sent from a client.</description>⤶ <code>⤶ if ( SERVER ) then⤶ util.AddNetworkString( "message_to_server" )⤶ ⤶ net.Receive( "message_to_server", function( len, ply )⤶ print( "Message from " .. ply:Nick() .. " received. Its length is " .. len .. "." )⤶ ⤶ -- We read in the same order as we written⤶ local message = net.ReadString()⤶ local myCoolNumber = net.ReadUInt( 16 )⤶ print( "The message was: ", message )⤶ print( "The cool number was: ", myCoolNumber )⤶ end )⤶ else⤶ concommand.Add( "send_message_to_server", function( ply, cmd, args )⤶ net.Start( "message_to_server" )⤶ net.WriteString( args[ 1 ] or "my very cool message, yeah!" )⤶ net.WriteUInt( 1337, 16 )⤶ net.SendToServer()⤶ end )⤶ end⤶ </code>⤶ <output>⤶ ``` Message from server received. Its length is 4.⤶ ] send_message_to_server test⤶ Message from Rubat received. Its length is 56.⤶ The message was: test⤶ The cool number was: 1337⤶ ``` </output> </example>