触摸精灵吧 关注:11,860贴子:44,867

【教程】授人以渔,从小白开始,教你做雷霆战机无尽脚本

只看楼主收藏回复

楼主也是小白一个,没学过编程,雷霆战机出合成后,觉得金币不够用,开始接触触摸精灵。用过楼主脚本的都知道,楼主的脚本用的都是触摸精灵里最常用的命令。从以前只会用区域模糊单点找色常误判,到现在用条件双点找色。从以前用goto来跳转,到现在用条件加循环来控制,楼主也慢慢从一纯小白成长成一个小菜鸟。
只要有耐心,小白也能用最简单的命令写出能用的脚本。
最后,希望能在这贴子里学到东西的吧友们顶一下,让我知道能帮到多少人,嘻嘻!


1楼2014-08-16 22:21回复
    开始之前,先要完成下面几点:
    1、手机已装触摸精灵
    安装方法,自行找度娘
    2、电脑装上触摸精灵PC端脚本编辑器
    吧主链接:http://tieba.baidu.com/p/3048764593
    3、了解一下触摸精灵的一些常用命令
    吧里链接:http://tieba.baidu.com/p/2977957178
    4、截图,可以用手机截取,也可以用PC版的编辑器里的触摸抓抓截取。
    手机运行触摸精灵,再切换到游戏画面。到需要截图的画面,再点触摸抓抓里的远程截图。注意,手机和电脑要在同一局域网内。手机IP地址查看方法如下图:
    附完整脚本文件,可实现的功能为:自动无尽,可过晚上三点,可过星期六排名,可过商人,无尽中可自动躲开导弹再回到中间,有需要的话可宝箱截图。大家可以用编辑器打开参考:
    雷霆战机无尽脚本:http://pan.baidu.com/s/1i3uuv2l
    注,脚本只适合Iphon4,4S。其它机器可以按下面的教程自行修改。


    2楼2014-08-16 22:22
    收起回复
      开始编写脚本:
      新建一个脚本,加入循环命令,如下图:

      用触摸抓抓取出需要用到的颜色和坐标,如下图里,取出领取奖励里的两个色点,按数字1和2存进颜色记录里。我以前是用下面这个命令:
      x, y =findColorInRegionFuzzy(颜色值, 精确度, 左上角X坐标, 左上角Y坐标, 右下角X坐标, 右下角Y坐标)
      if x ~= -1 and y ~= -1then
      end
      后来发现找单色很易出现误判。现在改为用双色来判断,减少误判,命令如下:
      if getColor(点1X坐标, 点1Y坐标) == 点1颜色值or getColor(点2X坐标, 点2Y坐标) == 点2颜色值 then
      end
      如下面命令可实现功能为,如果在游戏画面里找到领取奖励里的两个色点,则点击按键中间。
      if getColor(317,805)== 0xFEAE01 or getColor(300,805) == 0x75120D then
      --找连续登陆领取奖励按键,如果找到则:
      touchDown(0,317,805) --点击领取奖励按键
      mSleep(100)
      touchUp(0)
      mSleep(2000)
      end --找连续登陆领取奖励按键结束


      5楼2014-08-16 22:25
      收起回复


        之后,按上面的方法,把每一个画面的按键脚本都写出来。
        如:登陆领取奖励确认按键
        公告我知道了按键
        无尽模式按键
        每周排名继续按键
        每周排名我知道了按键
        出击按键
        死亡返回按键
        箱子领取按键
        商人下次吧按键
        商人下继续按键
        排名上升继续按键


        6楼2014-08-16 22:27
        收起回复
          下面是躲导弹的思路:导弹出现的时候会有红线,红线的颜色是相同的。那么,我们就可以当如果中间红线出现的位置不同高度的两个点出现颜色相同,就出现红线。然后,移动到两条红线之间就可以躲开导弹,那么我们就要实现,但中间出现红线时,飞机向旁边移动一点躲开导弹,而要移动多少,各机型不同,各位多试几次就可以。实现的脚本以下:
          if yj == 0 then --如果战机没有向左移动则
          ifgetColor( 319,817 ) == getColor( 319,957 ) then
          --中间有导弹红线出现
          touchDown(7, 320, 840)
          mSleep(20);
          X1=320 --战机烈火完后回到画面底下的X坐标
          Y1=840 --战机烈火完后回到画面底下的Y坐标
          for i=1, 6 do --循环6次。向左移动到躲开导弹位置。根据自己的机型调整循环次数。
          touchMove(7, X1, Y1)
          mSleep(100);
          X1=X1-10
          end
          touchUp(7)
          mSleep(100);
          yj=1 --记录战机向左移动了。
          jd=1 --记录战机在无尽战斗中
          end
          end


          7楼2014-08-16 22:28
          收起回复

            从上面的脚本看出,我只判断中间红线下面的两个点比较相近,会容易出现出红线的误判。我之前设的点是画面上下各一个的,但上面的点,经常会被武器升级和X2的字样挡住红线而判断不出红线出现造成中导弹。所以宁愿设低一点。就算是误判红线出现,战机也只是移动一下移回去而于,总比停在中间被导弹炸死好。


            8楼2014-08-16 22:29
            回复
              飞机移动躲开后,等导弹过了,红线没有了,红线位置就不会有同色的点,那么就可以用下面脚本实现:
              if yj == 1 then --如果战机向左移动了则
              if getColor( 319,817 ) ~= getColor( 319,957 )then
              --第一次找中间没红线
              mSleep(400);
              if getColor( 319,817 ) ~= getColor( 319,957) then
              --第二次找中间没红线
              mSleep(400);
              if getColor( 319,817 ) ~= getColor( 319,957 )then
              --第三次找中间没红线
              mSleep(400);
              touchDown(7,X1, Y1)
              mSleep(20);
              for i=1, 6 do --循环6次。回到中间位置。根据自己的机型调整循环次数。
              touchMove(7, X1,Y1)
              mSleep(100);
              X1=X1+10
              end --循环结束
              touchUp(7)
              mSleep(100);
              yj=0 --记录战机回到中间了。
              jd=1 --记录战机在无尽战斗中
              end --第三次找中间没红线结束
              end --第二次找中间没红线结束
              end --第一次找中间没红线结束
              end --if yj==1 条件结束


              9楼2014-08-16 22:30
              收起回复
                在战机烈火的过程中,或者会出现导弹线上有相同的点造成误判,那么我们就要尽量令脚本在烈火完成前不能进行导弹判断,那么我们就可以算一下,从读图画面开始,到烈火完成需要多少时间,在这个时间内,脚本停止。如下脚本和图:
                if getColor( 524,477 ) == 0xBBC6D3 or getColor( 455,437 ) == 0xF1D309then
                --找进无尽前的地图加载画面
                mSleep(15000) --烈火的时间,请根据自己实际更改
                yd=0 --战机是否向上移动过,0为未移动,1为已移动
                yj=0 --战机是否向左移动过,0为未移动,1为已移动
                end


                10楼2014-08-16 22:31
                收起回复
                  到这里,脚本的主要功能都已经做好。把各个功能的脚本都放进循环里。
                  从上面看到,功能很多,而每一个功能都要进行一次找色,如果都重复运行的话,会造成躲导弹的功能出现延迟。那么我们就要用条件来控制一下,尽量减小没用到的功能的重复运行。如在无尽进行中的时候,除了找导弹红线和死亡返来,其它的功能都用不到,那么我们就可以在无尽前和无尽后加条件控制。当然,我们在脚本一开始运行的时候,要先定值给控制条件。
                  yj=0 --战机是否向左移动过,0为未移动,1为已移动
                  jd=0 --战机是否在无尽战斗,0为未战斗,1为在战斗
                  while true do --while无限循环开始
                  if jd == 0 then --如果战机不在无尽战斗中则运行
                  --战机不在无尽中时需要运行的各按键功能
                  end --if jd == 0 条件结束
                  if yj == 0 then --如果战机没有向左移动则
                  --运行导弹出现判断
                  end --if yj==0 条件结束
                  if yj == 1 then --如果战机没有向左移动则
                  --运行导弹过去判断
                  end --if yj==1 条件结束
                  end --while无限循环结束
                  在我的脚本文件里,会看到keepScreen(true) --截图进内存和 keepScreen(false) --删除内存里的截图命令。可以适当减少无用截图的次数,详情可以进上面吧贴里的教程链接。


                  11楼2014-08-16 22:32
                  收起回复



                    12楼2014-08-16 22:35
                    回复
                      详细可下载完整脚本下来参考,里面都有说明。
                      http://pan.baidu.com/s/1i3uuv2l
                      祝大家早日学会,写出适合自己的脚本。


                      13楼2014-08-16 22:39
                      收起回复
                        挺不错的,加精置顶了


                        IP属地:湖北14楼2014-08-16 22:45
                        收起回复
                          好复杂呀,电脑小白玩不转


                          16楼2014-08-18 03:05
                          收起回复
                            谢谢楼主


                            17楼2014-08-18 13:44
                            回复