攻沙(攻城)相关脚本主要分布在QManage.txt、!Setup.txt和MapQuest_def3文件夹中,具体位置取决于所用服务端引擎。首次攻沙时间设定及元宝领取功能需分别修改不同配置文件。
攻沙主逻辑通常写在QManage.txt内。该文件位于MirserverMir200Envir目录下,负责处理定时事件。查找标签[@MainTimer]或[@OnTimer5],此处常包含攻城判断代码。例如:
[@OnTimer5]
IF
EQUAL A0 1
ACT
GOTO @StartCastleWar
其中A0为控制变量,值为1时表示开启攻城。完整攻沙流程(包括行会资格检查、守城方判定、胜利结算)均在此文件定义。
开区后第一次攻沙时间由!Setup.txt控制。该文件同样位于Envir目录,打开后找到参数“CastleWarDay”和“CastleWarTime”。前者设为星期数(1=周一,7=周日),后者设为小时(20表示晚上8点)。例如:
CastleWarDay=6
CastleWarTime=20
表示每周六晚8点开战。若需调整首战时间,可临时修改此值,或通过M2控制台命令“CHANGECWTIME 6 20”动态设置。
部分引擎将攻沙地图事件单独拆分至MapQuest_def3文件夹(3为沙巴克地图编号)。进入该目录,查看QTrigger.txt或QManage.txt,其中包含“玩家进入沙巴克”“BOSS刷新”等触发逻辑。若攻沙期间行为异常,需检查此处脚本是否匹配主控逻辑。
元宝领取脚本通常置于登录或每日签到流程中。常见位置包括:
QFunction.txt中的[@Login]标签:角色上线时自动发放;
自定义NPC脚本(如Npc_def福利大使.txt):通过对话领取;
QManage.txt的[@DailyReset]段落:每日重置时补发。
示例代码(放入QFunction.txt):
[@Login]
IF
CHECKITEM 金条 1
ELSEACT
GIVE 金条 100
SENDMSG 5 获得100元宝
此处“金条”为元宝道具名,实际名称需与ItemInfo.txt一致。若使用绑定元宝系统,则改用GAMEGOLD指令:
ACT
GAMEGOLD + 100
所有脚本修改后需重启M2Server或执行“Reload Script”命令生效。路径错误、标签拼写失误、变量未初始化是常见问题,建议逐行核对语法。

