如何编写传奇限制宠物数量的脚本?

来源: 作者: 点击:
在 sky 引擎(HeroM2)的传奇 2 私人服务器中,若想通过脚本限制玩家召唤的宠物数量(比如无论买多少召唤卷,只能召唤 1 个宝宝),关键在于通过脚本命令检测当前已召唤的宠物数量,再根据数量判断是否允许召唤新宠物。下面结合你的需求具体说说编写方法。
首先,要明确 HeroM2 引擎中用于检测宠物数量的命令。这类命令通常是 “CheckFollowCount”,它的作用是返回玩家当前跟随的宠物(包括召唤兽、宝宝等)数量。比如 “CheckFollowCount < 1” 就表示 “当前宠物数量小于 1”,正好符合你在 #IF 条件中需要的判断逻辑。
接下来,完善召唤宠物的脚本结构。结合你提供的基础代码,完整的脚本可以这样写:
[@召唤宝宝]
#IF
CheckFollowCount < 1
#ACT
@recallmob 宝宝
SendMsg 6 成功召唤宝宝!
break
#ELSE
SendMsg 6 最多只能召唤 1 个宝宝哦!
break
这段代码的逻辑是:当玩家使用召唤卷时,先检测当前宠物数量是否小于 1。如果是,就执行召唤命令(@recallmob 宝宝)并提示成功;如果已经有 1 个或多个宠物,就提示无法继续召唤。
需要注意 “CheckFollowCount” 命令的参数范围。在 HeroM2 引擎中,这个命令默认检测的是所有跟随玩家的 “怪物型宠物”(包括召唤兽、雇佣的宝宝等),正好符合你对 “宠物” 的定义。如果你的私人服务器中存在其他类型的跟随单位(如 NPC 伙伴),可能需要用 “CheckMonsterCount” 命令进一步筛选,比如 “CheckMonsterCount 宝宝 1”(检测名为 “宝宝” 的怪物数量是否小于 1),确保只统计目标宠物。
另外,要将这个脚本与商铺的宠物召唤卷关联起来。在商铺脚本中,找到购买宠物召唤卷后触发的命令,将其指向上面编写的 [@召唤宝宝] 标签。比如商铺中原来的代码可能是:
[@购买召唤卷]
#ACT
TakeItem 元宝 10
GiveItem 宠物召唤卷 1
SendMsg 6 购买成功,使用召唤卷召唤宝宝吧!
这时需要在 “GiveItem” 之后添加触发召唤的逻辑,或者让召唤卷的使用脚本直接调用 [@召唤宝宝],比如:
[@使用宠物召唤卷]
#CALL [召唤脚本.txt] @召唤宝宝
这样玩家使用召唤卷时,就会先执行数量检测,再决定是否召唤。
测试脚本时,可以按以下步骤验证:召唤 1 个宝宝后,尝试再次使用召唤卷,看是否会提示 “最多只能召唤 1 个宝宝”;如果解散当前宝宝(比如用 @unrecallmob 命令),再使用召唤卷,看是否能重新召唤。如果出现检测失效的情况,可能是命令名称记错了(比如 HeroM2 中部分版本写作 “CheckFollow” 而非 “CheckFollowCount”),可以查阅引擎自带的 “脚本命令手册” 确认正确命令。
还有一种特殊情况:如果你的 “宝宝” 属于 “英雄” 或 “分身” 类型,而非普通怪物宠物,可能需要用专门的命令检测,比如 “CheckHeroExist”(检测英雄是否存在)。这时候需要将判断条件改为 “CheckHeroExist 0”(0 代表不存在),再执行召唤命令。
最后,修改完脚本后要重启服务器,让设置生效。如果发现召唤逻辑仍有问题,可以在脚本中加入更多提示信息,比如 “SendMsg 6 当前宠物数量:<$FollowCount>”,通过显示实际数量来排查检测命令是否生效。
总的来说,编写限制宠物数量的脚本,核心是用 “CheckFollowCount” 检测当前数量,再通过条件判断控制召唤命令的执行。按照上述结构调整命令和关联逻辑,就能实现 “最多召唤 1 个宝宝” 的效果。