本帖最后由 贰逼 于 2016-1-10 16:28 编辑

多模块关联
下一页为 单次执行模块
在模块中,为了达成一个目的,可以使用多个语句的单模块来完成
但是如果模块的输入有一系列输出,那么需要创建多个模块完成

因此在单模块中输入输出关系:
输入→输出

多模块相当于多个单模块,所以输出输入关系:
输入    →输出
(输入)  →输出
           →输出

可以看到多模块更加灵活不必局限于一个模块的体系。本章就要学习包括创建调用多模块,和控制多模块的操作类型

多模块最本质的区别:可被调用
多模块关联包括

建立模块

调用模块

初始执行模块

单次执行模块
  • setblock法
  • 时钟法
  • 调用效果指令

调用游戏资源
  • 坐标操作
  • 自动寻路

远程法调用逻辑组

关闭模块

全索引链接
上一篇(初始执行模块)--下一篇(调用游戏资源)

§8.4 单次执行模块
下一页为 setblock法
在模块中,只需要某一段指令仅仅执行一次,而不是跟着高频一起无限循环。

做到单次执行,一共有两种方法

        ?8.4.1 setblock法
下一页为 时钟法前面其实讲到过。setblock法分两种:一种是单次fill,第二种是远程连接

  • 单次fill



上面的指令方块:
  1. /fill ~ ~-1 ~ ~1 ~-1 ~ air
复制代码

下面的指令方块:
  1. /fill ~ ~1 ~ ~1 ~1 ~ redstone_block
复制代码


在两个指令方块中间坐标处放置红石块即可执行一次
(比如图中的say 1)


  • 远程连接



接收信号的指令方块:
  1. /setblock ~ ~1 ~ air
复制代码

远程setblock的坐标就是这个指令方块上面的坐标
其中此处采用红石布线,所以使用红石顺序


以上两种方式收到坐标局限,因此对于灵活性较强的非固定模块不推荐使用


        ?8.4.2 时钟法
通过时钟,能够让一段指令在符合条件后只会执行一次

比如玩家的a>=1后输出一次say 1,
我们可以借助计分板b来干涉此次执行,构成时钟



按照顺序连接高频:
  1. /execute @p[score_a_min=1] ~ ~ ~ scoreboard players set @p b 1
复制代码

*转存时钟
  1. /execute @p[score_b_min=1] ~ ~ ~ say 1
复制代码
  1. /execute @p[score_b_min=1] ~ ~ ~ scoreboard players reset @p b
复制代码

*输出时钟并破坏计分板b
  1. /execute @p[score_a_min=1] ~ ~ ~ scoreboard players reset @p a
复制代码

*清空a

效果:



那么尽管连接高频,也只会执行一次


分析:
首先利用条件语句切入时钟
接着利用时钟输出,并利用时钟破坏计分板b,让不再输出
最后破坏条件,让第二次循环不再输出


比起前面的setblock法,可以适用于灵活性比较高的不局限于坐标的模块,仅利用计分板达到输出一次


标准格式:
  1. 条件语句1 /scoreboard players set @p 计分板 1
复制代码

*转存计分板

  1. /execute @p[score_计分板_min=1] ~ ~ ~ 输出
  2. /execute @p[score_计分板_min=1] ~ ~ ~ scoreboard players reset @p 计分板
复制代码

*时钟

清除条件1
*清空

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