public void ChangeAuthority(FauthPacket packet) { SpinWait.SpinUntil(() => !ServerManager.Instance.inFamilyRefreshMode); if (Session.Character.Family == null || Session.Character.FamilyCharacter.Authority != FamilyAuthority.Head) { return; } Session.Character.Family.InsertFamilyLog(FamilyLogType.RightChange, Session.Character.Name, "", "", "", 0, 0, 0, 0, 0, (byte)packet.MemberType, (int)packet.AuthorityId + 1, packet.Value); switch (packet.MemberType) { case FamilyAuthority.Manager: switch (packet.AuthorityId) { case 0: Session.Character.Family.ManagerCanInvite = packet.Value == 1 ? true : false; break; case 1: Session.Character.Family.ManagerCanNotice = packet.Value == 1 ? true : false; break; case 2: Session.Character.Family.ManagerCanShout = packet.Value == 1 ? true : false; break; case 3: Session.Character.Family.ManagerCanGetHistory = packet.Value == 1 ? true : false; break; case 4: Session.Character.Family.ManagerAuthorityType = (FamilyAuthorityType)packet.Value; break; } break; case FamilyAuthority.Member: switch (packet.AuthorityId) { case 0: Session.Character.Family.MemberCanGetHistory = packet.Value == 1 ? true : false; break; case 1: Session.Character.Family.MemberAuthorityType = (FamilyAuthorityType)packet.Value; break; } break; } FamilyDTO fam = Session.Character.Family; DAOFactory.FamilyDAO.InsertOrUpdate(ref fam); ServerManager.Instance.FamilyRefresh(Session.Character.Family.FamilyId); System.Reactive.Linq.Observable.Timer(TimeSpan.FromMilliseconds(100)) .Subscribe( o => { Session.SendPacket(Session.Character.GenerateGInfo()); }); }
/// <summary> /// fauth packet /// </summary> /// <param name="packet"></param> public void ChangeAuthority(FauthPacket packet) { SpinWait.SpinUntil(() => !ServerManager.Instance.inFamilyRefreshMode); if (Session.Character.Family == null || Session.Character.FamilyCharacter.Authority != FamilyAuthority.Head) { return; } Session.Character.Family.InsertFamilyLog(FamilyLogType.RightChanged, Session.Character.Name, right: (byte)packet.MemberType, righttype: packet.AuthorityId + 1, rightvalue: packet.Value); switch (packet.MemberType) { case FamilyAuthority.Manager: switch (packet.AuthorityId) { case 0: Session.Character.Family.ManagerCanInvite = packet.Value == 1; break; case 1: Session.Character.Family.ManagerCanNotice = packet.Value == 1; break; case 2: Session.Character.Family.ManagerCanShout = packet.Value == 1; break; case 3: Session.Character.Family.ManagerCanGetHistory = packet.Value == 1; break; case 4: Session.Character.Family.ManagerAuthorityType = (FamilyAuthorityType)packet.Value; break; } break; case FamilyAuthority.Member: switch (packet.AuthorityId) { case 0: Session.Character.Family.MemberCanGetHistory = packet.Value == 1; break; case 1: Session.Character.Family.MemberAuthorityType = (FamilyAuthorityType)packet.Value; break; } break; } FamilyDTO fam = Session.Character.Family; DAOFactory.FamilyDAO.InsertOrUpdate(ref fam); ServerManager.Instance.FamilyRefresh(Session.Character.Family.FamilyId); int?sentChannelId2 = ServerCommunicationClient.Instance.HubProxy.Invoke <int?>("SendMessageToCharacter", ServerManager.Instance.ServerGroup, string.Empty, Session.Character.Family.FamilyId.ToString(), "fhis_stc", ServerManager.Instance.ChannelId, MessageType.Family).Result; Session.SendPacket(Session.Character.GenerateGInfo()); }