一、文件路径与命名规则差异
不同引擎版本对机器人脚本的存放目录和文件名要求不同,这是导致“换版本后不运行”的首要原因。
1. 目录结构差异
• Hero/Blue/老GEE引擎:核心文件通常位于 Mir200\Envir\Robot.txt(配置文件)和 Mir200\Envir\Robot_def\ 目录下(如 AutoRunRobot.txt, RobotManage.txt)。
- 新GEE/GOM/翎风引擎:可能使用 Mir200\Envir\Robot_def\AutoRunRobot.txt 作为主配置,且要求 Robot.txt 中的 AutoRunRobot 指向必须准确。
- 996引擎:部分版本将脚本直接放在 Mir200\Envir\Robot_def\ 下,需检查 #AutoRun NPC 命令格式。
解决方法:对比两个版本的 Envir 目录结构。将脚本文件放入新版本对应的正确路径,并检查 Robot.txt 内是否包含 AutoRunRobot 这一行。
2. 文件名严格匹配
机器人脚本的执行依赖严格的文件名关联。例如,Robot.txt 中若配置为 系统控制 AutoRunRobot,则对应的定时任务文件必须命名为 AutoRunRobot.txt(注意大小写和空格)。若你直接复制了旧版本的 MyRobot.txt 但未在 Robot.txt 中声明,引擎将完全忽略。
解决方法:打开新版本的 Robot.txt,查看其引用的具体文件名,确保你的脚本文件名与之完全一致。
二、引擎命令语法与格式兼容性
即使脚本逻辑正确,不同引擎对命令的解析规则也存在细微差别。
1. 时间触发格式错误
#AutoRun NPC 命令对时间格式极其敏感。例如,RunOnDay 0:00 在某些引擎中必须写为 RunOnDay 00:00:00(补全秒数),MIN 1(每分钟)在某些版本中可能被废弃,需改用 SEC 60。
解决方法:查阅新版本引擎的帮助文档(.chm文件),核对 #AutoRun NPC 支持的时间单位(SEC/MIN/HOUR/RUNONWEEK)及分隔符格式。
2. 标签调用与变量作用域
• 标签未定义:AutoRunRobot.txt 中调用了 @每日奖励,但 RobotManage.txt 中缺少 [@每日奖励] 标签,或标签名存在全角字符差异。
- 变量未初始化:旧脚本使用了 HUMAN 或 GLOBAL 变量,但新版本中这些变量未在 QManage.txt 的 [@Login] 段进行初始化(VAR 命令),导致脚本静默失败。
解决方法:在 M2 的“脚本日志”中查看是否有“找不到标签”或“变量未定义”的报错,并逐一修正。
三、M2引擎配置与加载状态
服务端的环境配置直接影响脚本的加载能力。
1. 消息过滤拦截
部分服务端在 M2(查看→列表信息二→消息过滤)中设置了关键词过滤。如果你的机器人脚本包含 SENDMSG 广播,且广播内容(如“元宝”“奖励”)被误设为过滤词,会导致脚本执行被阻断,表面看就是“不运行”。
解决方法:清空 M2 的消息过滤列表,或检查广播内容是否触发了敏感词拦截。
2. 脚本未重载
修改 Robot.txt 或 AutoRunRobot.txt 后,单纯的重读NPC脚本可能无法生效。机器人配置的变更有时需要重启 M2 引擎才能被重新加载。
解决方法:修改完机器人相关文件后,直接关闭并重启 M2Server,观察启动日志中是否显示“Loading Robot.txt...”等信息。
四、编码问题与权限拦截
1. 文件编码必须为 ANSI
传奇引擎(尤其是Windows服务器环境)通常要求脚本文件编码为 ANSI。如果你在本地用记事本或Notepad++编辑后保存为 UTF-8 或 UTF-8 with BOM 格式,引擎会因无法解析中文字符而跳过整个文件。
解决方法:用文本编辑器打开脚本,选择“文件→另存为”,将编码明确设置为“ANSI”后保存覆盖。
2. 系统权限与杀毒软件
在 Windows Server 2008/2012 或高版本Win10/11系统上,服务端可能因权限不足无法读取 Envir 目录下的脚本文件。此外,杀毒软件可能将 RobotManage.txt 中的系统命令误判为病毒并隔离。
解决方法:以管理员身份运行 GameCenter.exe,并将服务端目录添加到杀毒软件的白名单中。
五、快速诊断流程
1. 对路径:确认 Robot.txt 和 Robot_def 目录位置与旧版本一致。
2. 看日志:打开 M2 → 查看 → 脚本日志,寻找红色的“Load fail”或“Script Error”提示。
3. 改编码:将机器人脚本另存为 ANSI 编码。
4. 重启M2:修改后重启 M2 引擎,而非仅重读NPC。
总结:脚本在A版本能跑,在B版本哑火,90%是路径不对、文件名未关联、编码错误这三个基础环境问题。先别急着改逻辑,按上述流程逐项对比即可解决。

