跳到主要内容

限购与库存

限购与限售​

items:
beacon:
slot: 25
item: BEACON
buy: [5000 money, 50 points]
limit:
buy: # 购买限制
amount: 1 # 每个周期最多几份
reset: weekly # 重置周期(不写 = 永久)
scope: player # player 每人各自计算(默认)/ global 全服玩家共用
cross-server: false # true = 所有子服共用一个数字(需要 MySQL)
diamond:
slot: 16
item: DIAMOND
sell: 60
limit:
sell: # 出售限制:同样的写法
amount: 64
reset: daily
键默认说明
amount每个周期最多几份(不是几个:每份 64 个、限购 5 = 最多 320 个)
resetnever重置周期,写法见下方 周期
scopeplayerplayer 每位玩家各自计算;global(或 全服)全服玩家加起来共用
cross-serverfalse多个子服共用 MySQL 时,true = 所有子服加起来算一个数字;false = 每个子服各自计算

简写:limit: {buy: 3} = 每人永久限购 3 份。

钻石:每日限售 64 份

商品说明会显示剩余次数与重置倒数:

限购:0/1 (每人) · 6天14小时后重置
限售:40/64 (每人) · 9小时后重置

达到上限时提示「已达到限购数量」。数量选择菜单的「最多」也会照剩余次数计算。

出售箱与一键卖出会略过有限售的商品

设了 limit.sell 的商品只能在商店里单独出售(右键 / Shift+右键),出售箱与 /sell all 会略过并提示「有 N 种物品设有出售次数限制,请到商店里单独出售」。

库存​

库存是全服共用的存货,卖完就要等补货:

netherite_ingot:
slot: 22
item: NETHERITE_INGOT
buy: [8000 money, 100 points]
stock:
amount: 10 # 每个周期有几份
restock: daily # 补货周期:到时间直接补满(不写 = 永不补货)
cross-server: false # true = 所有子服共用同一批库存
  • 简写:stock: 10 = 10 份,永不补货。
  • 只限制购买;玩家卖回来不会增加库存。
  • 商品说明显示「库存:7/10 · 9小时后重置」,卖完显示「已售罄」,购买时提示「这件商品已售罄,请等待补货」。
  • 同一件商品可以同时有限购与库存:例如每人每天限购 1 份、全服每天共 20 份。

重置周期​

reset、restock、轮换商店 的 period 都用同一种写法:

写法什么时候重置
never(或不写、永久)永不重置
daily每天 00:00
daily 04:00每天 04:00
weekly每周一 00:00
weekly SATURDAY 04:00每周六 04:00(星期也可以写 SAT、6、周六;1 = 周一 … 7 = 周日)
monthly每月 1 日 00:00
monthly 15 04:00每月 15 日 04:00(日期超过当月天数时用当月最后一天)
hourly每小时整点
6h每 6 小时(00:00、06:00、12:00、18:00)
30m每 30 分钟(整点与半点)
2d每 2 天

中文也可以:每天 04:00、每周 周六、每月 15、每小时。

时间用 config.yml 的 timezone(留空 = 服务器系统时区,例如 Asia/Shanghai)。

不需要任何定时器​

每个周期在数据库里是一行新的记录:时间一到,大家自然读到新周期的那一行(从 0 开始),不需要任何定时任务去清零。所有子服在同一时刻算出同一个周期,所以共用 MySQL 时一起重置。过期的记录每 6 小时在背景清理一次。

跨子服共用​

数据库cross-server: false(默认)cross-server: true
SQLite每个子服各自的数据库,各自计算同左(没有共用的数据库)
MySQL每个子服各自计算(同一个数据库里分开记)所有子服加起来算一个数字

共用时每次购买都是一次数据库条件更新:「目前已用 + 这次份数 ≤ 上限」才写入,在同一个交易里完成。两个子服的玩家同时抢最后一件,只有一边会成功,另一边提示已售罄 / 已达上限,不会扣钱。见 MySQL 多服同步。

在管理介面设定​

游戏内管理介面 的商品设定里,左键「购买限制」/「出售限制」/「库存」,在聊天栏输入:

输入结果
5每人永久限购 5 份
5 daily每人每天 5 份
3 weekly global全服每周共 3 份
10 daily cross每人每天 10 份,所有子服共用
100 daily(库存)库存 100 份,每天补满
50 weekly cross(库存)所有子服共用 50 份,每周补满
0取消

右键这些按钮 = 取消限制。

清除记录​

/cs reset <商店> 清除整个商店的限购、库存与动态价格
/cs reset <商店> <商品> 只清除一件商品

管理介面的商店设定里也有「清除限购与行情」按钮。