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

BossShopPro
Conditions | 条件
字数统计: 2147字



你可以设置商店物品对玩家的显示的条件。设置条件其实很简单



例子:
  1. ShopName: food-condition
  2. DisplayName: '食用条件'
  3. signs:
  4.   text: '[conditions]'
  5.   NeedPermissionToCreateSign: true
  6. InventorySize: 45
  7. shop:
  8.   5-1:
  9.     Condition: #条件内容
  10.     - type:Hunger #类型: 饥饿
  11.     - under:20 #如果玩家饥饿值在20以下,则会显示以下内容
  12.     RewardType: item
  13.     PriceType: free
  14.     Reward:
  15.     - type:COOKED_CHICKEN
  16.     - amount:1
  17.     MenuItem:
  18.     - type:COOKED_CHICKEN
  19.     - name:&9你饿吗?
  20.     - 'lore:#&你看上去十分饥饿!点我补充饱食度'
  21.     - amount:1
  22.     InventoryLocation: 23
  23.   5: #如果饱食度<=20会发生的内容
  24.     RewardType: nothing
  25.     PriceType: free
  26.     MenuItem:
  27.     - type:BARRIER
  28.     - name:&9你饿吗?
  29.     - 'lore:#&c你看上去不饿..#&c当你饿的时候再回来'
  30.     - amount:1
  31.     InventoryLocation: 23
复制代码
鸡肉商店物品只会在玩家饱食度低于20的时候显示,这代表着只有玩家不是饱食度满的状态就都会显示(饱食度20=满饱食度)。如果满饱食度则显示屏障。

输出是这样子的:



结构
条件是在一个列表中建立的。首先你需要定义当前条件类型然后建立你的条件。添加条件是不会被限制的,这意味着你可以在物品上添加无限个条件
例子:
  1.     Condition: #条件
  2.     - type:serverpinging #帧数
  3.     - online:true #是否是正版用户
  4.     - over:200 #帧数超过200
复制代码
  1.     Condition:
  2.     - type:permission #权限
  3.     - match:权限.节点 #所需权限
复制代码
  1.     Condition:
  2.     - type:money #金钱
  3.     - over:1000 #超过1000
  4.     - type:health #血量
  5.     - between:5:15 #在5-15之间
复制代码


规则
AND|与
所有在列表中的条件都需要达成. 如果一个条件不成立则整个物品会被隐藏
例子:
  1.     Condition: #条件
  2.     - type:money #类型:金钱
  3.     - over:1000 #超过1000的金钱
  4.     - type:health #类型:血量
  5.     - between:5:15 #在5-15血量之间
复制代码
这里显示了玩家同时需要两个条件才会看到此物品.

OR |

“match”条件类型的案例中,是存在可选则条件的:
你可以列举不同的match数值,使用逗号分离。只要其中一个数值达成条件则显示物品,甚至不需要达成任何其他条件
  1.     Condition:
  2.     - type:group
  3.     - match:group1,group2,group3,group4
复制代码
这里显示了玩家只需要在group1,group2,group3,group4其中的一个组就能看到物品


可用的条件类型
如果你想要更多其他条件的话,你可以找作者让他帮你添加新的条件

