商店类型
AIOShop 支持两种主要的商店类型:普通商店和随机商店。
普通商店
普通商店是最基础的商店类型,所有商品固定显示,适合用于:
- 杂货铺
- 材料商店
- 工具商店
- 任何需要固定商品列表的场景
配置示例
yaml
# shops/general-store.yml
display-name: "&2&l杂货铺"
description:
- "&7日常生活用品商店"
gui-template: "general-store"
items:
bread:
display-name: "&f新鲜面包"
buy-price:
amount: 5.0
currency: "VAULT"
buy-rewards:
self:
type: "ITEM"
item: "bread"
amount: 1
sell-item-matcher:
material: "bread"
sell-rewards:
main:
type: "CURRENCY"
amount: 2.0
currencyType: "VAULT"随机商店
随机商店的商品会根据配置随机生成,增加游戏趣味性。支持两种随机模式:
ITEM_BY_ITEM 模式
逐个挑选商品,根据每个商品的稀有度权重随机选择。
yaml
random-generation:
enabled: true
generation-mode: "ITEM_BY_ITEM"
period: "PERSONAL_DAILY"
count: 8
allow-duplicates: false
manual-refresh-enabled: true特点:
- 根据商品的稀有度权重逐个选择
count指定生成的商品数量allow-duplicates控制是否允许重复商品
RARITY_FIRST 模式
先按稀有度分配名额,再从对应稀有度的商品池中随机选择。
yaml
random-generation:
enabled: true
generation-mode: "RARITY_FIRST"
period: "PERSONAL_WEEKLY"
rarity-counts:
普通: 4
稀有: 2
史诗: 1
传说: 1
manual-refresh-enabled: true特点:
- 精确控制每种稀有度的商品数量
- 更容易平衡商品分布
- 适合需要固定稀有度比例的场景
刷新周期
| 周期 | 说明 |
|---|---|
PERSONAL_DAILY | 每个玩家每日独立刷新 |
PERSONAL_WEEKLY | 每个玩家每周独立刷新 |
GLOBAL_DAILY | 全服每日统一刷新 |
GLOBAL_WEEKLY | 全服每周统一刷新 |
手动刷新
启用 manual-refresh-enabled: true 后,玩家可以消耗刷新点数手动刷新商店。
刷新点数管理
bash
# 查询玩家刷新点数
/shop refreshpoints <玩家> <商店ID>
# 设置玩家刷新点数
/shop refreshpoints <玩家> <商店ID> <点数>稀有度系统
稀有度定义在 rarities.yml 中:
yaml
rarities:
普通:
chance: 0.5 # 50% 基础概率
稀有:
chance: 0.3 # 30% 基础概率
史诗:
chance: 0.15 # 15% 基础概率
传说:
chance: 0.05 # 5% 基础概率商品通过 rarity 字段引用稀有度:
yaml
items:
diamond_sword:
rarity: "史诗"
# ...商店对比
| 特性 | 普通商店 | 随机商店 |
|---|---|---|
| 商品固定 | ✅ | ❌ |
| 随机生成 | ❌ | ✅ |
| 稀有度系统 | ❌ | ✅ |
| 刷新机制 | ❌ | ✅ |
| 配置复杂度 | 低 | 中 |
| 适用场景 | 基础交易 | 抽奖/探索 |
