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

