public ForcedMovementUpdateFlag([NotNull] ForcedMovement movement)
 {
     Movement = movement ?? throw new ArgumentNullException(nameof(movement));
 }
예제 #2
0
        public void Respawn( )
        {
            var p = Test.DataUtils.GetZone(448).POIs["watchtower"];

            CharacterEntity.Position = p;

            var forcedMove = new ForcedMovement {
                Type         = 1,
                Unk1         = 0,
                Position     = p,
                AimDirection = CharacterEntity.AimDirection,
                Velocity     = Vector3.Zero,
                GameTime     = AssignedShard.CurrentTime,
                KeyFrame     = AssignedShard.CurrentShortTime
            };

            NetChans[ChannelType.ReliableGss].SendGSSClass(forcedMove, CharacterEntity.EntityID);

            var respawnMsg = new Respawned {
                LastUpdateTime = AssignedShard.CurrentTime - 2,
                Unk1           = 0x0100
            };

            NetChans[ChannelType.ReliableGss].SendGSSClass(respawnMsg, CharacterEntity.EntityID);

            var upd = new PartialUpdate();

            upd.Add(new MovementView {
                LastUpdateTime = AssignedShard.CurrentTime,
                Position       = CharacterEntity.Position,
                Rotation       = CharacterEntity.Rotation,
                AimDirection   = CharacterEntity.AimDirection,
                Velocity       = CharacterEntity.Velocity,
                State          = (ushort)CharacterEntity.MovementState,
                Unk1           = 0,
                Jets           = (ushort)CharacterEntity.CharData.JumpJetEnergy,
                AirGroundTimer = 0x3a7f,
                JumpTimer      = 0x3cdb,
                Unk2           = 0,
            });

            upd.Add(new CharacterState {
                State          = 3,
                LastUpdateTime = AssignedShard.CurrentTime - 1,
            });

            upd.Add(new Unknown1 {
            });

            upd.Add(new Unknown2 {
                Unk1           = 0x0100,
                Unk2           = 0x0100,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);

            upd = new PartialUpdate();

            upd.Add(new Unknown3 {
                Unk1           = 0,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            upd.Add(new CharacterState {
                State          = 6,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            upd.Add(new CurrentHealth {
                Value = CharacterEntity.CharData.MaxHealth,
            });

            upd.Add(new Unknown4 {
                Unk1 = 0
            });

            upd.Add(new Unknown1 {
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);

            upd = new PartialUpdate();

            upd.Add(new Unknown5 {
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);
        }
예제 #3
0
 public ForcedMovementMessage([NotNull] ForcedMovement movement)
 {
     Movement = movement ?? throw new ArgumentNullException(nameof(movement));
 }