押镖奖励全天固定,黄金档 19 到 22 点镖道人挤人,午后镖局冷清得能听见风声。运营要的不是削高峰而是填低谷:冷清时段镖金上浮、正常时段保持基准,用价格杠杆把人流往谷里引。倍率必须配表驱动——运营每个赛季都要调时段,改数值不能每次都动代码。
时段配表解析与判定:配置串"起始分|结束分|倍率",一天 1440 分钟切成五段。示例代码如下:
local CONVOY_CFG = "0|480|130;480|780|100;780|900|130;900|1140|100;1140|1440|125"
local Rates = {}
local function loadConvoyCfg()
Rates = {}
for from, to, rate in string.gmatch(CONVOY_CFG, "(%d+)|(%d+)|(%d+)") do
Rates[#Rates + 1] = { from = tonumber(from), to = tonumber(to), rate = tonumber(rate) }
end
end
local function currentRate(nowMin)
for _, seg in ipairs(Rates) do
if nowMin >= seg.from and nowMin < seg.to then
return seg.rate
end
end
return 100
end
交镖结算按当前时段倍率折算,段外兜底 100%。示例代码如下:
local function onConvoyDone(actor, baseGold)
actor = getplayerbyname(actor)
local h, m = string.match(os.date("%H:%M"), "(%d+):(%d+)")
local nowMin = tonumber(h) * 60 + tonumber(m)
local rate = currentRate(nowMin)
local gold = math.floor(baseGold * rate / 100)
giveitem(actor, "金条", math.max(1, math.floor(gold / 10000)))
sendmsg(actor, 1, "交镖完成,时段倍率 " .. rate .. "%,入账 " .. gold .. " 金币。")
end
string.gmatch 按 "(%d+)|(%d+)|(%d+)" 迭代解析配表,一次装载常驻。os.date("%H:%M") 配 string.match 折算当日分钟数,与段边界做纯数字区间比较。giveitem(actor, itemname, num) 发放镖金;math.max(1, ...) 保证小额镖金至少一根金条。配置串可存全局变量,运营改完调 loadConvoyCfg 即热更。
时段配表踩过三个坑:一是段边界没接缝,781 到 899 这一分钟不在任何段里,currentRate 静默兜底 100%,运营调的高倍率悄悄失效,解析后必须校验各段首尾相接;二是运营手滑配出倍率 0 的段,交镖白跑引发集体投诉,装载时对倍率做 80 到 200 的区间钳制;三是配表改动走重新发脚本而不是热更,晚高峰的倍率调整永远隔天生效,配置串挪进全局变量后热更即达,调整才有了运营意义。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…