本帖最后由 贰逼 于 2015-7-27 10:12 编辑

获取执行值
下一页为 stats与条件语句
本章将引进新的概念:执行值。

执行值便是一个指令除了输出外执行的结果,通常返回执行的次数输出值或者条件真假
获取执行值就能够随机应变,根据判断来调整下一步输出;执行值也可以用作debug;执行值也可以变相获取游戏参数

在指令中,返回值的指令是stats。使用这条指令可以对指令影响的实体、方块、物品进行值的返回
结合条件语句进行下一步输出;或者产生对应参数


获取执行值将会涉及到

stats用法
  • 所有执行类型
  • 相对执行概念
  • 计分板调用
  • 实体储存
stats与条件语句
  • 一般执行
  • !非
  • 且&&
  • 或||
  • 结合表达式
stats与时钟

全索引链接
上一篇(stats与条件语句)--下一篇(执行值与条件语句)
§6.2 stats与时钟
stats关联高频,也应当注意时钟


stats+条件语句关联高频本身就是时钟
比如当玩家背包拥有石头后,输出1。

此时需要关联高频,使用以下指令:


按照顺序执行:
  1. /scoreboard players set @e[name=f] a 0
  2. /stats entity @e[name=f] set AffectedItems @e[name=f] a
  3. /execute @e[name=f] ~ ~ ~ clear @p minecraft:stone
复制代码

*获取执行值
  1. /execute @e[name=f,score_a_min=1] ~ ~ ~ say 1
复制代码

*条件输出

效果:





一旦玩家拥有石头,立刻清除,输出1。

分析:
构成时钟的主要原因是每次都需要设定初始值,而后面又使用条件语句,所以相互冲突关联影响结果,所以构成时钟
此处AffectedItems表示影响物品栏物品,这是一个很好的验证。

除了stats本身构成时钟,还可继续增加时钟,构成双时钟
使用以下指令,让时钟具有!非效果:



在最后去掉/execute @e[name=f,score_a_min=1] ~ ~ ~ say 1,
依次增加三条指令:
  1. /scoreboard players set @e[name=f,score_a_min=1] a -1
复制代码

*时钟重新设定值产生!非
  1. /execute @e[name=f,score_a_min=0] ~ ~ ~ say 1
复制代码

*默认值输出
  1. /execute @e[name=f,score_a=-1] ~ ~ ~ say 2
复制代码

*重新产生的值输出

效果:


默认输出


检测到石头后

利用了时钟中默认值的方式实现!非,证明了存在双时钟


附加部分

练习:
  • 将任意一个stats模块关联高频;
  • 使用SuccessCount制作一个关联时钟的例子。

[groupid=546]Command Block Logic[/groupid]