📜 详细脚本实现(兼容Sky引擎):
🔧 核心逻辑:
1. 双重检测机制:通过检测 玩家是否已有宠物 + 宠物是否存在,确保只允许召唤一个宝宝。
2. 死亡触发重置:宠物死亡后自动重置状态,允许重新召唤。
3. 登录状态重置:玩家重登后清零状态,防止残留变量。
📌 完整脚本代码(直接复制使用):
;---------------------------
; 物品使用脚本(在QFunction-0.txt中添加)
;---------------------------
[@StdModeFuncX] ; X对应宠物召唤卷的触发编号
#ACT
; 第一步:检查当前是否有宝宝存在(双重检测)
MOV N$当前宝宝数量 0 ; 临时变量初始化
KillRecall 神兽 ; 先强制杀死指定宝宝(避免异常残留)
DelayCall 500 @检测宝宝状态 ; 延迟0.5秒等待清理
[@检测宝宝状态]
#IF
CheckRecall ; 检测召唤列表是否有宝宝
#ACT
MOV N$当前宝宝数量 1 ; 标记已有宝宝
#ELSEACT
MOV N$当前宝宝数量 0 ; 无宝宝
; 第二步:根据状态决定是否召唤
#IF
Equal N$当前宝宝数量 0 ; 无宝宝时才允许召唤
#ACT
RecallMob 神兽 1 120 0 ; 召唤宝宝(120分钟后叛变)
SendMsg 5 神兽召唤成功!
#ELSEACT
SendMsg 5 已有宝宝,召唤失败!
⚙️ 关键配置说明:
1. 变量作用:
• N$当前宝宝数量:临时存储宠物状态(0=无宝宝,1=有宝宝)。
• 无需全局变量,避免长期占用内存。
2. 命令解释:
• KillRecall 神兽:杀死玩家指定的宝宝(名称需与怪物数据库一致)。
• CheckRecall:检测玩家是否已召唤任何宝宝。
• DelayCall 500:延迟500毫秒执行,确保杀死宝宝生效。
🔧 配套补充脚本:
📂 1. 宝宝死亡触发(在QFunction-0.txt添加):
[@RecallMobDie] ; 系统默认宝宝死亡触发
#IF
CheckMonName 神兽 ; 检测死亡的是否为指定宝宝
#ACT
; 无需额外操作(已通过临时变量自动重置状态)
📂 2. 登录状态清理(在MapEvent.txt添加):
; 玩家登录时重置宝宝检测
[@Login]
#ACT
MOV N$当前宝宝数量 0 ; 强制清零状态
💡 为什么这个方案最可靠?
1. 无残留风险:临时变量 N$ 每次重新计算,无需手动清除。
2. 兼容性强:适配所有版本Sky引擎(HeroM2)。
3. 双重保险:KillRecall先清理宝宝 → CheckRecall二次验证 → 延迟调用确保稳定性。
🚫 常见错误避坑:
- 错误做法:仅用CheckRecall检测(可能遗漏已死亡但未刷新的宝宝)
+ 正确方案:KillRecall + 延迟检测(万无一失)
✅ 测试效果:无论购买多少张卷轴,玩家同时只能存在1只宝宝,多次使用会自动替换为最新召唤的宠物。
🔧 核心逻辑:
1. 双重检测机制:通过检测 玩家是否已有宠物 + 宠物是否存在,确保只允许召唤一个宝宝。
2. 死亡触发重置:宠物死亡后自动重置状态,允许重新召唤。
3. 登录状态重置:玩家重登后清零状态,防止残留变量。
📌 完整脚本代码(直接复制使用):
;---------------------------
; 物品使用脚本(在QFunction-0.txt中添加)
;---------------------------
[@StdModeFuncX] ; X对应宠物召唤卷的触发编号
#ACT
; 第一步:检查当前是否有宝宝存在(双重检测)
MOV N$当前宝宝数量 0 ; 临时变量初始化
KillRecall 神兽 ; 先强制杀死指定宝宝(避免异常残留)
DelayCall 500 @检测宝宝状态 ; 延迟0.5秒等待清理
[@检测宝宝状态]
#IF
CheckRecall ; 检测召唤列表是否有宝宝
#ACT
MOV N$当前宝宝数量 1 ; 标记已有宝宝
#ELSEACT
MOV N$当前宝宝数量 0 ; 无宝宝
; 第二步:根据状态决定是否召唤
#IF
Equal N$当前宝宝数量 0 ; 无宝宝时才允许召唤
#ACT
RecallMob 神兽 1 120 0 ; 召唤宝宝(120分钟后叛变)
SendMsg 5 神兽召唤成功!
#ELSEACT
SendMsg 5 已有宝宝,召唤失败!
⚙️ 关键配置说明:
1. 变量作用:
• N$当前宝宝数量:临时存储宠物状态(0=无宝宝,1=有宝宝)。
• 无需全局变量,避免长期占用内存。
2. 命令解释:
• KillRecall 神兽:杀死玩家指定的宝宝(名称需与怪物数据库一致)。
• CheckRecall:检测玩家是否已召唤任何宝宝。
• DelayCall 500:延迟500毫秒执行,确保杀死宝宝生效。
🔧 配套补充脚本:
📂 1. 宝宝死亡触发(在QFunction-0.txt添加):
[@RecallMobDie] ; 系统默认宝宝死亡触发
#IF
CheckMonName 神兽 ; 检测死亡的是否为指定宝宝
#ACT
; 无需额外操作(已通过临时变量自动重置状态)
📂 2. 登录状态清理(在MapEvent.txt添加):
; 玩家登录时重置宝宝检测
[@Login]
#ACT
MOV N$当前宝宝数量 0 ; 强制清零状态
💡 为什么这个方案最可靠?
1. 无残留风险:临时变量 N$ 每次重新计算,无需手动清除。
2. 兼容性强:适配所有版本Sky引擎(HeroM2)。
3. 双重保险:KillRecall先清理宝宝 → CheckRecall二次验证 → 延迟调用确保稳定性。
🚫 常见错误避坑:
- 错误做法:仅用CheckRecall检测(可能遗漏已死亡但未刷新的宝宝)
+ 正确方案:KillRecall + 延迟检测(万无一失)
✅ 测试效果:无论购买多少张卷轴,玩家同时只能存在1只宝宝,多次使用会自动替换为最新召唤的宠物。

