沃玛大殿打满三星的玩家只想拿材料不想再跑图,扫荡功能把六百秒的跑图压成一次点击。扫荡不是无门槛福利:三星评价解锁、每次消耗两张扫荡券、每日五次上限,三个闸门控制产出节奏。
入口校验历史最高星级与扫荡券存量,三星以下拒绝并提示差距。actor是字符串,转对象后才能读变量与扣券。
function npc_sweep(actor)
local player = class(actor)
local star = tonumber(getplayvar(actor, 2, "WOMA_STAR") or "0")
if star < 3 then
sendmsg(actor, 0, "三星通关后解锁扫荡,当前" .. star .. "星")
return
end
local times = tonumber(getplayvar(actor, 2, "SWEEP_CNT") or "0")
if times >= 5 then
sendmsg(actor, 0, "今日扫荡次数已用完,零点刷新")
return
end
if player:checkitemw("扫荡券", 2) == false then
sendmsg(actor, 0, "每次扫荡消耗扫荡券2张")
return
end
player:takeitem("扫荡券", 2)
setplayvar(actor, "HUMAN", "SWEEP_CNT", times + 1, 1)
end
扫荡奖励按三星档全额发放,随机掉落部分按七成折算,保持手动通关的收益优势。
function sweepReward(actor)
local base = "沃玛号角碎片|3;金币|20000"
local extra = ""
if math.random(1, 100) <= 30 then
extra = ";黑铁矿石|2"
end
sendmail(actor, 0, "沃玛大殿扫荡奖励", "第" .. (getplayvar(actor, 2, "SWEEP_CNT") or "1") .. "次扫荡", base .. extra)
end
测试号覆盖两星拒绝、无券拒绝、五次封顶三个分支,核对折算比例。上线后对比扫荡与手动通关的人均日收益,扫荡侧超过手动侧即折算系数失当。
SWEEP_CNT按自然日刷新,跨零点比对日期变量清零,漏做会让五次上限变成永久上限,首日玩家第二天全被卡住。扫荡券的checkitemw只查随身,券存仓库会被误判无券,与门票同一类坑。折算系数写死0.7要进配置变量,数值组调参不该找程序员。sendmail的正文里拼次数时变量可能为空,or 1兜底必须保留,否则正文出现空串玩家截图当 bug 报。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…