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