当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇架设单机刷怪NPC脚本进地图自动波次刷怪与点NPC无限补满刷怪写法教学

热度:
一、通用说明
以下以LEG/GOM类引擎为例,MonGen命令格式为:
MonGen地图名XY怪物名称数量等级
部分引擎支持MONGENEX地图名XY怪物名范围数量…自行替换即可。
地图名填MapInfo.txt里对应的地图标识(如D717、TAFA1),坐标取你地图上合适的刷怪点。
怪物名称必须与Monsters.DB完全一致,含空格都会失效。
脚本改完需重启GameGate和DBserver或整个M2使其加载。

二、模式一:进地图自动刷第一波,杀完等N秒刷下一波(塔防式)
实现思路是用QManage.txt的[@IntoMap]或玩家传送时触发首波,机器人或定时器检测地图怪物归零后延时刷下一波。

①传送NPC(Market_Def目录下新建试炼传送.txt)

[@main]
欢迎来到试炼之地\\
<进入试炼/@gomap>

[@gomap]
#IF
#ACT
MAPMOVETAFA13030;传送到刷怪地图TAFA1坐标3030
SENDMSG6第一波怪物将在5秒后刷新!
DELAYGOTO5000@Wave1
BREAK


②第一波及后续波次(可在同一NPC脚本或QuestDiary自建文件,推荐放QuestDiary\试炼\试炼刷怪.txt)

;============第一波============
[@Wave1]
#IF
#ACT
PARAM1TAFA1
PARAM250
PARAM350
MonGen白野猪500
SENDMSG0第1波怪物已出现!击杀后10秒刷新下一波!
SETONTimer11000;开启定时器1每秒检测
BREAK

;============定时器检测本波怪是否死光============
;QManage.txt或本文件顶部需声明[@OnTimer1]
[@OnTimer1]
#IFCHECKMAPMONCOUNTTAFA1=0;地图内怪物数为0
#ACT
SETOFFTIMER1;先关定时器
DELAYGOTO10000@Wave2;等10秒刷第二波
BREAK
#ELSEACT
BREAK

;============第二波示例============
[@Wave2]
#IF
#ACT
MonGenTAFA15050祖玛卫士500
SENDMSG0第2波怪物已出现!
SETONTimer11000
BREAK

如需更多波次复制[@Wave2]改为[@Wave3]以此类推,怪物种类和数量自行改。
CHECKMAPMONCOUNT是GOM/LEG常用判断,老引擎若不支持可用CheckMonMap配合变量代替。

三、模式二:点NPC启动无穷刷怪,打掉缺多少补多少(维持满50只)
思路是点NPC开一个玩家定时器,每秒/数秒检测地图内该怪物数量,小于设定值时一次性补到满。

NPC脚本(Market_Def\无限刷怪使者-0.txt对应使者NPC绑定此文件)

[@main]
无尽刷怪使者:点启动将保持场上50只半兽人,打多少补多少\\
<启动刷怪/@StartFix>\\
<停止刷怪/@StopFix>

[@StartFix]
#IF
#ACT
VARN$MaxMon=50
VARN$NowCount=0
SETONTIMER22000;每2秒检测一次,可改3000等减少负载
SENDMSG6无限刷怪已开启,保持50只半兽人!
BREAK

[@StopFix]
#IF
#ACT
SETOFFTIMER2
SENDMSG6已关闭无限刷怪!
BREAK

;============定时器2检测并补怪============
[@OnTimer2]
#IF
#ACT
VARN$NowCount=MAPMONCOUNTTAFA1;获取地图TAFA1当前怪物总数(同名怪建议单独地图)
#IFN$NowCount<50
#ACT
VARN$Need=50-N$NowCount
;循环补怪或直接用MonGen刷一批,推荐直接刷N$Need只
;部分引擎不支持变量数量则写固定值如MonGenTAFA15050半兽人200多刷几次
MonGenTAFA15050半兽人<$STR(N$Need)>0
BREAK
#ELSEACT
BREAK

若你的引擎MonGen不支持变量数量,把检测补怪那段改成:

#IFMAPMONCOUNTTAFA1<50
#ACT
MonGenTAFA15050半兽人100

让它每次补10只,反复检测几次自然凑满50,效果一样。

四、常见排错
•怪物不刷:查地图名/坐标/怪物名是否正确,MonGen.txt原文件刷怪格式别和脚本命令混淆。

•定时器不触发:确认QManage.txt或本脚本段里有对应[@OnTimerX],且SETONTIMER数字一致。

-补怪越刷越多:确保检测条件是"<设定值"而不是"<=",且不要在点NPC时重复SETONTIMER而不先检查是否已开启。
•离开地图想停刷:在[@OnTimer2]加#IFISONMAPTAFA1条件,不在则SETOFFTIMER2。
[顶部]