Пример #1
0
        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());
            });
        }
Пример #2
0
        /// <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());
        }