针对Sky/HeroM2引擎,限制宠物数量的核心命令是 CHECKSLAVECOUNT。你问题中“check(这地方填什么呢??”的正确答案就是它。下面直接给出脚本写法与逻辑解析。
一、物品触发脚本(标准写法)
将以下脚本写入服务端的 QFunction-0.txt 文件中,并确保物品名称(如“宠物召唤卷”)与你的数据库(StdItems.DB)完全一致。
; 宠物召唤卷触发脚本
[@StdModeFuncX] ; 这里的X对应StdItems.DB中该卷的StdMode值(如100-999)
#IF
CHECKSLAVECOUNT < 1 ; 检测当前宝宝数量是否小于1(即没有宝宝)
#ACT
RECALLMOB 宝宝 7 65535 ; 召唤“宝宝”,等级7,叛变时间65535分钟(几乎永久)
SendMsg 5 “召唤成功!当前拥有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
SendMsg 5 “宠物数量已达上限,无法购买!”
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 宝宝 7 65535 ; 重新召唤1只
通过上述脚本,无论玩家购买多少张召唤卷,只要 CHECKSLAVECOUNT 检测到已有宝宝,后续的召唤指令都会被拦截。

