针对Sky/HeroM2引擎,限制宠物数量的核心命令是CHECKSLAVECOUNT。你问题中“check(这地方填什么呢??”的正确答案就是它。下面直接给出脚本写法与逻辑解析。
一、物品触发脚本(标准写法)
将以下脚本写入服务端的QFunction-0.txt文件中,并确保物品名称(如“宠物召唤卷”)与你的数据库(StdItems.DB)完全一致。
;宠物召唤卷触发脚本
[@StdModeFuncX];这里的X对应StdItems.DB中该卷的StdMode值(如100-999)
#IF
CHECKSLAVECOUNT<1;检测当前宝宝数量是否小于1(即没有宝宝)
#ACT
RECALLMOB宝宝765535;召唤“宝宝”,等级7,叛变时间65535分钟(几乎永久)
SendMsg5“召唤成功!当前拥有1只宝宝。”
#ELSESAY
你已经有宝宝了,不能重复召唤。\\
\<返回/@main>
关键参数说明:
•CHECKSLAVECOUNT<1:这是限制数量的核心。<1表示只有宝宝数量为0时才允许执行召唤。如果你想允许最多2只,改为<2即可。
*RECALLMOB:召唤命令。参数依次为:怪物名称(需与Monster.DB一致)、宝宝等级(1-7)、叛变时间(分钟)。
*StdModeFuncX:X必须等于该召唤卷在数据库中的StdMode字段值(通常为100-999之间的数字)。例如,若卷的StdMode是108,则标签写[@StdModeFunc108]。
二、商铺直接购买限制方案
如果你希望玩家在商铺点击购买时就直接触发限制(而不是买完双击使用),需要在Merchant.txt中配置NPC脚本。
1.修改商铺NPC:找到你的商铺NPC脚本文件(如Market_Def\盟重省_3.txt)。
2.添加购买前检测:
[@BUYGOODS]
#IF
CHECKSLAVECOUNT>0;检测是否已有宝宝
#ACT
SendMsg5“宠物数量已达上限,无法购买!”
Break
#IF
;这里可以加其他条件,如金币检测
#ACT
;正常购买流程
BUYGOODS
三、常见问题与排查
1.脚本不生效:
◦路径错误:确保QFunction-0.txt文件位于MirServer\Mir200\Envir\Market_Def目录下,且编码为ANSI(非UTF-8)。
*StdMode不匹配:检查物品数据库(StdItems.DB),确认该召唤卷的StdMode字段与脚本中的@StdModeFuncX编号一致。
*怪物名称:RECALLMOB后的“宝宝”必须与Monster.DB中的怪物名称完全一致(注意空格和符号)。
2.引擎差异:
◦部分老版本HeroM2可能使用CheckFollowCount命令,但其功能与CHECKSLAVECOUNT类似。Sky引擎通用CHECKSLAVECOUNT。
*若需检测特定名称的宝宝(如只限制“神兽”不限制“骷髅”),可使用CHECKSLAVENAME神兽命令辅助判断。
3.防刷机制:
为防止玩家通过小退重进刷宝宝,建议在QManage.txt(登录脚本)中加入以下逻辑,让玩家上线时自动清理多余的宝宝:
[@Login]
#IF
CHECKSLAVECOUNT>1;如果上线发现宝宝超过1只
#ACT
KILLSLAVE;杀死所有宝宝
RECALLMOB宝宝765535;重新召唤1只
通过上述脚本,无论玩家购买多少张召唤卷,只要CHECKSLAVECOUNT检测到已有宝宝,后续的召唤指令都会被拦截。
一、物品触发脚本(标准写法)
将以下脚本写入服务端的QFunction-0.txt文件中,并确保物品名称(如“宠物召唤卷”)与你的数据库(StdItems.DB)完全一致。
;宠物召唤卷触发脚本
[@StdModeFuncX];这里的X对应StdItems.DB中该卷的StdMode值(如100-999)
#IF
CHECKSLAVECOUNT<1;检测当前宝宝数量是否小于1(即没有宝宝)
#ACT
RECALLMOB宝宝765535;召唤“宝宝”,等级7,叛变时间65535分钟(几乎永久)
SendMsg5“召唤成功!当前拥有1只宝宝。”
#ELSESAY
你已经有宝宝了,不能重复召唤。\\
\<返回/@main>
关键参数说明:
•CHECKSLAVECOUNT<1:这是限制数量的核心。<1表示只有宝宝数量为0时才允许执行召唤。如果你想允许最多2只,改为<2即可。
*RECALLMOB:召唤命令。参数依次为:怪物名称(需与Monster.DB一致)、宝宝等级(1-7)、叛变时间(分钟)。
*StdModeFuncX:X必须等于该召唤卷在数据库中的StdMode字段值(通常为100-999之间的数字)。例如,若卷的StdMode是108,则标签写[@StdModeFunc108]。
二、商铺直接购买限制方案
如果你希望玩家在商铺点击购买时就直接触发限制(而不是买完双击使用),需要在Merchant.txt中配置NPC脚本。
1.修改商铺NPC:找到你的商铺NPC脚本文件(如Market_Def\盟重省_3.txt)。
2.添加购买前检测:
[@BUYGOODS]
#IF
CHECKSLAVECOUNT>0;检测是否已有宝宝
#ACT
SendMsg5“宠物数量已达上限,无法购买!”
Break
#IF
;这里可以加其他条件,如金币检测
#ACT
;正常购买流程
BUYGOODS
三、常见问题与排查
1.脚本不生效:
◦路径错误:确保QFunction-0.txt文件位于MirServer\Mir200\Envir\Market_Def目录下,且编码为ANSI(非UTF-8)。
*StdMode不匹配:检查物品数据库(StdItems.DB),确认该召唤卷的StdMode字段与脚本中的@StdModeFuncX编号一致。
*怪物名称:RECALLMOB后的“宝宝”必须与Monster.DB中的怪物名称完全一致(注意空格和符号)。
2.引擎差异:
◦部分老版本HeroM2可能使用CheckFollowCount命令,但其功能与CHECKSLAVECOUNT类似。Sky引擎通用CHECKSLAVECOUNT。
*若需检测特定名称的宝宝(如只限制“神兽”不限制“骷髅”),可使用CHECKSLAVENAME神兽命令辅助判断。
3.防刷机制:
为防止玩家通过小退重进刷宝宝,建议在QManage.txt(登录脚本)中加入以下逻辑,让玩家上线时自动清理多余的宝宝:
[@Login]
#IF
CHECKSLAVECOUNT>1;如果上线发现宝宝超过1只
#ACT
KILLSLAVE;杀死所有宝宝
RECALLMOB宝宝765535;重新召唤1只
通过上述脚本,无论玩家购买多少张召唤卷,只要CHECKSLAVECOUNT检测到已有宝宝,后续的召唤指令都会被拦截。

