好主意!但问题来了,要修改计分项的话,玩家就得有2级权限(Java版),但就算是个傻子也不会给刚进服的玩家2级权限吧?况且,/op和/deop可不能在命令方块中运行。
那是否有没有一种方法,能够让没有权限的玩家也能够修改特定计分项的值呢?
还真有!那就是:
触发器(Trigger)
在『第四十一章 objectives——管理一个计分项』中,我们曾经了解到trigger准则计分项所具有的特性:
『触发器,类似于dummy,但所有玩家均可修改自己的trigger型计分项』
也就是说,我们可以创建一个trigger准则的计分项,然后指示玩家去修改自己在这个计分项上的分数,进而达到『玩家输入,我们也能检测到并储存』的效果。
那我们到底该怎样正确使用触发器呢?
让我们先创建一个trigger准则的计分项:
/scoreboard objectives add password trigger
这将会创建一个叫做『password』的trigger准则计分项,我们将会使用它来储存玩家的密码。
然后呢,怎么让玩家能够修改?
你应该知道,让玩家使用/scoreboard players set 去修改自己的trigger类计分项的分数是不现实的,因为scoreboard必须要2级权限才能使用。因此,Mojang专门为触发器加入了一条指令:
/trigger
作用:修改执行者自己的trigger计分项上的分数
存在版本:Java1.8-今
需要权限等级:Java-0
需要作弊:否
格式:
/trigger <允许的trigger计分项>
\\使执行者自己在指定计分项上的分数+1\\
/trigger <允许的trigger计分项>(add|set)<值>
\\设置执行者自己在指定计分项上的分数\\
举个例子:
/trigger password set 1
如果password是个已被启用的trigger计分项,那么运行上述指令将会修改执行者自己在password计分项上的分数为1。
等等,『已被启用』是个啥意思?trigger计分项要被修改还得先启用?
没错,Mojang虽然给了我们触发器,但是这个触发器并不是随时随地都能让没权限的玩家自由修改的。要让玩家能够使用触发器,首先你需要使用scoreboard players enable命令来为指定玩家启用触发器:
/scoreboard players enable <目标>
比如:
/scoreboard players enable @s password
就可以让我们自己能够修改一次password。注意啊!不是无限修改,而是只能修改一次!
就算你为指定玩家启用了触发器,但只要那批玩家使用trigger指令修改了一次,那么触发器就会自动关闭,直到我们再次为他们开启触发器。也就是说,如果你这样运行指令,将会得到如下结果:
/scoreboard players enable @s password
已为XXX启用了触发器[password]
/trigger password set 1
已触发[passoword](数值已设为1)
/trigger password set 1
你尚无法触发这个记分项
总而言之:要让玩家修改触发器,得先打开触发器,然后玩家就能够修改一次,修改完后触发器自动关闭,直到下一次被打开。
懂了吧?现在我们回来看看上面的第一个问题,你是否已经想到了解决办法?
没错,就是:
先创建一个储存密码用的password的触发器计分项(这步我们上面已经完成了)。当玩家按下按钮时,为其打开该触发器,并指示玩家通过/trigger指令修改该触发器的值,同时不断检测玩家是否已经输入。当检测到玩家输入时,对玩家输入的内容进行检查,如果符合条件则通过检测,否则重新打开触发器,让玩家重新输入。
这已经非常符合最终的注册和登录流程了。但是我们仍然要解决两个问题:
①如何检测玩家是否输入了密码?
②到底密码要符合怎样的条件才可以通过检测?
(唉作者,用户名呢?用户名怎么办?)
(其实不需要用户名,玩家名称完全可以当成用户名来使用)
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。