【游戏】
一、业务场景
刮刮乐上线半天,论坛传"必中",一区玩家排队狂刮。排查发现概率表配错,三档中奖权重合计 90%。修正为万分比权重表并加每日限刮 5 张,概率可导出公示。
二、实现方案
概率配置(TXT,万分比,合计 10000):
; scratch.txt 奖励权重表
ID=1 奖励=1001 数量=1 权重=6000
ID=2 奖励=1002 数量=2 权重=3000
ID=3 奖励=1003 数量=5 权重=900
ID=4 奖励=1004 数量=10 权重=100
刮奖逻辑(权重累加定位奖档):
local W = {{1001,1,6000},{1002,2,3000},
{1003,5,900},{1004,10,100}}
local function scratch(actor)
local n = getplayvar(actor, "scratchN") or 0
if n >= 5 then
sendmsg(actor, 1, "今日 5 张已刮完")
return
end
setplayvar(actor, "scratchN", n + 1)
local roll, acc = math.random(1, 10000), 0
for _, r in ipairs(W) do
acc = acc + r[3]
if roll <= acc then
giveitem(actor, r[1], r[2])
sendmsg(actor, 1, "刮中 " .. r[2] .. " 份奖励")
return
end
end
end
三、边界处理
权重合计不足 10000 时按未中奖兜底;每日 5 张跨天由触发器清零;同日大奖限中 1 次。
四、引擎验证
模拟 1 万次刮奖,四档占比 60%、30%、9%、1%,与权重表吻合;第 6 张被限刮拦截。
五、FAQ
问:概率公示吗?
答:TXT 表可直接导出成公示页。
问:能加保底吗?
答:可加连刮 20 张未中大奖的补偿计数。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:玩家装备耐久打空才发现,战力拦腰砍半,打不动怪又投诉掉率。耐久提醒立双档:耐久低于三成弹黄…
【语法】 一、机制原理 抛个坑:行列表格要变成列行,每格都搬一遍还新建了整张表——方形矩阵能不能原地换?转置沿对角线折返:只…
【游戏】 一、规则机制 隐蔽的坑:"最近浏览"里同一件商品重复出现五六次,足迹成了复读机。浏览足迹立两条:每次查看先在足迹里…
【语法】 一、机制原理 一行代码拆解:local bucket = math.floor(v / width)。数值分布统计…
【语法】 一、机制原理 一行代码拆解:setmetatable(cfg, {__index = DEFAULTS})。配置对…
【游戏】 一、规则机制 线上事故:结算时玩家追问"我到底打了多少",战斗中没有任何实时输出面板,事后对不上账。输出统计两步走…