单机传奇角色界面服务器认证失败:LoginSrv与数据库全链修复

来源: 作者: 点击:
能输入账号、能到角色界面,说明登录器已经连上登录网关,问题不在网络层,而在账号认证、角色网关、数据库读取、引擎验证这几段里至少有一处断了。按下面顺序查,别乱点。

一、先清残留进程再看日志

任务管理器结束掉所有 M2Server.exe、DBServer.exe、LoginSrv.exe、LoginGate.exe、SelGate.exe、RunGate.exe。

进服务端 Log 目录,打开 M2Server.log 和 LoginSrv 日志,搜这几个关键词:

DBServerConnectFail → 数据库没通
LoginGate Connect Fail → 登录网关没连上 M2
Auth Timeout → 验证超时,通常是进程卡死或数据库慢
ClientVersionMismatch → 登录器版本不对
Role Auth Error → 角色表或字段问题

看到哪个关键词就直接跳到对应小节,不用全篇改。

二、确认认证服务和网关全在跑

角色界面认证依赖这条链:

客户端 → LoginGate(登录网关)
→ LoginSrv(账号认证服务)
→ SelGate(角色网关)
→ DBServer(数据库)
→ M2Server(主引擎)

能输账号说明 LoginGate 通了,但后面任意一环没起都会弹“服务器认证失败”。

检查服务端目录里这些进程是否都在:

DBServer\DBServer.exe
LoginSrv\LoginSrv.exe
LoginGate\LoginGate.exe
SelGate\SelGate.exe
RunGate\RunGate.exe
Mir200\M2Server.exe

哪个黑窗一闪而过,先别急着重起:

去杀软隔离区翻一遍,LoginSrv.exe、SelGate.exe 常被 Defender 当可疑进程删,恢复并加信任
右键该 exe 以管理员身份运行
看对应日志报什么,常见是端口占用或配置文件读坏

GOM/GEE 用 GameCenter 一键启动的,也去任务管理器确认这六个进程都在,控制器显示“已启动”不代表子进程没崩。

三、IP 和端口必须全链路一致

单机所有配置统一 127.0.0.1,不允许留空、不允许混 192.168.x.x。

检查这些文件:

Mir200\!Setup.txt
ServerIP=127.0.0.1
LocalIP=127.0.0.1
GateIP=127.0.0.1

LoginSrv\!addrtable.txt
格式:
游戏区名 Title1 1 127.0.0.1 127.0.0.1 127.0.0.1:7000

LoginGate\Config.ini
SelGate\Config.ini
RunGate\Config.ini
ServerIP=127.0.0.1
Port=对应端口(默认 7000/7100/7200)

区名必须和登录器列表里的区名一字不差,多空格都不行。

查端口占用:

netstat -ano | findstr "7000"
netstat -ano | findstr "7100"
netstat -ano | findstr "7200"

有 LISTENING 就按 PID 结束占用进程。改端口必须整套一起改:网关 ini、!Setup.txt、登录器列表三处同步,只改一边没用。

四、网关验证密码三处要对齐

GOM、HERO 类引擎有“网关密码”机制,登录器、LoginGate、SelGate 三处密码必须完全一致。

登录器配置器里如果填了网关密码(比如 123456),那么:

LoginGate\Config.ini 里 Password 或 PassKey = 123456
SelGate\Config.ini 里对应密码项 = 123456

空密码就在登录器配置器里取消“启用网关密码”勾,别一边空一边填。

密码不对的表现就是:能到角色界面,一点登录或创建角色就弹认证失败,日志里可能出现 AuthPasswordError。

五、M2 里账号认证设置检查

进 M2Server 控制台:

选项 → 参数设置 → 账号控制(或安全相关)

确认几点:

没开“远程账号认证”,单机用本地认证
“允许普通账号登录”要勾上
账号前缀、后缀限制全部清空
“启用防劫持功能”关掉(GOM 单机必关,会拦本地回环)
验证码功能取消勾选

如果误开了远程认证,M2 会去连一个不存在的验证服务器,角色界面必弹认证失败。

F11 里“角色验证”要开启,验证超时时间调到 15 秒,避免本机数据库稍慢就被判超时。

六、数据库层(DBC2000 老端)

控制面板打开 BDE Administrator,确认:

