本帖最后由 longlongz 于 2018-11-24 00:43 编辑

BossShopPro
Configuration | 配置文件
字数统计: 5044字




这个页面会讲解一下基础:如何使用 BossShopPro.
你可以手动建立所有东西或者使用 helpful BossShopProConfigure tool(BossShopPro编辑器).

如何建立商店?
“商店文件”是一个你可以自己创建的文件,所有的“商店文件”都是一个GUI/箱子,你可以放置任何的物品到任何一个在GUI中的物品格。

首先先创建一个新的商店文件并解释文件的格式.
创建一个新的文件到你的商店文件夹中,位于/plugins/BossShopPro/shops

暂时就命名这个商店文件为shop.yml
创建完成时,使用文本编辑器打开文件。

我们需要先从文件的选项开始建立GUI。
使用下方的选项来开始我们的文件,但是先不要保存文件。

  1. ShopName: example-shop
  2. DisplayName: '&a商店例子'
  3. Command: example:ex #指令
  4. signs:
  5.   text: '[example-shop]'
  6.   NeedPermissionToCreateSign: true
复制代码
·       ShopName 是商店ID,你可以凭自己的偏好来填写
·       DisplayName是游戏中菜单GUI的标题。你可以用任何的格式或颜色
·       Command: 这里你可以写入打开菜单所需要的指令。你可以使用“:”来为菜单添加多个指令。在这个案例中,指令为/example和/ex
·       Sign text则是告示牌上填写特定的内容就能够打开菜单,我们不会在这个例子中使用到,如果你想要使用的话,你需要在主配置文件中开启功能
现在我们要开始添加物品到商店中了..
在这个例子中,我们先从一个石头方块开始,将他放入GUI的第一格,然后再点击时,你会使用15金钱来购买1块石头。
(
: 需要前置 Vault)

  1.   '1':
  2.     RewardType: item
  3.     PriceType: money
  4.     Price: 15
  5.     Reward:
  6.     -  - type:STONE
  7.        - amount:1
  8.     MenuItem:
  9.     - type:STONE
  10.     - amount:1
  11.     - 'lore:&f点击此处来购买这个物品 售价$%price%'
  12.     Message: '&f你获得了奖励%reward%!'
  13.     InventoryLocation: 1
  14.     ExtraPermission: ''
复制代码

·       '1' 是商店的ID(内部商店名称),建议像我一样将物品的坐标写在ID里[size=13.333333015441895px]来保持你的文件整洁
·       RewardType是商店物品被点击后会发生的事件,例如获得奖励
·       所有RewardTypes 可用的事件在here
·       PriceType是点击物品所需的价格的类型
·       所有可用的PriceTypes here
·       Price 是你定义的PriceType所需的价格;在案例中,金钱是我们的PriceType(价格类型),所以15金钱就是Price,点击时会扣除15金钱
·       Reward 是你点击物品后可以获得的奖励;RewardType 在我们的案例中是item(物品),所以我定义了type:STONE(类型:石头)amount:1(数量:1)作为奖励.
·       查看更多的详细案例请点击 here
·       查看更多关于如何建立物品的信息请点击here
·       MenuItem 是菜单GUI中显示的图标, 这可以是你想要的任何物品.. 我选择了只显示一块石头作为显示图标,我还定义了一个带有占位符的物品描述
·       查看所有可用的占位符 here
·       Message 是点击物品后会显示的聊天消息
·       InventoryLocation是物品在箱子中的坐标,所以1是第一格。你可以使用0来自动选取下一个空的位置。
·       ExtraPermission是点击物品所需要的权限,我们暂时不会用到。

现在你已经添加选项然后定义最少一个物品..保存文件吧。

在游戏中重载BossShop,使用指令:
/bs reload
因为我们将这个商店的名称叫为'example-shop',所以我们可以使用下方的指令来打开菜单商店:
/bs example-shop
如果你遵守了这些步骤,你应该可以在游戏里看到下方的菜单:


你现在应该已经对 BossShopPro '商店文件' 的原理有一个基本的认识了.

