在传奇服务端架设与调试中,遇到机器人脚本在A版本运行正常,复制到B版本却完全无反应的情况,是许多GM常遇到的棘手问题。既然你已确认脚本代码本身无误,那么问题的核心必然不在代码逻辑,而在于服务端的配置环境、文件加载机制以及引擎权限设置。不同版本的传奇引擎(如GOM、GEE、V8等)对脚本的调用规则存在显著差异,必须从以下四个核心维度进行深度排查。
机器人配置文件缺失或路径错误
传奇引擎并不会自动扫描并加载所有脚本文件,它需要明确的指令来启动机器人。如果配置文件缺失或指向错误,脚本写得再完美也无法运行。
检查RobotManage.txt
进入MirServerMir200Envir目录,查找RobotManage.txt文件。这是大多数引擎默认的机器人脚本入口。打开文件,检查是否包含类似#CALL ..Robot你的脚本名.txt [@Main]的调用指令。如果文件为空,或者调用路径写错,机器人就不会启动。
检查脚本存放位置
确认你的脚本文件是否放在了引擎预期的目录下。通常机器人脚本应放置在MirServerMir200EnvirRobot或QuestDiary目录下。如果你的脚本在Robot文件夹,但配置文件中没有指定相对路径(如..Robot),引擎将无法找到文件。
Lua脚本的特殊性
如果你的机器人脚本是.lua格式(常见于GOM/GEE引擎),则不能仅在txt文件中调用。你需要检查Mir200目录下是否有RobotManage.lua,或者在M2Server的“脚本管理”或“插件管理”中确认是否开启了Lua加载功能。部分引擎要求将RobotManage.txt重命名为RobotManage.lua才能识别。
M2Server控制台的加载状态
脚本未被加载往往伴随着启动日志的异常,但很多时候这些错误信息被忽略了。
观察启动日志
重启M2Server,仔细观察控制台输出的启动信息。寻找是否有“加载脚本失败”、“文件不存在”或“语法错误”的红色提示。如果日志中完全没有提及你的脚本文件名,说明引擎在初始化阶段就忽略了它。
检查脚本加载开关
在M2Server的控制台界面(通常是“选项”或“管理”选项卡),查找“脚本设置”或“功能设置”。确认“允许脚本运行”、“启用机器人脚本”等选项已被勾选。部分引擎为了节省资源,默认会关闭非核心脚本的自动运行。
引擎版本与脚本指令兼容性
既然脚本在另一个版本能用,说明代码逻辑没问题,但不同引擎版本对指令的支持程度不同。
指令集差异
老版本的引擎可能不支持新版脚本中的特定命令(如某些高级变量操作或插件命令)。如果你的脚本中包含当前引擎无法识别的指令,引擎可能会在解析到该行时直接停止执行,且不一定报错。尝试简化脚本,仅保留最基础的SENDMSG命令进行测试,若基础命令能运行,则说明是特定指令不兼容。
编码格式冲突
这是极易被忽视的细节。如果脚本文件是从其他版本直接复制过来的,其文件编码可能与当前引擎不匹配。传奇引擎通常要求脚本文件为ANSI编码。如果原脚本是UTF-8格式,引擎读取时会出现乱码,导致标签识别失败。使用记事本或Notepad++打开脚本,将其“另存为”ANSI编码,然后重启服务端测试。
触发机制与执行权限
脚本加载了但“不运行”,有时是因为缺乏触发条件或执行权限被限制。
触发方式确认
检查你的机器人脚本是属于“自动运行”还是“定时触发”。
自动运行:需要在RobotManage.txt中配置#AutoRun或类似指令。
定时触发:需要配置时间参数,如0/10(每10秒执行一次)。如果时间参数设置错误(如设置为0/0),脚本可能永远不会触发。
地图与权限限制
部分机器人脚本被设定为仅在特定地图或特定时间段生效。检查脚本头部是否有#IF判断条件,例如检测当前地图号或玩家等级。如果条件不满足,脚本会直接跳过执行部分。此外,检查M2Server的“封号设置”或“权限设置”,确认没有误将脚本的运行权限(如SYSTEM权限)禁用。
通过以上步骤,重点检查RobotManage.txt的配置、文件编码格式以及M2的启动日志,通常能迅速定位并解决机器人脚本“罢工”的问题。

