2.3 商店
所有商店文件都存储在 shops
文件夹下。
商店文件
示例商店文件在此:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| settings: menu: 'example-shop-menu' buy-more: true shop-name: '食物商店'
items: A: display-name: "苹果" price-mode: ANY product-mode: ALL products: 1: material: APPLE amount: 1 buy-prices: 1: economy-plugin: Vault amount: 200 placeholder: '{amount} 枚金币' start-apply: 0 2: economy-plugin: PlayerPoints amount: 10 placeholder: '{amount} 点券' start-apply: 5 sell-prices: 1: economy-plugin: Vault amount: 50 placeholder: '{amount} 枚金币' 2: economy-plugin: PlayerPoints amount: 1 start-apply: 5 placeholder: '{amount} 点券' buy-actions: - 'player_command: say %player% 购买了一个苹果!' - 'announcement: &7%player% 购买了一个苹果!' B: display-item: material: BREAD display-name: "面包" price-mode: ANY product-mode: ALL add-lore: - '@a&e平民价: {buy-price}' - '@b&e回收价: {sell-price}' products: 1: material: BREAD amount: 1 buy-prices: 1: economy-plugin: Vault amount: 200 placeholder: '{amount} 枚金币' start-apply: 0 2: economy-plugin: PlayerPoints amount: 10 placeholder: '{amount} 点券' start-apply: 5 sell-prices: 1: economy-plugin: Vault amount: 50 placeholder: '{amount} 枚金币' 2: economy-plugin: PlayerPoints amount: 1 start-apply: 5 placeholder: '{amount} 点券' buy-actions: - 'player_command: say %player% 购买了一个面包!' - 'announcement: &7%player% 购买了一个面包!' buy-limits: global: 100 default: 10 test-condition: 20 buy-limits-conditions: test-condition: - 'permission: test.permission' buy-limits-reset-mode: 'TIMED' buy-limits-reset-time: '00:00:00' buttons: a: display-item: material: arrow name: '&c上一页' lore: - '&7点击翻到上一页!' actions: - 'shop_menu: crops' ```
- menu: 商店的菜单名称,也就是菜单的文件名称;**可选,如果这个选项删除,则该商店无法打开,只能通过 quickbuy 和 quicksell 指令等手段购买里面的商品 - buy-more: 该商店中的商品是否能打开增量购买菜单;**可选,各个商品的配置中也有这个选项,因此这个选项也是可以删除的。如果未设置该选项,商品里也没有 `buy-more` 选项,则默认开启 - shop-name: 商店的显示名称,会被内置变量 `{shop-name}` 使用。
物品即为商店中的商品,商品可以不是物品,也可以是虚拟物品,例如 100 点其他经济插件的货币。 在上面的示例中,A 和 B 就是商品的 ID,如果你需要在菜单中显示这个商品,则商品的 ID **必须** 是一个字符,因为它们需要在商店的 `layout` 选项中使用。(a-z,A-Z,0-9 等,已经大于原版箱子 54 格的所需了)否则, 你可以随心所欲的设置商品的 ID,只是它们将不能再显示到商店菜单中了。 - display-item: 展示在商店菜单中的物品,使用物品语句,可以与玩家实际获得的物品不同。对虚拟物品,你必须在这里设置 `display-item` 选项,否则它们就无法在商店菜单中显示。对于真实物品,你必须设置 `config.yml` 文件中的 `display-item` 下的 `auto-set-first-product` 为 `true` 以允许你删除这个选项,启用后,若 `display-item` 未设置,那么出售的第一个真实物品将会被当做图标。该部分配置会使用到物品格式的配置; - display-item.modify-lore: 是否自动修改物品描述,自动添加商品价格等信息;**可选参数(默认为 true)** - display-name: 设置商品的显示名称,该名称会在基岩版 FormUI、内置变量 `{product}` 和增量购买菜单中使用; - add-lore: 为该商品单独设置自动修改额外物品描述的格式,**可选参数。** - buy-more: 设置该商品是否可以打开增量购买菜单,**可选参数。** - price-mode: 价格的模式,支持 `ANY、ALL、CLASSIC_ANY 和 CLASSIC_ALL` 参数;**可选参数** - product-mode: 商品的模式,可填入的参数与上述相同。**可选参数。** products: 作为商品的物品。支持物品语句和经济语句(分别见上述章节);**可选参数。若未设置,玩家在购买/出售后不会获得任何东西,适用于命令商店。** - buy-prices: 商品的购买价格。支持物品语句和经济语句(分别见上述章节);**可选参数,若未设置则不能购买。** - buy-prices.start-apply: 设置价格增加的起始购买次数;**可选参数。默认为 0。** - buy-prices.end-apply: 设置价格增加的最终购买次数;**可选参数。默认不限制。** - buy-prices.apply: 应用价格的购买次数,格式为:`[1,2,3,4]`;**可选参数** - buy-prices.placeholder: 在内置变量 `{price}` 中的价格显示格式;**默认使用语言文件中的格式。** - buy-price.conditions: 若要使用这个价格购买物品,则玩家必须到达的条件; - sell-prices: 商品的出手价格。支持物品格式和经济格式(分别见上述章节);**可选参数,若未设置则不能出售。** - buy-actions: 购买商品后执行的一系列动作。见“动作”章节获取更多信息;**可选参数** - sell-actions: 出售商品后执行的一系列动作。见“动作”章节获取更多信息;**可选参数** - buy-conditions: 玩家购买该商品所需达到的条件。见“条件”章节获取更多信息;**可选参数** - sell-conditions: 玩家出售该商品所需达到的条件。见“条件”章节获取更多信息;**可选参数** - buy-limits: 设置购买或出售的最大次数;**可选参数。若未设置,商品购买次数不作限制。** - buy-limits.global: 全局购买限制;**可选参数。** - buy-limits.default: 若玩家未到达下述的任意条件,他们就会使用该限制;**若设置了 buy-limits,则该项为必需参数。** - buy-limits.<条件 ID>: 达到该要求的玩家将会使用该限制。可在“条件”章节找到对应的格式。例如:
```yml buy-limits: default: 10 vip: 20 buy-limits-conditions: vip: - 'permission: test.permission'
|
- buy-limits-reset-mode: 可填入的参数有
TIMER
和 TIMED
。若 buy-limits
部分配置存在且该选项未设置,我们将会使用你在 config.yml
中的默认值;若设置 buy-limits 选项则为必需参数。
- buy-limits-reset-time: 见上,格式为 XX:XX:XX。若 buy-limits 部分配置存在且该选项不存在,我们会使用
config.yml
中的默认值;
TIMER 代表间隔重置、TIMED 代表每日定时重置。
例如,你将重置时间设置为 15:00:00,现在时间为 2023-09-04 12:00:00
在 TIMER 模式下,重置时间为 15 小时后,即 2023-09-05 03:00:00。
在 TIMED 模式下,将会在 2023-09-04 15:00:00 进行重置。
- sell-limits: 与 buy-limits 设置相同,但是是为出售使用的;
- buy-cooldown-mode: 设置商品的冷却模式;可选参数
- buy-cooldown-time: 设置商品的冷却时间。可选参数
四种价格/商品模式
如图所示,简单而言,带有 CLASSIC
前缀的模式和不带的模式价格计算方式不一 样。前者是乘法,后者是加法。例如你要购买 5 个面包,面包单价是 10 元,那 么前者是 5+5+5+5+5+...+5,后者是 5x10。前者因为是相加关系,每次相加的 数字可以不一样,后者因为是相乘关系,相乘过程中数字无法发生变动。:
按钮
商店中同样可以插入菜单中的按钮(buttons)选项,功能完全一致。