本帖最后由 longlongz 于 2018-11-23 07:06 编辑

BossShopPro
Configuration - Advanced Options | 配置-高级选项
字数统计: 2637字


如何建立不同的行动?
这很简单!你只用复制你的价格、奖励和介绍然后修改路径:
添加点击类型到路径的最后
Examples:
Reward(奖励) -> Reward_right(奖励_右键)
Message(消息) -> Message_middle(消息_中键)

可用点击类型:
-        Left(左键)
-        Right(右键)
-        Middle(中键)
-        shift_left(下蹲_左键)
-        shift_right(下蹲_右键)

配置案例
  1.   Diamonds:
  2.     MenuItem:
  3.     - type:DIAMOND
  4.     - amount:5
  5.     - name:&95个钻石
  6.     - 'lore1:&e左键购买 &c%reward% - &e售价:&c%price%&e.'
  7.     - 'lore2:&e右键出售 &c%price_right% - 收购价:&c%reward_right%&e.'
  8.     RewardType: ITEM
  9.     Reward:
  10.     - - type:DIAMOND
  11.       - amount:5
  12.     PriceType: MONEY
  13.     Price: 5000
  14.     Message: '&e你购买了 %reward%! 所剩余额: &c%left%'
  15.     #####这里是右键内容#####
  16.     RewardType_right: MONEY
  17.     Reward_right: 2500
  18.     PriceType_right: ITEM
  19.     Price_right:
  20.     - - type:DIAMOND
  21.       - amount:5
  22.     Message_right: '&e你获得了 %price_right% 金钱!'
  23.     ExtraPermission: ''
  24.     InventoryLocation: 3
复制代码
这个例子中,玩家可以左键购买钻石或右键出售钻石。
你可以使用占位符 %reward_<点击类型>% 和 %price_<点击类型>% 来显示该点击行动所获得的奖励或售价
你可以为每个点击类型都能添加一个独立的使用权限,你可以使用"ExtraPermission_<点击类型>"来添加到你的商品上。例如“ExtraPermission_right: BossShop.itemshop.apple.rightclick”。
其他可用的的选项
下面的设置都是可以被添加到config.yml,任何商店和任何商品上的:
-        "HideItemsPlayersDoNotHavePermissionsFor: true/false" – 如果玩家没有足够的权限则隐藏商品,可以被条件代替。
-        "AllowUnsafeEnchantments: true/false" – 如果开启则玩家可以将任何的附魔奖励附魔到任何物品上。
-        "CanPlayersSellItemsWithGreaterEnchants: true/false" – 如果开启则玩家可以出售比商品需求所拥有更好的附魔属性的物品。这可能对出售没用的附魔有帮助,但是同样也可能时物品贬值。
-        "CloseShopAfterPurchase: true/false" – 如果开启则购买成功后菜单GUI会被关闭。
这些设置会被继承:假如你在 config.yml设置"CloseShopAfterPurchase: true",就会使所有的商品受到影响。但如果你设置将一个商店的 "CloseShopAfterPurchase” 设置为false 则只会使商店内的所有商品被影响(其他商店的物品不会受到影响.)

声音设置也可以被继承。你可以添加下方的特性到任何的商店或商品中来使他们的子商品能够使用母体的声音:
  1. Sound:
  2.   Shopitem:
  3.     Click: 'UI_BUTTON_CLICK:1:1'
  4.     Purchase: 'ENTITY_PLAYER_LEVELUP:1:1.8'
  5.     NoPermission: 'ENTITY_BLAZE_DEATH:1:1'
  6.     NotEnoughMoney: 'ENTITY_SHULKER_HURT:1:0.8'
复制代码
下方的声音节点可以被添加到任何商店:
  1. Sound:
  2.   Shop:
  3.     ChangePage: 'UI_BUTTON_CLICK:0.2:1'
  4.     ChangeShop: 'BLOCK_CHEST_OPEN:0.2:1'
  5.     Open: 'ENTITY_ELDER_GUARDIAN_CURSE:1:1.8'
  6.     Close: ''
复制代码
音效的格式为"<声音名>:<音量>:<音高>". 你可以将声音设置为''来关闭. 你可以在这里找到所有可用的音效 here.

下方的选项设置可以被添加到任何商店(但不是商品):
-        InventoryRows: <行数> - 这个设置可以选择菜单的行数,6行为最大,1行为最小。

玩家Input(输入)
你可以强制所有玩家输入他们的文本信息或选择一个在线玩家。输入信息可以通过"%input%" 占位符来显示. 可用的应用方法:
-        玩家菜单:选择一个玩家然后执行一个特定的动作,像踢出游戏/禁言/封禁等
-        指令"完善": 当玩家点击特定的商品时,一个指令会通过玩家输入来执行
-        允许玩家命名商品然后购买 (设置"name:%input%")
-        还有更多的!
这种方法基本上可以将所有东西都变得十分整洁:例如一个派系的GUI可以让玩家用来占领地盘或加强其他玩家(使用input来输入对象玩家的名称)。

