跳到主要内容

为什么用星月市集

市集插件看起来简单,难的是那些「出事才会发现」的地方:两个人同时买最后一组会不会都买到?卖家刚好在你按确认时改了价怎么办? 拍卖被超过的钱去哪了?关服的那一刻正在成交的东西会不会消失?星月市集把这些情况都处理好了。

每笔交易只成交一次​

每一次购买、出价、卖给收购单、下架,都是数据库里的一个事务,而且第一步是一条带条件的更新: 「这件商品还在上架、还剩这么多、价格还是玩家看到的那个价格」——只有条件完全符合时才成交,然后在同一个事务里把要给双方的物品和钱写进待寄清单。

  • 两个玩家(甚至在两个不同的子服)同时买最后一组:只有一边成交,另一边提示「这件商品已经卖完、结束或被下架了」,已经扣的钱马上退回。
  • 两个人同时出价:后到的那个提示「价格或出价刚刚变动了,请确认后再试」,他刚扣的出价马上退回。
  • 卖家刚好在你按确认时改了价:不会用新价格成交,提示价格变动,要重新确认。
  • 同一个玩家网络卡顿时狂点:同时只会处理一个操作,提示「上一个操作还在处理,请稍候」。

东西不会丢​

所有给玩家的东西都寄到他的 StarMail 星月邮箱(详见 星月邮箱寄送):

情况星月市集的处理
买到东西、拍得东西、收购单收到货物品寄到星月邮箱,背包满了也不怕,整理好再领
东西卖出时卖家不在线 / 在别的子服收入寄到卖家的星月邮箱,并在他上线时告诉他离线期间卖了什么
拍卖出价被超过冻结的出价原数寄回星月邮箱
商品到期、被下架、拍卖流拍剩下的物品、收购单没用完的预付款、最高出价,全部寄回各自的星月邮箱
上架菜单关闭 / 断线 / 重载 / 关服放进上架菜单的物品退回背包;玩家已经离线时寄到他的星月邮箱
数据库写入失败已扣的物品与货币退回,提示「操作失败,请稍后再试(已退回扣除的物品与货币)」
寄信时当机、等待回应超时、星月邮箱暂时不能用东西留在待寄清单,之后自动重寄;每一笔带唯一编号,星月邮箱只收一次,不会重复也不会遗失
物品数据在这个子服读不出来(来自更新版本的服务器)交给读得懂的子服寄出;邮件留在邮箱,到正确版本的子服领取

待寄清单和成交写在同一个数据库事务里;寄出的邮件默认永不过期,每封邮件只能领一次,跨服同时点也只会有一边拿到。 物品以完整的物品数据保存,附魔、自定义名称、说明,以及其他插件写在物品上的数据都会原样保留。

拍卖公平透明​

  • 出价先扣款冻结:出价时就从余额扣除,被别人超过时自动退回,卖家不用担心赢家付不出钱。
  • 最低加价:下一次出价至少要「目前出价 × min-increment-percent%」与「min-increment」中较大的那个,默认 5% 或 1。
  • 防狙击:结束前 60 秒内有人出价,结束时间自动延到出价后 60 秒(anti-snipe),最后一秒偷袭没有用。
  • 一口价与保留价:卖家可以设一口价(出价达到就立即成交),也可以设保留价(最高出价没到就流拍,物品与出价各自退回)。
  • 有人出价后不能反悔:默认已有人出价的拍卖不能下架、不能改起拍价。

价格算得清清楚楚​

  • 零买也不会多收少收:一口价按「已卖数量 + 这次数量」的累计总额四舍五入,一个一个买的总花费刚好等于整批价格。
  • 单价太小时自动改为整批出售:例如 64 个物品卖 10 点券,单价不到 1 点,就只能整批买,避免零买时被四舍五入成 0。
  • 确认时锁定价格:按下「确认购买」时记住当时的单价,第二次确认如果价格变了就不成交。
  • 单笔金额上限:每种货币都有单笔上限(整数货币是 2147483647,金币是 10 万亿),超过时提示「金额太大了」,不会出现溢出或负数。
  • 成交均价参考:每件商品显示「近 7 天成交均价 / 个」(同一种物品、同一种货币),新手也不容易被坑。

规矩由服主决定​

全部可以在 config.yml 调整,详见 权限组与费用 与 价格与黑名单:

  • 权限组:一口价 / 拍卖 / 收购单各自的同时上架数量、交易税、上架手续费(固定 + 百分比)。
  • 价格范围:每种货币的单价上下限,以及个别物品(支持 * 通配)的单价上下限。
  • 黑名单:按材质、名称或说明里的文字、CustomModelData、其他插件的 PersistentData 标记;会检查潜影盒、箱子、木桶、收纳袋里面的物品,嵌套最多 8 层。
  • 两次上架之间的冷却、创造模式不能交易、指定世界不能交易。
  • 每一项都有对应的免除权限,给管理员或特定组使用。

给服主和开发者的便利​

  • 图形化:上架、购买、出价、收购、改价、下架都在菜单里完成,东西在星月邮箱里领取,聊天栏输入价格支持 1.5k、2w、3万。
  • 可改的界面:箱子菜单的每一个按钮都写在 YAML 里,支持 item-model、custom-model-data、提示框样式、头颅材质、自定义动作;装了云界面 CloudUI 还有全屏的市集、上架物品、我的上架、交易记录画面。
  • 记录:/sa log 查看上架、购买、出价、下架等操作,/sa trades 查看全服最新成交,玩家自己有交易记录菜单。
  • 对外通知:新商品全服公告(可设最低金额)、Discord Webhook(新上架 / 成交)。
  • API:其他插件可以读取市集商品、打开市集,并用四个事件拦截或记录上架、购买、出价与成交,见 开发者 API。