Garry's Mod Wiki

Revision Difference

Entity:NetworkVar#529049

<function name="NetworkVar" parent="Entity" type="classfunc"> <description> Creates a network variable on the entity and adds Set/Get functions for it. This function should only be called in <page>ENTITY:SetupDataTables</page>. See <page>Entity:NetworkVarNotify</page> for a function to hook NetworkVar changes. <warning>Make sure to not call the SetDT* and your custom set methods on the client realm unless you know exactly what you are doing.</warning> <warning>Entity NetworkVars may briefly be incorrect due to how PVS networking and entity indexes work.</warning>⤶ </description> <realm>Shared</realm> <args> <arg name="type" type="string">Supported choices: * `String` * `Bool` * `Float` * `Int` (32-bit signed integer) * `Vector` * `Angle` * `Entity`</arg> <arg name="slot" type="number">Each network variable has to have a unique slot. The slot is per type - so you can have an int in slot `0`, a bool in slot `0` and a float in slot `0` etc. You can't have two ints in slot `0`, instead you would do a int in slot `0` and another int in slot `1`. The max slots right now are `32` - so you should pick a number between `0` and `31`. An exception to this is strings which has a max slots of `4`.</arg> <arg name="name" type="string">The name will affect how you access it. If you call it `Foo` you would add two new functions on your entity - `SetFoo()` and `GetFoo()`. So be careful that what you call it won't collide with any existing functions (don't call it `Pos` for example).</arg> <arg name="extended" type="table" default="nil">A table of extended information. `KeyName` * Allows the NetworkVar to be set using <page>Entity:SetKeyValue</page>. This is useful if you're making an entity that you want to be loaded in a map. The sky entity uses this. `Edit` * The edit key lets you mark this variable as editable. See <page>Editable Entities</page> for more information. </arg> </args> </function> <example> <description>Setting up data tables</description> <code> function ENT:SetupDataTables() self:NetworkVar( "Float", 0, "Amount" ) self:NetworkVar( "Vector", 0, "StartPos" ) self:NetworkVar( "Vector", 1, "EndPos" ) end -- Code... -- Setting values on the entity self:SetStartPos( Vector( 1, 0, 0 ) ) self:SetAmount( 100 ) -- Code... -- Getting values local startpos = self:GetStartPos() </code> </example>