当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇限制召唤宠物数量脚本实现(HeroM2/Sky引擎)

热度:
核心思路与检测命令

在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等变体,请查阅引擎说明书。
[顶部]