一、关闭引擎的“安全区随机”参数
这是最常见的原因,引擎默认开启了安全区随机落点功能。
1. 修改 GameSrv.ini
进入服务端 Mir200\Config 目录,用记事本打开 GameSrv.ini。按 Ctrl+F 搜索 SafeZoneRandom 或 LoginRandomFly。若找到该参数且值为 1,直接修改为 0(0代表关闭随机,1代表开启)。保存文件并重启服务端。
2. 检查 LoginSrv.ini
同目录下的 LoginSrv.ini 也可能包含上线位置控制参数。搜索 Random、Fly 等关键词,确保没有开启登录随机传送的相关设置。
二、修正地图配置与出生点
若安全区地图配置了随机范围,上线会强制在该范围内随机传送。
1. 检查 MapInfo.txt
打开 Mir200\Envir\MapInfo.txt,找到你上线的安全区地图(如 [0 比奇省] 或 [3 盟重省])。查看行尾是否有 RANDOMMOVE、RANDOM 参数。若有,删除该参数或改为 NORANDOMMOVE。同时检查地图参数中是否设置了较大的安全区范围,范围过大可能导致落点分散。
2. 固定 StartPoint.txt
打开 Mir200\Envir\StartPoint.txt,该文件定义了出生点。检查对应地图行的坐标是否为固定值(如 330 330)。若坐标设置为 0 0 或范围值,系统会判定为在安全区内随机落点。修改为具体的固定坐标(如 330 330),保存后重启生效。
三、排查上线触发脚本
部分版本为了制造“人多”的假象,设置了上线强制随机移动的脚本。
1. 检查 QFunction-0.txt
进入 Mir200\Envir\Market_Def 或 QuestDiary 目录,打开 QFunction-0.txt。搜索 [@Login] 段(上线触发脚本),检查其中是否包含 RANDOMMOVE、MAPMOVE 或 RANDOM 命令。若有,删除或注释(前面加;)该行命令。
2. 清理离线假人脚本
若在 QuestDiary 文件夹下发现名为“离线”、“假人”或“挂机”的脚本文件,打开检查是否有强制传送到安全区随机坐标的逻辑。这类脚本常导致角色位置被重置,建议暂时移除测试。
四、修复数据保存机制
若角色下线时坐标未正确保存,上线时会读取默认出生点,若出生点配置为范围,则表现为随机飞。
1. 检查 SavePos 参数
在 MapInfo.txt 中,确认常下线的地图配置了 SAVEPOS 或 SavePos=1 参数。缺少此参数,下线位置可能不被保存。
2. 数据库权限
单机环境下,检查服务端目录(尤其是 Mud2\DB 和 Mir200\Envir)的写入权限。若因权限不足导致存档文件(.mir 或数据库)写入失败,位置数据会丢失。建议以管理员身份运行服务端,并关闭杀毒软件的实时防护进行测试。
五、排查流程速查
1. 第一步:修改 GameSrv.ini,关闭 SafeZoneRandom。
2. 第二步:检查 StartPoint.txt,将出生坐标改为固定值。
3. 第三步:搜索 QFunction-0.txt,删除 [@Login] 段内的随机移动命令。
4. 第四步:重启服务端,测试下线再上线。
若以上修改后仍无效,建议备份数据后,使用纯净的客户端与服务端进行对比测试,排除版本文件损坏的可能。

