⭐✔️
本帖最后由 贰逼 于 2017-4-18 22:41 编辑

首先说两句废话,spreadplayers指令大家可能没有听说过,是因为这条指令设计的领域脱离了Mc指令研究主流——区域随机。但是这条指令一旦要使用,用处非常大,所以大家必须好好学习这条指令,同时也能解决大家一些对于这条指令的疑问。

索引:
1Page - SpreadPlayers用途、指令格式
2Page - SpreadPlayers疑难解答
3Page - SpreadPlayers输出特点
4Page - SpreadPlayers成品


SpreadPlayers用途、指令格式

这条指令用于对玩家(1.8之后对于所有实体)在指定的区域内传送并将实体打散(Spread-传播、蔓延)。通过这个特点,可以做出许多形形色色的装置,最常用的领域就是在PVP游戏中为了防止玩家在起点不进行斗殴,可以用这条指令进行随机传送。
与Tp不同,不是将玩家传送到某一个特定的点,而是将玩家传送到特定的区域内随机的点。
例如:


原本的盔甲架▲


在tp中选择红色羊毛左下角白色羊毛点后的盔甲架▲


spreadplayers选择原坐标、白色羊毛范围(红色羊毛)之后的盔甲架△

有上面的例子我们可以直接区分tp与spreadplayers差别——点与范围,固定与随机。

那么Spreadplayers究竟如何使用?


  1. /spreadplayers <x> <z> <spreadDistance><maxRange><respeceTeams true;false> <player ..>
复制代码
  1. /spreadplayers <x坐标> <z坐标> <扩散最小距离> <扩散最大距离> <是否启用队伍 true或者false> <玩家 ..>
复制代码

其中,xz为需要扩散玩家的中心点,最小距离与最大距离形成一片平面区域,并扩散玩家。
[第二页:疑难解答]

2021.12 数据,可能有更多内容首先说两句废话,spreadplayers指令大家可能没有听说过,是因为这条指令设计的领域脱离了Mc指令研究主流——区域随机。但是这条指令一旦要使用,用处非常大,所以大家必须好好学习这条指令,同时也能解决大家一些对于这条指令的疑问。


索引:
1Page - SpreadPlayers用途、指令格式
2Page - SpreadPlayers疑难解答
3Page - SpreadPlayers输出特点
4Page - SpreadPlayers成品



SpreadPlayers用途、指令格式


这条指令用于对玩家(1.8之后对于所有实体)在指定的区域内传送并将实体打散(Spread-传播、蔓延)。通过这个特点,可以做出许多形形色色的装置,最常用的领域就是在PVP游戏中为了防止玩家在起点不进行斗殴,可以用这条指令进行随机传送。
与Tp不同,不是将玩家传送到某一个特定的点,而是将玩家传送到特定的区域内随机的点。
例如:



原本的盔甲架▲



在tp中选择红色羊毛左下角白色羊毛点后的盔甲架▲



spreadplayers选择原坐标、白色羊毛范围(红色羊毛)之后的盔甲架△


有上面的例子我们可以直接区分tp与spreadplayers差别——点与范围,固定与随机。


那么Spreadplayers究竟如何使用?



代码:

  1. /spreadplayers <x> <z> <spreadDistance><maxRange><respeceTeams true;false> <player ..>

代码:

  1. /spreadplayers <x坐标> <z坐标> <扩散最小距离> <扩散最大距离> <是否启用队伍 true或者false> <玩家 ..>

其中,xz为需要扩散玩家的中心点,最小距离与最大距离形成一片平面区域,并扩散玩家。
[第二页:疑难解答]

SpreadPlayers疑难解答


xz两坐标:
首先来解答关于为何只有xz两坐标而不是xyz三坐标。
从前文中有一个细节——平面区域,所以xz选择的只能是一个平面区域,那为什么没加入y围成一个立体区域进行扩散?没有y会不会卡进其他方块?
看一下图解:

一个最大距离为4,最小距离为0的平面,周围突起▲

中心放置盔甲架▲

第一次扩散,仿佛被卡在了凹陷处▲

但是第二次扩散证明了扩散(Spreadplayers)不受y坐标限制△


既然不会卡进方块,会不会掉落?

最大距离2,最小距离0的区域▲
红色羊毛与白色羊毛起落相差10+

