Skip to content

付费队列位

玩家可以在队列页花钱买额外队列位。价格档位写在 plugins/EmakiStation/queue_costs.yml,文件名由 config.ymlqueue.purchase.cost_file 指定。

这是业务数据文件:release_default_data 只在文件缺失时释放一次,版本升级不会覆盖管理员已有内容。

三道开关

任一关闭都不能购买:

开关位置
queue.purchase.enabledconfig.yml,全服总开关。
queue.allow_purchasestations/<id>.yml,单个工作站是否出售。
emakistation.purchase玩家权限,默认 true

完整示例

yaml
tiers:
  - count_range: "1-2"
    currency:
      type: vault
      amount: 5000
  - count_range: "3-4"
    currency:
      type: vault
      amount: 20000
  - count_range: "5-6"
    currency:
      type: vault
      amount: 50000
    item:
      source: "diamond"
      amount: 8

fallback:
  currency:
    type: vault
    amount: "100000 * 1.15 ^ (%count% - 7)"
  max_amount: 500000000

batch:
  enabled: true
  options: [1, 2, 5]

字段

字段说明
tiers[].count_range该档覆盖第几个到第几个队列位,如 "1-2"
tiers[].currency.typevaultexcellent
tiers[].currency.amount货币金额。
tiers[].item.source额外要求的物品,CoreLib ItemSource token。
tiers[].item.amount物品数量。
fallback.currency.type兜底档货币类型。
fallback.currency.amount兜底档金额,支持表达式,%count% 是即将购买的第几个队列位,走 CoreLib ExpressionEngine。
fallback.max_amount单个队列位的价格上限。
batch.enabled是否允许批量购买。
batch.options批量购买的可选数量。

fallback.max_amount必需项:缺失或非正数时兜底档整体失效,超出 tiers 的队列位将不可购买。它的作用是防止指数表达式溢出为 Infinity

计价规则

玩家购买第 N 个队列位时,用 N 落在哪个 count_range 决定价格。N 是这个玩家在这个工作站已购数量 + 1,各工作站独立计数。越靠前的档优先;未匹配任何档则用 fallback

批量购买按逐格计价再求和结算,不是「单价 × 数量」——否则玩家可以一次性按最便宜那档买下一大批。

缺价即拒绝:某一格既没有匹配档也没有 fallback 时,购买被拒绝而不是免费放行。文件缺失或整体不可用时,付费队列位功能整体关闭。

与上限的关系

买到的队列位是叠加在基础长度或权限档之上的,但最终仍受工作站 queue.max_length 截断。插件会在报价阶段就拒绝会被截断吞掉的购买,不会先收钱再发现买了没用。

取消队列条目时,已付的货币按工作站的 cancel_refund_rate 折算退还,与材料同一比例。