传奇机器人脚本每日自动清除沙巴克占领信息教程

来源: 作者: 点击:
沙巴克占领信息每日清零需通过机器人脚本定时触发文件修改与系统命令。核心操作包括清空占领行会记录、重置税收数据、发送全服公告。以下为具体实现步骤。

一、明确清除目标与文件位置
沙巴克占领数据存储于两个位置,需同时处理:
1. 配置文件:MirServer\Mir200\Castle\Sabukw.txt(或MirServer\Envir\Castle\SabukW.txt,取决于引擎)。此文件记录占领行会名称(如GuildName=天下第一)、城主、税收金币等。
2. 系统内存缓存:服务端运行时加载的占领状态,需通过命令强制刷新。

二、配置机器人定时触发脚本
机器人脚本由两个文件协同工作:AutoRunRobot.txt定义触发时间,RobotManage.txt定义执行逻辑。

步骤1:设置触发时间
打开 MirServer\Mir200\Envir\Robot_def\AutoRunRobot.txt 文件。
在文件末尾添加一行:

#AutoRun NPC RUNONDAY 00:00 @ClearSabuk

此行意为:每天(RUNONDAY)的00:00:00,执行名为@ClearSabuk的脚本段。时间格式必须为“时:分:秒”,且需与服务端系统时间一致。

步骤2:编写清除逻辑脚本
打开 MirServer\Mir200\Envir\Robot_def\RobotManage.txt 文件。
在文件末尾添加以下代码块:

[@ClearSabuk]
#IF
#ACT
; 第一步:清空Sabukw.txt中的关键占领数据
WriteFile ..\..\Castle\Sabukw.txt GuildName=
WriteFile ..\..\Castle\Sabukw.txt TotalGold=0
WriteFile ..\..\Castle\Sabukw.txt CastleMaster=
; 第二步:发送全服系统公告
SENDMSG 0 【系统】沙巴克占领信息已重置!所有行会可重新争夺! 251 249
; 第三步:强制服务端重新加载沙巴克配置,更新内存数据
Gmexecute ReloadSabukSet
BREAK

代码详解:
• WriteFile命令用于直接修改文件内容。它将指定文件中的对应字段清空或重置。

• SENDMSG 0用于发送全服滚动公告,参数“251 249”通常代表公告文字颜色。

• Gmexecute ReloadSabukSet是GM命令,强制M2Server引擎重新读取沙巴克配置文件,使文件修改生效并更新内存状态。

三、针对GOM等引擎的补充处理
部分引擎(如GOM)的占领信息可能存储于MirServer\Envir\Castle\SabukW.txt,且结构略有不同。可采用更通用的清理命令:
在RobotManage.txt的[@ClearSabuk]段中,可使用以下命令组合:

#ACT
; 清空占领行会列表文件
CLEARNAMELIST ..\Castle\SabukW.txt
; 重置全局税收变量
VAR Integer GLOBAL CastleTax 0
; 发送公告
GuildNoticeMsg 251 249 【系统】沙巴克占领信息已重置!
; 重新初始化沙巴克数据
ReLoadCastle
BREAK

• CLEARNAMELIST用于清空列表文件内容。

• ReLoadCastle是另一种重新加载沙巴克数据的引擎命令。

四、操作流程与测试
1. 备份:修改前,务必备份AutoRunRobot.txt和RobotManage.txt。
2. 修改:按上述步骤添加代码。
3. 重启:修改完成后,重启M2Server引擎,或在其控制台执行“重读机器人脚本”命令。
4. 测试:可将触发时间暂时改为临近的分钟(如RUNONDAY 23:55 @ClearSabuk),观察到达指定时间后,服务器公告是否出现、Sabukw.txt文件内容是否被重置。测试完毕后改回00:00。

五、注意事项
1. 路径确认:首先确认服务端中沙巴克配置文件的准确路径。
2. 时间同步:确保服务器操作系统时间准确,时区设置正确。
3. 引擎差异:不同引擎(BLUE、LEGEND、GOM、GEE)的命令或文件路径可能略有差异,请根据实际情况调整。
4. 权限检查:确保M2Server引擎对相关脚本文件和城堡文件有读写权限。

按照此教程配置后,机器人脚本将在每日零点自动执行,彻底清除前一日沙巴克占领信息,为新一轮争夺做好准备。