mindustry吧 关注:12,840贴子:77,182

回复:逻辑处理器前瞻性教程

只看楼主收藏回复

新内容有在探索
已经弄到新建存档了


64楼2020-10-11 17:16
收起回复
    怎么获得switch中的布尔值?


    IP属地:澳大利亚来自Android客户端65楼2020-10-16 14:39
    收起回复
      be 10530
      a-neko添加了4个新指令专门用来调教单位,分别是
      unit bind
      unit locate
      unit control
      unit radar


      66楼2020-10-17 01:52
      回复
        不过在这之前先总结一下已知的关键字
        @time。从1970年1月1日到现在经过的毫秒数。
        @this。调用@this的【方块】,一般就是处理器自己
        @thisx,@thisy。@this的x和y坐标,可以省去两个sensor
        true,false。你懂的
        null。无效值,不是0,是无效值。平时如果错误使用某些指令,它的返回值会是null,比如你输入getlink result 100000,因为第100000个连接的方块必定不存在所以返回值是null
        @+液体名称、物品名称、属性名称。用过sensor的都说好
        @+方块名称。方块类型。这个东西可以出现在用sensor-type返回【方块】的类型。比如用微型处理器执行【探测@this的type】,会发现和@micro-process相等
        @+单位名称。单位类型,换句话说,兵种
        @air。空气
        @soild。墙壁,换句话说,地形
        有无神人用处理器绘制实时地图


        67楼2020-10-17 02:30
        收起回复
          草,漏了@unit
          @unit。处理器绑定的所有单位
          睡一觉再来讲单位操作


          来自Android客户端68楼2020-10-17 03:08
          回复
            再补两个关键字
            @links。关联的方块的数量
            @ipt。处理器每tick执行数量。你没看错,微型处理器每tick只执行2条


            69楼2020-10-17 11:20
            收起回复

              【Unit Bind】
              单位绑定。让该处理器绑定特定的单位(兵种)。
              一个参数,点击选择或使用@关键字来指定。
              Unit Bind每次执行都会重置绑定列表,意味着通常只能绑定一种单位


              70楼2020-10-17 11:38
              收起回复

                【Unit Radar】
                使用单位的视野作为雷达,其他和Radar一致。
                5个参数+1个返回值。
                target and and是三个筛选器,可同时筛选三个属性
                any任意
                enemy敌人
                ally盟友
                player玩家
                attacker攻击能力者
                boss
                flying飞行
                ground地面

                order是排序,1是正序,小为先;0是倒序

                sort现在有许多可以排序的属性
                包括distance距离, health血量, maxhealth最大血量, shield护盾血量, armor护甲

                output就是返回的【单位】
                ===========
                mono视野范围很小
                人肉雷达,懂?
                那么Radar更新内容我就不赘述了


                71楼2020-10-17 12:05
                收起回复

                  【Unit Control】
                  大部分是对绑定的单位发送命令。东西很多,慢慢来。
                  =============
                  【stop】
                  立即停止所有行动。
                  、、、、、、、、
                  【approach】
                  让单位前往指定区域(的边界)
                  -x。区域圆心x
                  -y。区域圆心y
                  -radius。区域半径
                  【boost】
                  控制某些单位的推进器,比如nova(T1陆辅)。
                  推进器一般是让地面单位越过地形的工具。电脑玩家手操时用l-shift也可以开推进器。
                  -enable。是否启用
                  【pathfind】
                  前往某一敌人出生点。(可以理解为指挥中心的攻击模式)
                  、、、、、、、、
                  【target】
                  攻击指定位置。
                  -x。坐标x
                  -y。坐标y
                  -shoot。是否射击
                  【targetp】
                  攻击指定单位,有一定预判。
                  -unit。【单位】
                  -shoot。是否射击
                  、、、、、、、、
                  【itemdrop】
                  将身上的物品放入指定方块
                  -to。指定【方块】
                  -amount。放下的数量
                  【itemtake】
                  从指定的方块中取出物品
                  -from。【方块】,可以是容器设备核心等等
                  -item。@关键字指定的物品
                  -amount。取出的数量
                  、、、、、、、、
                  【paydrop】
                  放下一个单位。
                  【paytake】
                  搬起一个物体。
                  -takeunits。是否搬运单位,如果1,只搬单位;0,只搬建筑。
                  、、、、、、、、
                  【mine】
                  对指定位置的方块采矿(如果有、距离够近、采矿等级够)。
                  -x。
                  -y。
                  、、、、、、、、
                  【flag】
                  给执行它的单位添加一个数字标记。可以用于分组。
                  -value。标记的值
                  、、、、、、、、
                  【build】
                  建造指定方块。
                  -x
                  -y
                  -block。用@关键字指定【方块】
                  -rotation。朝向=0, 1, 2, 3。例如传送带就有朝向
                  【getblock】
                  获取某位置的方块类型及朝向
                  -x
                  -y
                  =result。返回值【方块】类型
                  =resRot。返回值朝向
                  、、、、、、、、
                  【within】
                  获取某区域内所有单位。
                  -x
                  -y
                  -radius。区域半径
                  =result。返回的所有单位


                  72楼2020-10-17 13:40
                  收起回复
                    差一个Unit Locate晚会再写
                    【单位控制原理1】
                    单位执行unit control,unti radar,unit locate时,AI会被替换成LogicAI,然后接收来自处理器的指令。有的指令是瞬间完成的(比如itemtake,mine),这没什么。而有的(比如approach)需要时间,那么在执行过程中,如果有和它冲突的指令输入,旧的指令就会被覆盖掉。
                    单位绑定不是一对一。多个处理器可以绑定同一个单位。
                    注:
                    1mine是瞬间完成的因为它是给单位设置要挖矿的位置
                    2内部实现≠本楼所述


                    73楼2020-10-17 14:02
                    回复


                      IP属地:澳大利亚来自Android客户端74楼2020-10-17 19:37
                      回复
                        彳于


                        来自Android客户端75楼2020-10-20 20:59
                        回复
                          在discord上看到了关于unit bind的讨论我逐渐理解一切
                          【单位控制原理2】
                          处理器实际上只绑定一个单位,三种控制指令通过替换单位AI为Logic AI然后发送AI指令来控制单位,使用@unit也可以引用这个单位来做sensor等操作。
                          unit bind是群体控制的关键。内部实现:【每次执行时】会从@type指定单位的全体中【按照顺序】选取一个,使其成为处理器绑定的单位。简称抓壮丁。
                          这时@unit只是上了绑定名单,并未被替换AI,只有在执行了任意控制指令之后@unit才会被替换AI。单位被替换为Logic AI后(信息栏会显示processor controlled之类),如果600tick内没有收到控制指令就会恢复自由身。


                          76楼2020-10-21 01:01
                          回复
                            那屑更了好多
                            催更


                            IP属地:内蒙古来自Android客户端77楼2020-10-21 07:21
                            回复
                              这可比 minecraft function 好弄多了……
                              (好眼熟啊


                              IP属地:江苏来自Android客户端78楼2020-10-21 21:55
                              回复