Exemplo n.º 1
0
        // Called first time when starting a new session
        public void InitPlayer(Player player)
        {
            Debug.Assert(FieldPlayer == null, "Not allowed to reinitialize player.");
            FieldManager = FieldManagerFactory.GetManager(player);
            FieldPlayer  = FieldManager.RequestFieldObject(player);
            GameServer.Storage.AddPlayer(player);
            GameServer.BuddyManager.SetFriendSessions(player);

            Party party = GameServer.PartyManager.GetPartyByMember(player.CharacterId);

            if (party != null)
            {
                party.BroadcastPacketParty(PartyPacket.LoginNotice(player), this);
            }

            player.BuddyList.ForEach(buddy =>
            {
                if (buddy.Friend?.Session?.Connected() ?? false)
                {
                    Buddy myBuddy = GameServer.BuddyManager.GetBuddyByPlayerAndId(buddy.Friend, buddy.SharedId);
                    buddy.Friend.Session.Send(BuddyPacket.LoginLogoutNotification(myBuddy));
                    buddy.Friend.Session.Send(BuddyPacket.UpdateBuddy(myBuddy));
                }
            });
        }
Exemplo n.º 2
0
        public override void EndSession()
        {
            Player.Session = null;
            GameServer.BuddyManager.SetFriendSessions(Player);
            FieldManager.RemovePlayer(this, FieldPlayer);
            GameServer.Storage.RemovePlayer(FieldPlayer.Value);
            // Should we Join the thread to wait for it to complete?

            if (Player.Party != null)
            {
                Player.Party.CheckOffineParty(Player);
            }

            Player.BuddyList.ForEach(buddy =>
            {
                if (buddy.Friend?.Session?.Connected() ?? false)
                {
                    Buddy myBuddy = GameServer.BuddyManager.GetBuddyByPlayerAndId(buddy.Friend, buddy.SharedId);
                    buddy.Friend.Session.Send(BuddyPacket.LoginLogoutNotification(myBuddy));
                    buddy.Friend.Session.Send(BuddyPacket.UpdateBuddy(myBuddy));
                }
            });
        }
Exemplo n.º 3
0
    private static void HandleAccept(GameSession session, PacketReader packet)
    {
        long buddyId = packet.ReadLong();

        Buddy buddy       = GameServer.BuddyManager.GetBuddyByPlayerAndId(session.Player, buddyId);
        Buddy buddyFriend = GameServer.BuddyManager.GetBuddyByPlayerAndId(buddy.Friend, buddyId);

        buddy.IsFriendRequest = false;
        buddyFriend.IsPending = false;

        session.Send(BuddyPacket.AcceptRequest(buddy));
        session.Send(BuddyPacket.UpdateBuddy(buddy));
        session.Send(BuddyPacket.LoginLogoutNotification(buddy));
        DatabaseManager.Buddies.Update(buddy);
        DatabaseManager.Buddies.Update(buddyFriend);

        Player otherPlayer = GameServer.PlayerManager.GetPlayerByName(buddy.Friend.Name);

        if (otherPlayer != null)
        {
            otherPlayer.Session.Send(BuddyPacket.UpdateBuddy(buddyFriend));
            otherPlayer.Session.Send(BuddyPacket.AcceptNotification(buddyFriend));
        }
    }