别名 HeroDB(大小写严格)
PATH = D:\MirServer\Mud2\DB(精确到 DB 文件夹)
能展开 StdItems、Magic、Monster、Account、RoleDB 表

Mud2\DB 里必须有:

StdItems.DB
Magic.DB
Monster.DB
Account.DB(或 IdDB 相关文件)
RoleDB 表结构完整

RoleDB 缺 MapID 字段会导致加载角色失败,用数据库编辑器打开表,缺字段就补一个 MapID,类型 Integer,默认值 3。

Account 表里刚注册的账号,Status 列必须是 0。被标记为 1 或 2 的账号会被引擎判定异常,角色界面直接认证失败。

注册账号别用 @ # 空格这类特殊字符,纯字母+数字最稳,比如 test123。

七、新引擎(GOM/GEE Access/SQLite)数据库

如果 Mud2\DB 里是 HeroDB.mdb 或 GEEM2.db:

打开 GameCenter → 配置向导
数据库类型选 Access 或 SQLite
数据库文件浏览指到实际 mdb/db 文件
保存后重启控制器

检查 DBServer\DBConfig.ini:

DBType=Access
DBFile=D:\MirServer\Mud2\DB\HeroDB.mdb

别用 DBC2000 去配 Access 库,两套机制互斥。

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

这是单机认证失败的高频坑:

GOM 端必须用 GOM 登录器配置器出的登录器
GEE 端必须用 GEE 登录器配置器出的登录器
HERO 端用 HERO 配套登录器
别拿网上万能登录器、别拿别的版本登录器硬套

部分引擎(如 996)有识别码绑定:

打开登录器,复制界面上的“识别码”
进引擎控制器 → 安全/新建 → 登录器识别码,粘贴保存
Key 文件要和服务端 Mir200 目录下的 Key 完全一致,不一致重新生成登录器覆盖

登录器放客户端根目录,别放桌面或下载目录运行。

九、测试模式没关的隐藏坑

有些端默认开着“单机测试模式”,登录器显示“单机测试”,角色区验证会被降级或拦截。

查两处:

Config\Server.ini 里 TestMode=1 改成 0,SingleServer=1 改成 0
Mir200\Envir 下如果有 TestMode.txt 直接删

改完彻底关掉所有传奇进程再重启服务端。

十、启动顺序重新走一遍

别用之前那种“先开登录器再起 M2”的习惯,严格按:

1. DBServer.exe(等“数据库启动成功”)
2. LoginSrv.exe(等“Auth Server Start Success”)
3. LoginGate.exe
4. SelGate.exe
5. RunGate.exe
6. M2Server.exe(等“初始化完成”)

全部起来后再双击登录器。中途有任何一个窗口闪退,先解决那个再往下走,别硬点。

十一、账号数据损坏兜底

如果账号能注册但一直认证失败,可能是账号库写坏了:

备份 Mud2\DBServer\FDB 和 Mud2\Logsrv\IdDB
用数据库编辑器打开 Account 相关表,看注册账号是否真写进去了
乱码或打不开就换一份同版本完整 DB 覆盖
删掉旧账号,重新注册 test123 再试

十二、快速对照表

现象 → 优先查
能输账号但角色界面秒弹认证失败 → LoginSrv 没起 / 网关密码不对
进度条走到一半失败 → 角色表字段缺 / 数据库慢 / 超时
日志 Auth Timeout → 清进程重起,超时时间调 15 秒
日志 DBServerConnectFail → DBC 路径或 HeroDB 别名错
日志 ClientVersionMismatch → 登录器不是同引擎配套
显示“单机测试”字样 → 测试模式没关
换账号也一样失败 → 不是账号问题,是认证链路或数据库问题

十三、最后兜底

上面都试过还不行:

关杀软 → 加白名单 → 重启电脑清残留
备份 Mud2\DB 和账号数据
重新解压一份同版本纯净端到 D:\MirServer
只做基础配置:127.0.0.1、默认端口、启动全部进程、用自带配置器生成登录器
先不迁自己改的 Envir 和脚本,原生端能进再逐步搬回

改任何配置前备份:

Mir200\!Setup.txt
Mir200\Envir
Mud2\DB
各网关 ini
登录器配置

认证失败不是玄学,就是“认证服务没起全 + 密码/IP不对 + 数据库读不到角色”这三件事。日志里一个关键词就能定位,别盲改。