各位看官既然会看到这篇帖子说明你们都是热爱MC并且对指令有一定了解的高端玩家了
D某不才,对装备制作略有研究最近闲来无事发现论坛中有玩家做了一些关于套装效果和背包合成的教程见此情景,D某不禁感慨高手在民间玩家dalao太它喵有才了(某萌新:dalao你能好好说话么,我听不懂唉)......
好了话不多说,我们进入今天的主题接下来我会以2位dalao的帖子@荣大@jim~命令傀儡师 作为例子来说明今天的问题(如有冒犯还请见谅)
来说说套装制作吧套装,肯定是要完整一套才算套装了那么该如何知道玩家有没有穿套装呢
(某萌新:我知道!用/testfor检测玩家)可行,但不建议
以下是荣大帖子的部分截图
[1.8-1.11]荣大的指令方块套装(多人服务器或许也可以使用)http://mc.netease.com/thread-49439-1-1.html
荣大用了4条/testfor来检测玩家
这里有2点问题首先,仅仅只能检测,无法标记拥有套装的玩家荣大后面的内容里也没有解决这个问题我的答案也是无解,无法解决第2个问题我放到后面说
先来解决标记玩家的问题这个问题在傀儡师的帖子里有答案
【1.12高端】-[命令傀儡师]背包合成系统
http://mc.netease.com/thread-63955-1-1.html
没看懂?
我简单的解释一下
首先是testfor的命令格式/testfor 玩家 {数据标签}
然后是记分板的命令格式/scoreboard players add 玩家 记分板名 数值 {数据标签}
看懂了吗,记分板同样支持检测玩家装备而记分板是可以作为选择器参数的所以荣大的指令可以改为(假设有个记分板叫taoz)/scoreboard players add @a taoz 1 {Inventory:[{装备数据}]}
然后就可以通过选择器@a[score_taoz_min=1]来选中戴有套装的玩家了
然后回到刚才没说的第2个问题每一个部位都要一条指令检测吗?
不是的
注意看数据标签部分{Inventory:[{装备数据}]}这个括号是有作用的
什么作用呢我们先来看另一条指令 /give @P minecraft:iron_sword 1 0 {ench:[{id:16,lvl:1},{id:22,lvl:1}]}通过这个指令会获得一把拥有2条附魔的铁剑
关键就是那个括号至于为什么(解释起来太麻烦,我懒
)
所以如果我们把数据标签也改一下行不行呢{Inventory:[{装备数据},{装备数据},{装备数据},{装备数据}]}
答案是可行的
所以想要检测穿着一套铁甲的玩家只需要一条指令
/scoreboard players add @a taoz 1 {Inventory:[{Slot:103b,id:"minecraft:iron_helmet"},{Slot:102b,id:"minecraft:iron_chestplate"},{Slot:101b,id:"minecraft:iron_leggings"},{Slot:100b,id:"minecraft:iron_boots"}]}
这样,只有穿着全套铁甲的玩家才会加分少一件都不行
然后就简单了吧我们可以做个有冷却的被动效果了只要这样 /effect @a[score_taoz_min=600] 10 10 1 true
以命令方块的频率来说1秒钟记分板加20分所以600分就是30秒也就是说全套铁甲的玩家每过30秒就会获得10秒的生命恢复效果
最后,还要记得重置记分板/scoreboard players reset @a[score_taoz_min=600] taoz
这样一个简单的套装效果就做好啦而且只要3个命令方块哦
那么本次发言就要结束了最后再说几句废话
有朋友一起玩指令很开心想法也会多不少还有Wiki是个好东西争取把Wiki背下来吧(玩笑
)
接下来自由讨论