Garry's Mod Wiki


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


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.

Make sure to not call the SetDT* and your custom set methods on the client realm unless you know exactly what you are doing.
Entity NetworkVars may briefly be incorrect due to how PVS networking and entity indexes work.


1 string type
Supported choices:

  • String
  • 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.

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.


  • 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.


  • The edit key lets you mark this variable as editable. See Editable Entities for more information.


Setting up data tables

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()