没劲的卡拉帕西吧 关注:1,177贴子:42,481
  • 13回复贴,共1

[TML][逻辑梳理]浅谈逻辑

只看楼主收藏回复

众所周知,1.9出来后,有了三种新的CB,但是仍然有那么多的作者做地图套一堆的红石,不是说红石不好,只是因为红石做的地图延迟高,bug多,简单的检测的PVE地图不会很明显,但是到了做高端黑科技的时候,1gt的延迟会毁了一整个电路,比如说,我在做超神之战的时候,仅仅CB顺序问题,让我debug了半个多小时,所以本人来普及一下逻辑


IP属地:湖北来自iPhone客户端1楼2016-07-22 18:30回复
    比较常用的几种逻辑以及常用命令
    纯CB非门
    CB计时器
    检测而只执行一次
    常用命令
    tag scb exe[跟没说一样]
    好了不要在意这些细节


    IP属地:湖北来自iPhone客户端2楼2016-07-22 18:32
    回复
      我们先说说简单的检测
      这里引用pca的逻辑
      If 有一个AS
      Then say 有一个AS
      else
      say 没有AS
      End If
      而且只执行一次,这怎么做呢,就需要tag(你用icb我也没意见)
      以下指令可以直接复制进pcb生成OOC
      //检测AS并且say
      rcb:/execute @e[tag=!AS,type=ArmorStand] ~ ~ ~ /say 这里有一个AS
      //给AS加tag
      /scoreboard players tag @e[type=ArmorStand,tag=!As] add AS
      完结


      IP属地:湖北来自iPhone客户端3楼2016-07-22 18:36
      收起回复
        下面说一下非门吧,这个东西挺简单的
        比如说,我想检测玩家没有拿着钻石*1的时候say 你是个穷屌
        //给拿着钻石的玩家tag
        rcb:/scoreboard players tag @a add Diamond {SelectedItem:{id:"minecraft:diamond",Count:1b,Damage:0s}}
        //检测,执行
        /execute @a[tag=!Diamond] ~ ~ ~ /tellraw @a[tag=!Diamond] {"text":"你是个穷屌"}
        //清除
        cond:/scoreboard players tag @a[tag=Diamond] remove Diamond
        这里为什么cond呢,因为如果是直接执行的话,当你手拿时依然会清除你的tag,那么就会一直tellraw,所以用cond,只有tellraw之后才会清除


        IP属地:湖北来自iPhone客户端4楼2016-07-22 18:47
        回复
          检测只执行一次,依旧用tag
          这个我不写命令,参考我超神之战里的战斗过程的描述
          逻辑大致是
          检测没有tag,然后执行
          检测,给予tag
          特定条件清除tag


          IP属地:湖北来自iPhone客户端5楼2016-07-22 18:48
          回复
            有什么逻辑上的错误欢迎来本帖提问,我乐于回答!@没劲的卡拉帕西 可以当做一个进阶的提问贴给精吗


            IP属地:湖北来自iPhone客户端6楼2016-07-22 18:49
            回复
              对于stats...这个我不是很懂,研究中。。。


              IP属地:湖北来自iPhone客户端7楼2016-07-23 07:59
              收起回复