另外,我们还需要关闭成功注册玩家的password触发器以防止注册了还能再修改password,还需要在每次红石逻辑组结束运行时重置每名玩家的is_typed的分数值。前者我们可以通过execute以玩家为执行者运行一遍trigger password add 0来实现,后者可以通过加上写有『scoreboard players set @a is_typed 0』的命令方块来实现。
让我们在系统中加入标签进行筛选,并加入上面的指令,看一看是否能够解决一些问题:
◎墙→A→B→C(插图:99-3)
脉冲→D→E→F→G→H→I→J
A:execute positioned ~~~-4 run tag @a[distance=..3,tag=!registered,tag=!logged_in] add registering
\\给未登录且未注册的玩家添加registering标签\\
B:scoreboard players enable @a[tag=registering] password
C:tellraw @a[tag=registering]{“text“:“请运行指令\“/trigger password set <密码>\“输入账户密码来注册“,“color“:“yellow“}
D:execute as @a[tag=registering] store success score @s is_typed run scoreboard players enable @s password
E:execute as @a[tag=registering,scores={is_typed=1}] run tag @s add registered
\\给成功注册的玩家添加registered标签\\
F:tellraw @a[tag=registering,scores={is_typed=1}]{“text“:“注册成功,请记好你的密码哦!“,“color“:“green“}
G:execute as @a[tag=registering,scores={is_typed=1}] run trigger password add 0
\\将成功注册玩家的password触发器使用一遍以关闭\\
H:execute as @a[tag=registering,scores={is_typed=1}] run tp @s 13 -60 10 180 0
I:execute as @a[tag=registering,scores={is_typed=1}] run tag @s remove registering
J:scoreboard players set @a is_typed 0
\\重置is_typed\\
现在,我们的『注册/登录系统』Beta2.0测试版出来了!让我们测试一下:
n个『已将XXX的[is_typed]分数设为0』
*按下按钮*
已为XXX添加了标签'registering'
请运行指令“/trigger password set <密码>“输入账户密码来注册
n个『已将XXX的[is_typed]分数设为0』
*输入密码*
已触发[password](数值已设置为)
已为XXX启用了触发器[password]
已移除XXX的标签'registering'
n个『已将XXX的[is_typed]分数设为0』
......
出BUG了,还是个很严重的BUG。
不要慌张,让我们来排查一下到底是什么问题。
仔细阅读上面的日志,你会发现:
由于红石逻辑组的特性,在过长的逻辑组中,执行顺序会难以把控,然后就出现了上面的问题。
那该怎么办?
改用『纯指令逻辑组』。
『纯指令逻辑组』,其实是目前最常见的逻辑组。它有一个更加专业的说法:模块。在本书中,它也被称之为『命令块链』。
我们其实已经见过很多次『纯指令逻辑组』了,它其实就是由一个脉冲或循环型命令方块+一大串连锁型命令方块组成的。比如下面的这串命令方块:
A→B→C→D→(插图:99-4)
(为了方便,下面我都会称这东西为『模块』)
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。