CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
后端接口

【后端接口】行会仓库:共享存取与流水审计

2026-09-21 18:14 作者:996 技术组 0 阅读 后端接口

实战应用:用在哪里

行会仓库是行会的公共钱柜:攻城的补给、打宝的收成、活动的奖品全放在里面,谁存了什么、谁取了什么,每一笔都要有账。共享仓库的实现要点是权限的分级、存取的原子与流水的审计。

权限与存取

lua

---存入:职位校验后入库
function GuildRepo.deposit(actor, makeIndex)
    local pos = getplayvar(actor, 2, "GuildPos")
    if pos == nil or pos == "" then
        sendmsg(actor, 1, "加入行会后才能使用仓库")
        return false
    end
    local item = Repo.locate(actor, makeIndex)
    if not item then return false end
    if Repo.count() >= 200 then
        sendmsg(actor, 1, "仓库已满 200 格")
        return false
    end
    delitembymakeindex(actor, makeIndex)
    Repo.add(item)
    Repo.log(actor:GetName(), "存入", item:GetName())
    sendmsg(actor, 1, "已存入 " .. item:GetName())
    return true
end

仓库 200 格,权限按行会职位分档:普通成员只能存,堂主可取消耗品,会长与副会长可取全部。存入走 delitembymakeindex 摘除背包再入仓,两步在一个流程里完成,中断的半程由流水回滚。祖玛头像、沃玛号角的行会圣物另设圣物格,只进不出,圣物的归属是行会的脸面。

流水的审计

lua

---取出的双重校验与流水
function GuildRepo.withdraw(actor, repoIdx)
    local pos = getplayvar(actor, 2, "GuildPos")
    if pos ~= "leader" and pos ~= "vice" then
        sendmsg(actor, 1, "职位不足,无法取出")
        return false
    end
    local item = Repo.peek(repoIdx)
    if not item then return false end
    if not giveitem(actor, item:GetName(), 1) then
        sendmsg(actor, 1, "背包已满")
        return false
    end
    Repo.remove(repoIdx)
    Repo.log(actor:GetName(), "取出", item:GetName())
    sendmsg(actor, 2, actor:GetName() .. " 从行会仓库取出了 " ..
        item:GetName())
    return true
end

取出的流程先给货再销账:giveitem 成功才移除仓库条目,背包满的取出原地不动。取出的动作用行会频道播报,仓库的大件去向全帮可见——公开是防腐最便宜的手段。流水记录四元组:谁、动作、物品、时间,审计的查询按行会与时间段过滤,仓库的账与游戏的物品流水每日核对,差额即漏洞的信号。合服的仓库合并按行会 ID 映射搬迁,两个仓库的圣物格冲突由会长谈判决定去留。

验证与监控

仓库的存量与流水的增减对账,差额告警;存取的频次按职位分布统计,越权尝试的计数进风控。

踩坑记录

职位的判定曾经缓存了旧值,被撤职的副会长半小时后还能取件,职位的实时读取修复。存入的并发曾经超格,两个成员同秒塞满第 200 格,计数的原子校验补上。流水的查询曾经无索引,千行流水翻页拖垮行会面板,按时间与行会的联合索引治理。

上线要点

仓库的格数与权限分档按行会等级成长:一级行会 100 格,五级行会 300 格。仓库的界面带流水页签,账目的透明就是行会的公信。圣物格的展示在行会驻地,祖玛头像的陈列是招新的活招牌。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

玩法策划沙巴克税收

【玩法策划】沙城税务官:税收分配与廉政度的玩法设计

实战应用:用在哪里 沙巴克占领行会坐收税收却只进不出,非占领行会的玩家心里不平衡。税务官玩法把税收做成明账:占领行会对摆摊与…

2026-09-23 01:24 996 技术组 · 0 阅读
玩法策划比武社交

【玩法策划】比武招亲:比武切磋与社交绑定的玩法设计

实战应用:用在哪里 高端玩家婚姻系统只有仪式没有过程,社交绑定缺一个高光事件。比武招亲做成擂台玩法:擂主设擂摆彩头,攻擂者报…

2026-09-23 01:24 996 技术组 · 0 阅读
案例复盘限时礼包日期

【案例复盘】限时礼包少发一天的事故复盘

实战应用:用在哪里 开服七日限时礼包发到第六天断了粮,9 月 1 日当天领奖按钮灰的,投诉当天破千。事故根因是一条数字日期循…

2026-09-23 01:24 996 技术组 · 0 阅读
网络通信心跳假在线

【网络通信】心跳探测:半开连接的主动识别

实战应用:用在哪里 玩家拔线不退游戏,连接半开着,人不在指令也没有,在线数虚高,容量预案被假数据带着跑。心跳探测给每个在线玩…

2026-09-23 01:24 996 技术组 · 0 阅读
运维发布发布日历

【运维发布】发布日历:全月变更的集中排期

实战应用:用在哪里 周三发了合成系统补丁,周四又改强化概率,两条变更叠加后玩家分不清是哪个改出来的。发布日历把全月变更集中排…

2026-09-23 01:24 996 技术组 · 0 阅读
Lua实战滑动窗口计数

【Lua实战】时间窗口计数:滑动窗口的环形数组实现

实战应用:用在哪里 容量预案需要知道滚动一小时的副本进入峰值,而不是全天累计。滑动窗口用 60 个槽位每槽记一分钟的进入数,…

2026-09-23 01:24 996 技术组 · 0 阅读