核心思路与检测命令
在HeroM2(Sky)引擎中,要限制宠物数量,需通过检测人物当前召唤的宝宝数量来实现。引擎提供了CHECKCALLMOB命令,用于检测指定怪物名是否已被当前人物召唤。其语法为:
CHECKCALLMOB怪物名称
此命令可检测指定名称的宝宝是否已被召唤。返回结果为真(已召唤)或假(未召唤)。你需要将其与你的宝宝名称(如“神兽”、“骷髅”、“虎卫”)结合使用,而不是检测一个通用的数量变量。
完整脚本实现方案
以下是用于商铺宠物召唤卷轴的完整脚本范例,将其写入你的NPC脚本或QManage.txt登录脚本中。假设你的宠物怪物名为“神兽”。
方案一:在NPC对话脚本中直接限制
在商铺购买并使用道具触发的脚本段中,加入检测逻辑。
[@StdModeFuncX];此处的X对应宠物召唤卷轴的StdMode值,在物品数据库中查看
#IF
CHECKCALLMOB神兽
#ACT
MESSAGEBOX你已经有神兽了,无法再召唤!
BREAK
#IF
#ACT
RECALLMOB神兽1180
GIVE宠物召唤卷轴-1;使用卷轴
SENDMSG7神兽召唤成功,持续180分钟!
BREAK
脚本解析:
1.[@StdModeFuncX]是双击使用物品时触发的标签,X需与实际物品的StdMode字段对应。
2.CHECKCALLMOB神兽检测是否已存在名为“神兽”的宝宝。
3.如果检测为真(已存在),则弹出提示MESSAGEBOX并BREAK中断脚本,不会执行后续的召唤命令。
4.如果检测为假(不存在),则执行RECALLMOB召唤命令,并扣除一个卷轴。
方案二:在登录脚本中加入全局检测
在D:\MirServer\Mir200\Envir\MapQuest_def\QManage.txt中加入检测,确保下线、上线后机制依然生效。
[@Login]
#IF
CHECKCALLMOB神兽
#ACT
RECALLMOBEX神兽
BREAK
此脚本在玩家每次登录时运行,如果检测到已召唤“神兽”,则会尝试重新加载这个宝宝,避免因下线导致的逻辑错误。
引擎关键命令说明
•CHECKCALLMOB怪物名:核心检测命令。检测人物当前是否已召唤了指定名称的怪物作为宝宝。返回布尔值。
•RECALLMOB怪物名数量时长:召唤命令。例如RECALLMOB神兽1180表示召唤1只神兽,持续180分钟。
•RECALLMOBEX怪物名:重新召唤命令。在宝宝因地图切换等原因消失后,可用此命令尝试重新召唤。
•MESSAGEBOX提示信息:弹出提示框告知玩家。这是HeroM2引擎命令,其他引擎可能为SENDMSG6。
常见问题与排查
1.检测无效:确认你的宝宝在Monster.DB数据库中的名字是否与脚本中CHECKCALLMOB后的名字完全一致(包括空格、符号)。最好直接复制数据库中的怪物名称。
2.卷轴使用后不扣除:确保在召唤成功后,有GIVE宠物召唤卷轴-1这样的扣除物品命令。
3.多类型宠物限制:如果你有“神兽”和“圣兽”两种宝宝,想各自独立限制数量,只需重复检测逻辑:
[@StdModeFuncX]
#IF
CHECKCALLMOB神兽
#ACT
MESSAGEBOX你已经有神兽了!
BREAK
#IF
CHECKCALLMOB圣兽
#ACT
MESSAGEBOX你已经有圣兽了!
BREAK
#ACT
RECALLMOB神兽1180;或圣兽
GIVE宠物召唤卷轴-1
4.引擎兼容性:CHECKCALLMOB是HeroM2引擎的标准命令。如果你的引擎是GOM/GEE,该命令同样有效,但部分老版本可能不支持,需使用CHECKCALLMOBEX等变体,请查阅引擎说明书。
在HeroM2(Sky)引擎中,要限制宠物数量,需通过检测人物当前召唤的宝宝数量来实现。引擎提供了CHECKCALLMOB命令,用于检测指定怪物名是否已被当前人物召唤。其语法为:
CHECKCALLMOB怪物名称
此命令可检测指定名称的宝宝是否已被召唤。返回结果为真(已召唤)或假(未召唤)。你需要将其与你的宝宝名称(如“神兽”、“骷髅”、“虎卫”)结合使用,而不是检测一个通用的数量变量。
完整脚本实现方案
以下是用于商铺宠物召唤卷轴的完整脚本范例,将其写入你的NPC脚本或QManage.txt登录脚本中。假设你的宠物怪物名为“神兽”。
方案一:在NPC对话脚本中直接限制
在商铺购买并使用道具触发的脚本段中,加入检测逻辑。
[@StdModeFuncX];此处的X对应宠物召唤卷轴的StdMode值,在物品数据库中查看
#IF
CHECKCALLMOB神兽
#ACT
MESSAGEBOX你已经有神兽了,无法再召唤!
BREAK
#IF
#ACT
RECALLMOB神兽1180
GIVE宠物召唤卷轴-1;使用卷轴
SENDMSG7神兽召唤成功,持续180分钟!
BREAK
脚本解析:
1.[@StdModeFuncX]是双击使用物品时触发的标签,X需与实际物品的StdMode字段对应。
2.CHECKCALLMOB神兽检测是否已存在名为“神兽”的宝宝。
3.如果检测为真(已存在),则弹出提示MESSAGEBOX并BREAK中断脚本,不会执行后续的召唤命令。
4.如果检测为假(不存在),则执行RECALLMOB召唤命令,并扣除一个卷轴。
方案二:在登录脚本中加入全局检测
在D:\MirServer\Mir200\Envir\MapQuest_def\QManage.txt中加入检测,确保下线、上线后机制依然生效。
[@Login]
#IF
CHECKCALLMOB神兽
#ACT
RECALLMOBEX神兽
BREAK
此脚本在玩家每次登录时运行,如果检测到已召唤“神兽”,则会尝试重新加载这个宝宝,避免因下线导致的逻辑错误。
引擎关键命令说明
•CHECKCALLMOB怪物名:核心检测命令。检测人物当前是否已召唤了指定名称的怪物作为宝宝。返回布尔值。
•RECALLMOB怪物名数量时长:召唤命令。例如RECALLMOB神兽1180表示召唤1只神兽,持续180分钟。
•RECALLMOBEX怪物名:重新召唤命令。在宝宝因地图切换等原因消失后,可用此命令尝试重新召唤。
•MESSAGEBOX提示信息:弹出提示框告知玩家。这是HeroM2引擎命令,其他引擎可能为SENDMSG6。
常见问题与排查
1.检测无效:确认你的宝宝在Monster.DB数据库中的名字是否与脚本中CHECKCALLMOB后的名字完全一致(包括空格、符号)。最好直接复制数据库中的怪物名称。
2.卷轴使用后不扣除:确保在召唤成功后,有GIVE宠物召唤卷轴-1这样的扣除物品命令。
3.多类型宠物限制:如果你有“神兽”和“圣兽”两种宝宝,想各自独立限制数量,只需重复检测逻辑:
[@StdModeFuncX]
#IF
CHECKCALLMOB神兽
#ACT
MESSAGEBOX你已经有神兽了!
BREAK
#IF
CHECKCALLMOB圣兽
#ACT
MESSAGEBOX你已经有圣兽了!
BREAK
#ACT
RECALLMOB神兽1180;或圣兽
GIVE宠物召唤卷轴-1
4.引擎兼容性:CHECKCALLMOB是HeroM2引擎的标准命令。如果你的引擎是GOM/GEE,该命令同样有效,但部分老版本可能不支持,需使用CHECKCALLMOBEX等变体,请查阅引擎说明书。

