Minecraft(我的世界)中文论坛

标题: [CBL∫2b]指令方块进阶教程——模块 §3 : testfor [打印本页]

作者: ⭐✔️    时间: 2015-7-2 19:55
标题: [CBL∫2b]指令方块进阶教程——模块 §3 : testfor
本帖最后由 贰逼 于 2015-7-9 13:51 编辑

条件语句
下一页为 testfor详解
条件语句是模块中的一个重要指令
它用于判断事件是否成立,
若成立则输出;
若不成立则跳过。


条件语句将会涉及到
execute
testfor

关于枚举多个条件输出

或|| 与 且&&
!非的表达
条件嵌套
全索引链接
上一篇(execute)--下一篇(关于枚举与多个条件输出

§3.2 testfor
下一页为 execute与testfor区别
        3.2.1 指令格式


/testfor <player> [datdaTag]
就是
/testfor 实体选择器 NBT数据

使用后的返回值不是执行指令,而是输出信号


        3.2.2 条件与变量
在本小章讲解之前,仍需要预置一个实体进行条件储存



/summon ArmorStand ~ ~ ~ {CustomName:"f",CustomNameVisible:1}

和之前的execute相同
依旧是原来的效果:
使用
/scoreboard players set @e[name=f] a 1



如果使用:
/testfor @e[name=f,score_a_min=1]
输出信号

反之,



如果使用
/testfor @e[name=f,score_a=0]
不会输出

        3.2.3 条件与NBT
上方的指令
/testfor @e[name=f]
等价于
/testfor @e[] {CustomName:"f"}



仍旧会有输出,因为NBT符合实体条件


        3.2.4 execute与testfor区别
这两条指令皆为探测指令,那么区别究竟是什么

前面的execute大家都知道了是返回指令,而且是相对执行
根据前面可以看出testfor返回的是红石信号,而且需要借助比较器。
(当然testfor也有执行值,可以获取执行值后转存计分版)

execute基本都是利用计分板操作的(以及相对性),这点testfor比较灵活,
因为testfor能直接加上NBT进行判断输出
(当然execute也可以借助scoreboard赋值后缀NBT来达到探测NBT的效果,在变量与NBT有讲解

execute可以直接对接高频输出,而testfor对接后还需要输出器完成输出,
因此上面如果要达成
execute @e[name=f] ~ ~ ~ say 1
的效果

需要如下:



利用testfor探测:
/testfor @e[name=f]
比较器输出:
/say 1

值得注意的是,execute连接高频后会跟着高频输出
而testfor输出后由于比较器没有更新(Bud)所以仅仅输出一次
(后续有方法创建单次执行模块)

在模块中着重使用execute

[groupid=546]Command Block Logic[/groupid]
作者: Aikawastep    时间: 2015-7-2 20:05
新版本娇喘好评
作者: i_misty_rain    时间: 2015-7-2 20:10
挺好的教程,支持
作者: 天渊·启    时间: 2015-7-2 20:51
我怎么看到了高中必修三的内容 = =
作者: 海牛的麻烦    时间: 2015-7-2 21:13
高大上,大部分还是很容易看懂的,不过这个分页很不舒服..
作者: lzs1234    时间: 2015-7-3 09:28
总觉得那个f很像facebook的图标23333
依然没什么难度,新手向?




欢迎光临 Minecraft(我的世界)中文论坛 (https://www.mcbbs.net/) Powered by Discuz! X3.5