E[链][无][始]
F[链][无][始]
G[链][无][始]
H[链][无][始]
I[链][无][始]
J[链][无][始]
现在,我们系统的Beta3.0版本出来了,让我们测试一下BUG有无解决:
*按下按钮*
已为XXX添加了标签'registering'
请运行指令“/trigger password set <密码>“输入账户密码来注册
n个『已将XXX的[is_typed]分数设为0』
*输入密码*
已触发[password](数值已设置为)
已为XXX启用了触发器[password]
已为XXX添加了标签'registered'
注册成功,请记好你的密码哦!
已触发[password](数值已增加0)
已将XXX传送到 13.,-60.000000, 10.
已移除XXX的标签'registering'
n个『已将XXX的[is_typed]分数设为0』
解决了!!!
现在,我们已经完成了这个系统的大半部分,接下来我们将会尝试完成『检测玩家的密码是否符合要求,如果符合则通过检测并传送走玩家,如果不符合则返回错误信息,并再次为玩家打开触发器指示玩家填写』这个部分。
其实这个部分相当简单。比如我们想要玩家不能设定密码为0,就可以这么干:
在D命令方块后面插入两个新的命令方块,写入以下内容
execute as @a[tag=registering,scores={is_typed=1}] unless score @s password matches 0 run tag @s add correct_input
\\为密码不是0的玩家添加标签correct_input(正确输入)\\
execute as @a[tag=registering,scores={is_typed=1}] if score @s password matches 0 run tag @s add error_input
\\为密码是0的玩家添加标签error_input(错误输入)\\
修改E、F、G、H、I命令方块的内容为
execute as @a[tag=correct_input,tag=registering] run tag @s add registered
tellraw @a[tag=correct_input,tag=registering]{“text“:“注册成功,请记好你的密码哦!“,“color“:“green“}
execute as @a[tag=correct_input,tag=registering] run trigger password add 0
execute as @a[tag=correct_input,tag=registering] run tp @s 13 -60 10 180 0
execute as @a[tag=correct_input,tag=registering] run tag @s remove registering
在I后新增命令方块3个,内容为
execute as @a[tag=correct_input,tag=registered] run tag @s remove correct_input
execute as @a[tag=registering,tag=error_input] run tellraw @s {“text“:“请不要将0作为你的密码,请重新输入“,“color“:“red“}
execute as @a[tag=registering,tag=error_input] run tag @s remove error_input
让我们测试一下:
......
*输入密码*
已触发[password](数值已设置为0)
已为XXX启用了触发器[password]
已为XXX添加了标签'error_input'
请不要将0作为你的密码,请重新输入
已移除XXX的标签'error_input'
小主,
*再次输入密码*
已触发[password](数值已设置为1)
已为XXX启用了触发器[password]
已为XXX添加了标签'correct_input'
已为XXX添加了标签'registered'
注册成功,请记好你的密码哦!
已触发[password](数值已增加0)
已将XXX传送到 13.,-60.000000, 10.
已移除XXX的标签'registering'
已移除XXX的标签'correct_input'
OK,完美运行,这就是系统的Beta4.0版本。
只不过由于篇幅限制,我们就讲到这里。接下来对于『登录』功能甚至『登出』功能的实现,请你自己独立完成。这边有几个要求和提示:
①登录模块和注册模块要分开,但其实两者的原理都差不多
②创建一个新的触发器enter_password,用于登录密码的输入
③优化模块的运行,使得玩家在按下按钮后才会调用登录和注册模块,并在没有处于登录/注册中的玩家后停止模块运行(提示:setblock或fill红石块)
④创建一个新的触发器,已登录的玩家可以修改此触发器到一个特定的值来退出登录
⑤新玩家进来后必须要出生在注册/登录房里
⑥未追踪玩家的分数无法被比较。所以如果你拿未追踪玩家的分数来比较,由于没有分数,所以游戏总会返回false(假)
你可以加QQ群或通过作家的话中的网盘链接获取到我做的完整『注册/登录系统』的存档(Minecraft Java1.19版本,非网易版)。
本章到此为止。