public override void OnSnapshot(int snappingClient) { var id = Player.ClientId; if (!Server.Translate(ref id, snappingClient)) { return; } if (NetworkClipped(snappingClient)) { return; } var character = Server.SnapObject <SnapObj_Character>(id); if (character == null) { return; } if (ReckoningTick == 0 || GameWorld.IsPaused) { character.Tick = 0; Core.Write(character); } else { character.Tick = ReckoningTick; SendCore.Write(character); } if (EmoteStopTick < Server.Tick) { EmoteStopTick = -1; Emote = Emote.NORMAL; } character.Emote = Emote; character.AmmoCount = 0; character.Health = 0; character.Armor = 0; character.Weapon = ActiveWeapon; character.AttackTick = AttackTick; character.Direction = Input.Direction; if (snappingClient == Player.ClientId || snappingClient == -1 || !Config["SvStrictSpectateMode"] && Player.ClientId == GameContext.Players[snappingClient].SpectatorId) { character.Health = Health; character.Armor = Armor; if (Weapons[(int)ActiveWeapon].Ammo > 0) { character.AmmoCount = Weapons[(int)ActiveWeapon].Ammo; } } if (character.Emote == Emote.NORMAL) { if (250 - ((Server.Tick - LastAction) % 250) < 5) { character.Emote = Emote.BLINK; } } if (character.HookedPlayer != -1) { if (!Server.Translate(ref character.HookedPlayer, snappingClient)) { character.HookedPlayer = -1; } } character.PlayerFlags = Player.PlayerFlags; }
public override void OnSnapshot(int snappingClient) { if (NetworkClipped(snappingClient)) { return; } var character = Server.SnapshotItem <SnapshotCharacter>(Player.ClientId); if (character == null) { return; } if (ReckoningTick == 0 || GameWorld.Paused) { character.Tick = 0; Core.Write(character); } else { character.Tick = ReckoningTick; SendCore.Write(character); } if (EmoteStopTick < Server.Tick) { EmoteStopTick = -1; Emote = Emote.Normal; } character.Emote = Emote; character.AmmoCount = 0; character.Health = 0; character.Armor = 0; character.TriggeredEvents = Core.TriggeredEvents; character.Weapon = ActiveWeapon; character.AttackTick = AttackTick; character.Direction = Input.Direction; if (snappingClient == Player.ClientId || snappingClient == -1 || !Config["SvStrictSpectateMode"] && Player.ClientId == GameContext.Players[snappingClient].SpectatorId) { character.Health = Health; character.Armor = Armor; if (ActiveWeapon == Weapon.Ninja) { character.AmmoCount = NinjaStat.ActivationTick + ServerData.Weapons.Ninja.Duration * Server.TickSpeed / 1000; } else if (Weapons[(int)ActiveWeapon].Ammo > 0) { character.AmmoCount = Weapons[(int)ActiveWeapon].Ammo; } } if (character.Emote == Emote.Normal) { if (250 - ((Server.Tick - LastAction) % 250) < 5) { character.Emote = Emote.Blink; } } }