Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

!header_login!

只需一步,立刻登录

查看: 2041|回复: 16

[教程] 【教程】单刻输出的GPS by乙烯

[复制链接]
发表于 2015-11-13 02:19:43 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 乙烯_中国 于 2016-3-20 17:49 编辑

大家好,我是乙烯。
今天呢,来教大家怎样制作一个单刻输出的GPS,相信认识我的人多多少少会知道我在几个月前水过一个GPS原型机。在那时syl跟我说的GPS能够单刻输出结果。这点让我很是在意,并一直琢磨着如何做到。之前的一次意外让我无意中摸索到了诀窍。
等我做出来兴高采烈的和syl说的时候他告诉我外国人做过了。唉syl我和你说不带你这么玩的(╯‵□′)╯︵┻━┻。总之分享是美德,别计较这个了,先把这个技术推广吧。
首先来介绍一下GPS是指的什么吧。玩命令的同学应该都知道mc是没有提供给命令系统读取坐标的接口,那么不能获取坐标在某些方面其实还是很不方便的。所以之前那个原型机做到了输出整数的坐标。现在的这个系统也能做到,并且是每时每刻瞬间输出的类型。
那么这里的话我也大概说一下具体原理。整个事情是这样的,前段时间呢,是要去研究边界之地,结果呢,手贱,传送的边界之地里面去了,然后我就显示了掉线。单人游戏也会掉线这一点我觉得非常的有趣,但是那个存档之后也就打不开了,由于是随机生成的地图,所以其实也并不重要。但是,我们需要透过现象看本质,如果玩家在边界之地会被处理为掉线,那么其他实体会怎样呢,随后我就进行了一下实验。
实验的内容很简单,tp一个实体进边界之地就明朗了。
summon Zombie ~ ~1 ~ {CustomName:hi}

召唤一个叫hi的僵尸。

                               
登录/注册后可看大图

由于我实验的地方的z坐标为负数,所以我们选择z轴负方向的边界之地。
tp @e[name=hi] ~ ~ ~-30000000

tp进边界之地,这个没啥好说的,接下来就是重头戏了。
测量好执行次序之后,让以下指令控制在上一条之后激活。
首先我们来实验一下
tp @e[name=hi] ~ ~ ~30000000

当然这条指令的目的就是将僵尸tp回来,而激活之后的结果是,僵尸显示在原地,其实已经去了一趟边界了。

                               
登录/注册后可看大图

那么如果我们把第二条指令修改为
execute @e[name=hi] ~ ~ ~ tp @e[name=hi] ~ ~ ~30000000

会怎样呢?
答案是,僵尸不见了。
这样的对照实验我们可以很鲜明的看出区别,在于边界之地的实体并不能用exe指令来执行指令。
[07:01:48] 你输入的数字 (-3.000093340725673E7)太小了,它至少需要为-30000000

通过这样的反馈信息我们也可以注意到一些有趣的冷知识。就是命令内部的一些数据其实也是有取值范围的,比如这里的坐标。
那么进行其他的一些实验以确保确实exe是不能执行的。
确认完成。
那么这个不能用的发现能用在哪里呢?自然gps应该是可以用上的,因为这个可以判断实体是否在边界之地里。那么我们来进行系统的架构。
首先,还是万年二分法。
这里讲解一下,这里我们需要先创建x和z两个计分板变量。
/scoreboard objectives add x dummy

/scoreboard objectives add z dummy

这里以x变量为例子。注意,每个变量一个实体。
然后召唤一个实体进行判断。
execute @a ~ 0 ~ summon ArmorStand ~ ~ ~
{CustomName:"mark"}

然后执行以下一组指令让系统初始化
/scoreboard players reset @a x

tp @e[name=mark] ~-16777216 ~ ~

tp @e[name=mark] ~-16777216 ~ ~

/scoreboard players remove @a x 30000000

execute @e[name=mark] ~ ~ ~ tp
@e[name=mark] ~16777216 ~ ~

execute @e[name=mark] ~ ~ ~ tp
@e[name=mark] ~16777216 ~ ~

接下来运行以下规律的指令
tp @e[name=mark] ~16777216 ~ ~

execute @e[name=mark] ~ ~ ~ scoreboard
players add @a x 16777216

execute @e[name=mark] ~ ~ ~ tp @e[name=mark]
~-16777216 ~ ~

每组指令的数字需要除以2,以此递推。直到数字变为1。
当然最后不要忘记kill掉这个计算的实体。
kill @e[name=mark]

这个的精髓就在于利用exe进行判断实体是否在边界之地内部。这比我原来所使用的选择器的判断方法高效很多。话是这么说啦,但是还是比较抽象不是吗,这里我就把我平时喜欢用的方法说一下。我一般喜欢用这个指令来直接看。
/tellraw @a [{"score":{"objective":"x","name":"x"},"bold":"true"},{"text":","},{"score":{"objective":"z","name":"z"},"bold":"true"}]

高频执行这个指令,然后没病走两步,就可以很生动的看到坐标的变化。
而且这个模块运行起来一点都不卡,实用性非常高。我已经使用到我最近写的一个原版mod里面了。我会在楼中楼里面附上那贴的链接,你们可以去那个帖子下载下来看看。

