Garry's Mod Wiki

Entity:NetworkVar

  Entity:NetworkVar( string type, number slot, string name, table extended = nil )

Description

Creates a network variable on the entity and adds Set/Get functions for it. This function should only be called in ENTITY:SetupDataTables.

See Entity:NetworkVarNotify for a function to hook NetworkVar changes.

Entity NetworkVars are influenced by the return value of ENTITY:UpdateTransmitState.
So if you use the PVS(default), then the NetworkVars can be different for each client.
Make sure to not call the SetDT* and your custom set methods on the client realm unless you know exactly what you are doing.

Combining this function with util.TableToJSON can also provide a way to network tables as serialized strings.

Arguments

1 string type
Supported choices:
  • String (up to 511 characters)
  • Bool
  • Float
  • Int (32-bit signed integer)
  • Vector
  • Angle
  • Entity
2 number slot
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.

This can be omitted entirely (arguments will shift) and it will use the next available slot.

3 string name
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).
4 table extended = nil
A table of extended information.

KeyName

  • Allows the NetworkVar to be set using Entity:SetKeyValue. 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 Editable Entities for more information.

Example

Setting up data tables

function ENT:SetupDataTables() self:NetworkVar( "Float", 0, "Amount" ) self:NetworkVar( "Vector", "StartPos" ) -- note arguments shift if slot is omitted self:NetworkVar( "Vector", "EndPos" ) end -- Code... -- Setting values on the entity self:SetStartPos( Vector( 1, 0, 0 ) ) self:SetAmount( 100 ) -- Code... -- Getting values local startpos = self:GetStartPos()