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

传奇架设完成却无法创建账号的全链路排障手册

热度:
先把整个MirServer目录复制备份一份,再开始动配置。创建账号这事儿看起来简单,实际是登录器、登录网关、账号服务、数据库、M2五层一起协作,任何一层断了都表现为“点了没反应”或者“创建失败”。

一、先看清是哪一种“不能创建”

不同表现对应不同故障点,别一股脑重装:

点注册按钮完全没反应、不弹窗:大概率是登录网关没起,或者端口没通;
注册按钮是灰的、不可点:登录器配置里注册功能没开,或网关没返回允许注册;
提示“账号已存在”但明明没建过:数据库有残留记录,或索引坏了;
能注册但登录说账号不存在:数据没真正写进库,或写进了别的库;
选区后进创建角色界面,输名字报“错误代码2”:DBServer没起或角色库写不进去;
提示账号长度错误、含非法字符:引擎账号规则限制太严。

先对号入座,再往下查。

二、服务端进程是不是真的全起来了

注册请求链路是:登录器→LoginGate(登录网关)→LoginSrv(账号服务)→DBServer(数据库服务)→M2。

打开引擎控制器,确认这几个窗口都在并且没闪退:

DBServer.exe
LoginSrv.exe/LoginGate.exe
SelGate.exe(角色网关)
RunGate.exe(游戏网关)
M2Server.exe

少了任何一个,注册链路都是断的。哪个窗口闪退就看它自己的日志,常见原因是缺VC++运行库、路径带中文、杀毒把exe隔离了。

启动顺序也别乱:先数据库服务,再LoginSrv,再LoginGate,再RunGate/SelGate,最后M2。顺序反了偶尔能起来,但注册功能容易异常。

三、登录网关有没有放开注册

GOM/GEE引擎默认不一定开注册。

打开登录网关程序(GomLoginGate.exe或LoginGate目录下的配置),找“注册设置”或“允许新账号注册”:

把“关闭注册”的勾去掉;
勾上“允许新账号注册”;
单IP注册数限制先调大一点(比如5~10),避免本机反复测试被拦;
保存后重启登录网关。

M2里也要查:M2控制器→选项→游戏参数→账号管理,确认“允许新账号注册”是开的,CanCreateUser参数值是1,不是0。

四、IP和端口必须对得上

这是新手踩坑最多的地方。

单机架设,三处IP全部填127.0.0.1:

引擎配置向导第一步基本设置;
引擎配置向导第二步登录网关端口(默认7000);
list.txt列表文件里的IP和端口。

列表文件格式大概这样:

游戏名127.0.0.17000

LoginGate实际监听7000,列表里写7001,注册包就发不出去,表现就是点注册没反应。

查端口占用:

cmd里执行
netstat-ano|findstr7000

如果显示被别的进程占了,要么结束那个进程,要么把LoginGate端口改成9000,同时把list.txt里的7000也改成9000,两处必须一致。

外网架设才填公网IP,同时云服务器安全组、路由器端口映射把7000、7100、7200都放开。

五、登录器必须和引擎配套

别拿网上随便下的万能登录器连自己的服务端。GOM就用GOM配置器生成的登录器,GEE用GEE的,版本不对协议对不上,注册包根本解析不了。

用服务端自带的登录器配置器重新生成一次,生成出来的包里会带LoginGate文件,把这个LoginGate.exe覆盖到服务端LoginGate目录,再重启网关。

同时检查登录器目录下的:

NewopUI.pak是否存在、密码对不对(密码在pak.txt里);
网关密码是否和LoginGate.ini、RunGate.ini里的密码一致;
key授权文件是否配套。

六、数据库这条线分开查

GOM引擎分两种存储方式,先确认你用的是哪种。

DBC2000方式(老版本多见)

打开BDEAdministrator(32位),看HeroDB:

PATH指向MirServer\Mir200\Mud2\DB,不能有中文路径;
状态要是OPEN,没打开就双击打开;
右键服务端DB文件夹→属性→安全,给当前用户完全控制权限。

再用DBC管理工具打开Account表,看能不能正常浏览记录。打不开就是表坏了,从备份恢复Account.db。

MySQL/SQL方式(新版本多见)

打开DBServer下的!DBConfig.txt或DBService.ini,核对:

DBAddr=127.0.0.1
DBPort=3306
DBName=mir(或你实际库名)
DBUser=root
DBPwd=123456

用Navicat连一下,能连上说明通信正常。再查mir库里有没有account表,表结构里要有Account、Password字段。表坏了执行repairtableaccount;修复。

账号写入权限也要够,用root或sa账号连,确保有INSERT权限。

七、角色库残留和“错误代码2”

能注册账号但建不了角色,或者报错误代码2,本质是角色数据写不进去,不是真重名。

关掉所有服务端进程,按引擎类型处理:

Hero系:删DBServer\ID.DB和FDB\下所有.db/.idx文件,重启让引擎重建空白库(单机没重要数据可以直接清);
GOM/GEE系:清DBServer\FDB\下的Human.DB/Hum.DB,或进M2数据库管理清空角色列表。

顺手查DBServer选项→基本设置,把“允许创建新人物”勾上。很多版本默认没勾,建角色就报代码2。

还有个隐藏坑:引擎默认禁止纯数字、纯英文角色名。建角色时换个“字母+数字”组合(比如zs001),能建出来就说明是命名规则拦的。去DBServer选项里把“禁止纯数字人物名”“禁止全英文人物名”取消勾选。

八、账号密码规则别设太死

M2参数里账号长度默认3~12位,密码一般只允许字母数字。测试时先用简单账号:

账号:test001
密码:abc123

能注册成功,再回头把规则调严格。别一上来就设6~16位还禁止数字,自己把自己拦外面。

九、插件和脚本拦截

临时把PlugClient里的第三方DLL移走,只留引擎原配,重启M2测试。账号验证类插件(加密、防注册机、第三方鉴权)密钥不对会直接让写入失败。

脚本方面重点看:

Mir200\Envir\QuestDiary下登录相关段;
QManage.txt里的账号校验逻辑;
有没有写“禁止某IP段注册”“禁止批量注册”的脚本。

排错时把这些脚本段注释掉,能注册了再逐段恢复。

十、客户端侧也清一下

登录器目录下的Cache文件夹删掉;
Config.ini、User.ini删掉让登录器重新生成;
关掉多开器、辅助工具,它们有时候拦截注册包;
登录器右键“以管理员身份运行”。

十一、标准排查顺序(照着走一遍)

备份整个MirServer;
关杀软、加白名单,确认DBServer能常驻不闪退;
M2里开“允许新账号注册”,DBServer里开“允许创建新人物”;
用引擎自带配置器重新生成登录器,覆盖LoginGate;
IP全填127.0.0.1,端口7000三处对齐,netstat查占用;
DBC路径或MySQL连接串核对一遍,账号表能读写;
清FDB残留,建角色用test001这种简单名;
看LoginGate和M2日志红字,按报错定向修;
还不行就移走插件、注释脚本,最小环境先跑通,再逐个加回来。

实际排障里,端口被占用、注册开关没开、DBServer没起、角色库损坏这四类占了绝大多数情况。先查进程和端口,再查开关,最后才动数据库,别一上来就重装引擎,白费时间。
[顶部]