在传奇服务端中,通过机器人脚本在每天00:00自动清除沙巴克(沙城)的占领信息,是保障攻城战公平性和周期性重置的核心操作。这通常依赖于服务端的定时任务系统(如996引擎、Hero引擎的机器人脚本功能)配合GM指令来实现。
一、机器人脚本的基础配置
首先需要找到服务端的机器人脚本配置文件。在大多数引擎(如996、GOM、GEE)中,该文件通常位于 Mir200EnvirMapQuest_def 目录下的 RobotManage.txt(或 Robot.txt)。
在该文件中,通过时间触发器来定义定时任务。格式通常为“分钟 小时 * * * 脚本标签”。要实现每天凌晨0点执行,需添加以下代码:
00 00 * * * @ClearSabukInfo
这行代码的含义是:每天的00时00分,自动触发执行名为 @ClearSabukInfo 的脚本段落。
二、编写清除占领信息的执行脚本
定义好触发时间后,需要在具体的脚本文件中编写 @ClearSabukInfo 的执行逻辑。通常可以在 Mir200EnvirQuestDiary 目录下新建一个文本文件(如 攻沙管理.txt),或者直接在 MapQuest.txt 中编写。
核心代码如下:
[@ClearSabukInfo]
ACT
CLEARSABUKWALL
SENDMSG 0 【系统公告】沙巴克占领信息已重置,新一期攻城战即将开启,请各行会做好准备!
其中,CLEARSABUKWALL 是大多数传奇引擎通用的清除沙巴克归属(清空城主、行会占领数据)的指令。执行该指令后,沙巴克将恢复为无主状态,所有行会均可重新申请攻城。SENDMSG 0 用于向全服玩家发送系统公告,提示重置完成。
三、进阶处理:配合变量与奖励回收
为了防止玩家在重置前恶意刷取城主奖励,通常建议在清除占领信息前,先回收上一期的城主专属道具(如城主战袍、运9武器等)。可以在脚本中补充物品回收和变量重置的逻辑:
[@ClearSabukInfo]
ACT
CALL [攻沙管理奖励回收.txt] @回收城主装备
CLEARSABUKWALL
MOV G99 0
SENDMSG 0 【系统公告】沙巴克占领信息已清除,所有行会可重新申请攻城!
这里使用了 MOV G99 0,将用于记录攻沙状态的服务器全局变量(G99)归零,确保下一轮攻沙的领取检测逻辑恢复正常。
四、脚本生效与测试
脚本编写完成后,必须让服务端重新加载机器人配置才能生效。有两种方法:
在服务端控制台(M2Server)输入重载命令,通常为 !ReloadRobot 或 !ReloadQuest。
直接重启整个游戏服务端。
测试时,可以将机器人脚本的时间临时修改为当前时间的1分钟后(例如当前是15:30,改为 31 15 * * * @ClearSabukInfo),保存并重载。等待时间到达后,观察游戏内是否弹出系统公告,并检查沙巴克NPC(如比奇国王)处的占领行会信息是否已变为“无”。确认功能正常后,再将时间改回 00 00 * * * 即可。

