行会仓库的入库没有审批流程:普通成员直接放入任意物品——违规物品(绑定的、过期道具)混入公共仓库,取出的成员拿到无用物品产生纠纷。入库审批流封装:普通物品直接入库,特殊物品(限时道具、绑定装备)需副会长以上审批,审批结果通知提交人,超时未审自动拒绝。
入库申请与审批校验:类型检查、审批流转。示例代码如下:
local AUTO_TYPES = { ["金创药"] = true, ["魔法药"] = true }
local REVIEW_TYPES = { ["绑定装备"] = true, ["限时道具"] = true }
local pending = {}
local function depositItem(actorName, itemName, itemType)
if AUTO_TYPES[itemName] then
storeItem(actorName, itemName)
return true
end
if REVIEW_TYPES[itemType] then
local id = "DP" .. os.time()
pending[id] = { item = itemName, by = actorName,
type = itemType, ts = os.time() }
sendmsg(nil, 1, actorName .. " 提交了 " .. itemType .. " 入库申请。")
return id
end
return false
end
local function approveDeposit(id, approver)
local req = pending[id]
if req == nil then
return false
end
if os.time() - req.ts > 86400 then
pending[id] = nil
return false
end
storeItem(req.by, req.item)
pending[id] = nil
sendmsg(nil, 1, req.by .. " 的入库申请已批准。")
return true
end
depositItem 按物品类型分流:AUTO_TYPES 中的直接入库,REVIEW_TYPES 中的进入审批队列,其他类型拒绝。approveItem 校验审批时效(24 小时超时自动拒绝),通过后调用 storeItem 入库。storeItem 是入库的底层操作,只做物品转移不做审批校验。
入库审批踩过三个坑:一是审批人可以是提交人自己(副会长提交自己审批),审批人必须与提交人不同;二是审批通过后物品已过期(限时道具到期),入库时应校验物品有效期并在审批时二次校验;三是审批队列没有容量上限,恶意提交大量审批申请把队列塞满,队列上限 50 条超出拒绝新申请。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:if CONTRIB = price then CONTRIB = CONTRIB - pric…
【语法】 一、隐蔽陷阱:三个物品的全排列共 6 种,手写三重循环出 27 种含大量重复——递归交换法:固定一位、递归排其余、…
【语法】 一、抛坑提问:成就池 50 项,玩家已解锁 32 项,剩下的怎么一遍筛出?差集运算——以全集为基准,遍历时查已有集…
【语法】 一、抛坑提问:3 根柱子 5 个盘子从甲柱挪到丙柱,每次只能移一个且大盘不压小盘——把"挪 n 个"分解成"挪 n…
【游戏】 一、一行代码拆解:CASTING[actor] = nil —— 回城打断的核心:施法期间被攻击即清空施法状态并返…
【游戏】 一、一行代码拆解:APPLY[acc] = os.time() —— 入会审批的全部骨架:申请进队列带时间戳,官员…