自己架设的传奇单机,下线再上线总被“弹”到安全区随机位置,本质是坐标未保存或上线强制重置。按以下顺序排查,90%的问题集中在M2参数与脚本上。
一、 核心排查:M2Server参数设置(首要步骤)
这是最常见的原因,引擎未开启坐标保存或强制安全区上线。
1. 修改角色设置
◦ 打开 M2Server.exe → 【选项】→ 【参数设置】→ 【角色设置】。
* 找到 “下线保存角色当前坐标”,必须勾选(未勾选则上线读不到坐标,默认随机)。
* 找到 “上线强制传送至安全区” 或 “上线保护传送”,必须取消勾选(若勾选则无视保存坐标,强制飞安全区)。
* 点击【保存】,重启M2Server(仅保存不重启不生效)。
2. 检查登录网关配置
* 进入 MirServer\LoginGate\ 或 LoginSrv\ 目录,打开 LoginSrv.ini。
◦ 搜索 SaveRolePos,确保其值等于 1(开启坐标保存)。
* 搜索 SpawnAtSafeArea,若存在则改为 0(关闭上线强制安全区生成)。
二、 脚本排查:删除上线随机传送命令
部分版本为了制造“人多”的假象,在登录脚本中加入了随机移动指令。
1. 定位脚本文件
◦ 进入 MirServer\Mir200\Envir\QuestDiary\。
◦ 重点检查 Login.txt(登录触发)、QManage.txt(全局管理)、QFunction-0.txt(功能脚本)。
2. 搜索并注释
◦ 用记事本打开上述文件,搜索关键词:RANDOMMOVE、RandomMove、移动到安全区。
* 找到类似 #ACT RANDOMMOVE 3 330 330 10 的代码行(意为在3地图330,330附近10格内随机移动)。
* 解决方案:在代码行最前面加 // 注释掉,例如改为 //#ACT RANDOMMOVE 3 330 330 10,保存文件。
三、 数据库与存档验证(终极手段)
若上述两步无效,可能是数据库字段未更新或存档损坏。
1. 检查数据库坐标
◦ 打开数据库(如 MirDB.mdb 或 MySQL),找到角色表(Character 或 RoleInfo)。
* 查看你的角色数据,检查 LastMap(最后地图)、LastX、LastY 字段。
* 若下线后这些字段未更新,说明坐标写入失败,需检查DBServer配置或数据库权限。
2. 修复损坏存档
◦ 进入 MirServer\Mir200\Save\ 目录,找到对应角色名的 .mir 或 .txt 存档文件。
* 备份后删除该文件,重启服务端。游戏会强制读取数据库中的初始坐标(通常是安全区中心),解决因存档错乱导致的随机飞。
四、 验证修改效果
完成任何一步修改后,必须执行以下操作验证:
1. 完全关闭服务端所有程序(LoginGate、M2等)。
2. 重新启动整个服务端。
3. 登录游戏,走到一个非安全区的固定位置(如仓库角落)。
4. 下线等待10秒,再上线。若位置未变,则问题解决。
提示:若使用了“假人陪玩”脚本,部分假人脚本会包含随机移动逻辑,需在假人配置文件中关闭“上线随机”选项。

