PRD-050 帮会竞拍分红
文档编号:PRD-050
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/guild/guild_auction.lua
1. 背景与目标
帮会活动产出的稀有物品通过内部竞拍分配,收益按贡献分红。竞拍规则、分红比例、流拍处理适合用 Lua 编排。
目标
- 帮会 BOSS/活动掉落的稀有物品进入帮会竞拍。
- 成员用帮会贡献/金币竞价,价高者得。
- 成交金额按贡献比例分给参与成员,流拍进入帮会仓库。
2. 核心规则
- 竞拍由帮主/副帮主开启,持续 30 分钟。
- 竞拍物品来自帮会活动掉落,绑定物品不可竞拍。
- 起拍价、加价幅度由物品品质决定。
- 竞价冻结货币,被超价解冻。
- 成交后物品邮件发给买家,金额按“参与度 + 贡献”分红。
- 流拍物品进入帮会仓库,下次活动重新上架。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/guild/guild_auction.lua
GuildAuction = {
duration = 1800,
min_increment = 100,
dividend_rate = 0.9, -- 90% 分红,10% 帮会资金
}
function OnAuctionStart(ctx, guild, item)
local order = ctx:CreateGuildAuction(guild, item)
ctx:BroadcastGuild(guild, "帮会竞拍开始:" .. item.name)
ctx:SetTimer("auction_end_" .. order.id, GuildAuction.duration, function()
OnAuctionEnd(ctx, order.id)
end)
end
function OnBid(ctx, role, order_id, price)
local order = ctx:GetAuction(order_id)
if price < order.current + GuildAuction.min_increment then
return ctx:Fail(role, "加价不足")
end
if not ctx:FreezeMoney(role, price) then
return ctx:Fail(role, "货币不足")
end
ctx:RefundMoney(order.last_bidder, order.current)
ctx:UpdateAuction(order, role, price)
end
function OnAuctionEnd(ctx, order_id)
local order = ctx:GetAuction(order_id)
if not order.bidder then
ctx:MoveToGuildWarehouse(order.item)
else
ctx:DeliverToBidder(order)
ctx:DistributeDividend(order, GuildAuction.dividend_rate)
end
ctx:CloseAuction(order)
end
- 竞拍状态、冻结货币、分红明细持久化。
- 分红按成员贡献度/参与次数权重,脚本计算。
- 流拍物品进入帮会仓库,脚本记录来源。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| S→C | SC_GuildAuctionInfo | 物品/当前价/倒计时 |
| C→S | CS_GuildAuctionBid | 出价 |
| S→C | SC_GuildAuctionResult | 成交/流拍/分红 |
3.3 权限与风控
- 仅帮主/副帮主可开启/提前结束。
- 帮主可设置是否允许自己竞价(默认允许)。
- 同一买家/卖家频繁交易触发风控。
- 竞价冻结/退款/分红全部事务化。
4. 客户端设计
- 帮会竞拍页:物品、当前价、加价按钮、倒计时。
- 出价弹窗显示冻结金额与余额。
- 分红明细:总金额、帮会资金、个人分红。
- 流拍提示与仓库入口。
- 竞拍历史。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
duration | 竞拍时长 |
min_increment | 最小加价 |
dividend_rate | 分红比例 |
start_price | 起拍价规则 |
warehouse | 流拍去向 |
Lua 接口:CreateGuildAuction、FreezeMoney、RefundMoney、UpdateAuction、DistributeDividend、MoveToGuildWarehouse。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 竞拍中帮会解散 | 取消竞拍,退还冻结货币 |
| 买家退会 | 仍可成交,物品邮件发放 |
| 分红时成员离线 | 邮件发放 |
| 重复结算 | 幂等 |
| 服务器重启 | 从 DB 恢复竞拍 |
| 脚本异常 | 取消竞拍,全额退款 |
7. 验收标准
- 开启/出价/冻结/退款/成交/流拍/分红正确。
- 分红比例与明细可追溯。
- 权限、退会、解散处理正确。
- 事务一致,无重复扣款/发奖。
- 脚本可调整时长/加价/分红。