传奇小退后宝宝不消失脚本实现方法

来源: 作者: 点击:
在《热血传奇》中,默认小退(Alt+F4或断线)会导致召唤兽消失。通过HERO引擎脚本可实现小退后宝宝保留,需结合登录事件、宠物状态存储与重连恢复机制。

一、启用宠物持久化开关
首先在服务端配置文件Mir200!Setup.txt中确认以下设置:

[Pet]
PetSave=1

若PetSave=0,则宠物数据不会写入存档,脚本无法生效。

二、记录宠物信息至角色变量
在QFunction-0.txt中添加下线前保存逻辑:

[@UserExit]
; 玩家小退或断线时触发
IF
CHECKPET 1
ACT
MOV D200 1
GETPETNAME S0
MOV D201
GETPETLEVEL S1
MOV D202
SAVE

D200:标记是否存在宠物(1=有)
D201:存储宠物名称(如“虎卫”、“骷髅”)
D202:存储宠物等级
SAVE指令强制写入存档,确保数据持久化。

三、上线时自动召唤宠物
在玩家登录后恢复宠物:

[@Login]
IF
EQUAL D200 1
ACT
CREATEPET
MOV D200 0

CREATEPET根据名称和等级重新生成宠物。执行后清除D200标记,避免重复召唤。

四、处理多宠物情况(可选)
若支持多个宝宝(如英雄+主号宠物),需分别记录:
主号宠物:D200-D202
英雄宠物:D210-D212
并在[@HeroLogin]事件中单独处理英雄宠物恢复。

五、兼容装备类宝宝(如神兽)
部分版本神兽由物品触发(如“龙之勋章”),此时应保存物品ID而非名称:

[@UserExit]
IF
CHECKITEMBOX 龙之勋章 1
ACT
MOV D200 2
TAKE 龙之勋章 1
GIVE 龙之勋章 1

上线时检测D200=2,直接佩戴物品触发召唤。

六、注意事项
CHECKPET 1仅检测主号宠物,英雄宠物需用CHECKHEROPET;
宠物名称必须与StdItems.txt中定义的召唤物名称完全一致;
若使用自定义宠物,需确保CREATEPET支持该名称;
小退后立即重连可能因存档未写入导致失效,建议间隔5秒以上;
死亡或主动解散宠物时,需手动清空D200-D202,避免残留数据错误召唤。

此方案通过变量存储与事件触发,实现小退后宝宝自动保留,适用于标准HERO引擎及多数仿盛大版本。