private ChangeNameError HandleChangeName(string uid, int zoneId, int roleId, string newName) { // 如果1.6的功能没开放 if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot6)) { return(ChangeNameError.ServerDenied); } SecPwdState pwdState = SecondPasswordManager.GetSecPwdState(uid); if (pwdState != null && pwdState.NeedVerify) { // 二级密码尚未验证 return(ChangeNameError.NeedVerifySecPwd); } // 非法字符 if (string.IsNullOrEmpty(newName) || NameServerNamager.CheckInvalidCharacters(newName) <= 0) { return(ChangeNameError.InvalidName); } // 检测长度 if (!IsNameLengthOK(newName)) { return(ChangeNameError.NameLengthError); } /* * // 跨服禁止改名 * // 组队情况下禁止改名, 副本开房间等待中禁止改名(队伍或者开房间改名需要广播,禁止掉) * // 非常规地图禁止改名,(副本中可能需要更新各个角色的战斗积分信息,禁止掉) * if (client.ClientSocket.IsKuaFuLogin || client.ClientData.TeamID > 0 || CopyTeamManager.getInstance().FindRoleID2TeamID(client.ClientData.RoleID) > 0 || MapTypes.Normal != Global.GetMapType(client.ClientData.MapCode) || ) ||{ || return ChangeNameError.SelfIsBusy; ||} */ if (NameServerNamager.RegisterNameToNameServer(zoneId, uid, new string[] { newName }, 0, roleId) <= 0) { return(ChangeNameError.NameAlreayUsed); } int canFreeMod = GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.FreeModName) ? 1 : 0; int canZuanShiMod = GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.ZuanShiModName) ? 1 : 0; // db上重点检查名字是否重复 string[] dbRet = Global.ExecuteDBCmd((int)TCPGameServerCmds.CMD_SPR_CHANGE_NAME, string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}", uid, zoneId, roleId, newName, CostZuanShiBase, CostZuanShiMax, canFreeMod, canZuanShiMod), GameManager.LocalServerId); if (dbRet == null || dbRet.Length != 4) { return(ChangeNameError.DBFailed); } int ec = Convert.ToInt32(dbRet[0]); string oldName = dbRet[1]; int costDiamond = Convert.ToInt32(dbRet[2]); int leftDiamond = Convert.ToInt32(dbRet[3]); if (ec == (int)ChangeNameError.Success) { if (costDiamond > 0) { /**/ string msg = "改名 " + oldName + " -> " + newName; Global.AddRoleUserMoneyEvent(roleId, "-", costDiamond, msg); GameManager.logDBCmdMgr.AddDBLogInfo(-1, "钻石", "改名", oldName, newName, "减少", costDiamond, zoneId, uid, leftDiamond, GameManager.LocalServerId); EventLogManager.AddMoneyEvent(GameManager.ServerId, zoneId, uid, roleId, OpTypes.AddOrSub, OpTags.Use, MoneyTypes.YuanBao, -costDiamond, -1, "改名"); } _OnChangeNameSuccess(roleId, oldName, newName); } return((ChangeNameError)ec); }