想在传奇单机版里打造一个自动刷怪的地图或无限刷怪的NPC?没问题!这种脚本是传奇引擎的核心功能之一,实现起来非常清晰。下面手把手教你写两种经典模式的脚本(使用常见引擎如HeroM2引擎语法)。
🎯核心思路&必备条件
基础:你已成功架设单机传奇服务端,会修改NPC脚本(通常位于X:\MirServer\Mir200\Envir\Market_Def\目录)。
机制依赖:
地图参数设置:目标刷怪地图的MapInfo.txt中可能需要设置FIGHT或FIGHT3等参数(使怪物死亡能触发脚本事件)。
怪物刷新命令:MONGENEX(指定坐标刷新)或ParamXParamY(随机坐标刷新)。
变量:用GLOBAL或本地个人变量记录波次、剩余怪物数等。
计时器:ADDTIMER+DELAYGOTO实现倒计时刷新下一波。
📌方案一:塔防波次模式(进图自动刷,打完等N秒刷新下一波)
[@Main]
if
act
第一次对话时初始化变量
MOVG1000;G100记录当前是第几波
MOVG1010;G101记录当前地图怪物数量(可选)
ADDTIMER15;5秒后触发第1次定时器
SENDMSG0"「无尽试炼场」已开启!勇士[$USERNAME]进入战场,30秒后第一波怪物即将来袭!"
BREAK
[@OnTimer1]
if
检查是否还在这张地图(比如地图编号5)
CHECKMAPNAME<$MAP>5
act
INCG1001;波数+1
SENDMSG0"「无尽试炼场」第<$STR(G100)>波怪物将在30秒后出现!准备迎战!"
DELAYGOTO30000@SpawnWave_1;30秒(30000毫秒)后执行刷怪命令
elseact
如果玩家不在指定地图,清理定时器防止内存泄漏
DELTIMER1
[@SpawnWave_1]
在地图5上刷20只祖玛雕像(Mon134),刷新区域是地图上的5050到100100的矩形范围
MONGENEX55050100100祖玛雕像20;(重要参数:地图名X1Y1X2Y2怪物名数量)
SENDMSG0"「无尽试炼场」第<$STR(G100)>波:20只凶猛的祖玛雕像已经刷新!"
设置地图参数为可触发怪物死亡事件(具体参数名看引擎文档)
MAP5FIGHT
开始监控这一波怪物是否清理完(通常需要配合插件或引擎的怪物死亡触发功能)
这里简化处理:假设5分钟后自动刷新下一波
ADDTIMER1300;5分钟(300秒)后触发[@OnTimer1]开启下一波循环
BREAK
说明:
脚本核心通过计时器[@OnTimer1]循环触发下一波。
DELAYGOTO用于倒计时后执行刷怪命令。
SENDMSG0是全服公告。
需要引擎支持怪物死亡触发全局脚本事件来更精确判断一波是否打完(实现方式引擎各异)。
📌方案二:无限补怪模式(点NPC刷怪,保持地图永远有50只怪)
[@Main]
欢迎来到「无限杀戮场」!\
我可以召唤无尽的敌人让你磨练技艺。\
每次召唤会确保地图上<有50只怪物/SCOLOR=249>,打完会自动补充!\
<开始无尽的战斗吧!/@StartSpawn>\
<离开战场/@exit>
[@StartSpawn]
if
第一次启动,初始化全局变量
假设用G102记录目标数量(50),G103记录当前地图怪物数(启动时为0)
EQUALG1020
act
MOVG10250;目标怪物数量=50
MOVG1030;当前怪物数量=0
ADDTIMER210;每10秒执行一次补怪检查(@CheckSpawn)
SENDMSG0"勇士[$USERNAME]开启了「无限杀戮场」,地图怪物目标数:50只!死亡即刻补充!"
GOTO@DoSpawn_First
BREAK
[@DoSpawn_First]
第一次直接刷满50只
MONGENEX<MAP><X><Y><X+100><$Y+100>魔龙力士50
MOVG10350;更新当前怪物数=50
BREAK
[@CheckSpawn]
if
CHECKMAPNAME<$MAP>5;确保玩家还在5号地图
(重要!需要引擎插件:每当地图5有怪物死亡,G103自动减1)
(这里简化逻辑:每10秒检查一次是否需要补怪)
LARGEG102G103;如果目标数>当前数
act
计算需要补充的数量
MOVM1<$STR(G102)>
DECM1<$STR(G103)>
SENDMSG6"检测到怪物数量不足!正在补充<$STR(M1)>只..."
刷怪
MONGENEX<MAP><X><Y><X+100><Y+100>魔龙力士<STR(M1)>
MOVG103<$STR(G102)>;更新当前怪物数=目标数
elseact
BREAK
🔧关键实现细节&注意事项
地图参数(FIGHT/FIGHT3):
必须在MapInfo.txt中为刷怪地图设置FIGHT或FIGHT3标志(具体参数名看引擎手册)。
作用:让怪物死亡时能触发特定的全局脚本(QManage.txt或特定NPC脚本)。
精确检测怪物数量与死亡:
这是动态补怪模式的核心难点。
通用方法:在QManage.txt或登录脚本里加入怪物死亡触发。
[@OnKillMob]
假设地图5
#IF
EQUAL<$MAP>5
每次怪物死亡,全局变量G103减1
#ACT
DECG1031
插件依赖:部分引擎需安装特定插件才能捕获该事件(如翎风引擎等)。
变量作用域:
GLOBAL(GXXX):全服共享,适合记录波次(G100)和怪物总数(G103)。
LOCAL(AXXX/PXXX):玩家私有,记录玩家个人进入波次时间等。
怪物刷新位置:
MONGENEX控制坐标点刷新(适合固定路径)。
地图X1Y1X2Y2定义矩形区域随机刷怪。
安全性:
玩家退出地图时,用[@PlayExitMap]或[@PlayLeaveMap]清除定时器(DELTIMERX)避免残留。
🎮两种模式特色对比
功能塔防波次模式无限补怪模式
触发方式玩家进入地图自动启动点击NPC对话启动
节奏控制每波间隔固定时间怪物死亡后自动实时补充
怪物数量每波固定数量动态维持设定数量(如50只)
游戏体验类似TD游戏,有明确波次和喘息期持续高压,类似“生存模式”
实现复杂度★★☆☆☆(中等)★★★☆☆(较高,需怪物死亡计数)
适合场景副本、守卫任务练功房、挂机地图、资源挑战
✅部署步骤
备份文件:修改前备份MapInfo.txtNPC脚本文件QManage.txt。
编辑地图参数:在MapInfo.txt里为刷怪地图加上[FIGHT]或FIGHT3。
编写NPC脚本:将方案1或方案2代码保存为独立的NPC脚本文件。
添加全局触发(补怪模式):在QManage.txt中添加[@OnKillMob]逻辑动态刷新计数。
重启服务端:加载修改后的配置。
进游戏测试:观察刷怪逻辑是否符合预期。
💡只要理解“计时器+全局变量+刷怪命令+死亡计数”这几个核心机制,就能轻松构建属于自己的传奇刷怪战场/手试试吧!
🎯核心思路&必备条件
基础:你已成功架设单机传奇服务端,会修改NPC脚本(通常位于X:\MirServer\Mir200\Envir\Market_Def\目录)。
机制依赖:
地图参数设置:目标刷怪地图的MapInfo.txt中可能需要设置FIGHT或FIGHT3等参数(使怪物死亡能触发脚本事件)。
怪物刷新命令:MONGENEX(指定坐标刷新)或ParamXParamY(随机坐标刷新)。
变量:用GLOBAL或本地个人变量记录波次、剩余怪物数等。
计时器:ADDTIMER+DELAYGOTO实现倒计时刷新下一波。
📌方案一:塔防波次模式(进图自动刷,打完等N秒刷新下一波)
[@Main]
if
act
第一次对话时初始化变量
MOVG1000;G100记录当前是第几波
MOVG1010;G101记录当前地图怪物数量(可选)
ADDTIMER15;5秒后触发第1次定时器
SENDMSG0"「无尽试炼场」已开启!勇士[$USERNAME]进入战场,30秒后第一波怪物即将来袭!"
BREAK
[@OnTimer1]
if
检查是否还在这张地图(比如地图编号5)
CHECKMAPNAME<$MAP>5
act
INCG1001;波数+1
SENDMSG0"「无尽试炼场」第<$STR(G100)>波怪物将在30秒后出现!准备迎战!"
DELAYGOTO30000@SpawnWave_1;30秒(30000毫秒)后执行刷怪命令
elseact
如果玩家不在指定地图,清理定时器防止内存泄漏
DELTIMER1
[@SpawnWave_1]
在地图5上刷20只祖玛雕像(Mon134),刷新区域是地图上的5050到100100的矩形范围
MONGENEX55050100100祖玛雕像20;(重要参数:地图名X1Y1X2Y2怪物名数量)
SENDMSG0"「无尽试炼场」第<$STR(G100)>波:20只凶猛的祖玛雕像已经刷新!"
设置地图参数为可触发怪物死亡事件(具体参数名看引擎文档)
MAP5FIGHT
开始监控这一波怪物是否清理完(通常需要配合插件或引擎的怪物死亡触发功能)
这里简化处理:假设5分钟后自动刷新下一波
ADDTIMER1300;5分钟(300秒)后触发[@OnTimer1]开启下一波循环
BREAK
说明:
脚本核心通过计时器[@OnTimer1]循环触发下一波。
DELAYGOTO用于倒计时后执行刷怪命令。
SENDMSG0是全服公告。
需要引擎支持怪物死亡触发全局脚本事件来更精确判断一波是否打完(实现方式引擎各异)。
📌方案二:无限补怪模式(点NPC刷怪,保持地图永远有50只怪)
[@Main]
欢迎来到「无限杀戮场」!\
我可以召唤无尽的敌人让你磨练技艺。\
每次召唤会确保地图上<有50只怪物/SCOLOR=249>,打完会自动补充!\
<开始无尽的战斗吧!/@StartSpawn>\
<离开战场/@exit>
[@StartSpawn]
if
第一次启动,初始化全局变量
假设用G102记录目标数量(50),G103记录当前地图怪物数(启动时为0)
EQUALG1020
act
MOVG10250;目标怪物数量=50
MOVG1030;当前怪物数量=0
ADDTIMER210;每10秒执行一次补怪检查(@CheckSpawn)
SENDMSG0"勇士[$USERNAME]开启了「无限杀戮场」,地图怪物目标数:50只!死亡即刻补充!"
GOTO@DoSpawn_First
BREAK
[@DoSpawn_First]
第一次直接刷满50只
MONGENEX<MAP><X><Y><X+100><$Y+100>魔龙力士50
MOVG10350;更新当前怪物数=50
BREAK
[@CheckSpawn]
if
CHECKMAPNAME<$MAP>5;确保玩家还在5号地图
(重要!需要引擎插件:每当地图5有怪物死亡,G103自动减1)
(这里简化逻辑:每10秒检查一次是否需要补怪)
LARGEG102G103;如果目标数>当前数
act
计算需要补充的数量
MOVM1<$STR(G102)>
DECM1<$STR(G103)>
SENDMSG6"检测到怪物数量不足!正在补充<$STR(M1)>只..."
刷怪
MONGENEX<MAP><X><Y><X+100><Y+100>魔龙力士<STR(M1)>
MOVG103<$STR(G102)>;更新当前怪物数=目标数
elseact
BREAK
🔧关键实现细节&注意事项
地图参数(FIGHT/FIGHT3):
必须在MapInfo.txt中为刷怪地图设置FIGHT或FIGHT3标志(具体参数名看引擎手册)。
作用:让怪物死亡时能触发特定的全局脚本(QManage.txt或特定NPC脚本)。
精确检测怪物数量与死亡:
这是动态补怪模式的核心难点。
通用方法:在QManage.txt或登录脚本里加入怪物死亡触发。
[@OnKillMob]
假设地图5
#IF
EQUAL<$MAP>5
每次怪物死亡,全局变量G103减1
#ACT
DECG1031
插件依赖:部分引擎需安装特定插件才能捕获该事件(如翎风引擎等)。
变量作用域:
GLOBAL(GXXX):全服共享,适合记录波次(G100)和怪物总数(G103)。
LOCAL(AXXX/PXXX):玩家私有,记录玩家个人进入波次时间等。
怪物刷新位置:
MONGENEX控制坐标点刷新(适合固定路径)。
地图X1Y1X2Y2定义矩形区域随机刷怪。
安全性:
玩家退出地图时,用[@PlayExitMap]或[@PlayLeaveMap]清除定时器(DELTIMERX)避免残留。
🎮两种模式特色对比
功能塔防波次模式无限补怪模式
触发方式玩家进入地图自动启动点击NPC对话启动
节奏控制每波间隔固定时间怪物死亡后自动实时补充
怪物数量每波固定数量动态维持设定数量(如50只)
游戏体验类似TD游戏,有明确波次和喘息期持续高压,类似“生存模式”
实现复杂度★★☆☆☆(中等)★★★☆☆(较高,需怪物死亡计数)
适合场景副本、守卫任务练功房、挂机地图、资源挑战
✅部署步骤
备份文件:修改前备份MapInfo.txtNPC脚本文件QManage.txt。
编辑地图参数:在MapInfo.txt里为刷怪地图加上[FIGHT]或FIGHT3。
编写NPC脚本:将方案1或方案2代码保存为独立的NPC脚本文件。
添加全局触发(补怪模式):在QManage.txt中添加[@OnKillMob]逻辑动态刷新计数。
重启服务端:加载修改后的配置。
进游戏测试:观察刷怪逻辑是否符合预期。
💡只要理解“计时器+全局变量+刷怪命令+死亡计数”这几个核心机制,就能轻松构建属于自己的传奇刷怪战场/手试试吧!

