minecraft吧 关注:2,542,634贴子:31,798,261

【基岩版】在玩家每次进入服务器时执行指令(附可靠性证明)

只看楼主收藏回复

以此可以自动设置生存飞行等退出就会重置的指令,或者把玩家tp回主城


IP属地:广东来自Android客户端1楼2021-11-01 12:54回复


    IP属地:江西来自Android客户端2楼2021-11-01 14:00
    收起回复
      第一步:放置命令方块
      首先面朝东面,放置如图的四个草方块,距离为2


      IP属地:广东3楼2021-11-01 15:07
      收起回复
        然后在偏东北的草方块上放如下五个命令方块并设置延迟:
        0延迟:scoreboard players add @璐村惂鐢ㄦ埛_00000eP馃惥 AC_b 1
        1延迟:scoreboard players add @a AC_a 1
        2延迟:give @a[scores={AC_a=1, AC_b=1}] apple
        3延迟:scoreboard objectives remove AC_a
        4延迟:scoreboard objectives add AC_a dummy AC_a

        2延迟命令方块的的 “@a[scores={AC_a=1, AC_b=1}]” 即为检测刚进入服务器的玩家的筛选条件


        IP属地:广东10楼2021-11-01 15:26
        回复
          在偏东南的草方块上放如下五个命令方块并设置延迟:
          0延迟:scoreboard players add @璐村惂鐢ㄦ埛_00000eP馃惥 AC_a 1
          1延迟:scoreboard players add @a AC_b 1
          2延迟:give @a[scores={AC_a=1, AC_b=1}] apple
          3延迟:scoreboard objectives remove AC_b
          4延迟:scoreboard objectives add AC_b dummy AC_b

          2延迟命令方块的的 “@a[scores={AC_a=1, AC_b=1}]” 即为检测刚进入服务器的玩家的筛选条件


          IP属地:广东11楼2021-11-01 15:27
          回复
            在偏西北的草方块上放置如下两个命令方块。延迟至少为5,下面 ≥ 北面:
            草方块北面:fill ~ ~ ~4 ~1 ~ ~4 redstone_block
            草方块下面:fill ~ ~1 ~ ~1 ~1 ~ air


            IP属地:广东12楼2021-11-01 15:27
            回复
              在偏西南的草方块上放置如下两个命令方块。延迟至少为5,下面 ≥ 北面:
              北面:fill ~ ~ ~-2 ~1 ~ ~-2 redstone_block
              下面:fill ~ ~1 ~ ~1 ~1 ~ air


              IP属地:广东13楼2021-11-01 15:28
              回复
                第二步:启动。
                打掉草方块,在西侧本来有草方块的地方放置一个红石块


                IP属地:广东14楼2021-11-01 15:28
                回复
                  第三步:测试。
                  看到红石块循环在两组命令方块间出现则说明设置成功,此时退出游戏。


                  IP属地:广东15楼2021-11-01 15:30
                  回复
                    再进入服务器,它给了我们一个苹果然后就没有再给,说明成功了


                    IP属地:广东16楼2021-11-01 15:31
                    回复
                      教程部分就结束了,注意要用tickingarea把命令方块所在的区块设为常加载区块。
                      接下来是可靠性证明
                      (我是转场图)


                      IP属地:广东17楼2021-11-01 15:38
                      收起回复
                        首先了解一下这个系统的原理。
                        刚才我们放了四个草方块,北2个,南2个。就以它们为参照,把紧贴北边草方块的命令方块总结为【操作1】,紧贴南边的总结为【操作2】。
                        放置红石块和打掉红石块的命令方块的作用是执行下一步【操作】,因此不算进【操作】中。
                        ①、②是给a、b加一,③是执行要对玩家使用的指令,④、⑤是重置计分项a或b


                        IP属地:广东23楼2021-11-01 16:12
                        回复
                          然后进行情景模拟。
                          考虑玩家进入服务器后,a、b的变化:
                          Ⅰ. 初始状态:玩家不在服务器时,a、b被轮流重置,所以a、b均为默认值0。
                          我们画一个圈表示这个状态。

                          Ⅱ. 接下来可能会出现两种情况:一种是执行操作1,另一种是执行操作2。
                          我们根据楼上的“最终结果”得到执行两种操作后的状态。

                          Ⅲ. 再接着,操作1和操作2循环执行,我们加上这两个箭头

                          可以发现,从初始状态开始,无论执行哪个操作,都会进入a=0, b=1 ↔ a=1, b=0的循环。


                          IP属地:广东24楼2021-11-01 16:13
                          回复
                            为什么不直接在后台搞一个deamon检测到控制台log里面输出玩家加入就执行特定的指令


                            IP属地:四川来自Android客户端25楼2021-11-01 16:20
                            收起回复
                              知道了计分项可能的状态,以及处于某一状态时,下一步会执行的操作,我们开始分析那些情况可以触发我们要执行的指令。
                              回头看看这两个操作,可以发现当且仅当执行操作前, a = 0, b = 0 时,操作1(或操作2)的第③步才会是a=1, b=1的状态。

                              由此更新状态转化图,绿色代表指令会执行,红色代表不会执行。

                              这就是玩家进入服务器后执行一次指令,此后不再执行的原理。


                              IP属地:广东26楼2021-11-01 16:23
                              回复