双倍经验、双倍掉落、双倍积分各自独立管理时,叠加起来变成六倍产出。双倍卡池统一管理所有双倍效果的激活与叠加规则:多活动同时开启时取最高倍率而非叠加,避免产出失控。统一管理的核心是让玩家看得懂、运营控得住。
各类双倍效果注册进卡池,卡池按效果类型分组管理;查询接口返回当前生效的最高倍率,而不是叠加后的乘积。示例代码如下:
-- 双倍卡池:注册与取值
local player = class(actor)
local POOL = {}
local function registerBoost(player, boostType, rate, expireTs)
POOL[boostType] = {rate = rate, expire = expireTs}
sendmsg(player, 1, 0, boostType .. " 双倍已注册,倍率 " .. rate .. "。")
end
local function getBestRate(player, boostType)
local entry = POOL[boostType]
if entry and entry.expire > os.time() then
return entry.rate
end
return 1
end
经验系统、掉落系统、积分系统统一调用卡池查询接口获取当前倍率,避免各系统自行计算导致倍率不一致。示例代码如下:
-- 双倍卡池:统一查询
local player = class(actor)
local function applyBoost(player, boostType, baseValue)
local rate = getBestRate(player, boostType)
local final = math.floor(baseValue * rate)
if rate > 1 then
sendmsg(player, 1, 0, baseValue .. " x" .. rate .. " = " .. final .. "(双倍加成)")
end
return final
end
验证三条路径:单一双倍正确生效、多双倍并存时取最高值、过期后自动回落到基础倍率;倍率过期的时间精度控制在一秒内。线上监控各类型双倍的激活频次与产出影响,双倍经验的周激活次数暴增说明发放节奏需要控制,双倍效果的叠加上限是经济系统的收尾防线。
卡池曾允许同类型多效果并存,双倍经验从两个活动同时生效变成了四倍,同类型取最高是修正后的核心规则。过期判定曾用大于等于当前时间,边界秒的过期恰好命中当前时间导致一秒的双倍闪断,过期判定改为严格大于。倍率曾支持小数,零点五倍的"减半卡"与双倍卡并存时取了零点五导致产出减半,倍率下限设为一。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…