限量商品每天三个,卖完显示补货倒计时,到点自动变回可购买。倒计时与限购状态的前端联动做顺滑了,限时商店的转化率肉眼可见地抬升。
打开商店按服务端下发的剩余数量与刷新时间戳渲染:有货亮按钮,无货显示倒计时文字。剩余秒数用SL:SecondToHMS转成时:分:秒。
local function renderShopItem(widget, left, refreshTs)
if left > 0 then
GUI:setText(widget, "购买(剩" .. left .. "个)")
GUI:setVisible(countdownTxt, false)
else
local remain = refreshTs - os.time()
GUI:setText(widget, "已售罄")
GUI:setVisible(countdownTxt, true)
GUI:Text_COUNTDOWN(countdownTxt, remain, function()
GUI:setText(widget, "购买(剩3个)")
SL:ShowSystemTips("今日限量已刷新")
end, 1)
end
end
点击购买发请求,回执成功扣减本地剩余数,归零即时切换倒计时,不等下一次全量刷新。
GUI:addOnClickEvent(buyBtn, function()
SL:SendNetMsg(6601, { goods = 3 })
end)
SL:RegisterLuaNetMsg(6602, function(data)
if data.ok == 1 then
shopLeft = shopLeft - 1
renderShopItem(buyBtn, shopLeft, data.refreshTs)
else
SL:ShowSystemTips("手慢了,今日已售罄")
end
end)
改设备时间跨零点验证刷新;售罄瞬间连点按钮验证不超卖。埋点统计倒计时归零后600秒内的购买转化,作为补货时间点调优依据。
Text_COUNTDOWN的时间参数是秒,refreshTs与本地时差没校准时倒计时显示负数,开界面先与服务端时间对表。倒计时归零只更新按钮文案,剩余数量仍要等服务端确认,客户端写死三个会造成超卖假象。os.time受设备时间影响,玩家改时间能提前看到刷新,关键判定以服务端回执为准。商店界面关闭后倒计时回调还在跑,回调里必须先判界面有效性,否则每次归零都报一次空引用。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…