Revision Difference
ClientData_ConVars#560519
<cat>Code.Misc</cat>⤶
<title>ClientData ConVars</title>⤶
⤶
A client data convar is like a replicated convar, except instead of being replicated from the server to the clients, it's replicated from each client to the server.⤶
⤶
When the value changes on the client it is sent to the server.⤶
⤶
These values are accessible on the server for each client using [Client.GetClientData( "var_name" )](https://asset.party/api/Sandbox.IClient.GetClientData(string,string)).⤶
⤶
# Defining⤶
⤶
```⤶
[ConVar.ClientData( "tool_current" )]⤶
public static string UserToolCurrent { get; set; } = "boxgun"⤶
```⤶
⤶
⤶
# Accessing⤶
⤶
```⤶
// On the client you can access it directly⤶
currentTool = UserToolCurrent;⤶
⤶
// Or via the console system⤶
currentTool = ConsoleSystem.GetValue( "tool_current" );⤶
⤶
// On the server you need to access via a Client object⤶
public override void Simulate( IClient owner )⤶
{⤶
currentTool = owner.GetUserString( "tool_current" );⤶
}⤶
⤶
```⤶
⤶
# Pawn Member⤶
⤶
You can also store your convar as a member on an Entity (ie - not a static)⤶
⤶
```⤶
[ConVar.ClientData( "tool_current" )]⤶
public string UserToolCurrent { get; set; } = "boxgun"⤶
```⤶
⤶
This works pretty much the same, except on both the server and client it can be accessed directly.⤶
⤶
```⤶
// Will always access the convar value on the client, but on the server will access⤶
// it via the entity's GetClientOwner(). If the entity has no client owner, will be null.⤶
currentTool = UserToolCurrent;⤶
```⤶