Example #1
0
        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;
        }
Example #2
0
        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;
                }
            }
        }