Exemple #1
0
        public void OnPlayerBehavior(IWorldClient client, PlayerBehaviorPacket packet)
        {
            if (client.Player.IsDead)
            {
                _logger.LogError($"Player {client.Player.Object.Name} is dead, he cannot move with keyboard.");
                return;
            }

            // TODO: check if player is flying

            client.Player.Object.Position            = packet.BeginPosition + packet.DestinationPosition;
            client.Player.Object.Angle               = packet.Angle;
            client.Player.Object.MovingFlags         = (ObjectState)packet.State;
            client.Player.Object.MotionFlags         = (StateFlags)packet.StateFlag;
            client.Player.Moves.IsMovingWithKeyboard = client.Player.Object.MovingFlags.HasFlag(ObjectState.OBJSTA_FMOVE) ||
                                                       client.Player.Object.MovingFlags.HasFlag(ObjectState.OBJSTA_BMOVE);
            client.Player.Moves.DestinationPosition = packet.BeginPosition + packet.DestinationPosition;

            _moverPacketFactory.SendMoverBehavior(client.Player,
                                                  packet.BeginPosition,
                                                  packet.DestinationPosition,
                                                  client.Player.Object.Angle,
                                                  (uint)client.Player.Object.MovingFlags,
                                                  (uint)client.Player.Object.MotionFlags,
                                                  packet.Motion,
                                                  packet.MotionEx,
                                                  packet.Loop,
                                                  packet.MotionOption,
                                                  packet.TickCount);
        }