行会合并时最麻烦的不是人而是物:两个仓库的物资要并成一本账,重复的官职资产要折算,账目还要经得起两边成员的对质。行会合并仓储接口把并账做成标准流程:以主行会账本为基底、副行会账本逐项并入,冲突资产按规则折算,全程留痕。
合并以高等级行会为基底,副行会物资逐项并入:同类物资直接累加,超过单类上限的部分按八折折成贡献返还副行会成员。示例代码如下:
-- 行会合并:逐项并账
local player = class(actor)
local POOL_CAP = 2000
local function mergePool(player, itemName, subAmount)
local main = tonumber(getsysvar("Pool_" .. itemName) or 0)
local add = subAmount
if main + subAmount > POOL_CAP then
add = POOL_CAP - main
local refund = math.floor((subAmount - add) * 0.8)
setsysvarex("MergeRefund_" .. itemName, refund, true)
sendmsg(player, 1, 0, itemName .. " 超出上限,超出部分八折折成贡献返还。")
end
setsysvarex("Pool_" .. itemName, main + add, true)
end
两行会拥有同名特殊资产(如行会旗帜)时按激活时间保留早者,晚者折算为行会基金;并账完成后生成合并清单公示七天,成员可在期内提出异议复核。示例代码如下:
-- 冲突折算:保留与折算
local player = class(actor)
local function mergeConflictAsset(player, assetName, subTs)
local mainTs = tonumber(getsysvar("Asset_" .. assetName) or 0)
if subTs < mainTs then
setsysvarex("Asset_" .. assetName, subTs, true)
sendmsg(player, 1, 0, assetName .. " 以副行会资产为准保留。")
else
setsysvarex("GuildFund", tonumber(getsysvar("GuildFund") or 0) + 50000, true)
sendmsg(player, 1, 0, assetName .. " 重复,折算五万行会基金。")
end
setsysvarex("MergePublic_" .. assetName, os.date("%Y%m%d%H%M"), true)
end
并账推演用两套模拟仓库全量验证:物资累加正确、超限折算金额准确、冲突资产保留规则按时间生效、公示期内异议可回滚。合并完成后连续三天监控两边的账目查询量,异常对质集中在某类物资时重新核对该类折算规则。并账接口的每次调用都写合并流水,合并是不可逆操作,流水是唯一的后悔药。
并账曾按总清单直接覆盖基底账本,副行会的独有物资直接丢失,逐项并入是修出来的流程。折算比例曾出过两套口径,公告说八折实发七折引发集体投诉,折算系数单一来源配置。公示期曾形同虚设,异议入口藏在三级页面,异议按钮放到公示榜首,合并的公信力来自可见与可诉。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…