传奇机器人脚本不运行的详细排查与解决方法

来源: 作者: 点击:
您提供的传奇机器人脚本不运行,核心问题在于AutoRunRobot.txt文件中的触发命令格式错误,以及机器人脚本与个人变量操作之间的兼容性问题。下面将逐一解析错误原因并提供修正步骤。

错误根源:触发命令格式不正确
在您提供的AutoRunRobot.txt中,行内容为:

#AutoRunNPCRunOnDay0:001@每日扣点

标准格式应为:#AutoRunNPCRunOnDay小时:分钟@触发标签
您的命令中在时间“0:00”后多了一个参数“1”,这会导致引擎解析该行时失败,从而整个定时触发事件被忽略。这是脚本不运行的最直接原因。

修正方法:
1.修改AutoRunRobot.txt
删除多余的参数“1”,修改为:

#AutoRunNPCRunOnDay0:00@每日扣点

对于测试脚本,也应确保格式正确:

#AutoRunNPCRunOnDay0:00@凌晨提示


深入排查:机器人脚本的运行环境与逻辑
即使格式修正后,您的“每日扣点”脚本可能仍无法按预期工作,原因在于机器人脚本与个人变量操作的特殊性。

2.检查机器人系统总开关
机器人脚本功能需要在服务端引擎(M2Server)中启用。请打开M2Server控制台,依次查看或检查:选项->机器人或功能设置->机器人系统。确保“启用机器人”或类似选项是勾选状态。如果此处被禁用,所有机器人脚本都不会执行。

3.理解机器人脚本的执行上下文
这是关键点。RobotManage.txt中的脚本是由系统定时全局触发的,在执行[@每日扣点]这个段落时,并没有一个特定的、具体的玩家作为“当前玩家”。
而您的脚本中使用了CHECKVARHUMAN月卡天数>0和CALCVARHUMAN月卡天数-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内容暂时只保留一行最简单的、不涉及个人变量的测试:

#AutoRunNPCRunOnMin1@测试

在RobotManage.txt中添加:

[@测试]
#act
SENDMSG0【机器人测试】系统每分钟广播一次,看到我说明机器人运行正常!

重启M2Server,观察游戏内是否每分钟出现一次黄字广播。如果出现,证明机器人系统本身工作正常,问题出在您原有脚本的逻辑或格式上。如果仍不出现,则证明机器人系统配置(如M2开关、文件路径)存在根本问题。

4.第四步:修正您的扣点脚本逻辑
鉴于机器人中直接操作HUMAN变量困难,建议调整架构:
◦方案A(推荐):将扣点逻辑移至玩家登录脚本。在QManage.txt的[@Login]段中,判断上次扣点日期(记录在一个个人变量或文件里),如果已经不是同一天,则执行扣减。

◦方案B:如果坚持用机器人,需要一个能遍历玩家的命令。例如,在某些引擎中,可以这样实现(请注意,此为示例,需根据您的引擎命令手册调整):

[@每日扣点]
#act
;首先读取存储所有玩家月卡数据的文件到列表
LoadVarList..\QuestDiary\数据文件\月卡\月卡天数.txt
;然后使用循环命令(如While、Loop)遍历列表,对每一行(即每个玩家)进行“天数-1”的运算
;最后将修改后的列表写回文件
SAVEVARLIST..\QuestDiary\数据文件\月卡\月卡天数.txt
SENDMSG0全服玩家月卡天数已扣除一天。

请注意,方案B中的LoadVarList、While、SAVEVARLIST等是示意命令,不同传奇引擎(GOM、GEE、翎风等)的机器人脚本命令集差异很大,请务必查阅您所使用引擎的官方脚本说明书。

总结与操作顺序
1.立即修正AutoRunRobot.txt中多余的参数“1”。
2.在M2Server中确认“启用机器人”选项已勾选。
3.使用“第三步”的最小化测试脚本验证机器人系统基线是否正常。
4.如果测试成功,再根据“第四步”的方案A或B,重写您的“每日扣点”业务逻辑,避免在机器人中直接使用HUMAN变量操作单个玩家。

通过以上系统性的排查和修正,应该能解决您机器人脚本不运行的问题。
[顶部]