添加这一段信息就能强制玩家输入(input)一段信息:
  1.     ForceInput: PLAYER/TEXT
  2.     ForceInputMessage: 'any message'
复制代码
通过打开商店的指令输入input(输入)


在打开一个商店时,玩家可以手动的输入input,这样可以用来创建一个更加直观的系统:例如创建指令别名"/admin"会打开"AdminCommands"商店. 现在玩家可以输入"/admin Herobrine" 使用有效的input来打开商店.

你可以添加这些到任何商品上,你可以这些到任何一个商品中,使用playerinput来确保玩家在行动被执行之前输入了新的input, 或强制玩家选择一个input然后提供一个所有物品都有相同input的商店.
如果你允许玩家输入input一次然后给予使用商品的权利但不会强制重新提供新的input的话,你需要确保玩家已经输入了input。
这里是一个只需要input被输入一次的案例:
主菜单区域:
  1.   playercommandsmenu:
  2.     MenuItem:
  3.     - lore:&8Commands to manage other players.
  4.     - name:&e&lPlayer Commands
  5.     - type:paper
  6. #######
  7.     ForceInput: PLAYER
  8.     ForceInputMessage: '&8Enter the name of a player you want to select.'
  9. #######
  10.     RewardType: SHOP
  11.     Reward: playercommandssecret
  12.     PriceType: NOTHING
  13.     Message: ''
  14.     ExtraPermission: ''
  15.     InventoryLocation: 40
复制代码

玩家指令商店.
  1. #注: 玩家只能通过主菜单来进入商店,因为他们会被强制选择一个目标,才能来确保指令能够正常运行。
  2. #因为哪样不会给予玩家直接的权利来打开这个商店.
  3. ShopName: PlayerCommandsSecret
  4. DisplayName: '&6&l%input% &0&l指令'
  5. shop:
  6.   reselecttarget:
  7.     MenuItem:
  8.     - name:&f&l选择一个玩家
  9.     - lore:&8点击选择其他玩家.
  10.     - amount:1
  11.     - type:SKULL_ITEM
  12.     - durability:3
  13.     RewardType: SHOP
  14.     ForceInput: PLAYER
  15.     ForceInputMessage: '&8输入玩家的名字来选择目标.'
  16.     Reward: PlayerCommandsSecret
  17.     PriceType: NOTHING
  18.     Message: ''
  19.     ExtraPermission: ''
  20.     InventoryLocation: 1
  21.   gamemode:
  22.     MenuItem:
  23.     - name:&f&l冒险模式
  24.     - lore:&8设置玩家 &l&6%input% &8的模式为冒险模式.
  25.     - amount:1
  26.     - type:TORCH
  27.     RewardType: PLAYERCOMMAND
  28.     Reward:
  29.     - 'gamemode 2 %input%'
  30.     PriceType: NOTHING
  31.     Message: ''
  32.     ExtraPermission: ''
  33.     InventoryLocation: 2
  34.   msgtest:
  35.     MenuItem:
  36.     - name:&f&l测试消息
  37.     - lore:&8给玩家 &l&6%input% &8发送一条测试消息.
  38.     - amount:1
  39.     - type:PAPER
  40.     RewardType: PLAYERCOMMAND
  41.     Reward:
  42.     - 'msg %input% 这只是一条测试'
  43.     PriceType: NOTHING
  44.     Message: ''
  45.     ExtraPermission: ''
  46.     InventoryLocation: 3
  47.   kick:
  48.     MenuItem:
  49.     - name:&f&l踢出游戏
  50.     - lore:&8将玩家 &l&6%input% &8踢出服务器.
  51.     - amount:1
  52.     - type:DIAMOND_SWORD
  53.     - itemflag:all
  54.     RewardType: PLAYERCOMMAND
  55.     Reward:
  56.     - 'kick %input%'
  57.     PriceType: NOTHING
  58.     Message: ''
  59.     ExtraPermission: ''
  60.     InventoryLocation: 4
复制代码


