一、先明白这个报错不是名字真重复
单机环境没别的玩家,换十个名字都提示“角色名已经存在”+错误代码2,基本不是取名问题,而是服务端写不进角色数据。常见根因就四类:
• 本地角色库/索引缓存有脏数据(空记录、乱码、重复ID)
• DBServer 关了“允许建立新人物”或开了名字过滤
• 登录器缓存了旧数据
• 数据库文件没写入权限、路径带中文、引擎和登录器不配套
按下面顺序查,不用重装系统,也不用重新解压整个端。
二、第一步:关干净再动手
先关掉这些东西,不然数据库文件被占用,删了也存不回:
• 游戏客户端
• 单机登录器
• M2Server
• DBServer
• LoginGate、SelGate、RunGate
• 控制器 GameCenter
任务管理器再扫一遍,凡带 mir、gate、m2、dbserver 的进程全结束。
三、第二步:清角色库残留(最常见原因)
老引擎走 DBC2000 / BDE,位置一般在:
Mir200\Mud2\DB
1. 打开 DBC2000 或 BDE Administrator,加载 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 数据源路径指错,重新配 BDE Administrator。
十二、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完整修复
来源:
作者:
点击:

