一、先明白这个报错不是名字真重复
单机环境没别的玩家,换十个名字都提示“角色名已经存在”+错误代码2,基本不是取名问题,而是服务端写不进角色数据。常见根因就四类:
•本地角色库/索引缓存有脏数据(空记录、乱码、重复ID)
•DBServer关了“允许建立新人物”或开了名字过滤
•登录器缓存了旧数据
•数据库文件没写入权限、路径带中文、引擎和登录器不配套
按下面顺序查,不用重装系统,也不用重新解压整个端。
二、第一步:关干净再动手
先关掉这些东西,不然数据库文件被占用,删了也存不回:
•游戏客户端
•单机登录器
•M2Server
•DBServer
•LoginGate、SelGate、RunGate
•控制器GameCenter
任务管理器再扫一遍,凡带mir、gate、m2、dbserver的进程全结束。
三、第二步:清角色库残留(最常见原因)
老引擎走DBC2000/BDE,位置一般在:
Mir200\Mud2\DB
1.打开DBC2000或BDEAdministrator,加载HeroDB数据源,确认指向Mir200\Mud2\DB。
2.打开角色相关表,不同端表名可能是:
•RoleDB
•CharDB
•HumanDB
•UserDB
3.全选记录,清空。单机测试环境没重要数据,直接清。
4.特别注意删掉:
•角色名为空的行
•名字是乱码的行
•ID重复的行
5.Ctrl+S保存,关掉DBC2000。
如果表打开就报错、存不回,说明表文件坏了,从原压缩包把Mud2\DB下对应文件覆盖回来。
四、第三步:删索引和缓存文件(关键)
只清表不够,索引文件还记着旧名字,引擎照样误判。
进这两个目录:
Mir200\Mud2\Logsrv\IdDB\
Mir200\Mud2\DBSrv200\FDB\
把里面后缀是.db、.idx的文件全删,只留空文件夹。
注意:别删目录下的.ini配置文件,只删数据索引文件。
这两个目录存的是账号ID映射和角色关联缓存,单机测试残留删了没影响,装备、地图、脚本都不会丢。
删完回到服务端根目录,再清一次:
Mir200\Log\下的角色相关日志可留可删,不影响创建,但建议把Character或Human相关缓存目录里.dat测试档案也清掉。
五、第四步:开DBServer建号权限
打开DBServer目录里的DBServer.exe(不是M2,是数据库网关)。
点顶部菜单:选项→基本设置
核对这几项:
•允许建立新人物:必须勾上
•允许删除人物:勾上
•允许特殊字符创建人物:测试阶段可以勾上
•禁止建立包含数字的人物名:取消勾
•禁止建立全英文人物名:取消勾
•“禁止建立包含以下字符的人物名称”文本框:把里面内容全清空
很多版本默认塞了一堆屏蔽词,比如GM、管理、admin、测、VIP,你取啥都命中,表现就是“名字已存在”。
改完点确定,别急着起服务,先继续清缓存。
六、第五步:清登录器侧缓存
数据库清了但登录器还读旧缓存,也会继续报。
进客户端根目录(和mir.exe同级):
•删LoginCache文件夹(没有就跳过)
•删mir2.dat
•删mir2.ini
•删Config.ini(登录器配置缓存,下回会自动生成)
然后用服务端自带的登录器配置器,点“清除缓存”,重新生成登录器exe,再拷回客户端根目录。
别用网上下的万能登录器,GOM端配GOM配置器,GEE配GEE,HERO配HERO,混用会建不了角色。
七、第六步:修文件权限和路径
1.服务端目录纯英文
错误:D:\我的游戏\MirServer
正确:D:\MirServer
2.取消只读
右键MirServer→属性→去掉“只读”→应用到子文件夹
3.给写权限
右键Mud2文件夹→安全→Users给“完全控制”
4.管理员运行
GameCenter.exe、DBServer.exe、M2Server.exe右键属性→兼容性→勾“以管理员身份运行”
八、第七步:角色名先按规则试
清完缓存第一次建号,别搞花活,用简单名:
•测试甲
•战士01
•道士二
•法爷
规则:
•2~3个汉字最稳
•别带空格、@、#、★、_
•别纯数字(123456容易触发过滤)
•别纯英文(abc也别试)
•长度2~8个字
能建出来,再慢慢换自己想要的名字;还报就回头查过滤脚本。
九、第八步:查角色名过滤脚本
有些版本在脚本层又加了一层限制。
进Mir200\Envir,搜这几个文件:
•QManage.txt
•FilterScript.txt
•RoleNameFilter.txt
用Notepad++打开(编码ANSI),搜关键词:
•角色名
•CreateChar
•禁止
•Filter
看到类似“禁止纯数字”“禁止特殊符号”“禁止前缀”的代码段,测试阶段先整段加;注释掉,或者把过滤词列表清空。
保存,重启M2。
十、第九步:按顺序起服务再测
清完数据、改完配置,按这个顺序起:
1.DBServer(等“数据库服务器启动成功”)
2.LoginSrv
3.LoginGate
4.SelGate
5.RunGate
6.M2Server(等刷完地图/怪物/脚本无红字)
全部起来后再开登录器,建新账号(随便输,单机不真注册),进选人界面点创建角色。
十一、还报错的继续缩范围
1.换名字依然报
索引没删干净,回去把IdDB、FDB再清一次,确认DBServer勾了允许建人。
2.清完能建一次,重启后又报
数据库文件又写回脏数据,查杀软把RoleDB.db隔离了,加白名单。
3.能建角色但进图秒掉线
不是建号问题了,是!addrtable.txt、网关端口、补丁问题,另查。
4.提示“名字含非法字符”但没特殊符号
DBServer还勾着“禁止数字/英文”,或者Envirl过滤脚本没注释干净。
5.点创建没反应不弹错
登录器和引擎不配套,重新用自带配置器生成。
6.M2红字报“无法写入角色数据”
数据库目录没权限,或DBC数据源路径指错,重新配BDEAdministrator。
十二、MySQL/SQLite类新端额外处理
少部分新引擎(GEE新版、部分商业端)不用DBC,走MySQL或SQLite。
MySQL情况:
•Navicat连本地127.0.0.1:3306
•库里找char、role、character表
•清空表数据,别删表结构
•检查自增ID没断到最大值
SQLite情况:
•用SQLiteStudio打开服务端DB目录下的.db文件
•清character/roledata表
•提交事务再关
同时看服务端配置文件里数据库账号密码对不对,连不上也会假报“名字已存在”。
十三、单机防再犯的习惯
•每次大改版本前,先清一次RoleDB和FDB缓存
•测试号统一用“测试1”“测试2”,别用正式名
•DBServer过滤词列表保持空,要加屏蔽词等稳定了再配
•登录器配置器生成完,客户端根目录别留多个旧登录器
•服务端路径永远纯英文,别放桌面“新建文件夹”
•杀软把MirServer整个目录加信任,不然数据库文件天天被删
十四、最小修复速查(懒人版)
关全部进程→清RoleDB/UserDB表→删IdDB/FDB里db和idx→DBServer勾允许建人、清过滤词→清登录器mir2.dat/mir2.ini/LoginCache→管理员起重启→用“测试甲”建号。
这套流程覆盖九成以上的错误代码2,不用改脚本不用动客户端补丁。
十五、几个容易忽略的坑
•DBServer和M2是两个程序,只重启M2不清索引没用,DBServer也要重启
•清数据库别用Excel直接存dbf,BDE头会坏,用DBC2000原生操作
•登录器同目录老Config.ini会记住旧区服参数,必须删
•部分端HumanDB和RoleDB是两张表,只清一张不够
•建号权限在DBServer不在M2,去M2后台找半天没用
•角色名长度限制若在配置里设成最小3最大2,也会假报重名,检查RoleNameMinLen/MaxLen
•用了“防外挂登录器”的,先关掉二次校验再测,部分驱动层会拦创建请求
按上面走,错误代码2基本都能消。真遇到清完所有数据还报,重点怀疑三件事:DBServer过滤规则没清干净、IdDB索引文件没删到、登录器不是配套生成。把这三处再核一遍,建号就通了。改任何配置前,把Mud2\DB、DBSrv200\FDB、Logsrv\IdDB、DBServer.ini各备一份,改崩了直接拖回来。
单机环境没别的玩家,换十个名字都提示“角色名已经存在”+错误代码2,基本不是取名问题,而是服务端写不进角色数据。常见根因就四类:
•本地角色库/索引缓存有脏数据(空记录、乱码、重复ID)
•DBServer关了“允许建立新人物”或开了名字过滤
•登录器缓存了旧数据
•数据库文件没写入权限、路径带中文、引擎和登录器不配套
按下面顺序查,不用重装系统,也不用重新解压整个端。
二、第一步:关干净再动手
先关掉这些东西,不然数据库文件被占用,删了也存不回:
•游戏客户端
•单机登录器
•M2Server
•DBServer
•LoginGate、SelGate、RunGate
•控制器GameCenter
任务管理器再扫一遍,凡带mir、gate、m2、dbserver的进程全结束。
三、第二步:清角色库残留(最常见原因)
老引擎走DBC2000/BDE,位置一般在:
Mir200\Mud2\DB
1.打开DBC2000或BDEAdministrator,加载HeroDB数据源,确认指向Mir200\Mud2\DB。
2.打开角色相关表,不同端表名可能是:
•RoleDB
•CharDB
•HumanDB
•UserDB
3.全选记录,清空。单机测试环境没重要数据,直接清。
4.特别注意删掉:
•角色名为空的行
•名字是乱码的行
•ID重复的行
5.Ctrl+S保存,关掉DBC2000。
如果表打开就报错、存不回,说明表文件坏了,从原压缩包把Mud2\DB下对应文件覆盖回来。
四、第三步:删索引和缓存文件(关键)
只清表不够,索引文件还记着旧名字,引擎照样误判。
进这两个目录:
Mir200\Mud2\Logsrv\IdDB\
Mir200\Mud2\DBSrv200\FDB\
把里面后缀是.db、.idx的文件全删,只留空文件夹。
注意:别删目录下的.ini配置文件,只删数据索引文件。
这两个目录存的是账号ID映射和角色关联缓存,单机测试残留删了没影响,装备、地图、脚本都不会丢。
删完回到服务端根目录,再清一次:
Mir200\Log\下的角色相关日志可留可删,不影响创建,但建议把Character或Human相关缓存目录里.dat测试档案也清掉。
五、第四步:开DBServer建号权限
打开DBServer目录里的DBServer.exe(不是M2,是数据库网关)。
点顶部菜单:选项→基本设置
核对这几项:
•允许建立新人物:必须勾上
•允许删除人物:勾上
•允许特殊字符创建人物:测试阶段可以勾上
•禁止建立包含数字的人物名:取消勾
•禁止建立全英文人物名:取消勾
•“禁止建立包含以下字符的人物名称”文本框:把里面内容全清空
很多版本默认塞了一堆屏蔽词,比如GM、管理、admin、测、VIP,你取啥都命中,表现就是“名字已存在”。
改完点确定,别急着起服务,先继续清缓存。
六、第五步:清登录器侧缓存
数据库清了但登录器还读旧缓存,也会继续报。
进客户端根目录(和mir.exe同级):
•删LoginCache文件夹(没有就跳过)
•删mir2.dat
•删mir2.ini
•删Config.ini(登录器配置缓存,下回会自动生成)
然后用服务端自带的登录器配置器,点“清除缓存”,重新生成登录器exe,再拷回客户端根目录。
别用网上下的万能登录器,GOM端配GOM配置器,GEE配GEE,HERO配HERO,混用会建不了角色。
七、第六步:修文件权限和路径
1.服务端目录纯英文
错误:D:\我的游戏\MirServer
正确:D:\MirServer
2.取消只读
右键MirServer→属性→去掉“只读”→应用到子文件夹
3.给写权限
右键Mud2文件夹→安全→Users给“完全控制”
4.管理员运行
GameCenter.exe、DBServer.exe、M2Server.exe右键属性→兼容性→勾“以管理员身份运行”
八、第七步:角色名先按规则试
清完缓存第一次建号,别搞花活,用简单名:
•测试甲
•战士01
•道士二
•法爷
规则:
•2~3个汉字最稳
•别带空格、@、#、★、_
•别纯数字(123456容易触发过滤)
•别纯英文(abc也别试)
•长度2~8个字
能建出来,再慢慢换自己想要的名字;还报就回头查过滤脚本。
九、第八步:查角色名过滤脚本
有些版本在脚本层又加了一层限制。
进Mir200\Envir,搜这几个文件:
•QManage.txt
•FilterScript.txt
•RoleNameFilter.txt
用Notepad++打开(编码ANSI),搜关键词:
•角色名
•CreateChar
•禁止
•Filter
看到类似“禁止纯数字”“禁止特殊符号”“禁止前缀”的代码段,测试阶段先整段加;注释掉,或者把过滤词列表清空。
保存,重启M2。
十、第九步:按顺序起服务再测
清完数据、改完配置,按这个顺序起:
1.DBServer(等“数据库服务器启动成功”)
2.LoginSrv
3.LoginGate
4.SelGate
5.RunGate
6.M2Server(等刷完地图/怪物/脚本无红字)
全部起来后再开登录器,建新账号(随便输,单机不真注册),进选人界面点创建角色。
十一、还报错的继续缩范围
1.换名字依然报
索引没删干净,回去把IdDB、FDB再清一次,确认DBServer勾了允许建人。
2.清完能建一次,重启后又报
数据库文件又写回脏数据,查杀软把RoleDB.db隔离了,加白名单。
3.能建角色但进图秒掉线
不是建号问题了,是!addrtable.txt、网关端口、补丁问题,另查。
4.提示“名字含非法字符”但没特殊符号
DBServer还勾着“禁止数字/英文”,或者Envirl过滤脚本没注释干净。
5.点创建没反应不弹错
登录器和引擎不配套,重新用自带配置器生成。
6.M2红字报“无法写入角色数据”
数据库目录没权限,或DBC数据源路径指错,重新配BDEAdministrator。
十二、MySQL/SQLite类新端额外处理
少部分新引擎(GEE新版、部分商业端)不用DBC,走MySQL或SQLite。
MySQL情况:
•Navicat连本地127.0.0.1:3306
•库里找char、role、character表
•清空表数据,别删表结构
•检查自增ID没断到最大值
SQLite情况:
•用SQLiteStudio打开服务端DB目录下的.db文件
•清character/roledata表
•提交事务再关
同时看服务端配置文件里数据库账号密码对不对,连不上也会假报“名字已存在”。
十三、单机防再犯的习惯
•每次大改版本前,先清一次RoleDB和FDB缓存
•测试号统一用“测试1”“测试2”,别用正式名
•DBServer过滤词列表保持空,要加屏蔽词等稳定了再配
•登录器配置器生成完,客户端根目录别留多个旧登录器
•服务端路径永远纯英文,别放桌面“新建文件夹”
•杀软把MirServer整个目录加信任,不然数据库文件天天被删
十四、最小修复速查(懒人版)
关全部进程→清RoleDB/UserDB表→删IdDB/FDB里db和idx→DBServer勾允许建人、清过滤词→清登录器mir2.dat/mir2.ini/LoginCache→管理员起重启→用“测试甲”建号。
这套流程覆盖九成以上的错误代码2,不用改脚本不用动客户端补丁。
十五、几个容易忽略的坑
•DBServer和M2是两个程序,只重启M2不清索引没用,DBServer也要重启
•清数据库别用Excel直接存dbf,BDE头会坏,用DBC2000原生操作
•登录器同目录老Config.ini会记住旧区服参数,必须删
•部分端HumanDB和RoleDB是两张表,只清一张不够
•建号权限在DBServer不在M2,去M2后台找半天没用
•角色名长度限制若在配置里设成最小3最大2,也会假报重名,检查RoleNameMinLen/MaxLen
•用了“防外挂登录器”的,先关掉二次校验再测,部分驱动层会拦创建请求
按上面走,错误代码2基本都能消。真遇到清完所有数据还报,重点怀疑三件事:DBServer过滤规则没清干净、IdDB索引文件没删到、登录器不是配套生成。把这三处再核一遍,建号就通了。改任何配置前,把Mud2\DB、DBSrv200\FDB、Logsrv\IdDB、DBServer.ini各备一份,改崩了直接拖回来。

