public void OnPlayerMoved(IWorldClient client, PlayerMovedPacket 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.Follow.Reset(); client.Player.Battle.Reset(); 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.SendMoverMoved(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); }
public static void OnPlayerMoved(WorldClient client, INetPacketStream packet) { var playerMovedPacket = new PlayerMovedPacket(packet); if (client.Player.Health.IsDead) { Logger.LogError($"Player {client.Player.Object.Name} is dead, he cannot move with keyboard."); return; } // Cancel current item usage action and SFX client.Player.NotifySystem <SpecialEffectSystem>(new SpecialEffectBaseMotionEventArgs(StateModeBaseMotion.BASEMOTION_OFF)); client.Player.Delayer.CancelAction(client.Player.Inventory.ItemInUseActionId); client.Player.Inventory.ItemInUseActionId = Guid.Empty; // TODO: Check if player is flying client.Player.Follow.Reset(); client.Player.Battle.Reset(); client.Player.Object.Position = playerMovedPacket.BeginPosition + playerMovedPacket.DestinationPosition; client.Player.Object.Angle = playerMovedPacket.Angle; client.Player.Object.MovingFlags = (ObjectState)playerMovedPacket.State; client.Player.Object.MotionFlags = (StateFlags)playerMovedPacket.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 = playerMovedPacket.BeginPosition + playerMovedPacket.DestinationPosition; WorldPacketFactory.SendMoverMoved(client.Player, playerMovedPacket.BeginPosition, playerMovedPacket.DestinationPosition, client.Player.Object.Angle, (uint)client.Player.Object.MovingFlags, (uint)client.Player.Object.MotionFlags, playerMovedPacket.Motion, playerMovedPacket.MotionEx, playerMovedPacket.Loop, playerMovedPacket.MotionOption, playerMovedPacket.TickCount); }