PK 值 200 以上进红名村,出来靠洗红任务:击杀红名村恶徒掉善恶令,红名村老者按每枚减 10 点 PK 值回收,每日上限 50 枚,PK 值清零当天获得七天悔过祝福。接口覆盖掉落、提交、清零三条链路。洗红把强制惩罚变成可执行的赎回路径,红名玩家有明确的减刑账可算,乡村里的恶徒也从摆设变成了资源点。
击杀红名村恶徒按 40% 概率掉善恶令,个人每日获取上限 50 枚,计数跨天由 setday 触发清零。
function killmon(actor, monName)
if monName ~= "红名村恶徒" then return end
local got = tonumber(getplayvar(actor, "HUMAN", "TODAY_ORDER") or "0")
if got >= 50 then return end
if math.random(1, 100) <= 40 then
giveitem(actor, "善恶令", 1)
setplayvar(actor, "HUMAN", "TODAY_ORDER", got + 1, 1)
end
end
老者处提交善恶令按每枚 10 点扣减红名值,单次提交上限 50 枚;清零瞬间挂 604800 秒的悔过祝福并全服公告。
function redeem(actor, cnt)
if cnt > 50 then cnt = 50 end
if not checkitemw(actor, "善恶令", cnt) then
sendmsg(actor, 0, "善恶令不足,红名村的恶徒身上会掉落")
return
end
local pk = tonumber(getplayvar(actor, "HUMAN", "PK_VALUE") or "0")
if pk <= 0 then
sendmsg(actor, 0, "身家清白,无需洗红")
return
end
takeitem(actor, "善恶令", cnt)
local left = math.max(0, pk - cnt * 10)
setplayvar(actor, "HUMAN", "PK_VALUE", left, 1)
if left == 0 then
addbuff(actor, 10030, 604800, 0, 0, 0)
local p = class(actor)
sendcentermsg(p:GetName() .. " 洗净红名,重获清白之身")
else
sendmsg(actor, 0, "红名值还剩 " .. left .. " 点")
end
end
提交链路验证 PK 值 199 与 200 的进村边界、超量提交截断、清零瞬间祝福挂载;掉落计数跨天清零后重新累计;祝福不可被驱散。善恶令全服存量与回收速率每周对一次账,回收慢于产出就上调每日上限。埋点统计每日善恶令回收量与洗白人数,回收量骤增说明有人囤令倒卖。
PK 值的读写走玩家变量,与引擎自带的 PK 计数原本是两套账,提交后引擎侧红名没消,两边先做账目迁移再统一以变量为准。善恶令在玩家间曾出现协议价交易,官方回收价 10 点一枚是定价锚,倒卖空间靠每日上限压住。掉落概率从 40% 下调到 25% 的版本与洗白人数曲线一起复核过,赎回周期控制在三到五天。math.random 没播种,掉不掉落呈现规律性节拍,玩家总结出刷新间隔,启动播种后分布正常。悔过祝福的 buffid 用了 30 以内的段位,与系统增益表冲突互相顶掉,自定义 buff 统一从 10000 以后取号。addbuff 的叠加参数传 1 时祝福被重复挂载时长翻倍,清零判定加防重入,一天只挂一次。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 沙巴克占领行会坐收税收却只进不出,非占领行会的玩家心里不平衡。税务官玩法把税收做成明账:占领行会对摆摊与…
实战应用:用在哪里 高端玩家婚姻系统只有仪式没有过程,社交绑定缺一个高光事件。比武招亲做成擂台玩法:擂主设擂摆彩头,攻擂者报…
实战应用:用在哪里 开服七日限时礼包发到第六天断了粮,9 月 1 日当天领奖按钮灰的,投诉当天破千。事故根因是一条数字日期循…
实战应用:用在哪里 玩家拔线不退游戏,连接半开着,人不在指令也没有,在线数虚高,容量预案被假数据带着跑。心跳探测给每个在线玩…
实战应用:用在哪里 周三发了合成系统补丁,周四又改强化概率,两条变更叠加后玩家分不清是哪个改出来的。发布日历把全月变更集中排…
实战应用:用在哪里 容量预案需要知道滚动一小时的副本进入峰值,而不是全天累计。滑动窗口用 60 个槽位每槽记一分钟的进入数,…