sky引擎传奇2宠物数量限制脚本写法 召唤卷限召1只教程

来源: 作者: 点击:
本人在传奇2架设过程中,给商铺添加了宠物召唤卷,初衷是让玩家购买召唤卷后召唤1只宝宝辅助战斗,但实际测试发现,玩家只要购买10张召唤卷,就能召唤10只宝宝,严重影响游戏平衡,现在急需解决这个问题,核心需求就是编写脚本,实现不管玩家买多少张宠物召唤卷,同一时间只能召唤1只宠物,多买的召唤卷无法额外召唤,使用的是sky引擎,也就是大家常说的HeroM2引擎,重点解决脚本中#IF check(?) < 1 里check括号内该填写什么的问题,全程直奔主题,只讲实操写法和注意事项。

首先明确核心问题,目前的宠物召唤卷脚本没有添加宠物数量判断,所以玩家每使用一张召唤卷,就会触发一次@recallmob 宝宝命令,召唤出一只新的宠物,没有数量限制。而我的需求是限制玩家同时拥有的宠物数量为1只,也就是说,只要玩家当前已经召唤了1只宝宝,不管再使用多少张召唤卷,都无法召唤出第二只,只有当玩家的宝宝死亡、消失后,才能再次使用召唤卷召唤1只,脚本的关键就是在#IF判断里添加“当前玩家拥有的宠物数量”的检测条件,也就是check括号内需要填写的参数。

重点说明,我使用的是sky引擎(HeroM2),不同引擎的脚本命令、判断参数差异很大,所以以下写法仅适用于该引擎,其他引擎的写法不通用,避免大家混淆。先给大家明确结论,#IF check(?) < 1 里,check括号内需要填写的参数是“PetCount”,完整的判断语句就是#IF check(PetCount) < 1,这个参数的作用就是检测当前玩家所拥有的宠物数量,括号内无需添加任何多余符号,直接填写PetCount即可。

很多新手可能会疑惑,为什么是PetCount,这个参数是sky引擎(HeroM2)内置的宠物数量检测参数,专门用于判断玩家当前召唤的宠物数量,类似法师的诱惑之光召唤宝宝,默认也有数量限制,这个参数就是用于检测这类召唤类宝宝的数量,不管是通过召唤卷召唤,还是技能召唤,都能通过这个参数检测到当前玩家拥有的宝宝总数,正好适配我们的需求。

接下来给大家完整讲解整个宠物召唤卷的脚本写法,结合我目前已有的脚本片段,补充完整,确保大家能直接复制使用,无需额外修改过多内容。首先,宠物召唤卷的脚本核心分为两部分,一部分是#IF判断条件,另一部分是#ACT执行命令,我们的重点就是完善#IF判断,添加宠物数量检测,避免多只召唤。

完整的脚本写法如下,先写判断条件,#IF check(PetCount) < 1,这里的check(PetCount)就是检测当前玩家的宠物数量,< 1 就是判断宠物数量小于1只,也就是玩家当前没有召唤任何宝宝;然后添加第二个判断条件,checkitem 宠物召唤卷 1,这个判断是检测玩家背包内是否有1张宠物召唤卷,只有同时满足“没有宠物”和“有召唤卷”这两个条件,才能执行后续的召唤命令,避免玩家没有召唤卷也能召唤宝宝,或者有召唤卷但已有宠物仍能召唤的情况。

判断条件写完后,就是#ACT执行命令,首先是@take 宠物召唤卷 1,作用是扣除玩家背包内的1张宠物召唤卷,这是使用召唤卷的核心步骤,必须添加,否则玩家使用召唤卷后,召唤卷不会减少,相当于无限召唤;然后是@recallmob 宝宝,这个命令是召唤宝宝的核心命令,也是我之前已经用到的命令,作用是召唤出指定名称为“宝宝”的宠物,这里需要注意,宝宝的名称必须和你在引擎内设置的宠物名称完全一致,大小写敏感,否则无法召唤出对应的宠物。

补充脚本的完整片段,方便大家直接复制调试,完整脚本如下:#IF check(PetCount) < 1 checkitem 宠物召唤卷 1 #ACT @take 宠物召唤卷 1 @recallmob 宝宝 #ELSEACT @messagebox 你当前已拥有1只宠物,无法召唤更多! 这里添加#ELSEACT和提示信息,是为了让玩家清楚知道为什么无法召唤,提升玩家体验,避免玩家误以为召唤卷失效,提示信息可以根据自己的需求修改,比如改为“同一时间只能召唤1只宠物,请先让当前宝宝消失后再尝试召唤”。

这里重点讲解check(PetCount)参数的使用细节,很多人可能会误写参数,比如写成PetNum、PetCount()、petcount等,这些写法都是错误的,在sky引擎(HeroM2)中,必须严格填写PetCount,首字母大写,后面小写,括号内为空,不能添加任何参数,否则判断条件会失效,脚本无法检测到宠物数量,仍然会出现多只召唤的问题,这是新手最容易踩的坑,一定要重点注意。

另外补充几个实操调试注意事项,第一个,脚本编写完成后,需要保存到对应的脚本文件中,传奇2的宠物召唤卷脚本,一般保存到QuestDiary文件夹下的物品脚本文件中,具体文件名可以根据自己的架设习惯选择,保存后,需要在sky引擎(HeroM2)中刷新脚本,或者重启引擎,脚本才能生效,否则修改后的脚本不会执行,仍然是原来的无限制召唤效果。