BossShopPro
会先加载所有商店物品然后建立他们的配置。如果一个物品的条件没有达成则不会显示相应内容。如果一个物品没被达成条件,然后另一个物品在该物品的同一个位置,则另个物品会被显示。

  1. # 可用的条件
  2. Condition types:
  3.     - Money/Points #金钱/点券or点数
  4.         - over:1000             (会匹配任何金钱/点券超过1000的玩家 – 需要vault 或 点数插件)
  5.         - under:500             (会匹配任何金钱/点券低于500的玩家 – 需要vault 或 点数插件)
  6.         - equals:150            (会匹配任何金钱/点券等于150的玩家 – 需要vault 或 点数插件)
  7.         - between:300:600       (会匹配任何金钱/点券在300-500之间的玩家 – 需要vault 或 点数插件)
  8.     - ServerPinging #服务器帧数
  9.         - online:true           (会匹配所有成功收取服务器帧数并在线(或正版)的玩家)
  10.         - over:70               (匹配所有帧数超过70的玩家)
  11.         - under:40              (匹配所有帧数低于40的玩家)
  12.         - equals:500            (匹配所有帧数等于500的玩家)
  13.         - between:1:100         (匹配所有帧数在1-100之间的玩家)
  14.     - Permission #权限
  15.         - match:权限.节点      (如果玩家拥有此权限节点,则显示)
  16.         - dontmatch:node.node   (如果玩家没有此权限节点,则显示)
  17.     - Group #组
  18.         - match:plus            (如果玩家在plus这个组内,则显示)
  19.         - dontmatch:vip         (如果玩家不在vip这个组内,则显示)
  20.     - Item #物品
  21.         - match:stone           (如果玩家背包内拥有石头,则显示)
  22.         - dontmatch:diamond     (如果玩家背包内没有钻石,则显示)
  23.     - HandItem #手中物品
  24.         - match:stone           (如果玩家主手中拥有石头,则显示)
  25.         - dontmatch:diamond     (如果玩家主手中没有钻石,则显示)
  26.     - Health/Hunger/Exp #生命/饱食度/经验
  27.         - over:10               (匹配所有生命/饱食度/经验超过10的玩家)
  28.         - under:5               (匹配所有生命/饱食度/经验低于5的玩家)
  29.         - equals:15             (匹配所有生命/饱食度/经验等于15的玩家)
  30.         - between:5:15          (匹配所有生命/饱食度/经验在5-15之间的玩家)
  31.     - Time #时间
  32.         - over:4000             (当世界内时间超过4000ticks,从0开始)
  33.         - under:2000            (当世界内时间低于2000ticks,从0开始)
  34.         - equals:8000           (当世界内时间等于8000ticks,从0开始,并没有啥用)
  35.         - between:12000:24000   (当世界内时间在12000-24000ticks之间时,从0开始)
  36. #RealDay = 现实生活中一天; RealWeekDay = 现实生活中一周, starting with monday = 周一
  37.     - RealYear/RealMonth/RealWeek/RealDay/RealWeekDay/RealHour/RealSecond/RealMillisecond #现实生活中年/月/周/日/一周中的日子(周一/周二etc)/ 小时/秒/毫秒
  38.         - over:12               (如果数值高于12则显示)
  39.         - under:20              (如果数值低于12则显示)
  40.         - equals:11             (如果数值等于11则显示)
  41.         - between:18:24         (如果数值在18-24之间则显示)
  42.     - LightLevel
  43.         - over:10               (匹配光源等级是否较高)
  44.         - under:6               (匹配光源等级是否较低)
  45.         - equals:15             (匹配光源等级是否在最高)
  46.         - between:8:14          (匹配光源等级是否不是太阳光但是依然很高)
  47.     - LocationX/LocationY/LocationZ (Y 轴决定了玩家高度) #玩家所有位置x/y/z
  48.         - over:100              (匹配玩家是否在高于100的位置)
  49.         - under:50              (匹配玩家是否在低于50的位置)
  50.         - equals:1              (匹配玩家是否在等于1的位置)
  51.         - between:1:40          (匹配玩家是否在1-40之间的位置)
  52.     - World #世界名
  53.         - match:世界名  (玩家是否在特定世界中)
  54.         - dontmatch:worldname   (玩家是否不在特定世界中)
复制代码


变量条件
条件类型"placeholdernumber" "placeholdermatch" 允许检查任何BossShopPro PlaceholderAPI 所支持的变量并检查数值是否支持任何所支持的插件

PlaceholderNumber:

  1.     Condition:
  2.     - type:placeholdernumber
  3.     - '%balancepoints%:over:100' #如果玩家的%balancepoints%超过了100
复制代码

PlaceholderMatch:
  1.     Condition:
  2.     - type:placeholdermatch
  3.     - '%item_in_hand%:match:WOOD_SWORD,STONE_SWORD,IRON_SWORD,GOLD_SWORD,DIAMOND_SWORD' #手中物品是否是以上物品之一
  4. 冒号 (":") 在占位符中并不能直接使用因为BossShopPro使用冒号来分割占位符/条件和条件类型。如果你的占位符中需要冒号,你可以使用"[colon]"来代替冒号.
复制代码


