丢弃裁决之杖、解散行会、删除好友——不可逆的操作一旦执行就没有后悔药。高危操作的确认设计是防误的闸门:让手滑多一次思考的机会,让冲动多一个冷静的成本。
---高危操作的分级确认
local RISK_OPS = {
drop_rare = { name = "丢弃高价值装备", confirm = 1, delay = 3 },
disband = { name = "解散行会", confirm = 2, delay = 24 },
del_friend = { name = "删除好友", confirm = 1, delay = 24 },
}
function Risk.confirm(actor, opKey)
local player = class(actor)
if not player then return false end
local op = RISK_OPS[opKey]
if not op then return true end
-- 一级确认:弹窗;二级确认:冷却期后再次确认
if op.confirm == 2 then
local marked = getplayvar(actor, 2, "Risk_" .. opKey)
if marked == "" or not marked then
setplayvar(actor, "HUMAN", "Risk_" .. opKey,
os.time(), 1)
sendmsg(actor, 1, op.name .. "已进入 " ..
op.delay .. " 小时冷静期,期满再次确认生效")
return false
end
if os.time() - tonumber(marked) < op.delay * 3600 then
sendmsg(actor, 1, "冷静期未满,还剩 " ..
math.ceil((op.delay * 3600 -
(os.time() - tonumber(marked))) / 3600) .. " 小时")
return false
end
end
return true
end
确认的分级按操作的不可逆程度:一级确认弹个窗(丢装备的当下多按一次),二级确认加冷静期(解散行会要 24 小时前先申请、期满再确认)——冷静期让冲动的决定有反悔的时间窗,行会的解散一半在冷静期里自己撤销。确认的文案写明后果:丢掉的装备不可找回、解散后行会仓库冻结,知情的确认才是有效的确认。
---冷静期的撤销与提醒
function Risk.cancel(actor, opKey)
local player = class(actor)
if not player then return false end
local key = "Risk_" .. opKey
if (getplayvar(actor, 2, key) or "") ~= "" then
setplayvar(actor, "HUMAN", key, "", 1)
sendmsg(actor, 1, "已撤销操作")
return true
end
return false
end
---冷静期的行会广播提醒
setontimerex(102, 3600)
function Risk.remind()
-- 解散冷静期内的行会:每小时提醒会长
for gid, g in pairs(Guild.disbanding) do
sendmsg(g.leader, 1, "行会解散冷静期进行中," ..
"可随时联系管理员撤销")
end
end
撤销的出口与确认对称:冷静期内随时撤销,撤销的即时生效让反悔的成本为零。冷静期的提醒柔和存在:解散中的行会每小时收到一次撤销的提示,提醒不是挽留的纠缠而是出口的指路。高危操作的日志全量留痕:谁在何时确认了什么、冷静期是否被撤销,误操作的追责与纠纷的还原有据可查。确认的疲劳管理:同类的确认 5 分钟内不重复弹(连续卖 20 件装备的商人不必确认 20 次),疲劳的弹窗让玩家练成无脑点确认的手,确认的效力反被稀释。
冷静期的撤销率统计:撤销率过半说明冷静期在真正防误,撤销率近零说明流程形同虚设;高危操作的执行量与误操作的申诉量对照,防误的设计用申诉的曲线验证。
确认的弹窗曾经在连点下被秒过,玩家没看清就确认了,弹窗的最短停留 800 毫秒。冷静期的标记曾经在转职后失效,身份变了冷静期的状态错乱,标记的清理纳入身份变更的清单。撤销的入口曾经藏在二级菜单,想反悔的玩家找不到路,撤销的按钮与确认同屏。
高危操作的分级清单进设计文档:每类操作的确认级别与冷静期时长有依据。确认的文案评审与客服话术对齐,后果的描述与实际的处理一致。冷静期的机制对运营同样生效:运营的批量操作走双人的复核流程。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士克法师、法师克道士、道士克战士——三角的克制是传奇职业平衡的骨架。克制框架的要点是相性的数值化、克制…
实战应用:用在哪里 挂机 24 小时的收益与玩 2 小时一样多吗?疲劳值系统回答产出节奏的问题:每日的疲劳额度框定有效收益的…
实战应用:用在哪里 GM 发出去的每一件补偿、踢掉的每一个号都要能查:审计的数据躺在日志里不算难,检索的效率决定追责与复盘的…
实战应用:用在哪里 师徒链的层级遍历、行会职位的树状结构、嵌套菜单的展开——递归的写法优雅但栈深是隐形的雷。递归改写把深层的…
实战应用:用在哪里 找回密码是账号安全的压轴救援通道,也是社工攻击的突破口:骗过客服就能偷走别人的账号。找回的流程设计在「帮…
实战应用:用在哪里 行会基金是行会的公共金库:沙巴克的税收、成员的捐献、活动的奖金全进这一个池子,基金的每一笔进出都要对得上…