传奇HERO引擎自动攻沙及NPC奖励脚本实操全解

来源: 作者: 点击:
本文针对HERO引擎,实现开区4天首次攻沙、后续每日攻沙机制,搭配NPC差异化奖励脚本(首攻10000元宝,后续3000元宝),全程无冗余步骤,可直接复制套用。

核心逻辑:通过全局变量记录开区天数,触发自动攻沙;攻沙结束后标记胜方行会,NPC脚本检测标记及开区天数,发放对应奖励,无需手动干预攻沙流程。

一、自动攻沙脚本配置(核心文件:AutoRunRobot.txt、RobotManage.txt)

需修改两处机器人文件,实现开区天数统计、固定时间攻沙触发及系统提示,适配HERO引擎命令格式。

1. AutoRunRobot.txt(定时触发配置)

该文件控制脚本定时执行,添加3条触发规则,分别实现天数统计、攻沙预告、攻沙开启,直接粘贴至文件末尾:

#AutoRun NPC RUNONDAY 00:01 @统计开区天数 // 每日凌晨00:01更新天数
#AutoRun NPC RUNONDAY 19:00 @攻沙预告 // 19:00发布攻沙提醒
#AutoRun NPC RUNONDAY 19:55 @开启自动攻沙 // 19:55正式开启攻沙

说明:时间可自行调整(如改为20:00开启攻沙),RUNONDAY表示每日执行,确保攻沙流程规律触发。

2. RobotManage.txt(攻沙逻辑脚本)

添加天数统计、预告、开启攻沙三个脚本段,用全局变量G1记录开区天数,避免与其他变量冲突:

// 统计开区天数
(@统计开区天数)
#IF
#ACT
inc G1 1 // 每日递增1,G1=1为开区第1天,G1=4为第4天
SAVEVAR G1 ..\QuestDiary\变量保存.txt // 保存变量,重启服务端不丢失

// 攻沙预告
(@攻沙预告)
#IF
large G1 3 // G1>3即开区≥4天,满足首次攻沙条件后每日触发
#ACT
SENDMSG 1 【系统公告】今晚19:55开启沙巴克攻城战,所有行会可参与! 250
SENDMSG 1 【系统公告】首攻胜方全员领10000元宝,后续胜方领3000元宝! 250
SENDMSG 1 【系统公告】无需提交头像,加入行会即可参战,做好准备! 250

// 开启自动攻沙(HERO引擎专用命令)
(@开启自动攻沙)
#IF
large G1 3 // 仅开区≥4天触发,避免前期误开启
#ACT
AddAttackSabukAll 0 // 开启全服攻沙,沙巴克城堡编号默认0(HERO通用)
SENDMSG 1 【系统公告】沙巴克攻城战正式开启!占领城堡即可获得丰厚奖励! 250
SENDMSG 1 【系统公告】攻城持续1小时,倒计时结束时占领者获胜! 250
BREAK

关键说明:AddAttackSabukAll 0为HERO引擎自动攻沙核心命令,城堡编号0为默认值,若修改过城堡编号,需对应替换数字;变量保存路径需与服务端QuestDiary文件夹对应,防止变量丢失。

二、攻沙奖励标记脚本(QFunction-0.txt)

攻沙结束后自动标记胜方行会,为NPC奖励脚本提供判断依据,添加至QFunction-0.txt末尾:

// 攻沙结束标记胜方(HERO引擎自动触发此脚本)
(@沙巴克攻城结束)
#IF
#ACT
GETCASTLEOWNER 0 H1 // 获取沙巴克占领行会名,存入变量H1
SAVEVAR H1 ..\QuestDiary\变量保存.txt // 保存胜方行会名
// 记录本次攻沙是否为首次(G2为首次攻沙标记,1=已发放首攻奖励)
#IF
equal G2 0 // G2默认0,未发放过首攻奖励
large G1 3 // 确保是开区≥4天的攻沙
#ACT
SET G2 1 // 标记首攻奖励已发放,后续攻沙按普通奖励执行
SAVEVAR G2 ..\QuestDiary\变量保存.txt
SENDMSG 0 【沙巴克战报】%H1 行会夺得首攻胜利,全员可至NPC领取10000元宝! 250
#ELSEACT
SENDMSG 0 【沙巴克战报】%H1 行会夺得胜利,全员可至NPC领取3000元宝! 250
BREAK

说明:@沙巴克攻城结束为HERO引擎攻沙结束后自动调用的脚本名,无需手动触发;GETCASTLEOWNER 0 H1命令可精准获取胜方行会名,确保奖励仅发放给获胜行会成员。

