当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

热度:
一、先明白这个报错不是名字真重复

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