我的世界:指令中相当重要的组成部分,来了解无数机制的万恶之源!目标选择器教学

该礼包微信扫一扫下方二维码领取

“警告:本期攻略需要有一定指令基础的玩家查看,同时此内容较理论性,我会穿插实例来讲。之后我可能会做一系列服务器指令攻略,没有这个作为前置知识可就不好了”

目标选择器,一个时常混迹于各大命令中,小白也能一看就会,我也能一看就废的神器。


无数的指令中,当我们看到@p - 最近的玩家……的时候,就是与它的见面。
看起来一看就会,其实里面大有门道。
先讲一下选择器本体:
@p:最近的满足条件的1个玩家,如果最近的玩家不满足条件,那么会去寻找距离更远但符合条件的玩家。
@a:选择所有玩家。
@r:选择随机的1个玩家。
@e:选择所有活着的实体
@s:选择命令执行者自己

好了,我们本期教程就到这里,我们下期再见…………………………

开玩笑,我会这么水吗?
今天的重点肯定不只是这个,是[]
额…………也不是中括号,是目标选择器的参数


这个参数可以帮我们判断许多东西,我将它们简单归为4类


【位置选择】


选择某方形区域内的目标
最基础的位置选择,也是参数最多的选择器,它一共有3个目标选择器参数要输入!
分别为dx,dy,dz,可以搭配x,y,z使用,不支持反选和多选

x:区域坐标最小点的x坐标(非必填,不填默认为命令执行者的位置)
y:区域坐标最小点的y坐标(非必填)
z:区域坐标最小点的z坐标(非必填)
dx:区域的x轴长度(区域坐标最小点的x坐标与区域坐标最大点的x坐标的距离,下同)
dy:区域的y轴长度
dz:区域的z轴长度

举例:
选择位于坐标8 3 1至12 8 9之间的全部实体:
首先先计算区域大小:
12-8=4
8-3=5
9-1=8
得出区域大小为4*5*8
然后正式开始:
@e[x=8,y=3,z=1,dx=4,dy=5,dz=8]
选择以指令执行者位置为坐标最小点,大小为9*9*6的区域内全部的玩家
@a[dx=9,dy=9,dz=6]


选择某圆形区域内的目标
位置选择的另一种方式,这种方式只需要输入半径r即可,相比起需要6个参数的方形选择要友好的多。

默认情况下,圆形区域的中心是命令方块的位置,如果你想移动这个位置,那么可以使用上文提到的x,y,z参数,输入你想要的圆形区域的中心位置的坐标即可。

r:圆形半径
x:圆心的x坐标(非必填,不填默认为指令执行者的位置)
y:圆心的y坐标(非必填)
z:圆心的z坐标(非必填)

举例:
选择以命令执行者为圆心,半径为8圆形范围内的全部实体:@e[r=8]
选择以坐标24 5 63为圆心,半径为6圆形范围内的全部实体:@e[r=6,x=24,y=5,z=63]


基于垂直旋转选择目标
检测玩家是抬头还是低头或者平视,所有抬头/低头执行指令都是基于这个选择的。
生物的上下视角一共有180度,
90为低头最低,0为平视,-90为抬头最高。
这种方法需要输入rx和rxm两个数据,不支持反选和多选。

rx:最大垂直旋转角度
rxm:
最小垂直旋转角度

rx和rxm你可以理解为一个区间rx是两个数值中较大的数,rxm是较小的数,这两个输入后,上下视角在这两个数区间的目标会被选择,比如目标选择器参数是rx=50,rxm=30,我的垂直旋转角度是42,那么目标选择器会选择我。

【实例】
低头回城
因为这个不太好举例,所以我用了一个实例。
最简单的低头回城只需要一个命令方块,这里利用的是/tp的目标选择器
假设主城坐标为0,4,0。指令如下:
/tp @a[rx=90,rxm=80] 0 4 00

重点来了,指令解析:

/tp:
传送,不用解释
@a:所有玩家,这种单个指令性能压力不大(大量指令同时执行会使游戏性能降低),不需要用@r牺牲反应速度节约性能
[rx=90,rxm=80]:选择垂直旋转角度(上下视角)小于90大于80的玩家,因为这个指令只需要检测想回城的玩家,不需要把垂直旋转角度限制得特别死,自然选择大于80更加实际。
如果你要卡得死,必须低到最低才能回城,那么这里输入rxm=89也可以
0 4 0 :主城坐标,记得换
0:易错点,tp默认保留垂直旋转和水平旋转角度,如果你不输0让tp把传送过去的玩家视角调到平视,那就形成永动游戏bug了。

那么还能不能改一下呢?
抬头回城
这里只需要改rx和rxm的数值,改成rx=-80,rxm=-90,这里易错点,是数值大小,不是绝对值大小,负数的数字越大数越小


基于水平旋转选择目标
和上面垂直旋转的部分原理一样,所以这里主要讲水平旋转角度
水平旋转数值实际上就是我们经常说的东南西北,一共360度。
0表示正南 z+方向
90表示正西x-方向
-90表示正东 x+ 方向
-180表示正北 z-方向

“其角度以正南(或正Z轴方向)为基准顺时针旋转。水平旋转值从-180(面向正北)开始,到-90(面向正东),再到0(面向正南),再到90(面向正西),最后到180(再次面向正北)。” 来自中文minecraft wiki
这个目标选择器参数不支持反选和多选

