传奇单机建角色提示已存在错误代码2完整修复

来源: 作者: 点击:
一、先明白这个报错不是名字真重复

单机环境没别的玩家,换十个名字都提示“角色名已经存在”+错误代码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 各备一份,改崩了直接拖回来。