三、NPC奖励脚本(自定义NPC脚本文件)

假设NPC名为“沙巴克奖励使者”,脚本直接写入对应NPC文件(如D:\MirServer\Mir200\Envir\NPCs\沙巴克奖励使者.txt),支持重复领取检测,避免多领:

// NPC对话入口
[@main]
#SAY
欢迎来到沙巴克奖励领取处!\
当前获胜行会:%H1 \
#IF
ISGuildMember %H1 // 检测玩家是否为胜方行会成员
CHECKVAR H2 < 1 // H2为领取标记,0=未领取,1=已领取
#SAY
你可领取本次攻沙奖励,点击即可领取!\
<领取攻沙奖励> @领取奖励
#ELSEACT
#SAY
你并非胜方行会成员,或已领取过本次奖励!\
感谢参与攻沙,下次再接再厉!
BREAK

// 奖励领取逻辑
[@领取奖励]
#IF
equal G2 1 // G2=1,已发放过首攻奖励(后续攻沙)
ISGuildMember %H1
#ACT
give 元宝 3000 // 后续攻沙奖励3000元宝
SET H2 1 // 标记为已领取
SAVEVAR H2 ..\QuestDiary\变量保存.txt
SENDMSG 7 你成功领取攻沙奖励3000元宝,请注意查收背包! 250
BREAK
#ELSEIF
equal G2 0 // G2=0,未发放首攻奖励(首次攻沙)
ISGuildMember %H1
#ACT
give 元宝 10000 // 首次攻沙奖励10000元宝
SET H2 1 // 标记为已领取
SAVEVAR H2 ..\QuestDiary\变量保存.txt
SENDMSG 7 你成功领取首攻奖励10000元宝,请注意查收背包! 250
BREAK
#ELSEACT
SENDMSG 7 你无法领取本次奖励,请勿重复尝试! 250
BREAK

补充设置:NPC位置可在游戏中按F12调试面板查看坐标,在NPC文件开头添加“地图名 X坐标 Y坐标 沙巴克奖励使者”,即可在指定位置刷新NPC。

四、变量初始化与脚本生效设置

1. 变量初始化(避免首次运行异常)

在服务端QuestDiary文件夹新建“变量保存.txt”,写入以下内容,初始化全局变量:

G1=0 // 开区天数初始为0,开服后次日凌晨更新为1
G2=0 // 首攻奖励标记初始为0(未发放)
H1= // 胜方行会名初始为空
H2=0 // 玩家领取标记初始为0(未领取)

2. 脚本生效步骤

1. 保存所有文件修改,将变量保存.txt放入QuestDiary文件夹;2. 重启传奇服务端,确保变量和脚本加载成功;3. 开服后系统会自动统计天数,第4天19:00发布预告,19:55开启首次攻沙;4. 攻沙结束后,胜方行会成员可至NPC处领取对应元宝奖励。

五、常见问题排查(HERO引擎专属)

1. 自动攻沙不触发

检查AutoRunRobot.txt命令格式是否正确,无多余空格;确认RobotManage.txt中“large G1 3”条件,G1需≥4才触发;查看服务端日志,若提示命令错误,替换AddAttackSabukAll 0为“Gmexecute AddAttackSabuk 0”(部分HERO版本适配)。

2. 奖励领取异常

若胜方无法领取,检查QFunction-0.txt中@沙巴克攻城结束脚本是否添加,H1变量是否保存成功;若重复领取,确认H2变量是否正确保存,NPC脚本中CHECKVAR H2 < 1条件是否生效。

3. 变量丢失

确保SAVEVAR命令中的路径正确,服务端QuestDiary文件夹有读写权限;重启服务端前备份变量保存.txt,避免文件损坏导致变量重置。

六、实操补充要点

1. 攻沙时长可在服务端“沙巴克设置.txt”中调整,默认时长60分钟,按需修改;2. 元宝物品名需与服务端“物品数据库”一致,若元宝名为“绑定元宝”,需替换脚本中“元宝”为对应名称;3. 可在NPC脚本中添加奖励领取时限,如“CHECKTIME 24”限制24小时内领取,超时失效;4. 修改前备份所有涉及文件,避免脚本错误导致服务端异常。

综上,按上述脚本配置后,可实现HERO引擎全自动攻沙流程,搭配NPC差异化奖励发放,无需手动操作,精准匹配开区4天首攻及后续每日攻沙需求,脚本逻辑闭环,适配多数HERO引擎版本。