private static void HandleStartMultiPersonRide(GameSession session, PacketReader packet)
        {
            int otherPlayerObjectId = packet.ReadInt();

            if (!session.FieldManager.State.Players.TryGetValue(otherPlayerObjectId, out IFieldObject <Player> otherPlayer) || otherPlayer.Value.Mount == null)
            {
                return;
            }

            bool isFriend      = BuddyManager.IsFriend(session.Player, otherPlayer.Value);
            bool isGuildMember = session.Player != null && otherPlayer.Value.Guild != null && session.Player.Guild.Id == otherPlayer.Value.Guild.Id;
            bool isPartyMember = session.Player.Party == otherPlayer.Value.Party;

            if (!isFriend &&
                !isGuildMember &&
                !isPartyMember)
            {
                return;
            }

            int index = Array.FindIndex(otherPlayer.Value.Mount.Value.Players, 0, otherPlayer.Value.Mount.Value.Players.Length, x => x == null);

            otherPlayer.Value.Mount.Value.Players[index] = session.FieldPlayer;
            session.Player.Mount = otherPlayer.Value.Mount;
            session.FieldManager.BroadcastPacket(MountPacket.StartTwoPersonRide(otherPlayerObjectId, session.FieldPlayer.ObjectId, (byte)(index - 1)));
        }
Beispiel #2
0
        private static void HandleSendRequest(GameSession session, PacketReader packet)
        {
            string otherPlayerName = packet.ReadUnicodeString();
            string message         = packet.ReadUnicodeString();

            Player targetPlayer = GameServer.Storage.GetPlayerByName(otherPlayerName);

            if (targetPlayer == null) // TODO: Change this so it checks if player exists
            {
                return;
            }

            if (targetPlayer == session.Player)
            {
                session.Send(BuddyPacket.Notice((byte)BuddyNotice.CannotAddSelf, targetPlayer.Name));
                return;
            }

            if ((byte)session.Player.BuddyList.Count(b => !b.Blocked) >= 100)  // 100 is friend limit
            {
                session.Send(BuddyPacket.Notice((byte)BuddyNotice.CannotAddFriends, targetPlayer.Name));
            }

            if ((byte)targetPlayer.BuddyList.Count(b => !b.Blocked) >= 100)
            {
                session.Send(BuddyPacket.Notice((byte)BuddyNotice.OtherUserCannotAddFriends, targetPlayer.Name));
                return;
            }

            if (BuddyManager.IsBlocked(session.Player, targetPlayer))
            {
                session.Send(BuddyPacket.Notice((byte)BuddyNotice.DeclinedRequest, targetPlayer.Name));
                return;
            }

            if (BuddyManager.IsFriend(session.Player, targetPlayer))
            {
                session.Send(BuddyPacket.Notice((byte)BuddyNotice.AlreadyFriends, targetPlayer.Name));
            }

            long  id                = GuidGenerator.Long();
            Buddy buddy             = new Buddy(id, targetPlayer, session.Player, message, true, false);
            Buddy buddyTargetPlayer = new Buddy(id, session.Player, targetPlayer, message, false, true);

            GameServer.BuddyManager.AddBuddy(buddy);
            GameServer.BuddyManager.AddBuddy(buddyTargetPlayer);

            session.Send(BuddyPacket.Notice((byte)BuddyNotice.RequestSent, targetPlayer.Name));

            if (targetPlayer != null) // TODO: Change this to only send if player exists
            {
                session.Send(BuddyPacket.AddToList(buddy));
            }

            if (targetPlayer != null) // TODO: Change to send if online
            {
                targetPlayer.Session.Send(BuddyPacket.AddToList(buddyTargetPlayer));
                return;
            }
        }
        public MainWindow()
        {
            this.messenger = App.Messenger;
            this.buddyManager = ComponentManager.GetBuddyManager();
            this._messageCenter = App.Messenger.MessageCenter;

            InitializeComponent();

            this.messenger.LoginCompleted += new EventHandler<LoginEventArgs>(this.OnLogin);
            this.messenger.ConnectionStatusChanged += new EventHandler<ConnectionStatusChangeEventArgs>(this.messenger_ConnectionStatusChanged);
            this.messagemonitor = InstanceAnswerPro.Core.ComponentManager.GetMessageMonitor();
            Buddy.BuddyPropertyChanged += new PropertyChangedEventHandler(this.Buddy_BuddyPropertyChanged);
        }
        public MainWindow()
        {
            this.messenger      = App.Messenger;
            this.buddyManager   = ComponentManager.GetBuddyManager();
            this._messageCenter = App.Messenger.MessageCenter;

            InitializeComponent();

            this.messenger.LoginCompleted          += new EventHandler <LoginEventArgs>(this.OnLogin);
            this.messenger.ConnectionStatusChanged += new EventHandler <ConnectionStatusChangeEventArgs>(this.messenger_ConnectionStatusChanged);
            this.messagemonitor         = InstanceAnswerPro.Core.ComponentManager.GetMessageMonitor();
            Buddy.BuddyPropertyChanged += new PropertyChangedEventHandler(this.Buddy_BuddyPropertyChanged);
        }