传播后虽然传播到了下层,但是不会掉落。
所以通过验证,xz的值是自定的,而y默认为世界高度(256),则选择除了x,256,z的一个立体区域进行传播,因而省略y坐标。
(同时出现的传播特性在下页讲解)


队伍的true与false:
很容易理解,就是是否开启队伍模式

例如我是红队,在这个区域传播

指令中开启队伍模式,只有红队可以传播

而其他的队伍就不会有任何事情发生。


若开启队伍:

代码:

  1. /spreadplayers x z 最小距离 最大距离 true @a[team=队伍颜色] 目标选择器 特殊NBT

若关闭队伍:

代码:

  1. /spreadplayers x z 最小距离 最大距离 true目标选择器 特殊NBT

[第三页:输出特点]
SpreadPlayers输出特点


1.正方形区域
由于xz的立体区域定性,所以输出只会在最大距离和最小距离所形成的方形区域内。

一个最小距离0,最大距离4的区域,按照类似r=5的定性思维,输出会在红色区域内,



2.区域范围为256*平方差
尚文提到了所形成的是边相等的正方形,
而最小距离和最大距离所形成的准确来说则是平方差



传播在最小距离2,最大距离5区域中,



无论如何,都在范围平方差(5?-3?=16)的区域内传播,所以输出的范围值为平方差


3.传播至方块表层
spreadplayers类似小黑瞬移一样,不会卡进方块(上文已提到),不会坠入底部,只会传送到方块表层。

最大距离5,最小距离0的红色区域内,中空,传播会不会是实体掉落虚空?

不会,传播自动选择方块表层




↑不会出现这种情况


[/quote]
[第四页:成品]



SpreadPlayers成品
1.平方差随机器:(为drognoz灵感)

代码:

  1. /summon 生物名 红色羊毛坐标 ~ ~ ~ {Attributes:[{Name:generic.movementSpeed,Base:0.0}]}
首先在红色羊毛(及y轴更向上坐标)生成,
然后执行

代码:

  1. /spreadplayers x z a b false @e[type=生物名]
之后便有了一个随机值范围:
(2b)?-(2a)?
=(2b+2a)(2b-2a)
这个随机器是目前最简单的大范围随机器


概率随机器:
小概率:



代码:

  1. /summon 生物名 下层中心点坐标 ~ ~ ~ {Attributes:[{Name:generic.movementSpeed,Base:0.0}]}
生成用于随机的实体

代码:

  1. /spreadplayers 下层中心点坐标 0 a false @e[type=生物名]
若下方大区域边长为m,上方小区域边长为n,则概率为:
n?/m?
最后固定输出
大概率:

3.世界随机传送
首先我们要认识到tp可以tp到世界边境(tp坐标无限),由此所以spreadplayers也不受长度制约(受玩家数量制约)
所以世界传送大法在服务器里是/r或者/tp r
原版中是:

代码:

  1. /spreadplayers 0 0 0 世界范围半径 false @p



当然,spreadplayers也用于玩家互动类游戏(PVP、运动类)等,
总之,spreadplayers是一条强大的随机指令



米安博奥
SpreadPlayers是新增么?

暗金炎罗
好厉害,长知识了··········

RAY5DHao
教程不错哟!讲的很详细

米安博奥
本帖最后由 BC酱_BcsC 于 2014-9-8 21:13 编辑

不好意思 多回复了

qxdnfsy
2b你是什么皮肤啊?

独孤粽
赞!学习了一个较少见指令后赶脚萌萌哒!

PotatoMaster101
话说/spreadplayers里没有加入y的选项,好像区域随机的话不会分层数什么

捌柒
可惜这种随机器占地太大,没有投掷器随机好用

捌柒
ghyzhi10086 发表于 2014-9-9 08:04
可惜这种随机器占地太大,没有投掷器随机好用

1~2014的随机可以用soft以前的记分板随机,但可惜投制器只能放9个

satgo1546
其实我是在写/s然后直接按Tab本来认为会直接出来scoreboard但发现还有个spreadplayers然后才发现这个命令的……

末影矿工
终于有spreadplayers的教程了。。。其实早就应该出了。。。

Asselin
表示这个指令在1.7的时候发现了 用来当作单人的随机TP 挺好用的

xxz383045595
好流弊的样子!

hacccc
看不懂qaq,颜色太花了

1XWJ
传说中的随机传送!

Kurumi彡
不错啊,支持!

qq1468993126
不错,希望楼主多多发这样的教程