随机商店概述

随机商店从商品池中随机选择商品展示给玩家。每个玩家看到的商品可以不同,商品会按配置的周期刷新。

两种生成模式

模式说明适用场景
ITEM_BY_ITEM 根据每个商品的稀有度权重逐个挑选 传统随机商店,多样化选择
BY_RARITY 先随机选择稀有度主题,再从该稀有度中挑选商品 主题商店,如"今日全是史诗"

稀有度配置

稀有度定义在 plugins/AIOShop/rarities.yml 中:

# rarities.yml
rarities:
  普通:
    chance: 0.5    # 50% 权重

  稀有:
    chance: 0.3    # 30% 权重

  史诗:
    chance: 0.15   # 15% 权重

  传说:
    chance: 0.05   # 5% 权重
chance 值不需要加起来等于 1,插件会自动计算权重比例。

随机商店配置

完整示例

# shops/random-shop.yml
display-name: "&e&l每日随机商店"
description:
  - "&7每天刷新不同商品"
  - "&7快来看看今天有什么!"

gui-template: "random-shop"

# 随机生成配置
random-generation:
  enabled: true
  generation-mode: "ITEM_BY_ITEM"  # 或 BY_RARITY
  period: "PERSONAL_DAILY"         # 刷新周期
  count: 8                         # 每次展示商品数量
  allow-duplicates: false          # 是否允许重复
  manual-refresh-enabled: true     # 是否允许手动刷新

# 商品池
items:
  common_bread:
    item-id: "bread"
    rarity: "普通"
    display-name: "&f新鲜面包"
    buy-price:
      amount: 5
      currency: "VAULT"
    buy-rewards:
      self:
        type: "ITEM"
        item: "bread"
        amount: 1
    limit-type: "PERSONAL_DAILY"
    limit-amount-range: "10-20"
    enabled: true

  rare_golden_apple:
    item-id: "golden_apple"
    rarity: "稀有"
    display-name: "&6&l金苹果"
    buy-price:
      amount: 100
      currency: "VAULT"
    buy-rewards:
      self:
        type: "ITEM"
        item: "golden_apple"
        amount: 1
    limit-type: "PERSONAL_DAILY"
    limit-amount: 3
    enabled: true

  legendary_nether_star:
    item-id: "nether_star"
    rarity: "传说"
    display-name: "&e&l下界之星"
    buy-price:
      amount: 2000
      currency: "VAULT"
    buy-rewards:
      self:
        type: "ITEM"
        item: "nether_star"
        amount: 1
    limit-type: "PERSONAL_DAILY"
    limit-amount: 1
    enabled: true

刷新周期

period 配置商店内容的刷新频率:

周期说明
PERSONAL_DAILY每个玩家每天刷新
PERSONAL_WEEKLY每个玩家每周刷新
PERSONAL_MONTHLY每个玩家每月刷新
GLOBAL_DAILY全服每天统一刷新
GLOBAL_WEEKLY全服每周统一刷新
GLOBAL_MONTHLY全服每月统一刷新

手动刷新

manual-refresh-enabled: true 时,玩家可以在商店界面中手动刷新商品。

刷新点数

手动刷新消耗刷新点数,管理员可通过命令管理:

# 查询玩家刷新点数
/as refreshpoints <玩家名> <商店ID>

# 设置玩家刷新点数
/as refreshpoints <玩家名> <商店ID> 5

管理员命令

/as refresh <玩家名> <商店ID>
强制刷新指定玩家的随机商店内容
权限:aioshop.admin.refresh
/as refreshshop <商店ID>
全服刷新随机商店,所有在线玩家会收到通知
权限:aioshop.admin.refreshshop

生成模式详解

ITEM_BY_ITEM 模式

每次从商品池中根据稀有度权重随机选择一个商品,重复直到达到 count 数量。

  • 商品被选中的概率 = 该商品稀有度权重 / 所有商品稀有度权重之和
  • allow-duplicates: false 时,已选中的商品不会再次出现
  • 适合提供多样化的商品选择

BY_RARITY 模式

先根据权重随机选择一个稀有度等级,然后从该稀有度的商品中随机选择。

  • 可能出现"今日全是史诗商品"的情况
  • 适合主题商店,增加惊喜感