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; } } }
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)); } }