模数支持
数字类型条件支持模数. 这里是个进阶的类型:
  1.   Moving_1:
  2.     MenuItem:
  3.     - name:&c
  4.     - type:STAINED_GLASS_PANE:0
  5.     RewardType: NOTHING
  6.     PriceType: NOTHING
  7.     Message: ''
  8.     ExtraPermission: ''
  9.     InventoryLocation: 1
  10.     Condition: #条件
  11.     - type:realsecond
  12.     - 'between:0:5#%45'
  13.   Moving_2:
  14.     MenuItem:
  15.     - name:&c
  16.     - type:STAINED_GLASS_PANE:1
  17.     RewardType: NOTHING
  18.     PriceType: NOTHING
  19.     Message: ''
  20.     ExtraPermission: ''
  21.     InventoryLocation: 2
  22.     Condition:
  23.     - type:realsecond
  24.     - 'between:6:10#%45'
  25.   Moving_3:
  26.     MenuItem:
  27.     - name:&c
  28.     - type:STAINED_GLASS_PANE:2
  29.     RewardType: NOTHING
  30.     PriceType: NOTHING
  31.     Message: ''
  32.     ExtraPermission: ''
  33.     InventoryLocation: 3
  34.     Condition:
  35.     - type:realsecond
  36.     - 'between:11:15#%45'
  37.   Moving_4:
  38.     MenuItem:
  39.     - name:&c
  40.     - type:STAINED_GLASS_PANE:3
  41.     RewardType: NOTHING
  42.     PriceType: NOTHING
  43.     Message: ''
  44.     ExtraPermission: ''
  45.     InventoryLocation: 4
  46.     Condition:
  47.     - type:realsecond
  48.     - 'between:16:20#%45'
  49.   Moving_5:
  50.     MenuItem:
  51.     - name:&c
  52.     - type:STAINED_GLASS_PANE:4
  53.     RewardType: NOTHING
  54.     PriceType: NOTHING
  55.     Message: ''
  56.     ExtraPermission: ''
  57.     InventoryLocation: 5
  58.     Condition:
  59.     - type:realsecond
  60.     - 'between:21:25#%45'
  61.   Moving_6:
  62.     MenuItem:
  63.     - name:&c
  64.     - type:STAINED_GLASS_PANE:5
  65.     RewardType: NOTHING
  66.     PriceType: NOTHING
  67.     Message: ''
  68.     ExtraPermission: ''
  69.     InventoryLocation: 6
  70.     Condition:
  71.     - type:realsecond
  72.     - 'between:26:30#%45'
  73.   Moving_7:
  74.     MenuItem:
  75.     - name:&c
  76.     - type:STAINED_GLASS_PANE:6
  77.     RewardType: NOTHING
  78.     PriceType: NOTHING
  79.     Message: ''
  80.     ExtraPermission: ''
  81.     InventoryLocation: 7
  82.     Condition:
  83.     - type:realsecond
  84.     - 'between:31:35#%45'
  85.   Moving_8:
  86.     MenuItem:
  87.     - name:&c
  88.     - type:STAINED_GLASS_PANE:7
  89.     RewardType: NOTHING
  90.     PriceType: NOTHING
  91.     Message: ''
  92.     ExtraPermission: ''
  93.     InventoryLocation: 8
  94.     Condition:
  95.     - type:realsecond
  96.     - 'between:36:40#%45'
  97.   Moving_9:
  98.     MenuItem:
  99.     - name:&c
  100.     - type:STAINED_GLASS_PANE:8
  101.     RewardType: NOTHING
  102.     PriceType: NOTHING
  103.     Message: ''
  104.     ExtraPermission: ''
  105.     InventoryLocation: 9
  106.     Condition:
  107.     - type:realsecond
  108.     - 'between:41:45#%45'
复制代码

这个案例会生成一个动画物品,物品会从第一格一直移动到第九格然后又会到第一格,从而实现动态效果.
使用"#%<divisor>"来结束条件会让BossShopPro 将数值通过模数转换为相关的条件.如果你使用了条件类型‘realsecond’然后使用modulo(模数)‘10’则会改变条件检查会在0到9之间,因为"<current time % 10>" 会最终反馈在范围内的所有数字。所以Modulo(模数)对创建动画商店很有帮助.