配置诀窍
其实有很多可以使商店建立更容易的小窍门。比如你想出售物品的话,正常来讲你应该会创建一个物品作为奖励然后再创建一个物品作为商店图标,对吗?这里有一种简单的方式来避免两个物品重复:你可以使用占位符 '%rewarditem_<id>%' 和 '%priceitem_<id>%' 来使你的商店图标内容和奖励内容一致。
例子1:
  1.   GodApple:
  2.     MenuItem:
  3.     - '%rewarditem_1%' ##重点,会显示和Reward里的物品一样的内容##
  4.     - 'lore:&c售价: %price%' ##在这后面还能添加额外的内容##
  5.     RewardType: ITEM
  6.     Reward:
  7.     - - type:GOLDEN_APPLE
  8.       - amount:1
  9.       - durability:1
  10.     PriceType: MONEY
  11.     Price: 10000
  12.     Message: '&e你购买了%itemname%! &e余额: &c%left%'
  13.     ExtraPermission: ''
复制代码
这个案例中商店物品(图标)会与获得的奖励的样子一样。这样GodApple(商品ID)就只用设置一次了。

例子2:
  1.   bow_ranger:
  2.     MenuItem:
  3.     - '%rewarditem_2%'
  4.     - lore:&c价格 %price%.
  5.     RewardType: ITEM
  6.     Reward:
  7.     - - amount:16
  8.       - type:ARROW
  9.     - - name:&2&l射手之弓
  10.       - amount:1
  11.       - type:BOW
  12.       - enchantment:ARROW_DAMAGE#7
  13.       - enchantment:ARROW_KNOCKBACK#10
  14.     PriceType: EXP
  15.     Price: 30
  16.     Message: '&2你购买了一件新武器,花费 &c%price%&2.'
  17.     ExtraPermission: ''
  18.     InventoryLocation: 14
复制代码
这个案例中奖励是由一些弓箭和一把比较复杂的弓组成的。因为商品的样子不应搞长得像弓箭而是像弓,所以我们需要使用 '%rewarditem_2%' 作为占位符(因为弓在奖励列表中排名第二)

如果你想要更多的骚操作,你可以使用附属插件 TrickyShops.

一个物品中不同的RewardTypes(奖励类型)/PriceTypes价格类型
可使用的类型:
-        RewardType AND: 给玩家所有定义的奖励
-        PriceType AND: 玩家需要支付所有定义的价格
-        PriceType OR: 玩家需要选择其中一种支付方式
使用例子:
奖励类型AND (同时获得多样东西)
  1.   DifferentRewardTypesAND:
  2.     MenuItem:
  3.     - 'lore:&aReward: %reward% #&cPrice: %price%'
  4.     - name:&9Money, Items and Exp
  5.     - amount:1
  6.     - type:TNT
  7.     RewardType: AND
  8.     Reward:
  9.       RewardType1: ITEM
  10.       Reward1:
  11.       - - amount:7
  12.         - type:TNT
  13.       RewardType2: money
  14.       Reward2: 50
  15.       RewardType3: exp
  16.       Reward3: 20
  17.     PriceType: NOTHING
  18.     Message: '&eYou received %reward%.'
  19.     ExtraPermission: ''
  20.     InventoryLocation: 0
复制代码
价格类型AND (和: 需要同时支付多样价格类型的内容)
  1.   DifferentPriceTypesAND:
  2.     MenuItem:
  3.     - type:DIAMOND
  4.     - amount:5
  5.     - name:&95 Diamonds
  6.     - 'lore1:&eBuy %reward% for %price%.'
  7.     RewardType: ITEM
  8.     Reward:
  9.     - - type:DIAMOND
  10.       - amount:5
  11.     PriceType: AND
  12.     Price:
  13.       PriceType1: MONEY
  14.       Price1: 50.0
  15.       PriceType2: POINTS
  16.       Price2: 10
  17.     Message: '&eYou bought %reward%! Balances left: &c%left%'
  18.     InventoryLocation: 0
复制代码
价格类型 OR (或者: 只需要选择一个价格类型进行支付)
Code (Text):
  1.   DifferentPriceTypesOR:
  2.     MenuItem:
  3.     - type:DIAMOND
  4.     - amount:5
  5.     - name:&95钻石
  6.     - 'lore1:&e购买 %reward%,售价 %price%.'
  7.     RewardType: ITEM
  8.     Reward:
  9.     - - type:DIAMOND
  10.       - amount:5
  11.     PriceType: OR
  12.     Price:
  13.       PriceType1: MONEY
  14.       Price1: 50.0
  15.       PriceType2: POINTS
  16.       Price2: 10
  17.     Message: '&e你购买了%reward%! 余额: &c%left%'
  18.     InventoryLocation: 0
复制代码
当然这些类型可以被叠加:
-        PriceType: AND
-        Price:
-        PriceType1: ITEM
-        Price1: diamond
-        PriceType2: OR
-        Price2:
-        PriceType1: MONEY
-        Price1: 1000
-        PriceType2: POINTS
-        Price2: 50
所以在例子中现在玩家需要支付一个钻石和1000金币或50点数


对RewardTypes过时的使用方法



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