第189章 ,/.

就算你为指定玩家启用了触发器,但只要那批玩家使用trigger指令修改了一次,那么触发器就会自动关闭,直到我们再次为他们开启触发器。也就是说,如果你这样运行指令,将会得到如下结果:

/scoreboard players enable @s password

已为XXX启用了触发器[password]

/trigger password set 1

已触发[passoword](数值已设为1)

/trigger password set 1

你尚无法触发这个记分项

总而言之:要让玩家修改触发器,得先打开触发器,然后玩家就能够修改一次,修改完后触发器自动关闭,直到下一次被打开。

懂了吧?现在我们回来看看上面的第一个问题,你是否已经想到了解决办法?

没错,就是:

先创建一个储存密码用的password的触发器计分项(这步我们上面已经完成了)。当玩家按下按钮时,为其打开该触发器,并指示玩家通过/trigger指令修改该触发器的值,同时不断检测玩家是否已经输入。当检测到玩家输入时,对玩家输入的内容进行检查,如果符合条件则通过检测,否则重新打开触发器,让玩家重新输入。

这已经非常符合最终的注册和登录流程了。但是我们仍然要解决两个问题:

①如何检测玩家是否输入了密码?

②到底密码要符合怎样的条件才可以通过检测?

(唉作者,用户名呢?用户名怎么办?)

(其实不需要用户名,玩家名称完全可以当成用户名来使用)

本小章还未完,请点击下一页继续阅读后面精彩内容!

对于第一个问题,我们有两个解决办法:

①不断检测触发器的值是否改变,也就是通过execute的条件子命令判断

这个方法最简单,但是有些问题:万一玩家输入的是默认值该怎么办?

②不断尝试为指定玩家打开触发器,并将成功次数存储到另一个计分项上

这个方法也很简单,只要计分项的值不等于0,就代表着打开触发器成功,也就代表玩家已经输入过了。这同时也能解决『万一玩家输入的是默认值』的问题。

因此,我们不妨采用第二个解决办法,创建一个专门的计分项来记录触发器是否打开成功:

/scoreboard objectives add is_typed dummy

然后在等待玩家输入密码的过程中,不断重复执行:

/execute as 玩家 store success score @s is_typed run scoreboard players enable @s password

随后检测就可以了。

第二个问题就更简单了,因为这个问题没有标准答案,我们也不会在这章讨论这个问题。

现在,我们成功解决了输入的问题,整个『注册/登录』系统的最大难关已被拔除。在下一章,我们将会尝试搭建一个简陋的Beta版本,来检测一下我们的想法是否可行。