您提供的传奇机器人脚本不运行,核心问题在于AutoRunRobot.txt文件中的触发命令格式错误,以及机器人脚本与个人变量操作之间的兼容性问题。下面将逐一解析错误原因并提供修正步骤。
错误根源:触发命令格式不正确
在您提供的 AutoRunRobot.txt 中,行内容为:
#AutoRun NPC RunOnDay 0:00 1 @每日扣点
标准格式应为:#AutoRun NPC RunOnDay 小时:分钟 @触发标签
您的命令中在时间“0:00”后多了一个参数“1”,这会导致引擎解析该行时失败,从而整个定时触发事件被忽略。这是脚本不运行的最直接原因。
修正方法:
1. 修改 AutoRunRobot.txt
删除多余的参数“1”,修改为:
#AutoRun NPC RunOnDay 0:00 @每日扣点
对于测试脚本,也应确保格式正确:
#AutoRun NPC RunOnDay 0:00 @凌晨提示
深入排查:机器人脚本的运行环境与逻辑
即使格式修正后,您的“每日扣点”脚本可能仍无法按预期工作,原因在于机器人脚本与个人变量操作的特殊性。
2. 检查机器人系统总开关
机器人脚本功能需要在服务端引擎(M2Server)中启用。请打开M2Server控制台,依次查看或检查:选项 -> 机器人 或 功能设置 -> 机器人系统。确保“启用机器人”或类似选项是勾选状态。如果此处被禁用,所有机器人脚本都不会执行。
3. 理解机器人脚本的执行上下文
这是关键点。RobotManage.txt 中的脚本是由系统定时全局触发的,在执行 [@每日扣点] 这个段落时,并没有一个特定的、具体的玩家作为“当前玩家”。
而您的脚本中使用了 CHECKVAR HUMAN 月卡天数 > 0 和 CALCVAR HUMAN 月卡天数 - 1 等命令。HUMAN 变量是针对单个玩家的私有变量。在机器人触发的全局上下文中,系统无法知道要对“谁”的“月卡天数”变量进行操作,因此这些命令会失效。
4. 适配个人变量文件的机器人脚本写法
根据您描述的“月卡天数脚本”格式([游戏名字] 月卡天数=30),这是一个以玩家名字为键的配置文件。要在机器人脚本中遍历并修改所有玩家的数据,需要使用不同的命令逻辑。
文档未详述此点,但基于我所掌握的知识, 一个常见的实现思路是:在机器人脚本中,通过循环命令(如#CALL)或遍历在线玩家列表的命令(如Gmexecute结合GetListString,具体命令因引擎而异)来逐一处理每个玩家。但更简单稳定的做法是,将扣点逻辑放在玩家登录脚本(QManage.txt的@Login段) 中,通过检查系统日期(CHECKDAY)或一个全局变量来判断是否在新的一天执行扣减,这样执行时有明确的玩家对象。
系统化排查流程
请按以下顺序检查,每一步都可能导致脚本不运行:
1. 第一步:检查文件基础
◦ 文件位置:确认 AutoRunRobot.txt 和 RobotManage.txt 位于服务端的 Mir200\Envir\Robot_def\ 目录下(此为常见路径,请根据您的版本确认)。
◦ 文件编码:确保这两个文本文件是以 ANSI 编码保存的。使用记事本“另存为”时可选择编码。UTF-8等编码可能导致引擎读取乱码。
◦ 文件无只读属性:右键文件属性,确保没有勾选“只读”。
2. 第二步:验证引擎加载与错误日志
◦ 修改脚本后,必须重启M2Server引擎才能重新加载机器人配置。
◦ 查看M2Server控制台窗口,启动时是否有关于加载机器人脚本的提示,或是否有红色错误信息。
◦ 检查 Mir200\Log 文件夹下的日志文件,查找与“Robot”相关的错误记录。
3. 第三步:使用最小化测试脚本
为了彻底隔离问题,请将 AutoRunRobot.txt 内容暂时只保留一行最简单的、不涉及个人变量的测试:
#AutoRun NPC RunOnMin 1 @测试
在 RobotManage.txt 中添加:
[@测试]
#act
SENDMSG 0 【机器人测试】系统每分钟广播一次,看到我说明机器人运行正常!
重启M2Server,观察游戏内是否每分钟出现一次黄字广播。如果出现,证明机器人系统本身工作正常,问题出在您原有脚本的逻辑或格式上。如果仍不出现,则证明机器人系统配置(如M2开关、文件路径)存在根本问题。
4. 第四步:修正您的扣点脚本逻辑
鉴于机器人中直接操作 HUMAN 变量困难,建议调整架构:
◦ 方案A(推荐):将扣点逻辑移至玩家登录脚本。在 QManage.txt 的 [@Login] 段中,判断上次扣点日期(记录在一个个人变量或文件里),如果已经不是同一天,则执行扣减。
◦ 方案B:如果坚持用机器人,需要一个能遍历玩家的命令。例如,在某些引擎中,可以这样实现(请注意,此为示例,需根据您的引擎命令手册调整):
[@每日扣点]
#act
; 首先读取存储所有玩家月卡数据的文件到列表
LoadVarList ..\QuestDiary\数据文件\月卡\月卡天数.txt
; 然后使用循环命令(如While、Loop)遍历列表,对每一行(即每个玩家)进行“天数-1”的运算
; 最后将修改后的列表写回文件
SAVEVARLIST ..\QuestDiary\数据文件\月卡\月卡天数.txt
SENDMSG 0 全服玩家月卡天数已扣除一天。
请注意,方案B中的 LoadVarList、While、SAVEVARLIST 等是示意命令,不同传奇引擎(GOM、GEE、翎风等)的机器人脚本命令集差异很大,请务必查阅您所使用引擎的官方脚本说明书。
总结与操作顺序
1. 立即修正 AutoRunRobot.txt 中多余的参数“1”。
2. 在M2Server中确认“启用机器人”选项已勾选。
3. 使用“第三步”的最小化测试脚本验证机器人系统基线是否正常。
4. 如果测试成功,再根据“第四步”的方案A或B,重写您的“每日扣点”业务逻辑,避免在机器人中直接使用 HUMAN 变量操作单个玩家。
通过以上系统性的排查和修正,应该能解决您机器人脚本不运行的问题。