评分

参与人数 7人气 +11 金粒 +85 收起 理由
pineapple_ + 1 楼主你太帅了~
satgo1546 + 1 + 16 很棒的作品!
istory + 1 + 10 很棒的作品!
1421312987 + 1 + 1 触手发帖,毫无人性
cyqsimon + 3 + 30 屌屌屌
chyx + 2 楼主你太帅了~
pacerrecap + 2 + 28 BAKA

查看全部评分

回复

使用道具 举报

发表于 2015-11-13 03:57:20 | 显示全部楼层
签名有些奇怪....

点评

然而你只注意到了签名——虽说签名也是优秀之作 但真正的精华在帖内好不! 最后你快把The History's Power删了,看着我好痛苦——别黑我图片不行么。  详情 回复 发表于 2015-11-13 04:35
回复

使用道具 举报

发表于 2015-11-13 04:35:53 | 显示全部楼层

然而你只注意到了签名——虽说签名也是优秀之作
但真正的精华在帖内好不!

最后你快把The History's Power删了,看着我好痛苦——别黑我图片不行么。

点评

这又不是黑 你的图片被别人借鉴,是对你图片的一种认可 就比如你的头像,肯定是画师画得好你才拿来用对吧 这就是心态问题了,我要是做一个签名图片,然后被人都来借鉴 我高兴还来不及呢 怎么叫黑呢  详情 回复 发表于 2015-11-13 05:02

评分

参与人数 1金粒 +2 收起 理由
simon3000 + 2 啥子皮卡丘?

查看全部评分

回复

使用道具 举报

发表于 2015-11-13 05:02:38 | 显示全部楼层
本帖最后由 simon3000 于 2015-11-13 05:04 编辑
lichi2050 发表于 2015-11-13 04:35
然而你只注意到了签名——虽说签名也是优秀之作
但真正的精华在帖内好不!

这又不是黑

你的图片被别人借鉴,是对你图片的一种认可

就比如你的头像,肯定是画师画得好你才拿来用对吧
这就是心态问题了,我要是做一个签名图片,然后被人都来借鉴
我高兴还来不及呢

怎么叫黑呢
不愧是BAKA2050

点评

跟一个版主争,好6  详情 回复 发表于 2015-11-13 06:09

评分

参与人数 1人气 +1 收起 理由
lichi2050 + 1 这么说也对 j'admet 皮卡皮卡皮卡皮卡丘.

查看全部评分

回复

使用道具 举报

发表于 2015-11-13 06:09:46 | 显示全部楼层
simon3000 发表于 2015-11-13 05:02
这又不是黑

你的图片被别人借鉴,是对你图片的一种认可

跟一个版主争,好6

点评

哎呀我真是虎落平阳被犬欺  详情 回复 发表于 2015-11-13 07:01
回复

使用道具 举报

发表于 2015-11-13 07:01:54 | 显示全部楼层
王健彬 发表于 2015-11-13 06:09
跟一个版主争,好6

哎呀我真是虎落平阳被犬欺
回复

使用道具 举报

发表于 2015-11-13 07:47:42 | 显示全部楼层
说了半天用处是什么……
检测玩家位置?
回复

使用道具 举报

发表于 2015-11-13 10:33:14 | 显示全部楼层
这....啊实在看不懂{:10_524:}
回复

使用道具 举报

发表于 2015-11-13 12:10:06 | 显示全部楼层
我尽力了.....看不懂

评分

参与人数 1人气 +1 收起 理由
chyx + 1 你看看我的回复

查看全部评分

回复

使用道具 举报

发表于 2015-11-13 13:19:22 | 显示全部楼层
王健彬 发表于 2015-11-13 06:09
跟一个版主争,好6

3000前几天刚被撤职
人家也是当过半年的实习版主的

点评

额,撤职?!  详情 回复 发表于 2015-11-14 03:55
回复

使用道具 举报

发表于 2015-11-14 03:55:36 | 显示全部楼层
nixgnot 发表于 2015-11-13 13:19
3000前几天刚被撤职
人家也是当过半年的实习版主的

额,撤职?!
回复

使用道具 举报

发表于 2015-11-14 14:12:58 | 显示全部楼层
看不懂?
回复

使用道具 举报

发表于 2015-11-17 12:22:07 | 显示全部楼层
1.gif 2.gif

评分

参与人数 1人气 +1 金粒 +20 收起 理由
乙烯_中国 + 1 + 20 鼓励一下

查看全部评分

回复

使用道具 举报

发表于 2015-11-17 20:48:11 | 显示全部楼层
怎么评分???????

评分

参与人数 1人气 +2 收起 理由
chyx + 2 这样

查看全部评分

回复

使用道具 举报

发表于 2015-12-13 12:19:18 | 显示全部楼层
execute之所以不能在边界执行,就是因为后面有一个坐标,在边界外的区域的数字都不行的(估计)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 手机版本

GMT+8, 2017-7-27 02:52 , Processed in 0.075711 second(s), 9 queries , Memcache On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。

© 2010-2017 我的世界中文论坛 版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。

快速回复 返回顶部 返回列表