服务端能正常启动,登录器也能看到服务器列表并显示正常,但点击注册账号时提示连接已关闭或无反应,换了好几个版本都一样。这种情况说明问题不在服务端版本本身,而是某个贯穿所有版本的通用环节存在配置错误。注册账号这个动作本质上是登录器向服务端的DBServer发送写入请求,由DBServer将账号数据写入DBC2000管理的数据库。链路中任何一环断裂,都会表现为“服务器已关闭”。以下按排查优先级逐一说明。
## 先确认DBServer进程是否真正存活
打开任务管理器,切换到详细信息页签,检查DBSrv200.exe或DBServer.exe是否在进程列表中。这个进程负责账号数据库的读写操作,如果它没有运行或者启动后瞬间退出,登录器发送的注册请求就无人接收,表现就是提示连接已关闭或点击注册无任何反应。
DBServer启动后闪退的最常见原因是DBC2000数据库配置不正确。打开控制面板中的BDE Administrator,检查左侧是否存在名为HeroDB的别名。如果没有,需要按Ctrl+N新建一个STANDARD类型的数据库,然后将名称改为HeroDB。如果已经存在,点击HeroDB后查看右侧PATH栏指向的路径是否正确,标准路径应该是服务端目录下的Mud2\DB文件夹,例如D:\MirServer\Mud2\DB。
路径中不能包含中文字符。很多新手将服务端解压到“D:\传奇服务端”这类含中文的目录下,DBC2000无法识别中文路径,会导致DBServer启动时找不到数据库文件而退出。必须将服务端放在D:\MirServer这样的纯英文路径下,并同步修改BDE中的PATH路径。
确认路径正确后,点击菜单栏的Object,选择Apply保存配置。保存后HeroDB前面的图标会从灰色变成彩色,说明别名创建成功且路径有效。如果执行Open操作时能打开一个空白数据表窗口且无报错,说明数据库连接正常。
另外检查Mud2\DB目录下是否存在Account.db或Account.txt文件。如果该文件缺失,DBServer同样无法启动。可以从同版本服务端的压缩包中重新复制一份到DB目录下。如果文件存在但仍然报错,尝试删除DB目录下的.fdb和.idx文件,让DBServer在重启时自动重建数据库结构。
## 端口占用和防火墙拦截是第二大原因
注册账号需要经过登录网关的端口通信。默认情况下传奇服务端的登录网关监听7000端口,部分版本使用7100或5600。如果这个端口被其他程序占用,登录网关虽然显示启动成功,但实际上无法建立监听,注册请求就会被拒绝。
按下Win+R输入cmd,执行命令netstat -ano | findstr :7000,查看是否有程序占用了该端口。如果有,记录最后一列的PID号,在任务管理器的详细信息页中按PID排序找到对应进程并结束。酷狗音乐、迅雷、部分直播软件都可能占用7000端口。
如果端口没有被占用,但注册仍然失败,问题可能出在防火墙。Windows防火墙在单机环境下也会拦截本地回环地址的通信。进入Windows安全中心,打开防火墙和网络保护,点击允许应用通过防火墙,找到服务端目录下的LoginSrv.exe、DBServer.exe和M2Server.exe,确保这三个程序在专用网络和公用网络两列都被勾选。如果没有找到这些程序,点击更改设置后选择允许其他应用,手动添加。
杀毒软件是另一个容易被忽略的拦截源。360安全卫士、火绒、Windows Defender的实时防护功能可能在后台静默拦截DBServer的网络请求,不弹出任何提示。在调试期间临时关闭实时防护和所有安全软件,测试注册是否恢复正常。如果关闭后可以注册,将整个MirServer目录添加到杀毒软件的信任列表或排除项中。
## 检查登录网关的注册开关是否开启
部分服务端版本默认关闭了在线注册功能,因为这类服务端原本是用于外网开区的,架设者通常通过网页或专用工具批量注册账号,而不是在登录器上直接注册。当你在登录器上点击注册按钮时,请求被服务端拒绝,表现就是无反应或提示服务器关闭。
打开服务端目录下的LoginSrv文件夹,用记事本打开LoginSrv.ini文件。查找RegisterEnable或AllowRegister参数,确保其值为1。如果值为0,将其改为1后保存文件,重启服务端生效。
如果配置文件中没有找到这个参数,打开M2Server的控制台窗口,点击顶部菜单的选项,选择功能设置或账号登录服务器,在注册设置栏目中确认禁止新账号注册没有被勾选,同时确保允许账号注册处于勾选状态。
## 登录器必须与服务端引擎配套且配置正确
不同引擎的登录器不能混用。用GOM引擎的登录器去连接Hero引擎的服务端,或者反过来,登录器能读取到列表并显示服务器正常,但这只是列表文件的缓存显示,并不代表登录器与服务端之间的通信协议是匹配的。列表显示开放不等于真实连通。
必须使用服务端压缩包中自带的登录器配置器重新生成登录器。打开配置器后,服务器IP填写127.0.0.1,登录网关端口填写LoginSrv实际监听的端口号,这个端口号可以在LoginSrv窗口的标题栏或启动日志中看到。配置完成后生成新的登录器程序,覆盖到客户端根目录下替换旧文件。
如果登录器读取的是本地列表文件,用记事本打开ServerList.txt或list.txt,确认内容格式为“区名|127.0.0.1|7000|0”。这个文件必须保存为ANSI编码,UTF-8编码会导致登录器解析失败,列表显示空白或提示找不到服务器。在记事本中另存为时,底部编码下拉框选择ANSI即可。
## 服务端路径权限和运行方式
将整个MirServer文件夹放在D盘根目录下,不要放在C盘的Program Files或桌面等受系统保护的位置。右键点击服务端的启动程序GameCenter.exe或M2Server.exe,在属性中的兼容性选项卡里勾选以管理员身份运行。Windows 10和Windows 11的UAC机制会限制普通权限程序对数据库文件的写入操作,DBServer没有足够的权限写入Account.db时,注册请求就会被静默拒绝,不产生任何错误提示。
如果按照以上步骤逐一排查后仍然无法注册,检查服务端的Mud2\LogSrv目录下是否存在!addrtable.txt文件。用记事本打开该文件,确认其中的IP地址全部为127.0.0.1,且每行末尾没有多余的空格或特殊符号。部分引擎对这个文件的格式要求严格,多余的字符会导致地址解析失败。

