コード例 #1
0
        private ErrorCode OnMsgToGstoCsfromGcAskChangeNickName(CSGSInfo csgsInfo, uint gcNetID, byte[] data, int offset, int size)
        {
            CSUser user = this.CheckAndGetUserByNetInfo(csgsInfo, gcNetID);

            GCToCS.ChangeNickName pMsg = new GCToCS.ChangeNickName();
            pMsg.MergeFrom(data, offset, size);
            ErrorCode errorCode = ErrorCode.Success;

            do
            {
                if (pMsg.Newnickname.Length < 3)
                {
                    errorCode = ErrorCode.NickNameTooShort;
                }

                if (this.allNickNameSet.Contains(pMsg.Newnickname))
                {
                    errorCode = ErrorCode.NickNameCollision;
                    break;
                }
                if (!user.CheckIfEnoughPay(PayType.Diamond, 20))
                {
                    errorCode = ErrorCode.DiamondNotEnough;
                    break;
                }
            } while (false);

            if (errorCode != ErrorCode.Success)
            {
                return(user.PostMsgToGCAskRetMsg(( int )GCToCS.MsgNum.EMsgToGstoCsfromGcAskChangeNickName, errorCode));
            }

            user.userDbData.ChangeUserDbData(UserDBDataType.Diamond, ( long )-20);
            user.PostMsgToGCNotifyNewNickname(user.guid, pMsg.Newnickname);

            this.ChangeUserNickName(user, pMsg.Newnickname);

            foreach (KeyValuePair <ulong, UserRelationshipInfo> kv in user.userDbData.friendListMap)
            {
                CSUser piUser = this.GetUser(kv.Value.guididx);
                if (null != piUser && piUser.userPlayingStatus == UserPlayingStatus.Playing)
                {
                    piUser.SynUserSNSList(user.guid, RelationShip.Friends);
                }
            }

            user.SynCurDiamond();
            //todo
            //CSSGameLogMgr::GetInstance().AddGameLog( eLog_ChangeUseName, user.GetGUID(), user.GetUserDBData().sPODUsrDBData.un8UserLv, user.GetUserDBData().sPODUsrDBData.un16VipLv );
            return(ErrorCode.Success);
        }