领域论坛

 找回密码
 立即注册
搜索
领域论坛 门户 Minecraft 技巧教程 命令 查看内容

[转载|@红小石|CB连载教程]论exe与目标选择器的应用 (2)

2018-8-31 16:00| 发布者: 我是绵羊Yang_g| 查看: 477| 评论: 1|原作者: 红小石RD|来自: 兴趣部落

摘要: 关于/execute命令与目标选择器的组合应用

噫 这里是日常水帖的红小石
咕咕咕 cb连载教程的第二课
上次讲了命令的格式 如果在文中有涉及到不会的指令
请根据(1)的内容自学 不再赘述
pc1.13版本请自动忽视此帖主体内容 直接翻到结尾
所用版本pc 1.10 适用范围 pe与pc均可食用

exe的教程其实我之前有做过 但总觉得讲的不是很详细 特别草率/bushi 想了想 似乎和目标选择器一起会比较好 一旦学会了这个 很多东西都可以自己做啦
目标选择器我不打算详细讲 而是配合exe讲讲基本的应用 其他的就让各位举一反三了 同时score系列我打算到下一节再综合讲 因为scb这一块还要整一下
好了接下来是正文了xd

在execute(简称exe)指令系列中 涉及到了<实体>  实体的定义如下(摘自wiki)
所以我们可以推断 一切拥有以上性质的都可以称为实体 而在mc世界中 凡是可见的只分为实体和方块两大类 其中矿车 展示框 效果区域云(aec area_effect_cloud 又称药水云)等均属于实体 盔甲架(as armor_stand)和aec是常用的载体 这个在之后会广泛应用
在1.8以后的版本 加入了@e目标选择器 这使得玩家可以选择一切实体 在exe中我们先讲第一种用法
/execute <实体> <命令>
首先我们必须知道 exe具有以下性质
1.在除1.13的版本外 使用exe后 命令执行者无论如何都会变为该命令指定的实体 无论是将此命令输入在命令方块亦或是玩家手动输入
2.此处的xyz指后续命令的执行坐标 由1的性质可知 如果我们使用~ ~ ~来代替坐标 则此时的相对坐标原点则是该exe指定的实体
3<命令>指代所有命令 所以我们可以在exe后面套exe 这点很重要
我们先来解析前两个命令
左边是/fill ~ ~1 ~ ~ ~5 ~ stone 右边则是/execute @e[type=ArmorStand] ~ ~ ~ /fill ~ ~1 ~ ~5 ~ stone 可以看到 命令的执行者从命令方块变成了盔甲架 坐标也变成了以盔甲架为坐标原点
明显看出两条不同的命令执行者也不一样 第一个是命令方块作为执行者第二个则显然是盔甲架执行的的 此处我们就可以做一个小玩意
(疯狂暗示)
可用于做最最最简单的rpg人物对话xd
诶 都讲了这么多了 为什么还没到目标选择器呢 好吧我们先讲讲第三个性质 想一想 如果你要使某个实体执行一个命令 但是那个实体不存在不就无法执行了吗 反之 如果那个实体存在 那么这个命令就会被实行
于是可以利用这一点来探测是否有某个实体存在 而且我可以大言不惭的说 这完全可以取代testfor///怪不得1.13把testfor整合掉了 而多条exe连接为我们提供了探测是否有多种实体同时存在的方式 但是如果我要检测在玩家半径为5个方块内是否有苦力怕 并发出警告怎么办呢 这就需要用到目标选择器参数
目标选择器 顾名思义就是用来指定或选择某一个目标或某一种目标的限制条件 他的作用好比在某一种当中 选择一个品种 而且还有很多其他限制条件 比如半径等目标选择器参数 目标选择器参数的用法也相当简单 在目标选择器后面加上所需参数并扩上[]就可以了  目标选择器大致的分类有以下几种
@a全体玩家    @p最近的玩家    @r随机的实体(默认选择玩家可以通过type=更改)    @e全体实体 @s命令执行者(更高的版本才出现)
而目标选择器参数有以下几个(摘自wiki)
wiki的版本以1.13为准 其中nbt=是1.13所增加的 distance=是1.13所更改的 更早的版本均采用r=的形式(rm指最小距离 即大于某个范围外的实体) gamemode=同理 更早的版本均采用m= 同样还有limit= 更早的版本采用c=(指定的实体数量)  scores早期用法为score_X=和score_X_min= X为你所创建的计分板项目 这个之后会讲
大多数的目标选择器参数都可以用!来反选 但在1.10(其他版本不确定) r=与rm=均不可以用!来反选 反选的意思就是指选择除了符合特定条件的其他实体 要注意的是 同样的目标选择器参数不可以多次使用 比如@e[type=Cow,type=Pig]因为无法满足既是牛又是猪 而到了1.13则会被认为是 选择牛和猪 故可以使用
一堆文字也看的烦 还是来个示例吧 就拿我们刚才说的为准 当玩家半径为5的范围内有苦力怕是该怎么办呢
首先 是以玩家为原心的半径 故我们需要用exe改变目标执行者 同时要满足 既有玩家 又有苦力怕 而我想做一个玩家害怕的尖叫的效果 该怎么办呢
我们反过来想 不一定是以玩家为圆心 当苦力怕处在玩家附近r=5的范围内的时候 玩家也同样处在苦力怕附近r=5的范围内 故我们可以通过检测苦力怕r=5范围内有无玩家即可 命令如下
/execute @e[type=Creeper] ~ ~ ~ /execute @a[r=5] ~ ~ ~ /say 啊啊啊啊啊啊啊啊——有苦力怕
(效果图)
有人可能会对r=5放在@a后面感到奇怪 不是放在苦力怕后面吗 当然不是了 如果放在苦力怕后面 那么第一个exe的命令执行者是命令方块 那么r=5指的就是命令方块附近的范围了 而第二个exe执行者是苦力怕 故将r=5放在此处
这一点一定要分清楚 到底谁是命令执行者 目标选择器参数又应该放在哪里
当然我这样讲可能还是有点模糊 具体还请各位自己去摸索着做 如果觉得没有好的创意不妨尝试一下下列小考验
1.制作一个简陋的杀戮光环 使游戏模式为冒险的玩家 可以立刻杀死半径为4以内的僵尸 也就是僵尸一走进该范围就死
2.用命名牌给村民改名 使玩家走入村民三格以内的范围后 村民会对玩家说一句话 请记住只有一句话而不是一直刷

