跳到主要内容

动态价格

开启动态价格的商品,买越多越贵、卖越多越便宜,没人交易时慢慢回到原价。适合矿物、农作物这类玩家会大量刷的回收品,防止一种东西被无限卖钱。

钻石:卖太多,行情 ▼ -60%

设定​

shops/ores.yml
items:
diamond:
slot: 16
item: DIAMOND
buy: 200
sell: 60
dynamic:
step: 0.02 # 每份涨跌 2%
min: 0.4 # 最低 = 原价 × 0.4
max: 2.5 # 最高 = 原价 × 2.5
recover: 24h # 回复半衰期:每 24 小时,偏离的幅度减半
gold_ingot:
slot: 12
item: GOLD_INGOT
amount: 8
buy: 240
sell: 72
dynamic: true # 用默认值
键默认说明
step0.01每买一份涨多少、每卖一份跌多少(0.01 = 1%)
min0.5价格最低是原价的几倍
max2.0价格最高是原价的几倍
recover12h回复半衰期:每过这么久,累积的买卖量剩一半(30m、6h、2d……)
cross-serverfalsetrue = 所有子服共用一个行情(需要 MySQL)
enabledtruefalse = 暂时关闭(保留设定)

dynamic: true 等于 step: 0.01、min: 0.5、max: 2.0、recover: 12h。

价格怎么算​

  1. 每件商品记一个「净买卖量」:每买一份 +1,每卖一份 −1。
  2. 这个数字会随时间衰减:每过 recover 的时间就剩一半,所以没人交易时会慢慢回到 0。
  3. 价格倍数 = 1 + step × 净买卖量,再限制在 min 与 max 之间。
  4. 买价与回收价都乘上这个倍数,再依货币的小数位四舍五入。

例子(钻石,step: 0.02、min: 0.4):玩家一口气卖了 30 份,净买卖量 −30,倍数 = 1 − 0.6 = 0.4,回收价从 60 跌到 24 金币,说明显示「行情:▼ -60%」。之后没人再卖的话,24 小时后净买卖量剩 −15(倍数 0.7),48 小时后剩 −7.5(倍数 0.85)……

商品说明​

状态显示
涨价行情:▲ +12%(红色)
跌价行情:▼ -8%(绿色)
接近原价不显示

文字在 messages.yml 的 lore.trend-up / lore.trend-down。PlaceholderAPI 变量 %cloudshop_trend_<商店>_<商品>% 输出同样的 +12% / -8%。

和折扣、特卖的关系​

  • 买价 = 原价 × 行情倍数 × 折扣。特卖显示的删除线原价是「已经算上行情」的价格。
  • 回收价只乘行情倍数,折扣与特卖不影响回收价。

写入与跨子服​

  • 行情在每次交易时累积在内存里,第一笔交易后 5 秒批次写进数据库,之后才开始下一批。没人交易时不会写入。
  • cross-server: true 时,所有子服的买卖量记在同一行;其他子服的变化每 30 秒同步一次。
  • 不开 cross-server 时,每个子服各自有自己的行情。

重置​

/cs reset ores 整个商店的行情(连同限购、库存)回到原价
/cs reset ores diamond 只重置钻石

在 游戏内管理介面 左键「动态价格」开 / 关(开启用默认值),Shift+点击可以输入自订值:0.01 0.5 2 12h(每份涨幅、最低倍、最高倍、回复时间),加上 cross 就跨子服共用。