传奇教程:一招限制宝宝数量,避免玩家召唤10只宠物

来源: 作者: 点击:
📜 详细脚本实现(兼容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只宝宝,多次使用会自动替换为最新召唤的宠物。