传奇机器人脚本无法运行原因排查与解决方法详解

来源: 作者: 点击:
机器人脚本在另一版本能运行,在当前版本无法启动,问题通常出在引擎配置、文件路径、脚本格式或调用方式差异上。

核心配置文件检查

机器人脚本运行依赖两个关键文件。AutoRunRobot.txt控制执行时间,RobotManage.txt控制时间到达后调用的函数。两个文件位于Mir200EnvirRobot_def目录下。

AutoRunRobot.txt格式示例:
RunOnDay 0:00 1 @每日活动
RunOnMin 5 1 @整点公告

第一列指定触发类型,RunOnDay为每日定时,RunOnMin为每分钟触发。第二列为时间参数,第三列1表示启用,0表示禁用。第四列为调用的标签名称。

RobotManage.txt中需存在对应标签:
[@每日活动]
ACT
SENDMSG 0 活动开始
BREAK

标签名称必须与AutoRunRobot.txt中调用名称完全一致,包括大小写和特殊符号。

引擎开关设置

部分引擎需要手动开启机器人功能。检查M2Server.ini或启动器配置中是否有RobotEnable选项。该选项设置为1时机器人脚本生效,设置为0时所有机器人命令不执行。

某些引擎版本在启动器界面提供机器人开关勾选框。启动服务端前需确认该选项已勾选。未勾选时脚本文件存在也不会执行。

脚本文件格式问题

脚本文件编码格式必须为ANSI或UTF-8无BOM格式。使用记事本另存为时选择正确编码。编码错误会导致引擎无法读取文件内容,表现为脚本不运行但无报错提示。

文件扩展名需与引擎要求一致。老版本引擎使用.txt扩展名,新版本引擎可能要求.lua扩展名。RobotManage.txt改为RobotManage.lua后需同步修改调用方式。

路径配置差异

不同引擎版本对脚本路径要求不同。GOM引擎脚本位于QuestDiary目录,GEE引擎脚本位于EnvirQuestDiary目录,HERO引擎脚本位于EnvirMarket_Def目录。

脚本中CALL命令调用的文件路径需根据当前引擎调整。原版本使用绝对路径,新版本可能要求相对路径。路径错误时引擎找不到脚本文件,触发静默失败。

检查Envir路径下是否存在Script.txt文件。该文件定义脚本别名映射,缺失时部分CALL命令无法解析。

命令兼容性差异

引擎版本不同导致脚本命令支持程度不同。老版本引擎不支持新添加的命令,新版本引擎可能废弃旧命令。

CHANGENAME命令在部分引擎中已废弃,使用RENAME命令替代。GOTO命令在某些引擎中需要添加参数。CHECK命令格式在不同引擎中存在差异。

脚本中使用的命令需与当前引擎文档对照。不支持的命令会导致脚本执行中断,后续内容不再运行。

标签调用方式

标签调用格式需符合当前引擎规范。@标签后不能有空格,标签名称不能包含特殊字符。部分引擎要求标签前必须有空行分隔。

CALL命令调用标签时,格式为CALL @标签名。部分引擎支持CALL 文件名@标签名格式,调用其他文件中的标签。

标签重复定义时,引擎只识别第一个标签。检查RobotManage.txt中是否存在重复标签名称。

变量作用域问题

个人变量、全局变量、引擎变量在不同引擎中作用域不同。原版本使用的变量类型在当前版本可能无法跨脚本访问。

变量初始化位置影响脚本执行。部分引擎要求变量在QFunction.txt中初始化,部分引擎允许在任意脚本中初始化。

变量名称大小写敏感。N0与n0被视为不同变量。检查脚本中变量名称是否统一。

触发条件检测

机器人脚本触发依赖时间条件。服务器时间与本地时间不一致时,定时触发可能偏离预期。检查服务器系统时间设置。

RunOnMin参数设置为0时脚本不触发。检查AutoRunRobot.txt中第三列参数是否为1。

部分引擎支持RunOnSec秒级触发,部分引擎仅支持分钟级触发。秒级触发命令在仅支持分钟级的引擎中无效。

日志排查方法

开启引擎日志输出功能。M2Server控制台显示脚本执行日志,查看是否有脚本加载失败提示。

日志中显示Script Load Failed表示脚本文件无法读取。日志中显示Label Not Found表示标签不存在。日志中显示Command Error表示命令不支持。

使用SENDMSG命令在脚本关键位置发送测试消息。消息能正常发送说明脚本执行到该位置,消息未发送说明脚本在之前位置中断。

常见错误对照

脚本不运行但无报错,通常为引擎开关未开启或文件编码错误。脚本运行部分后中断,通常为命令不支持或标签调用错误。脚本完全不加载,通常为路径配置错误或文件名错误。

多行脚本中某一行导致中断时,注释该行后测试。逐行排查定位问题命令。

引擎重启后脚本生效。修改脚本文件后需重启M2Server或重新加载脚本。部分引擎支持热加载,部分引擎必须重启。

版本迁移注意事项

从一版本迁移到另一版本时,需对照两版本引擎文档。命令列表、标签格式、变量类型、文件路径均需逐一核对。

备份原版本脚本文件。修改前保留原始内容,便于对比和恢复。

测试时先使用简单脚本验证引擎环境。确认基础功能正常后再迁移复杂脚本。

引擎特性差异

GOM引擎支持Lua脚本嵌入,GEE引擎支持Python脚本嵌入,HERO引擎仅支持原生脚本。脚本语言不同导致无法直接迁移。

部分引擎支持脚本调试模式,可逐行执行查看变量状态。调试模式帮助定位逻辑错误。

引擎更新日志中会标注废弃命令和新增命令。定期查看更新日志了解命令变化。

文件权限问题

服务器操作系统文件权限影响脚本读取。脚本文件需设置为可读权限。Linux系统下使用chmod命令设置权限,Windows系统下检查文件属性是否只读。

文件被其他程序占用时引擎无法读取。关闭占用文件的程序后重启引擎。

内存与资源限制

引擎对脚本文件大小有限制。单文件超过限制时部分内容被忽略。大脚本拆分为多个文件,使用CALL命令调用。

同时运行的机器人数量受引擎配置限制。M2Server.ini中设置MaxRobot参数,超出限制时新机器人不启动。

脚本执行时间过长会被引擎终止。长时间任务拆分为多个短任务,使用定时触发分段执行。