第二个注意事项,宝宝的名称必须和引擎内宠物配置的名称一致,比如你在引擎内设置的宠物名称是“战斗宝宝”,那么脚本中的@recallmob 宝宝就需要改为@recallmob 战斗宝宝,否则召唤命令无效,玩家使用召唤卷后,扣除了召唤卷但无法召唤出宝宝,这种情况需要检查宠物名称是否一致,避免出现召唤失败的问题。

第三个注意事项,检测玩家背包内召唤卷的命令checkitem 宠物召唤卷 1,这里的“宠物召唤卷”必须和你商铺内添加的召唤卷物品名称完全一致,包括空格、符号,比如你的召唤卷名称是“宠物召唤卷(绑定)”,那么脚本中就需要填写checkitem 宠物召唤卷(绑定) 1,否则无法检测到召唤卷,脚本无法执行,玩家无法使用召唤卷召唤宝宝。

还有一个常见问题,就是玩家召唤出宝宝后,宝宝死亡或者玩家下线后,宠物会消失,此时玩家再次使用召唤卷,能否正常召唤?答案是可以的,因为宝宝死亡或玩家下线后,玩家的宠物数量会自动变为0,此时check(PetCount) < 1的判断条件会成立,玩家拥有召唤卷的情况下,就能正常召唤出1只宝宝,完全符合我们的需求,无需额外添加宠物死亡后的重置命令。

如果大家调试过程中,出现脚本无法生效,仍然能召唤多只宝宝的情况,建议按以下步骤排查,第一步,检查check(PetCount)参数是否填写正确,是否首字母大写,是否有多余的符号或括号;第二步,检查脚本是否保存到正确的文件夹,是否刷新了引擎脚本或重启了引擎;第三步,检查判断条件是否完整,是否同时添加了宠物数量判断和召唤卷检测;第四步,检查宝宝名称和召唤卷名称是否与引擎内的设置一致。

另外补充一种特殊情况,如果你在游戏内还有其他召唤类道具或技能,比如道士的召唤骷髅、法师的诱惑之光,这些技能召唤的宝宝,是否会被check(PetCount)参数检测到?答案是会的,因为check(PetCount)参数检测的是玩家当前拥有的所有宠物总数,不管是通过召唤卷召唤,还是通过技能召唤,都会被计入宠物数量,也就是说,如果玩家通过技能召唤了1只宝宝,再使用召唤卷,也无法召唤出第二只,这是正常现象,若想区分召唤卷召唤和技能召唤的宠物,需要添加额外的判断参数,不过我的需求只是限制召唤卷召唤的宝宝数量为1只,这种情况无需额外修改,不影响使用。

再给大家讲解一下脚本中各命令的作用,方便新手理解,避免后续修改脚本时出错。#IF是脚本的判断关键字,用于设置脚本执行的条件,只有满足所有判断条件,才能执行#ACT后面的命令;check(PetCount) < 1 是核心判断条件,检测玩家当前宠物数量小于1只;checkitem 宠物召唤卷 1 是检测玩家背包内有1张及以上宠物召唤卷;#ACT是执行关键字,后面跟的是满足判断条件后需要执行的命令;@take 宠物召唤卷 1 是扣除玩家1张宠物召唤卷;@recallmob 宝宝 是召唤指定名称的宠物;#ELSEACT是不满足判断条件时执行的命令,后面跟的是提示信息,告知玩家无法召唤的原因。

新手在编写脚本时,容易遗漏@take 宠物召唤卷 1 这个命令,导致玩家使用召唤卷后,召唤卷不扣除,无限召唤,即使添加了宠物数量限制,玩家也能通过重复使用召唤卷,在宝宝死亡后立即召唤,相当于无限召唤卷,所以这个扣除命令必须添加,不能遗漏,这是确保召唤卷正常消耗的关键步骤。

还有一个细节,就是提示信息的设置,#ELSEACT后面的@messagebox命令,提示信息需要用英文引号括起来吗?在sky引擎(HeroM2)中,不需要添加英文引号,直接填写提示文字即可,添加引号后,提示信息会显示异常,无法正常显示给玩家,这也是新手容易踩的坑,一定要注意。

最后给大家总结一下整个脚本的编写思路和核心要点,核心思路就是“判断玩家是否有宠物+判断玩家是否有召唤卷”,满足条件则扣除召唤卷并召唤1只宠物,不满足条件则提示玩家,核心要点就是check括号内填写PetCount参数,严格区分大小写,不添加多余符号;确保宝宝名称、召唤卷名称与引擎内设置一致;添加召唤卷扣除命令;脚本保存后刷新引擎生效。

本人也是经过多次调试,踩了很多坑,才找到正确的写法,尤其是check参数的填写,一开始尝试了很多错误的参数,导致脚本无法生效,反复测试后才确定,在sky引擎(HeroM2)中,检测宠物数量的核心参数就是PetCount,无需任何多余修改,填写后就能正常检测玩家的宠物数量。

按照以上写法编写脚本,就能完美解决宠物召唤卷无限召唤的问题,实现不管玩家买多少张召唤卷,同一时间只能召唤1只宠物,既满足了玩家召唤宝宝辅助战斗的需求,也保证了游戏平衡,新手可以直接复制完整脚本片段,根据自己的宠物名称、召唤卷名称修改后使用,调试过程中若有疑问,可以重点检查参数填写和名称一致性,基本都能解决问题。