Changing a value on your machine doesn't send it anywhere.

The problem
Only you know.
public bool IsSliding { get; set; } protected override void OnUpdate(){ if ( IsProxy ) return; IsSliding = Input.Down( "duck" );}
IsSliding becomes true on your machine. Everyone else's copy of you still says false.
The fix
Let the network carry it.
Mark a property with [Sync] and s&box sends the owner's value to every other player.
owner sets it→[Sync]→everyone sees it
The fix in code
One attribute.
[Sync] public bool IsSliding { get; set; } protected override void OnUpdate(){ // everyone plays the animation from the synced value PlaySlideAnimation( IsSliding ); if ( IsProxy ) return; IsSliding = Input.Down( "duck" );}
The owner writes it. Everyone, including proxies, reads it to play the animation.
Watch out
Only the owner should write it.
Sync flows from the owner outward. A proxy setting the value won't spread it.
- Owner
- writes [Sync] values
- Proxies
- read only
- Write behind
- if ( IsProxy ) return;
The rule
Others need to see it? [Sync] it.
- Share a value
- [Sync]
- Who writes
- the owner
- Who reads
- everyone