Beispiel #5
0
        private static void HandleWhisperChat(GameSession session, string recipient, string message)
        {
            Player recipientPlayer = GameServer.Storage.GetPlayerByName(recipient);

            if (recipientPlayer == null)
            {
                session.Send(ChatPacket.Error(session.Player, SystemNotice.UnableToWhisper, ChatType.WhisperFail));
                return;
            }

            if (BuddyManager.IsBlocked(session.Player, recipientPlayer))
            {
                session.Send(ChatPacket.Error(session.Player, SystemNotice.UnableToWhisper, ChatType.WhisperFail));
                return;
            }

            recipientPlayer.Session.Send(ChatPacket.Send(session.Player, message, ChatType.WhisperFrom));
            session.Send(ChatPacket.Send(recipientPlayer, message, ChatType.WhisperTo));
        }
Beispiel #6
0
    private static void HandleSendRequest(GameSession session, PacketReader packet)
    {
        string otherPlayerName = packet.ReadUnicodeString();
        string message         = packet.ReadUnicodeString();

        if (!DatabaseManager.Characters.NameExists(otherPlayerName))
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.CharacterNotFound, otherPlayerName));
            return;
        }

        Player targetPlayer = GameServer.PlayerManager.GetPlayerByName(otherPlayerName);

        if (targetPlayer == null) // If the player is not online, get player data from database
        {
            targetPlayer           = DatabaseManager.Characters.FindPartialPlayerByName(otherPlayerName);
            targetPlayer.BuddyList = GameServer.BuddyManager.GetBuddies(targetPlayer.CharacterId);
        }

        if (targetPlayer.CharacterId == session.Player.CharacterId)
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.CannotAddSelf, targetPlayer.Name));
            return;
        }

        if (session.Player.BuddyList.Count(b => !b.Blocked) >= 100) // 100 is friend limit
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.CannotAddFriends, targetPlayer.Name));
            return;
        }

        if (targetPlayer.BuddyList.Count(b => !b.Blocked) >= 100)
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.OtherUserCannotAddFriends, targetPlayer.Name));
            return;
        }

        if (BuddyManager.IsBlocked(session.Player, targetPlayer))
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.DeclinedRequest, targetPlayer.Name));
            return;
        }

        if (BuddyManager.IsFriend(session.Player, targetPlayer))
        {
            session.Send(BuddyPacket.Notice((byte)BuddyNotice.AlreadyFriends, targetPlayer.Name));
            return;
        }

        long  id                = GuidGenerator.Long();
        Buddy buddy             = new(id, session.Player.CharacterId, targetPlayer, message, true, false);
        Buddy buddyTargetPlayer = new(id, targetPlayer.CharacterId, session.Player, message, false, true);

        GameServer.BuddyManager.AddBuddy(buddy);
        GameServer.BuddyManager.AddBuddy(buddyTargetPlayer);
        session.Player.BuddyList.Add(buddy);

        session.Send(BuddyPacket.Notice((byte)BuddyNotice.RequestSent, targetPlayer.Name));
        session.Send(BuddyPacket.AddToList(buddy));

        if (targetPlayer.Session != null && targetPlayer.Session.Connected())
        {
            targetPlayer.BuddyList.Add(buddyTargetPlayer);
            targetPlayer.Session.Send(BuddyPacket.AddToList(buddyTargetPlayer));
        }
    }