本帖最后由 贰逼 于 2015-8-16 20:45 编辑

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

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

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

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


多模块关联包括

建立模块

调用模块

初始执行模块

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

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

远程法调用逻辑组

关闭模块

全索引链接
上一篇(单次执行模块)--下一篇(调用逻辑组)
§8.5 调用游戏资源
下一页为 坐标操作
在模块执行的过程中,一定会遇到指令无法简单操作达到效果的方法
但是游戏内置的资源可以被指令调用,做到指令无法简便做到的事情

指令调用的通常是生物的ai或者是游戏的特性
通过模块加以操作达到目的。

        8.5.1 坐标操作
下一页为 tp与实体介入
坐标操作指对输出的坐标操作

对坐标操作的指令包含了:
tp - 传送实体到指定点
spreaplayer - 传送实体到一个范围

也有几个NBT:
Motion - 抛物线运动向量
Rotation - 方向轴值
direction - 直线运动向量


                8.5.1.1 tp与实体介入
下一页为 spreadplayers
  • tp
tp指将指定实体传送至指定点

格式:
  1. /tp 实体选择器 坐标
复制代码

*将实体传送到坐标
  1. /tp 实体选择器1 实体选择器2
复制代码

*将实体1传送到实体2

  • 实体介入
因为有相对性的存在,同时可以利用tp的坐标赋值
所以可以使用实体介入来进行含坐标相对的操作

具体参见:
for嵌套中的这个指令:
  1. /execute 实体1 ~ ~ ~ /tp 实体2 ~ ~1 ~
复制代码

就是实体介入,可以理解为记录点,通过execute进行坐标赋值。


                8.5.1.2 spreadplayers
下一页为 区块加载器
格式:
  1. /spreadplayers 目的地xz坐标 最小距离 最大距离 是否开启队伍 实体选择器
复制代码



比如
  1. /spreadplayers ~ ~ 10 11 false @p
复制代码

将玩家传送至最小10,最大11的范围内,不考虑队伍。

注意:这个区域是个方形

联动贴:
http://www.mcbbs.net/thread-336851-1-1.html


  • 区块加载器
下一页为 motion rotation direction
spreadplayers和tp同为传送,
但是spreadplayers传送后依旧会加载实体,这一因为其区块加载的特性

可以利用spreadplayers,在需要加载的区块
  1. /spreadplayers ~ ~ 2 3 中介加载的实体
复制代码



如果需要一直加载一个非玩家实体,可以利用相对性
  1. /execute 目标实体 ~ ~ ~ /spreadplayers ~ ~ 2 3 中介加载的实体
复制代码


需要注意前提有“中介加载的实体”


                ?8.5.1.2 Motion Rotation Direction
下一页为 自动寻路
  • Motion
一个列表;
  1. Motion:[向x速度,向y速度,向z速度]
复制代码


其中三个项目都是double类型,

所以表达可以为:
  1. Motion:[1d,1d,1d]
复制代码
表示向xyz都是每刻1格速度,受重力阻力影响。(应用所有实体)

  • Rotation
一个列表:
  1. Rotation:[偏x轴角,偏y轴角]
复制代码
其中两个项目都是float类型,

所以可以表达为:
  1. Rotation:[90f,90f]
复制代码
表示向x轴旋转90°,y轴旋转90°。(y的偏轴角只应用矿车,x偏轴角应用所有实体)

  • Direciton
一个列表:
  1. direciton:[x向量,y向量,z向量]
复制代码
三个项目都是double类型,

表达为:
  1. <span style="line-height: 1.5;">direciton:</span>[1d,1d,1d]
复制代码
表示向xyz向量1的直线运动,不受重力阻力影响。(应用部分抛射实体,例如恶魂的火球)



三个究竟有什么用?主要可以让运动更加平滑

联动贴:
Motion抛物线计算器(包含算法)



        8.5.2 自动寻路
利用原版的生物ai实现自动寻路

                8.5.2.1 僵尸寻路
僵尸是一个寻路AI的体现,实现方法很简单:

坐标中介 - 僵尸
目标     - 村民

需要注意两者需要隐身且僵尸尾随距离必须足够大

最后只需要将寻路的实体不断tp到僵尸即可

                ?8.5.2.2 生物仇恨
僵尸不会飞,也没有其他生物特性。
不过可以利用生物仇恨
http://www.mcbbs.net/thread-427720-1-1.html(药水仇恨)
http://www.mcbbs.net/thread-475275-1-1.html(雪球仇恨)

那么:
寻路中介 - 仇恨生物
目标     - 被仇恨生物

也是需要注意两者需要隐身且僵尸尾随距离必须足够大。
最后只需要将寻路的实体不断tp到僵尸即可



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