==============================================================================
增加获取地图怪物数量的NPC命令:GetMapMonCnt
地图名 怪物名1|怪物名2|怪物名3...
返回怪物数量的变量1|变量2|变量3
==============================================================================
举例:
[@main]
#ACT
GetMapMonCnt
d605 黑色恶蛆|蜈蚣|邪恶钳虫 M_黑色恶蛆|M_蜈蚣|M_邪恶钳虫
SendMsg 6
黑色恶蛆:<$STR(M_黑色恶蛆)>,蜈蚣:<$STR(M_蜈蚣)>,邪恶钳虫:<$STR(M_邪恶钳虫)>
#SAY
黑色恶蛆:<$STR(M_黑色恶蛆)>,蜈蚣:<$STR(M_蜈蚣)>,邪恶钳虫:<$STR(M_邪恶钳虫)>
==============================================================================
检测地图X个怪物的数量不足几只时刷新
利用地图杀怪触发
[ZD001|D717 石墓七层1]
KillFUNC(1)
==============================================================================
添加获取地图怪物数量变量:<$MapMonCnt(地图名.怪物名)>,地图无效返回-1,怪物无效或不参与数量统计返回-2,
注意只有怪物表的StatMask包含1,才会统计该怪物的数量,需要才加,例:
==============================================================================
[@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命令,支持5个上下文参数传输,防止参数被覆盖
错误用例:
[@重复执行]
#act
Mov
S_暂存变量 xxxxx
DelayCall 1000 @delayCall
[@delayCall]
#act
;
“S_暂存变量”此时很可能已被其他用到“S_暂存变量”的操作所覆盖(特别是对于重复执行的字段),造成错误结果
MapMove
<$STR(S_暂存变量)>
==============================================================================
扩展后的正确用例:
;
随后<$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])>