宠物越抓越多,出战位只有一个,切换全靠放生再抓——收藏与实战顾此失彼,带着半血宠物去祖玛七层进退两难。兽栏栏位封装:宠物分出战位与休息栏位(默认 3 格、可扩到 8 格),出战与休息一键切换,休息中的宠物缓慢回复体力——收藏有了仓库,轮换有了策略。
栏位切换。示例代码如下:
local CAP_BASE = 3
local function switchPet(actor, slotNo)
local cap = CAP_BASE + (tonumber(getplayvar(actor, 1, "StableExt")) or 0)
if slotNo < 1 or slotNo > cap then
sendmsg(actor, 1, "栏位不足,先去扩容。")
return
end
local current = getplayvar(actor, 1, "ActivePet")
setplayvar(actor, 1, "ActivePet", slotNo, 1)
setplayvar(actor, 1, "RestPet_" .. tostring(current), 1, 0)
sendmsg(actor, 1, "已切换出战宠物为 " .. slotNo .. " 号栏。")
end
休息回复。示例代码如下:
local function restTick(actor)
local resting = tostring(getplayvar(actor, 1, "RestList") or "")
for slot in string.gmatch(resting, "[^;]+") do
local sp = tonumber(getplayvar(actor, 1, "PetSP_" .. slot)) or 0
setplayvar(actor, 1, "PetSP_" .. slot, math.min(sp + 5, 100), 0)
end
end
栏位容量 = 基础 3 格加扩容次数(StableExt,isSave=1 落盘),switchPet 先校验目标栏位在容量内,再交换 ActivePet 出战标记与 RestPet 休息标记;restTick 由每分钟定时器驱动,休息列表(RestList 分号串)里的宠物每分钟回 5 点体力、封顶 100——出战的掉体力、休息的回体力,轮换有了资源管理的维度。
兽栏栏位踩过三个坑:一是切换时出战宠物的体力没按出场时长衰减就下阵,体力凭空回满,切换前先结算衰减再落账;二是休息列表写入重复栏位,同一宠物占两格回复双倍体力,写入前查重;三是扩容次数没有上限被直接买到 100 格,扩容封顶 8 格(基础 3 加扩 5)——栏位是策略资源,不是无底洞。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 帮会人少时打不死召唤的目标,人多时又抢不到,时机全靠会长手点,纠纷不断。改为每日一次的定时召唤加伤害…
【游戏】 一、业务场景 30 人团本开荒,伤害按个人目标结算,近战几秒就把目标打空,后排毫无参与感。改为全团共享血池:目标总…
【语法】 一、隐蔽陷阱 账目表频繁单点改值又要频繁查前 n 项合计:朴素写法改值一步、查询要扫 n 个元素,查询一多整体就慢…
【游戏】 一、业务场景 想拉动日活,登录礼包要跟着连登天数走:第 1 天小奖,第 7 天大奖。发放核心就一行:按连登天数查阶…
【语法】 一、隐蔽陷阱 大数加法用字符串竖式解决了失真,两笔大数相乘怎么办?tonumber 相乘在 9 位乘 9 位时结果…
【语法】 一、隐蔽陷阱 两批任务分别每 6 分钟与每 8 分钟刷新一次,想知道它们同帧刷新的间隔,从 1 开始逐个试除到 4…