·       查看更多的例子和资源请点 here
·       查看更多可用的RewardTypes 请点here
·       查看更多可用的PriceTypes请点here
·       查看更多可用的占位符请点 here
·       查看如何使用条件指南here
·       查看更多的高级选项请点here
·       物品有不同的行动(左键, 右键, .)
·       玩家输入(Input
·       贴士和技巧
·       和更多的高级选项



如何设置config.yml文件?
  1. # BossShopPro
  2. # by Felix Neubauer
  3. # 点击链接查看更多信息: https://www.spigotmc.org/wiki/bossshoppro-configuration
  4. #
  5. # BossShopPro Wiki 文档页面:
  6. # https://www.spigotmc.org/wiki/bossshoppro
  7. #
  8. # 嘿!
  9. # 你拿到了BossShopPro? 很好!
  10. # 相信我:设置起来其实很简单.
  11. #
  12. # 你可以手动(无聊/困难)编辑配置文件
  13. # 或者你可以使用一个更加方便的方法:使用"BossShopProConfigure" (一个特别棒的BSP编辑器).
  14. # 你可以在此处下载BossShopProConfigure: https://www.spigotmc.org/wiki/bossshoppro-tool
  15. #
  16. #
  17. #
  18. #
  19. #
  20. # EnableSigns:
  21. # 如果将 EnableSigns 设置为 'false' 则 BossShop 告示牌打开商店的功能会被禁用.
  22. EnableSigns: true
  23. #
  24. #
  25. # MainShop:
  26. # 这是你的主菜单商店的名称。当玩家使用指令 '/bossshop' 时, 商店会被打开。而其他的商店可以通过 '/bossshop <商店名>' 的指令来打开.
  27. # 另外,所有的商店都能被告示牌打开(如果告示牌功能被开启)或点击一个特定的物品(如果安装了‘GuiShopManager’附属插件)。
  28. MainShop: Menu
  29. #
  30. #
  31. # HideItemsPlayersDoNotHavePermissionsFor:
  32. # 如果开启则玩家没有权限点击的物品会被隐藏。这个可以用来创建十分高级的东西,像升级系统等:
  33. # 多个物品在同一个位置上然后在一个物品被隐藏时另外一个物品会出现。例如你在使用强化时,隐藏老的强化按钮并显示新的。
  34. HideItemsPlayersDoNotHavePermissionsFor: false
  35. #
  36. #
  37. # CanPlayersSellItemsWithGreaterEnchants:
  38. # 如果开启则玩家可以在一个收购商店中出售拥有比收购要求更好的附魔的物品。这可能会帮助一些拿到不满意当前附魔的玩家,
  39. # 但是这也可能会使出售物品的价格贬值
  40. CanPlayersSellItemsWithGreaterEnchants: false
  41. #
  42. #
  43. # EnableTransactionLog:
  44. # 如果开启则会记录所有的行动到日志文件中.
  45. EnableTransactionLog: false
  46. #
  47. #
  48. # SearchSubfoldersForShops:
  49. # 如果开启则BossShop会搜索‘/shops’中的子文件夹并查找可用的商店文件。面对大量商店时对分类各种商店比较有帮助
  50. SearchSubfoldersForShops: false
  51. #
  52. #
  53. # AllowUnsafeEnchantments:
  54. # 如果开启则允许玩家使用将任何等级、附魔类型的奖励附魔到玩家手中的物品上。
  55. AllowUnsafeEnchantments: false
  56. #
  57. #
  58. # AllowSellingDamagedItems:
  59. # 如果开启则损坏(掉耐久值)的工具,护甲或武器会在玩家出售时被无视磨损度(耐久度)。
  60. AllowSellingDamagedItems: false
  61. #
  62. #
  63. # CheckStackSize:
  64. # 如果关闭则玩家无视原版的堆叠限制机制,从而在获得任何的数量多于限制的物品时(包括鸡蛋、甘蔗等)都能突破限制。这种方法玩家也可以获得叠加的工具和护甲,
  65. # 我建议开启这个设置来防止玩家一次性附魔多个工具,武器或护甲。
  66. CheckStackSize: true
  67. #
  68. #
  69. # InventoryFullDropItems:
  70. # 如果开启则玩家购买物品时超过背包容量,物品就会掉落到地上。如果关闭则玩家会受到一条警告消息来防止超额购买。
  71. InventoryFullDropItems: true
  72. #
  73. #
  74. # ClickDelay:
  75. # 点击成功后有多久的时间会无法执行其他按键内容来防止刷屏(毫秒)
  76. ClickDelay: 200
  77. #
  78. #
  79. # ClickSpamKick:
  80. ## ClickDelay:
  81. ## 如果点击物品的速度商店物品快于定义的时间则被算作为刷屏(毫秒)。
  82. #
  83. ## Warnings:
  84. ## 这里可以设置玩家受到多少次警告会被踢出游戏
  85. #
  86. ## ForgetTime:
  87. ## 在给予的时间内如果没有再被警告则插件会清空玩家的警告次数。注:当玩家离开服务器,他的刷屏记录也会被遗忘(清空)。
  88. ClickSpamKick:
  89.   ClickDelay: 100
  90.   Warnings: 1
  91.   ForgetTime: 5000
  92. #
  93. #
  94. # AsynchronousActions:
  95. # 如果开启则所有经济相关的商店物品动作会在异步中被执行并且不会影响到主服务器线程。
  96. # 如果你在使用MySQL基础的经济:当你需要外部数据库连接时可能会耗费一些实现来过的回应,
  97. # 在这种情况下,开启异步行动可以防止服务器卡顿。
  98. AsynchronousActions: false
  99. #
  100. #
  101. # MaxLineLength:
  102. # 一行lore描述中最多可以容下多少个字符,超过限制则会被换到下一行。如果你不想要使用此功能则设置数值为”-1“。
  103. MaxLineLength: 42
  104. #
  105. #
  106. # MoneyDisplay:
  107. # 这里你可以定义玩家的金钱余额会如何被显示
  108. # 所有列表的入口都会有接下来的结构: <needed>:<to_cut>:<decimal_place>:<formatting>
  109. # <needed>: 这个是行列被选中所需要的金钱(例子:写1000的话,如果价格为1000则会被选中)
  110. # <to_cut>: 这是多少位的数字会被删除 (例子:如果前面写了1000,输入3就能删除最后3位,从而变成1千)
  111. # <decimal_place>: 这是数字被四舍五入精确到的小数点位置
  112. # <formatting>: 这里决定了显示格式, 使用 %number% 作为修正的数字
  113. # 重要: 你的列表必须为从大到小按金钱数排列。插件会从上往下筛选来选择所需数量的条目。
复制代码
  1. MoneyDisplay:
  2.   Enabled: true
  3.   List:
  4.   - 1000000000000:12:2:%number% 万亿
  5.   - 1000000000:9:2:%number% 十亿
  6.   - 1000000:6:2:%number% 百万
  7.   - 1000:3:2:%number% 千
  8.   - 0:0:2:%number%
  9. #
  10. #
  11. # PointsDisplay:
  12. # 这里你可以定义玩家的点数余额会如何被显示
  13. # 与MoneyDisplay列表的结构一致。但是点数不能到达像金钱余额那样高的数字并且不能使用小数点。
  14. PointsDisplay:
  15.   Enabled: false
  16.   List:
  17.   - 1000000:6:2:%number% 百万
  18.   - 1000:3:2:%number% 千
  19.   - 0:0:0:%number%
  20. #
  21. #
  22. # NumberDisplay:
  23. # 这里定义了RawNumber(通用数字)的显示
  24. # 你可以查看这个页面来获得更多信息: https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html
  25. ## Locale:
  26. ## Examples:
  27. ## en_US -> 123,456.78 #英国
  28. ## de_DE -> 123.456,78 #荷兰
  29. ## 因为客户端读取文本的方式,所以在Minecraft客户端中有些格式不能正常的显示。
  30. #
  31. ## GroupingSize: 这列可以修改数字的分组大小(多少位的数字会被使用","来分开)。设置为-1来取消功能
  32. NumberDisplay:
  33.   Locale: zh_CN #语言文件
  34.   GroupingSize: 4 #中国的位数与欧美国家有些不同,是4位而不是3位,所以是1000,0000而不是10,000,000
  35. #
  36. #
  37. # SellAllPlaceholderShowFinalReward:
  38. # 如果开启则在使用商品中的PriceType价格类型为 "ItemAll" 时, '%reward%' 占位符会显示玩家出售物品后获得总奖励数.
复制代码



如何设置pagelayout.yml(页面布局)文件?
  1. # BossShopPro
  2. # by Felix Neubauer
  3. # 点击链接查看更多信息: https://www.spigotmc.org/wiki/bossshoppro-configuration#
  4. #
  5. #
  6. #
  7. # ShowIfMultiplePagesOnly:
  8. # 如果设置为true则商品的布局只会在超过GUI容量并且多页菜单需要被创建时显示
  9. # 如果想要一直显示商品的布局则将此设置为false.
  10. ShowIfMultiplePagesOnly: true
  11. #
  12. #
  13. # MaxRows:
  14. # 这是一个商店拥有的行数。“6”是极限,但是你可以选择性的将行数缩小。
  15. MaxRows: 6
  16. #
  17. #
  18. # ReservedSlotsStart:
  19. # 这里会保留你定义的菜单中的格子来防止布局处于"Active状态"(当需要多页菜单或 'ShowIfMultiplePagesOnly' 设置为 'false'时).
  20. # 所有在同一页中被定义的格子往后的格子都会被保留:如果商品在定义格子或向后的格子上,则会自动将物品放置到下一页中。
  21. # 你可以使用这些被保留的物品槽来放入静止类型的商品。在这个案例中,每一页的最后一排(第六排)都会被保留以便之后需要时使用。
  22. ReservedSlotsStart: 46
  23. #
  24. #
  25. # items:
  26. # 这里你可以设置你想要显示的商店物品的布局来防止布局处于"Active状态"(当需要多页菜单或 'ShowIfMultiplePagesOnly' 设置为 'false'时)。建立商店物品与其他的普通商店一样,这里也可以使用条件。
复制代码
  1. # 注: 这里你可以使用在页面布局类型商店中使用条件"page":如果玩家在特定页数则执行行动(使用/显示物品)
  2. # 另外,你可以在"page"条件中使用变量 %maxpage% (最大页数)。
复制代码


使用默认pageslayout.yml文件的商店案例:
  1. ShopName: HugeShop
  2. DisplayName: '&l&n页面布局例子'
  3. signs:
  4.   text: '[超骚商店]'
  5.   NeedPermissionToCreateSign: true
  6. shop:
  7.   stone1:
  8.     MenuItem:
  9.     - lore:&c这个案例物品需要花费 %price%
  10.     - name:&4&l案例物品1
  11.     - amount:1
  12.     - type:STONE
  13.     RewardType: ITEM
  14.     Reward: #奖励
  15.     - - name:&8&l%player%的石头
  16.       - amount:1
  17.       - type:STONE
  18.     PriceType: MONEY
  19.     Price: 1000.0
  20.     Message: '&c你花费了 %price% 来购买一个案例物品!'
  21.     ExtraPermission: ''
  22.     InventoryLocation: 1 #位置
  23.   stone2:
  24.     MenuItem:
  25.     - lore:&c这个案例物品需要花费 %price%
  26.     - name:&4&l案例物品2
  27.     - amount:1
  28.     - type:COBBLESTONE
  29.     RewardType: ITEM
  30.     Reward:
  31.     - - name:&8&l%player%的石头
  32.       - amount:1
  33.       - type:STONE
  34.     PriceType: MONEY
  35.     Price: 1000.0
  36.     Message: '&c你花费了 %price% 来购买一个案例物品!'
  37.     ExtraPermission: ''
  38.     InventoryLocation: 46
  39.   stone3:
  40.     MenuItem:
  41.     - lore:&c这个案例物品需要花费 %price%
  42.     - name:&4&l案例物品3
  43.     - amount:1
  44.     - type:SANDSTONE
  45.     RewardType: ITEM
  46.     Reward:
  47.     - - name:&8&l%player%的石头
  48.       - amount:1
  49.       - type:STONE
  50.     PriceType: MONEY
  51.     Price: 1000.0
  52.     Message: '&c你花费了 %price% 来购买一个案例物品!'
  53.     ExtraPermission: ''
  54.     InventoryLocation: 91 #位置
复制代码








[groupid=1597]Citrus Tree Studio[/groupid]