Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 3948|回复: 22

[命令方块] [15w31c][2b]检测弓箭的攻击者和被攻击者

[复制链接]
发表于 2015-8-1 19:54:32 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
弓箭的箭矢更新了几个新的箭,附带药水效果,这让弓箭的功能有了很大的施展


NBT

创造模式里只有几个状态效果的箭,然而其他的状态效果其实是存在的,需要通过NBT修改:

CustomPotionEffects: 是一个列表,可以包含多种状态效果

一个状态效果拥有以下标签:
Id: 状态效果的id,参考http://minecraft-zh.gamepedia.co ... 1%E6%95%88%E6%9E%9C
Amplifier: 状态效果的等级;
Duration: 持续时间;
Ambient: 隐藏效果。
2015-07-31_13.21.29.png

  1. /give @p minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:20,Amplifier:999999,Duration:999999}]}
复制代码
这个弓箭的效果是等级999999,持续999999的凋零效果。
2015-07-31_13.22.35.png

2015-07-31_13.22.46.png

2015-07-31_13.22.58.png

那么苦力怕会一直受到凋零持续999999,直到死亡。


2015-07-31_13.25.00.png

效果也可以是增益效果,比如生命增加:
  1. /give @p minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:21,Amplifier:10,Duration:999999}]}
复制代码
这个弓箭的效果是等级10,持续999999的生命增加效果。

2015-07-31_13.25.11.png

2015-07-31_13.25.22.png



2015-07-31_13.30.03.png

  1. /give @p minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:12,Amplifier:10,Duration:999999,Ambient:1}]}
复制代码
就是一个等级10,时间999999,隐藏效果的防火效果
2015-07-31_13.30.32.png

2015-07-31_13.30.43.png



判定弓箭的攻击者和被攻击者

2015-08-01_19.42.55.png

2015-08-01_19.43.06.png

2015-08-01_19.42.19.png

可以看到我射了苦力怕一脸后,我的分数变成1,苦力怕变成2

做到这个,只需要两个指令:
原理
2015-08-01_19.43.35.png

  1. /scoreboard players set @e beShot 1 {ActiveEffects:[{Id:3b,Amplifier:0b}]}
复制代码
给拥有状态的实体计分版设为1
  1. /execute @e[score_beShot_min=1] ~ ~ ~ /scoreboard players set @p beShot 2
复制代码
既然被射了,那么箭的持有者就是攻击者

2015-08-01_19.43.47.png
首先须要给一个拥有指定效果的箭
  1. /give @p minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:3,Amplifier:0}]}
复制代码
(这边的效果是急迫,其实并没有什么卵用)
来自群组: Command Block Logic
2015-07-31_13.30.16.png

评分

参与人数 4人气 +7 金粒 +25 收起 理由
早餐 + 1 好像1.8也能测,不是这种办法
zbx1425 + 1 物品栏最后一个是什么?
FHC红石 + 3 + 10 1.9好神奇
scorpio975 + 2 + 15 Mcbbs有你更精彩~

查看全部评分

回复

使用道具 举报

发表于 2015-8-1 19:56:20 | 显示全部楼层
能解释一下,这段代码是什么意思吗?minecraft:tipped_arrow 1 0
回复

使用道具 举报

 楼主| 发表于 2015-8-1 20:02:15 | 显示全部楼层
煽火点风 发表于 2015-8-1 19:56
能解释一下,这段代码是什么意思吗?minecraft:tipped_arrow 1 0

这个就是拥有药水效果的箭
回复

使用道具 举报

发表于 2015-8-1 20:03:36 | 显示全部楼层
贰逼 发表于 2015-8-1 20:02
这个就是拥有药水效果的箭

minecraft:tipped_arrow这个是弓箭的名称吗?
那后面的1和0代表什么
回复

使用道具 举报

 楼主| 发表于 2015-8-1 20:09:13 | 显示全部楼层
本帖最后由 贰逼 于 2015-8-1 20:10 编辑
煽火点风 发表于 2015-8-1 20:03
minecraft:tipped_arrow这个是弓箭的名称吗?
那后面的1和0代表什么

请自学give指令
1是数量0是附加值
回复

使用道具 举报

发表于 2015-8-1 20:21:31 | 显示全部楼层
这么快就有教程了。。
回复

使用道具 举报

