传奇地图怪物数量查询与自动刷新脚本命令教程
一、GetMapMonCnt地图怪物数量NPC命令传奇脚本新增专属地图怪物数量获取NPC命令,可精准查询指定地图内多种怪物的实时存活数量,支持批量查询不同怪物数据,适配各类地图刷怪监控、场景触发、玩法定制等传奇版本开发需求。1.1 命令语法格式GetMapMonCnt 地图名 怪物名1|怪物名2|怪…
一、GetMapMonCnt地图怪物数量NPC命令
传奇脚本新增专属地图怪物数量获取NPC命令,可精准查询指定地图内多种怪物的实时存活数量,支持批量查询不同怪物数据,适配各类地图刷怪监控、场景触发、玩法定制等传奇版本开发需求。
1.1 命令语法格式
GetMapMonCnt 地图名 怪物名1|怪物名2|怪物名3... 返回怪物数量的变量1|变量2|变量3
1.2 脚本实操示例
[@main]
#ACT
GetMapMonCnt d605 黑色恶蛆|蜈蚣|邪恶钳虫 M_黑色恶蛆|M_蜈蚣|M_邪恶钳虫
SendMsg 6 黑色恶蛆:<$STR(M_黑色恶蛆)>,蜈蚣:<$STR(M_蜈蚣)>,邪恶钳虫:<$STR(M_邪恶钳虫)>
#SAY
黑色恶蛆:<$STR(M_黑色恶蛆)>,蜈蚣:<$STR(M_蜈蚣)>,邪恶钳虫:<$STR(M_邪恶钳虫)>
二、地图怪物数量不足自动刷新脚本配置
借助传奇地图杀怪触发机制,搭配怪物数量检测功能,可实现地图怪物数量低于设定值时自动刷新怪物,解决地图空怪、刷怪断层、场景活跃度不足等问题,适配石墓、猪洞、复古地图等各类打怪场景优化。
2.1 触发规则设置
[ZD001|D717 石墓七层1] KillFUNC(1)
2.2 地图怪物数量专属变量说明
新增全局怪物数量获取变量:<$MapMonCnt(地图名.怪物名)>,可直接调用读取指定地图指定怪物数量,返回值规则清晰,方便脚本逻辑编写:
1. 地图无效时,统一返回-1;
2. 怪物无效或未参与数量统计时,统一返回-2;
3. 仅怪物表中StatMask参数包含1的怪物,会被纳入数量统计,使用前需核对怪物表配置。
2.3 怪物数量检测&自动刷新完整脚本
[@KillPlayMon1]
#ACT
;获取当前杀死怪物地图的怪物数到 S怪物数量 变量上
MOV S怪物数量 <$MapMonCnt(<$CurrentMap>.<$Param(0)>)>
#IF
;检测 此怪数量小于10就执行刷新
CompVal <$STR(S怪物数量)> < 10 int
#ACT
;用于统计刷新了多少只,看个人需要是否统计
INC G刷怪 10
;利用延迟跳转 传递 怪物名怪物数地图
DelayCall 1000 ~MobCurMob <$Param(0)> <$MapMonCnt(<$CurrentMap>.<$Param(0)>)> <$CurrentMap>
[~MobCurMob]
#ACT
;用GM命令执行刷怪 ,也可以用其他命令 此处只简单举列
GMEXECUTE MOB <$Param(0)> 10
;展示 当前地图 该怪物 剩余多少只,总刷新了多少只
sendmsg 0 当前地图【<$STR(S_CONTEXT[2])>】刷了【<$STR(S_CONTEXT[0])>】怪物【<$STR(S_CONTEXT[1])>】只,当前总刷新【<$STR(G刷怪)>】只
三、DelayCall延迟命令参数传输扩展
原版传奇DelayCall延迟跳转命令存在参数覆盖问题,重复执行脚本时易出现变量数据错乱、逻辑失效等BUG。本次对该命令进行功能扩展,支持5个上下文参数传输,彻底解决变量覆盖问题,提升脚本运行稳定性。
3.1 原版命令错误用例(参数覆盖问题)
[@重复执行]
#act
Mov S_暂存变量 xxxxx
DelayCall 1000 @delayCall
[@delayCall]
#act
; “S_暂存变量”此时很可能已被其他用到“S_暂存变量”的操作所覆盖(特别是对于重复执行的字段),造成错误结果
MapMove <$STR(S_暂存变量)>
问题核心:通用临时变量在多线程、重复触发场景中极易被重置覆盖,导致延迟执行后的脚本读取错误数据。
3.2 扩展后正确使用方法
扩展后新增固定上下文变量 <$STR(S_CONTEXT[0~4])>,专属用于延迟命令参数传输,支持0-4共5个可选参数,独立存储不被覆盖,适配各类复杂延迟脚本逻辑。
; 随后<$STR(S_CONTEXT[0~4])>可以取得参数的内容,此组变量用于传输参数内容,此变量为固定变量,仅可修改[0-4]获取内容
DelayCall 1000 @delayCall <$STR(S_暂存参数0)> 参数1 参数2 参数3 参数4 // 参数0~4为可选项,可以是任意变量
[@delayCall]
#act
; <$STR(S_CONTEXT[0])>此时等于“<$STR(S_暂存参数0)>”,<$STR(S_CONTEXT[1])>等于“参数1”...
MapMove <$STR(S_CONTEXT[0])>
四、总结
本次更新的传奇地图怪物数量查询命令、自动刷怪脚本、延迟命令扩展功能,完美适配传奇复古版本、微变版本、专属版本的开发调试需求,可灵活用于地图活跃度控制、定点刷怪、智能场景触发、脚本逻辑优化等场景,有效解决传统传奇脚本刷怪逻辑单一、参数错乱、数据统计不准等痛点问题。


