我的世界精确到千分之三速度检测器教程及下载
我的世界精确到千分之三速度检测器教程及下载。今天给大家分享的这个速度探测仪是可以精确到千分位的哦!可现实多么利好的了,那下面就给大家详细的介绍一下该探测仪吧!下面还有存档别忘了哦!
作品全图:
那么中间那条钻石块铺成的通道就是检测速度的地方,首先建立一个关于时间的SCB——time,再分别设置两个假名:start和end, 就不多说了,然后通过
/stats block 19 2 7 set QueryResult start time
/stats block 19 2 6 set QueryResult start time
/stats block 0 1 6 set QueryResult end time
/stats block 0 1 7 set QueryResult end time
即钻石块跑道开头和结尾处的两条金块下的CB
/time query gametime数据的值进行连接,注意,我这里用的是gametime而非daytime是因为daytime可以被/time set/add 指令所影响,从而影响精度,而gametime无法被指令修改,比较牢靠
那么起点和终点的时间都被我们导入了SCB,如下图
侧边栏里显示了我在起点和终点时据创建这个存档的时间,即328447(起点处)与328485(终点处),那么接下的事就是计算了,也就是说,接下来的CB都是进行以下运算:
end-start的值——因为S=VT,S已预先设定为20Blocks,而这里的时间都是以GT(GameTick的简称,下同)为单位的,即1/20s 恒等变换一下可得:
V=(20*20)/(end-start)
那么就要把他转换成CB语言
我的世界精确到千分之三速度检测器教程及下载。今天给大家分享的这个速度探测仪是可以精确到千分位的哦!可现实多么利好的了,那下面就给大家详细的介绍一下该探测仪吧!下面还有存档别忘了哦!
作品全图:
那么中间那条钻石块铺成的通道就是检测速度的地方,首先建立一个关于时间的SCB——time,再分别设置两个假名:start和end, 就不多说了,然后通过
/stats block 19 2 7 set QueryResult start time
/stats block 19 2 6 set QueryResult start time
/stats block 0 1 6 set QueryResult end time
/stats block 0 1 7 set QueryResult end time
即钻石块跑道开头和结尾处的两条金块下的CB
/time query gametime数据的值进行连接,注意,我这里用的是gametime而非daytime是因为daytime可以被/time set/add 指令所影响,从而影响精度,而gametime无法被指令修改,比较牢靠
那么起点和终点的时间都被我们导入了SCB,如下图
侧边栏里显示了我在起点和终点时据创建这个存档的时间,即328447(起点处)与328485(终点处),那么接下的事就是计算了,也就是说,接下来的CB都是进行以下运算:
end-start的值——因为S=VT,S已预先设定为20Blocks,而这里的时间都是以GT(GameTick的简称,下同)为单位的,即1/20s 恒等变换一下可得:
V=(20*20)/(end-start)
那么就要把他转换成CB语言
首先end-start:
/scoreboard players operation end time -= start time
然后由于SCB只能储存整数,所以接下来的事就是由低精转化成高精,那么就需要移位:
/scoreboard players operation S S /= end time
注意,这里的S值是4000000,因为这样就可以把原本被系统忽略的值通过把商*10000倍,为取余做铺垫
/scoreboard players operation S S %= 100 100
取余,注意,这里的SCB:100其实值是10000,即求出S/(end-start)除以10000的余数,这个余数即为值的小数点后4位,例如:
商:2.1234
*10000:
21234
%10000
1234
得到了小数位以后,我们还要算出他的整数位,这很简单,再除一遍就行了:
/scoreboard players operation S1 S /= end time
这回S1的值就是400,那么就得到了整数位
接下来就是四舍五入的部分了,因为我将整数与小数系统分开,所以只要判断最后一位小数,即万分位是否大于0
先单独将万分位剥离判定:
/scoreboard players operation S2 S = S S
将值导入另一假名
/scoreboard players operation S2 S %= 10 100
然后取余,得到其万分位
那么分为两种情况讨论:
1.万分位大于等于5小于10
2.万分位大于等于0小于5
1情况的命令如下:
/scoreboard players test S2 S 5 9
先判定是否在区间内
/scoreboard players operation S S /= 10 100
如果在就将其值除以10
/scoreboard players add S S 1
并在千分位+1
2情况命令如下:
/scoreboard players test S2 S 0 4
依旧判定不多说
/scoreboard players operation S S /= 10 100
这次除以10,但是并不加分
然后最后输出+清零系统:
由于我算法的特殊性,所有小数值含零,也就是小数数列有效数字<3的值会造成误读即:
形如00X或00XX的小数值会被系统处理为XX或X,造成系统错误
为了纠正这种错误,我们另需一个系统:
/scoreboard players operation @p S = S S
将S假名的值导入玩家利于判定
接下来是带有穷举概念的三个输出:
/execute @p[score_S_min=100,score_S=999] ~ ~ ~ /tellraw @p [{text:"nnn你的速度是(四舍五入,保留三位后):n"},{score:{name:"S1",objective:"S"}},{text:"."},{score:{name:"S",objective:"S"}},{text:"M/S"}]
/execute @p[score_S_min=10,score_S=99] ~ ~ ~ /tellraw @p [{text:"nnn你的速度是(四舍五入,保留三位后):n"},{score:{name:"S1",objective:"S"}},{text:".0"},{score:{name:"S",objective:"S"}},{text:"M/S"}]
/execute @p[score_S_min=0,score_S=9] ~ ~ ~ /tellraw @p [{text:"nnn你的速度是(四舍五入,保留三位后):n"},{score:{name:"S1",objective:"S"}},{text:".00"},{score:{name:"S",objective:"S"}},{text:"M/S"}]
即对XXX,0XX,00X的三种值进行手动补位,输出
最后数值归零:
/scoreboard players set S S 4000000
/scoreboard players set S1 S 400
/scoreboard players set S2 S 0
/scoreboard players set @p S 0
系统完成
网盘下载密码:df4o
>>>>>网盘:点击下载<<<<<
>>>>>本地:点击下载<<<<<
PS:在此非常感谢我的世界玩家乾坤轩辕1的分享。
以上就是我的世界精确到千分之三速度检测器教程及下载。更多精彩尽在游戏园我的世界专区。
热门攻略推荐:
精品推荐
相关文章
更多+热门搜索
手游排行榜
- 最新排行
- 最热排行
- 评分最高
-
应用软件 大小:116.49MB
-
动作塔防 大小:102M
-
冒险解谜 大小:188.13MB
-
冒险解谜 大小:168M
-
模拟经营 大小:91MB