【游戏】
一、规则机制
线上事故:面对面交易被调包——一方点了锁定,另一方趁倒计时偷偷换掉高价物品,成交时买家到手的是一文不值的替代品。交易流程加上锁定闸:双方各自放入物品与金币后各自点锁定;锁定后自己的物品栏对对方可见且自己不可变更;任一方变更物品即解锁双方重新来过;双方都锁定后进入三秒倒计时,倒计时内任一方取消即作废;倒计时走完才真正交换,成交瞬间双方物品同步到账。
二、错误写法
-- 错误:一方锁定另一方仍可换货
function onLock(p)
setVar(p, "locked", true)
if bothLocked() then
doTrade()
end
end
三、正确写法
local function onChangeItem(p, item)
setVar(p, "locked", false)
setVar(otherOf(p), "locked", false)
setTradeItem(p, item)
refreshTradeUI()
end
local function onLock(p)
setVar(p, "locked", true)
if bothLocked() then
after(3, function()
if bothLocked() then
doTrade()
end
end)
end
end
local function onCancel(p)
setVar(p, "locked", false)
setVar(otherOf(p), "locked", false)
showTip("交易已取消")
end
四、边界处理
锁定后变更即双向解锁;三秒倒计时内取消即作废;成交同步到账防单边到货。
五、FAQ
问:锁定后自己还能改吗?
答:不能,解锁重来才是修改的唯一路径。
问:倒计时为什么三秒?
答:留出收尾反悔窗口,又不至于拖沓。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 next 的遍历本质就这一行: 传入上一个键,返回下一个键值对——不传上一个键就从第一个开始——next 是 …
【语法算法】 返回值的截取本质就这一行: 函数返回三个值,左侧三个变量各接一个——多余的返回值被丢弃,不足的补 nil——多…
【语法算法】 collectgarbage 的分步回收就这一行: "step" 模式让 GC 执行一步增量回收——参数 20…
【语法算法】 gmatch 的迭代本质就这一行: gmatch 返回一个迭代函数——每次调用返回下一个匹配——遍历完返回 n…
【语法算法】 xpcall 的错误处理函数就这一行: xpcall 和 pcall 的本质区别就一个:xpcall 可以传入…
【语法算法】 元方法 __index 设为函数的本质就这一行: 读取表中不存在的键时,Lua 调用 __index 函数——…