跳到主要内容

成交税

Malkuth 的成交税用于玩家之间的交易抽成,当前会在玩家商店、全球市场和拍卖行这类“卖家收款”的场景中计算。买家仍按原价付款,卖家实际获得 原价 - 税费,税收流水会写入数据库,方便服主按商店、模式或玩家查看统计。

适用场景

  • 玩家商店、全球市场、拍卖行需要从成交额中抽取服务器税费。
  • VIP、赞助玩家需要按权限降低税率或免税。
  • 服主需要统计最近 7 天、30 天的交易额、税收和卖家实收。

配置位置

税收配置写在具体 shop/*.yml 商店文件中,字段名为 tax。默认 shop/global_market.ymlshop/auction.yml 已提供示例:

tax:
enabled: false
rate: 0.0
# exemptions:
# vip:
# permission: 'malkuth.tax.vip'
# priority: 100
# mode: REDUCE_RATE
# value: 0.5
# sponsor:
# permission: 'malkuth.tax.sponsor'
# priority: 200
# mode: OVERRIDE_RATE
# value: 0.0
字段说明
tax.enabled是否启用成交税,默认关闭
tax.rate基础税率;0.05 表示 5%,也兼容写 5 表示 5%
tax.exemptions.<key>.permission命中该减免规则所需权限
tax.exemptions.<key>.priority规则优先级,数值越大越先判断;同优先级按 key 排序
tax.exemptions.<key>.modeREDUCE_RATE 按比例降低基础税率,OVERRIDE_RATE 直接覆盖最终税率
tax.exemptions.<key>.value减免值;和 rate 一样支持 0.550 这类写法

减免示例

tax:
enabled: true
rate: 0.05
exemptions:
vip:
permission: 'malkuth.tax.vip'
priority: 100
mode: REDUCE_RATE
value: 0.5
sponsor:
permission: 'malkuth.tax.sponsor'
priority: 200
mode: OVERRIDE_RATE
value: 0.0

上面配置表示:

  • 普通玩家成交税为 5%。
  • malkuth.tax.vip 的玩家税率降低 50%,最终税率为 2.5%。
  • malkuth.tax.sponsor 的玩家最终税率直接覆盖为 0%,也就是免税。
  • 如果玩家同时命中多个规则,只使用优先级最高的第一条规则。

可用占位符

税收结果会在相关 UI、公告和结算提示中提供下列变量:

变量说明
{tax_rate}最终税率百分比文本,例如 5
{tax_amount}本次税费金额
{seller_income}卖家实收金额
{tax_exemption}命中的减免规则 key;未命中为空
{tax_exemption_mode}命中的减免模式;未命中为空

税务报表命令

所有税务命令权限为 malkuth.admin.tax,默认 OP。

命令说明
/malkuth tax report [商店/all] [天数] [模式/all]查看指定范围内的交易总数、成交额、税收、卖家实收和平均税率
/malkuth tax player <玩家> [天数] [模式/all]按卖家视角查看某个玩家的税收报表
/malkuth tax buyer <玩家> [天数] [模式/all]按买家视角查看某个玩家参与的税收报表
/malkuth tax top [商店/all] [天数] [模式/all]查看卖家税收排行,最多显示前 10 名
/malkuth tax shoptop [天数] [模式/all]查看商店税收排行,最多显示前 10 个商店

模式 当前支持 PLAYERGLOBAL_MARKETAUCTIONall。不填写天数时默认统计最近 30 天。

当前实现注意点

  • 税收只影响卖家实收,不会让买家额外多付。
  • 税收流水依赖数据库初始化完成;报表命令会异步查询,不会直接卡主线程。
  • rate 与减免 value 都会被限制在 0.0~1.0,写 5 会自动按 5% 处理。
  • 玩家商店、全球市场、拍卖行都会写入税收流水;普通固定商店没有卖家,不属于成交税统计场景。
  • 税费本身目前作为统计流水记录,不会自动发放给某个“国库账户”。