节日活动只会发礼包:领了就走,没有过程。集字活动封装:怪物掉落单字道具("祖""玛""传""奇"四字),集齐即可兑换奖励,字与字有稀有度差、可交换——收集有了过程感,玩家间的互通有无也活了起来。
掉落与收集进度。示例代码如下:
local WORDS = { "祖", "玛", "传", "奇" }
local function onMonDrop(actor)
if math.random(1, 20) ~= 1 then
return
end
local idx = math.random(1, #WORDS)
local weight = { 60, 30, 8, 2 }
local pick = 1
local roll = math.random(1, 100)
local acc = 0
for i, w in ipairs(weight) do
acc = acc + w
if roll <= acc then
pick = i
break
end
end
giveitem(actor, WORDS[pick], 1, 0, "集字掉落")
end
兑换校验。示例代码如下:
local function exchange(actor)
for _, w in ipairs(WORDS) do
local cnt = tonumber(getplayvar(actor, 0, "Word_" .. w)) or 0
if cnt < 1 then
sendmsg(actor, 1, "还缺一个「" .. w .. "」字。")
return
end
end
for _, w in ipairs(WORDS) do
takeitem(actor, w, 1, 0, "集字兑换")
end
giveitem(actor, "屠龙宝刀碎片", 1, 0, "集字奖励")
sendmsg(actor, 1, "集齐「祖玛传奇」,兑换成功。")
end
onMonDrop 挂在击杀触发上:先过 1/20 的掉落门槛,再按权重 60/30/8/2 决定掉哪个字——"祖"遍地都是而"奇"仅 2%,稀有度阶梯靠权重表一行配置。exchange 先逐字校验持有数(缺哪个字提示哪个),四字齐全才逐个 takeitem 扣除并 giveitem 发奖——校验与扣除两个循环分开写,避免扣到一半发现缺字的半途状态。
集字活动踩过三个坑:一是字道具可交易,工作室小号刷"祖"字囤积抬价,把四个字的掉落都绑定为拾取绑定后倒卖消失;二是玩家背包里字道具的持有数与进度变量不同步(买了字没更新进度),兑换校验改为直接读背包持有数而不是进度缓存,单一数据源不再打架;三是活动结束剩余字道具没处理,玩家囤着等复刻,结束后按 10 比 1 回收成活动积分,字有了退场通道。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:if price < WATCH[goods] then notify end —— 关注降价的…
【游戏】 一、业务场景:赛季结算发现一名玩家胜率 10% 却排在黄金段——历史计分只加不减,积分体系失效 3 个月;积分赛—…
【语法】 一、抛坑提问:3 对括号能组成多少种合法序列?答案是 5——卡塔兰数列:每一项等于前一项乘 2 倍的 2n 减 1…
【语法】 一、抛坑提问:不想用全局随机函数(怕多处共享种子互相干扰),可自实现一个独立随机序列——线性同余法三行核心:乘、加…
【游戏】 一、一行代码拆解:PENDING[outId] = {by = actor, at = now} —— 双人复核的…
【语法】 一、隐蔽陷阱:圆周率小数位背不出更多就不算理解随机模拟?用蒙地卡罗法随机撒点统计,10 万个点能把圆周率估到两位小…