コード例 #1
0
        public void UpdatePartyMember(Character c, int dwPartyID, SocialNotiflag nFlag)
        {
            if (this[dwPartyID] is Party party && party.Contains(c.dwId))
            {
                var member = party[c.dwId];
                member.Update();

                switch (nFlag)
                {
                case SocialNotiflag.ChangeChannel:
                    party.Broadcast(CPacket.CPartyMan.UserMigration(party));
                    break;

                case SocialNotiflag.ChangeLevel:
                case SocialNotiflag.ChangeJob:
                    party.Broadcast(CPacket.CPartyMan.ChangeLevelOrJob(member));
                    break;

                case SocialNotiflag.LogOut:
                    party.PlayerDC(c.dwId);
                    break;

                default:
                    party.Broadcast(CPacket.CPartyMan.LoadParty(party));
                    break;
                }
            }
        }
コード例 #2
0
		public void NotifyChangeFriendInfo(SocialNotiflag nFlag)
		{
			switch (nFlag)
			{
				case SocialNotiflag.LogIn:
				case SocialNotiflag.ChangeChannel:
					SyncChannel();
					break;
				case SocialNotiflag.MigrateCashShop:
					break;
				case SocialNotiflag.LogOut:
					nChannel = -1;
					break;
				default: return;
			}

			foreach (var friend in this)
			{
				var charFriend = MasterManager.CharacterPool.Get(friend.dwFriendID, false);

				if (charFriend is null) continue;

				var me = charFriend.Friends[Parent.dwId];

				me.nChannelID = nChannel;
				me.bCashShop = nFlag == SocialNotiflag.MigrateCashShop;
				me.bOnline = nChannel >= 0;

				if (me.bCashShop)
				{
					me.nFlag = 2; // busy
				}
				else if (me.bOnline)
				{
					me.nFlag = 0; // online
				}

				charFriend.SendPacket(NotifyChangeFriendInfoPacket(me));
			}
		}