ry:最大水平旋转角度
rym:最小水平旋转角度


举例:
选择所有朝向南偏西的玩家:@a[ry=90,rym=0]
当然,这不是正西南,南偏西是数学上的说法,如果是正西南,那就得了,(90+0)/2=45。
所以正西南为ry=45,rym=44。
选择所有朝向正西南的骷髅:@e[ry=45,rym=44,type=skeleton]

根据距离选择目标
通过c可以根据距离选择目标,不支持反选和多选,但是输入负数会倒转选择顺序,例如c=1选择最近的1个目标,c=-1选择最远的一个目标

c:距离执行者最近的x个目标

举例:
选择最近的6个玩家:@a[c=6]
选择最近的2个僵尸:@e[type=zombie,c=2]
选择最远的1个末影水晶:@e[type=end_crystal,c=-1]

c还可以用于定义@p和@r的数量,当c放在@p上时,可以改变选择最近玩家的数量。当c放在@r上时它不会选择最近或最远,改为定义数量,可以改变随机选择的数量

举例:

选择最近的3个玩家:@p[c=3]
选择随机的5个玩家:@r[c=5]
【积分选择】


根据计分板分数选择目标是非常常用的一种选择方法,也是无数机制的关键点。
这个选择器和其他的有一定差别,scores=后面跟的不是数字,是{计分板名称=数字},比如我想选择所有计分板a=4的玩家,那么目标选择器为@a[scores={a=4}],同时数字支持区间和反选。

scores:{计分板=分数}

举例:
选择所有a不是4的玩家(包括a计分板上没有分数的目标):@a[scores={a=!4}]
选择所有a大于等于4的玩家:@a[scores={a=4..}]
选择所有a小于4的目标以及a计分板上没有分数的实体:@e[scores={a=!4..}]
选择随机一个a小于等于4的玩家:@r[scores={a=..4}]
选择所有a分数在4到6之间的苦力怕(4和6都算):@e[scores={a=4..6},type=creeper]

如果你需要同时判断多个分数,就需要在第一个数字后面加,(英文逗号)然后连接下一个计分板。

举例:
选择所有a的分数为4且b的分数为6的玩家:@a[scores={a=4,b=6}]


通过tag选择目标属于计分板的一种变种,tag只存储是或否(有或者没有这个标签),格式也更简单,输入tag=标签名即可选择,支持反选,正选不能同时选择多个,但反选可以。

tag:选择标签

举例
选择所有有a的tag的盔甲架:@e[type=armor_stand,tag=a]
选择所有没有a和b标签的玩家:
@a[tag=!a,tag=!b]

tag指令科普,tag同样支持*。

【游戏变量选择】

根据经验等级选择
这个不用解释,一看就会,每个人生存都看得见下面的经验等级。
在没有计分板的版本里,经验等级就成为了计分板的替代方案。
这是类似rx与rxm的区间选择,不支持反选,目标必须是玩家
l:最大经验等级
lm:最小经验等级

举例:
选择所有等级大于20的玩家:@a[lm=20]
选择所有等级小于10的玩家:@a[l=10]
选择所有经验在10-20级内的玩家:@a[l=10,lm=20]

根据游戏模式选择
游戏模式有许多表现方法,具体可参考下图:

冒险模式: 2 a adventure
创造模式: 1 c creative
跟随默认:d defauit
生存模式:0 s survival
这11种表现方式分别对应前面的游戏模式,支持反选,目标必须是玩家
m:游戏模式

举例:
选择所有生存模式的玩家:@a[m=0]
选择随机3个冒险模式的玩家:@r[c=3,m=a]

根据名称选择
游戏名称是字符串支持反选,正选不能同时选择多个,但反选可以。

name:实体名称

举例:
选择所有名为张三的僵尸:@e[name=张三,type=zombie]

【种族选择】

根据实体种类选择目标
实体名称属于命名空间id,可以在wiki上查看,这个和/summon的命名空间id是基本一样的,不过可用的更多一些,支持反选正选不能同时选择多个,但反选可以

type:实体命名空间id

举例:
选择所有僵尸:@e[type=zombie]
选择所有活着的玩家:@e[type=player]

type不适用于@p,@a,在@r中可以使@r选择非玩家目标(仅基岩版,网易手机版是基岩版),在@e中属于最正式的用法,在@s中可以用于验证执行者身份。

举例:
选择随机3个僵尸:@r[type=zombie,c=3]
当最近的玩家有tp的tag时才将玩家传送至0 4 0:execute @p ~~~ execute@s[tag=tp]~~~ tp @s 0 4 0

常用实体命名空间id:
僵尸 zombie
掉落物 item
经验球 xp_orb
雪球 snowball
鸡蛋 egg
玩家 player

补充:其实还有family基于家族选择,不过由于wiki中实体组件文档需要翻译,所以就没写。
好了,本期网课……啊不是,攻略就到这里,下期再见



(本图文来源于网络,如有侵权请联系作者删除)

声明:优质游戏活动创作不易,来源:摸鱼游戏。转载务必注明出处:http://www.k34.cn/gonglue/308912.html

① 扫二维码关注公众号或添加微信号:vips059 关注"摸鱼游戏"

② 领取游戏礼包、真实充值卡、福利号、手游内部号、预约专属客服

③ 赶紧扫一扫添加吧,送真实充值卡游戏内无门槛消费~免费送充值卡

评论