发表于 2015-8-1 20:30:20 | 显示全部楼层
这次终于能看懂了,那个潜匿贝就不知道在说什么
我很好奇为什么中间几张图命令方块没有材质了
回复

使用道具 举报

发表于 2015-8-1 20:47:35 | 显示全部楼层
0.0被增幅箭射中回扣血感觉好坑
回复

使用道具 举报

发表于 2015-8-1 21:33:37 | 显示全部楼层
既然被射了,那么箭的持有者就是攻击者。
这句话没给指令
回复

使用道具 举报

 楼主| 发表于 2015-8-1 21:55:24 | 显示全部楼层
chyx 发表于 2015-8-1 21:33
既然被射了,那么箭的持有者就是攻击者。
这句话没给指令

这句话上面不就是指令
回复

使用道具 举报

发表于 2015-8-1 23:35:54 | 显示全部楼层
贰逼 发表于 2015-8-1 21:55
这句话上面不就是指令

你觉得离受害者最近的人就是持箭者 于是就是施害者?
逻辑好飘逸
你要是直接说让最近的人是施害者也比你这么说好
当然贴子写的很好
也可以做丘比特得箭让动物发情

评分

参与人数 2金粒 +2 收起 理由
lzs1234 + 1 2333333你的CBL勋章怎么没了
卅个屮 + 1 态度好评

查看全部评分

回复

使用道具 举报

发表于 2015-8-1 23:49:33 | 显示全部楼层
chyx 发表于 2015-8-1 23:35
你觉得离受害者最近的人就是持箭者 于是就是施害者?
逻辑好飘逸
你要是直接说让最近的人是施害者也比你 ...

单人模式里面难道还能是herobrine射的箭么
直接用@p并无问题

评分

参与人数 1人气 +2 收起 理由
chyx + 2 当然知道单人没问题 可是他不应该说 “既然.

查看全部评分

回复

使用道具 举报

发表于 2015-8-7 10:37:32 | 显示全部楼层
/execute @e[score_beShot_min=1] ~ ~ ~ /scoreboard players set @p beShot 2
代码的意思是给距离目标最近的玩家加分?但是射击苦力怕的玩家不一定是离他最近的那个玩家
回复

使用道具 举报

发表于 2015-8-7 10:40:24 | 显示全部楼层
294712564 发表于 2015-8-7 10:37
/execute @e[score_beShot_min=1] ~ ~ ~ /scoreboard players set @p beShot 2
代码的意思是给距离目标最近 ...

好吧和楼上重复了
其实楼主完全可以检测玩家的物品栏
回复

使用道具 举报

 楼主| 发表于 2015-8-7 11:01:38 | 显示全部楼层
本帖最后由 贰逼 于 2015-8-7 14:40 编辑
294712564 发表于 2015-8-7 10:40
好吧和楼上重复了
其实楼主完全可以检测玩家的物品栏

图中其实就是个例子,
和砸场小王子一样没有变通过来。

图中例子是检测单人游戏里面被玩家射到的生物和射他的玩家。

换做多人游戏:
/give 玩家1 minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:3,Amplifier:0}]}
/give 玩家2 minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:3,Amplifier:1}]}
/give 玩家3 minecraft:tipped_arrow 1 0 {CustomPotionEffects:[{Id:3,Amplifier:2}]}

被玩家1射:
/scoreboard players set @e beShot 1 {ActiveEffects:[{Id:3b,Amplifier:0b}]}
被玩家2射:
/scoreboard players set @e beShot 2 {ActiveEffects:[{Id:3b,Amplifier:1b}]}
被玩家3射:
/scoreboard players set @e beShot 3 {ActiveEffects:[{Id:3b,Amplifier:2b}]}

玩家1射人:
/execute @e[score_beShot_min=1,score_beShot=1] ~ ~ ~ /scoreboard players set 玩家1 Shot 1
玩家2射人:
/execute @e[score_beShot_min=2,score_beShot=2] ~ ~ ~ /scoreboard players set 玩家2 Shot 2
玩家3射人:
/execute @e[score_beShot_min=3,score_beShot=3] ~ ~ ~ /scoreboard players set 玩家3 Shot 3

就是这样,你说我为什么不写,因为这段指令需要服务器支持。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 手机版本

GMT+8, 2017-8-17 15:54 , Processed in 0.248653 second(s), 11 queries , Memcache On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。

© 2010-2017 我的世界中文论坛 版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。

快速回复 返回顶部 返回列表