这里稍稍提一下第二种用法
/execute <实体> detect <方块> <数据> <命令>
这条指令是用于检测某群实体及某个位置是否有某个方块然后再输出命令 一般会用于检测脚下的方块 比如当我脚下两格有钻石块是 会输出一条命令 指令如下
/execute @a ~ ~ ~ detect ~ ~-2 ~ diamond_ore 0 /say 钻石!钻石!
所以不妨请各位尝试一下
1.当玩家附近脚下两格处有岩浆时提醒玩家(还有流动的岩浆哦)
2.当玩家站在特定位置处给玩家回血(用effect)
以上共有四个小小的考验 就留给各位啦

怎么感觉忘了些什么... 哦对了 我们还有1.13 1.13的exe呢请各位自行翻阅wiki 里面有超详细的解说 1.13的子集命令实在太多我这里是塞不下的 而且部落玩1.13的也不多 我就不再展开了
至于目标选择器 可以看上面我贴了张wiki的图表 那里面的均以1.13为准 可以参考 scores的用法整合为[scores={X=m..n}]其中X是创建的计分板项目
具体用法我还是照搬wiki 这使得玩家在1.13可以选择同时符合两个分数的实体而不必增加exe 其他的更新大同小异包括distance也是同理 m..n指[m,n] m..指[m,∞]等

好啦这就是今天的教程了
水着水着也有3k字符了
咕咕咕 以后的更新频率将会是两周一更
因为要上课啊xd
但是基本不断更/咕咕咕
依旧点赞关注转发 三联

相关阅读

发表评论

最新评论

引用 Kirimoto_Aki 2018-10-3 02:29
赞!很实用!

查看全部评论(1)

Archiver|手机版|小黑屋|官方Q群|联系我们|首页|SPR-BBS  

GMT+8, 2021-12-8 23:49 , Processed in 0.271110 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部