【游戏】
一、业务场景
交易行只支持竞价,买家等 8 小时截拍才拿到货;一单急用装备的买家多等 6 小时,错过当晚开荒。一口价上线:卖家标固定价,买家付钱秒到货,不用再等截拍。
二、实现方案
核心实现(上架与直购):
local function sellNow(actor, itemId, price)
setsysvarex("shopBin_" .. itemId, price)
sendmsg(actor, 1, itemId .. " 已上架一口价 " .. price)
end
local function buyNow(buyer, itemId, seller)
local p = getplayerbyname(buyer)
local price = getsysvar("shopBin_" .. itemId) or 0
if price == 0 then
sendmsg(p, 1, "商品已售出或下架")
return
end
if getplayvar(p, "GOLD") < price then
sendmsg(p, 1, "金币不足,需 " .. price)
return
end
setsysvarex("shopBin_" .. itemId, 0)
giveitem(getplayerbyname(seller), 9021, price)
giveitem(p, itemId, 1)
end
下架收回(卖家主动撤单):
local function cancelBin(actor, itemId)
if (getsysvar("shopBin_" .. itemId) or 0) > 0 then
setsysvarex("shopBin_" .. itemId, 0)
sendmsg(actor, 1, "已下架并收回 " .. itemId)
else
sendmsg(actor, 1, "无在售记录")
end
end
三、边界处理
上架即锁价防一手多卖;直购成功瞬间清价防双人同时买到同一件;24 小时未售出自动退回卖家。
四、引擎验证
两个买家同时点同一件,只有先到的付款成功,后者收到已售出提示;卖家 3 秒内到账全款。
五、FAQ
问:能与竞价并存吗?
答:能,一口价与竞价两套单据互不影响。
问:收手续费吗?
答:成交扣 3%,按笔结算。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:玩家装备耐久打空才发现,战力拦腰砍半,打不动怪又投诉掉率。耐久提醒立双档:耐久低于三成弹黄…
【语法】 一、机制原理 抛个坑:行列表格要变成列行,每格都搬一遍还新建了整张表——方形矩阵能不能原地换?转置沿对角线折返:只…
【游戏】 一、规则机制 隐蔽的坑:"最近浏览"里同一件商品重复出现五六次,足迹成了复读机。浏览足迹立两条:每次查看先在足迹里…
【语法】 一、机制原理 一行代码拆解:local bucket = math.floor(v / width)。数值分布统计…
【语法】 一、机制原理 一行代码拆解:setmetatable(cfg, {__index = DEFAULTS})。配置对…
【游戏】 一、规则机制 线上事故:结算时玩家追问"我到底打了多少",战斗中没有任何实时输出面板,事后对不上账。输出统计两步走…