第一中文网

第四十三章 yer——记分板商店 (第1/2页)

天才一秒记住【第一中文网】地址:www.dyzww.cc

test,之前见过,意为“探测”、“检测”。通过test,可以探测一个变量的分数是否在一个区间内。我们就得通过它,来防止欠账的事情发生。

(注意,test子命令在Java1.13更新中被移除。现在仅Java1.12.2及以下版本和基岩版拥有该子命令)

现在已经有了“$”这个货币,并且作者有100万$(游戏里)。假设现在有一个物品,价值120万$(什么东东这么贵)。如果这个记分板商店就是一个scoreboard—players—remove加上\/give,那么作者也会买成功,但是$变成了-20万$(欠了20万美元)。

但是,minecraft里可没有自带还债机制,所以作者能够一直扣下去。

为了防止这种事情的发生,我们就需要用到test子命令。其格式是:

... test <目标选择器><计分项><最小值>[<最大值>]

注意,在Java版有test的时候,格式确实如上,“最大值”参数是选填的。但在基岩版中,“最大值”参数是必填的。

假设我们要使用test检测玩家“李四250”是否能够购买这个120万美元的东西,我们就需要执行指令:

\/scoreboard players test 李四250 $

*

其中,最大值被替换为了星号。这个“星号”是什么意思呢?

当最小值填*时,代指-;当最大值填*时,代指。

也就是说,这个\/scoreboard players test 李四250 $

*,实际上是\/scoreboard players test 李四250 $

所以这条指令的意思是:

检测玩家“李四250”在$计分项上的分数是否大于等于(并小于)。

如果成功,那么游戏会提示“分数xxx在到范围内”。

如果失败,则会在“在”字前加个“不”字,并将整个消息的颜色改为红色。

在命令方块中检测成功也会输出信号,进而激活接下来的命令方块。

我们记分板商店的原理之一就是这个。命令方块如下摆放即可做成简单的记分板商店:

A→b→c

A(脉冲,不受制约\/无条件,红石控制\/需要红石):

\/scoreboard players test @p $<物品单价>*

b(连锁,条件制约\/有条件的,保持开启\/始终活动):

\/scoreboard players remove @p $<物品单价>

c(连锁,条件制约\/有条件的,保持开启\/始终活动):

\/give @p <物品id> 1

这是最简单的记分板商店,其购买流程如下:

玩家按下拉杆激活A→A执行指令,检测玩家是否能够购买→如果能,激活b\/如果不能,结束购买→b执行指令,扣除玩家虚拟币,并激活c→c执行指令,给予物品给玩家→购买成功

这种记分板商店还有许多待完善之处:

1由于使用@p选取最近玩家,b和c可能将指令执行到错误的玩家上

2远处的玩家也可以碰到拉杆,但命令方块可能不会将指令执行到该玩家身上

3成功和失败都没有消息提示

解决办法也很简单:

一、目标选择器加上x、y、z参数指定执行中心,加上r或dx

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

都市超品仙医 活在两个世界 大秦:这个太子总想着造反 与其说瞎话不如 穿越万界:神功自动满级 诛神乾坤 多子多福,仙女都被他抢了怎么办