末日血战吧 关注:70,700贴子:3,260,724
  • 11回复贴,共1

小号深渊魔窟脚本解析

只看楼主收藏回复

'========大漠插件注册========
Plugin.RegDll.Reg "C:\test_game\dm.dll"
Set dm = createobject("dm.dmsoft")
dm_ret = dm.SetPath("F:\末日血战图库")
//设置图片集
//文件夹下所有前缀为: 深渊- 的图片定义为深渊事件,下同
深渊事件 = dm.matchpicname("深渊-*.bmp")
深渊药水 = dm.matchpicname("深渊药水-*.bmp")
深渊关卡 = dm.matchpicname("深渊关卡-*.bmp")
//用于定义全程 战斗失败次数,通常全程战斗失败20次,即出现互相打不死,可视为本次挑战失败
Global 战斗失败
//用于定义全程 关卡胜利次数,通常关卡胜利3次,可视为通关
Global 关卡胜利
//执行推图程序
Call 通用任务()


IP属地:江苏1楼2024-05-27 19:52回复
    //用于各小号切换时从新定义全局变量为零
    Sub 通用任务()
    战斗失败 = 0
    关卡胜利 = 0
    Call 深渊推图()
    End Sub


    IP属地:江苏2楼2024-05-27 19:53
    回复
      Sub 深渊推图()
      Call 进入深渊()//从主界面进入选择界面
      Call 深渊设置()//从遗迹深渊选择界面进入深渊
      For 100
      Call 进入推图()//从遗迹深渊选择界面进入深渊
      Call 开始推图()
      //以下2个判断为:挑战失败和通关后界面
      //深渊挑战失败:英雄全部阵亡后图像识别
      dm_ret = dm.FindMultiColor(660, 170, 680, 360,"e8da8f","0|120|261c1c,0|170|5e656e",0.9,1,intX,intY)
      If intX > 0 and intY > 0 Then
      MoveTo 720, 660
      LeftClick 1
      Delay 1000
      Exit For
      Else
      End If
      //多次战斗失败:即定义的全局变量(战斗失败)次数>=20后直接返回的遗迹深渊选择界面
      //定义的全局变量(关卡胜利)次数=3后直接返回的遗迹深渊选择界面
      dm_ret = dm.FindMultiColor(720, 560, 950, 650,"ffffff","-70|20|c32804,110|20|b7290c",0.9,1,intX,intY)
      If intX > 0 and intY > 0 Then
      Exit For
      Else
      End If
      Call 退出推图()//从推图界面回到遗迹深渊选择界面
      Next
      Call 退出深渊()//从选择界面回到主界面
      End Sub


      IP属地:江苏3楼2024-05-27 19:53
      回复
        Sub 开始推图()
        //从新寻找地图事件
        Rem 开始推图
        //推图状况
        Do
        //推图失败:即定义的全局变量(战斗失败)次数>=20后直接返回的遗迹深渊选择界面
        //定义的全局变量(关卡胜利)次数=3后直接返回的遗迹深渊选择界面
        dm_ret = dm.FindMultiColor(720, 560, 950, 650,"ffffff","-70|20|c32804,110|20|b7290c",0.9,1,intX,intY)
        If intX > 0 and intY > 0 Then
        Goto 结束推图
        End If
        //继续推图
        dm_ret = dm.FindMultiColor(930, 630, 1160, 720,"00527e","-150|20|d6bfad,-100|30|bca795",0.9,1,intX,intY)
        If intX > 0 and intY > 0 Then
        Exit Do
        Else
        End If
        Loop
        //选择快速战斗处打勾判断
        Call 快速战斗()
        //寻找深渊事件图片集并点击
        For 10
        dm_ret = dm.FindPic(150, 110, 1270, 520, 深渊事件, "000000", 0.8, 0, intX, intY)
        If intX >= 0 and intY >= 0 Then
        Delay 50
        MoveTo intX, intY
        Delay 50
        LeftClick 1
        Delay 1000
        Call 事件()
        Goto 开始推图
        Else
        End If
        Next
        //寻找深渊药水图片集并点击
        For 10
        dm_ret = dm.FindPic(150, 110, 1270, 520, 深渊药水, "000000", 0.8, 0, intX, intY)
        If intX >= 0 and intY >= 0 Then
        Delay 50
        MoveTo intX, intY
        Delay 50
        LeftClick 1
        Delay 1000
        Goto 开始推图
        Else
        End If
        Next
        //寻找深渊关卡图片集并点击
        For 10
        dm_ret = dm.FindPic(150, 110, 1270, 520, 深渊关卡, "000000", 0.7, 0, intX, intY)
        If intX >= 0 and intY >= 0 Then
        Delay 50
        MoveTo intX, intY
        Delay 50
        LeftClick 1
        Delay 1000
        Call 关卡战斗()
        Goto 开始推图
        Else
        End If
        Next
        //结束推图
        Rem 结束推图
        End Sub


        IP属地:江苏4楼2024-05-27 19:54
        回复
          Sub 事件()
          //定义找到深渊事件图片集后点击次数为环境变量
          Dim i
          i = 0
          For 10
          //深渊低级战斗
          dm_ret = dm.FindMultiColor(890, 150, 940, 190,"f7d4a9","-10|-10|f6cf9d,10|-10|f9d7a5",0.9,1,intX,intY)
          If intX > 0 and intY > 0 Then
          Call 低级战斗()
          Exit For
          Else
          End If
          Delay 50
          //深渊精英战斗
          dm_ret = dm.FindMultiColor(970, 150, 1010, 190,"f7d4a9","-10|-10|f8d09f,10|-10|f9d7a5",0.9,1,intX,intY)
          If intX > 0 and intY > 0 Then
          Call 精英战斗()
          Exit For
          Else
          End If
          Delay 50
          //深渊宝箱
          FindColorEx 590, 550, 590, 550, "347292", 0, 0.9, intX, intY
          If intX > 0 And intY > 0 Then
          Call 深渊宝箱()
          Exit For
          Else
          End If
          Delay 50
          //深渊商店
          FindColorEx 1230, 60, 1230,60, "1426A6", 0, 0.9, intX, intY
          If intX > 0 And intY > 0 Then
          Call 深渊商店()
          Exit For
          Else
          End If
          Delay 50
          //深渊问号
          FindColorEx 1230, 60, 1230,60, "1426A6", 0, 0.9, intX, intY
          If intX > 0 And intY > 0 Then
          Call 随机事件()
          Exit For
          Else
          End If
          Delay 50
          Next
          //循环5次搜索后没有找到以上目标,可视为网络卡顿,首次点击无效,并再次点击
          i = i + 1
          If i >= 5 Then
          LeftClick 1
          Delay 1000
          End If
          //搜索10次没找到以上目标,即从新开始推图
          End Sub


          IP属地:江苏5楼2024-05-27 19:54
          回复
            Sub 精英战斗()
            //以下变量用于判断战斗失败是否是互相打不死
            //如果在前6个英雄出现互相打不死的情况,则选择后面一个英雄
            //a1定义的颜色为,第一个英雄选中后边框的颜色
            Dim a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6
            a1 = GetPixelColor(155, 555)
            a2 = GetPixelColor(275, 555)
            a3 = GetPixelColor(395, 555)
            a4 = GetPixelColor(525, 555)
            a5 = GetPixelColor(655, 555)
            a6 = GetPixelColor(765, 555)
            //2-3关精英怪选择助战
            Do
            FindColorEx 217,77, 217,77, "BDE5F3", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            MoveTo 1030, 650
            Delay 50
            LeftClick 1
            Delay 500
            Exit Do
            Else
            Exit Do
            End If
            Delay 50
            Loop
            //战斗积分选择
            Do
            FindColorEx 400, 420, 400, 420, "00B98E", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            Exit Do
            Else
            MoveTo 400, 420
            Delay 50
            LeftClick 1
            Delay 500
            End If
            Delay 50
            Loop
            //战斗过程各事件判断
            Do
            //开始战斗
            FindColorEx 400, 420, 400, 420, "00B98E", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            MoveTo 700, 500
            Delay 50
            LeftClick 1
            Delay 500
            Else
            End If
            Delay 50
            //无视减状态提示
            FindColorEx 942, 207, 942, 207, " A8D4F7", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            MoveTo 720, 530
            Delay 50
            LeftClick 1
            Delay 500
            Else
            End If
            Delay 50
            //战斗胜利
            FindColorEx 572, 472, 572, 472, "149ABD", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            Call 战斗胜利()
            Goto 结束战斗
            Exit Do
            End If
            Delay 50
            //战斗失败
            FindColorEx 536, 536, 536, 536, "443F39", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            Exit Do
            End If
            Delay 50
            //深渊挑战失败:英雄全部阵亡后图像识别
            dm_ret = dm.FindMultiColor(660, 170, 680, 360,"e8da8f","0|120|261c1c,0|170|5e656e",0.9,1,intX,intY)
            If intX > 0 and intY > 0 Then
            Delay 50
            Goto 结束战斗
            End If
            Delay 50
            Loop
            //战斗失败
            FindColorEx 536, 536, 536, 536, "443F39", 0, 0.9, intX, intY
            If intX > 0 And intY > 0 Then
            Delay 50
            战斗失败 = 战斗失败 + 1
            Delay 50
            MoveTo 680, 630
            Delay 50
            LeftClick 1
            Delay 1000
            End If
            Delay 50
            //b1为战斗后的边框颜色
            b1 = GetPixelColor(155, 555)
            b2 = GetPixelColor(275, 555)
            b3 = GetPixelColor(395, 555)
            b4 = GetPixelColor(525, 555)
            b5 = GetPixelColor(655, 555)
            b6 = GetPixelColor(765, 555)
            //如果战斗前a1颜色等于战斗后b1颜色,同时此坐标颜色为"44A0CA"即视为互相打不死,选择后面一个英雄
            //本来应该用IF a1=b1 and a1="44A0CA" then,
            //但是边框每次进入游戏颜色会略微不同, 所以要用到相似度来识别
            If a1 = b1 Then
            IfColor 155, 555, "44A0CA", 2 Then
            MoveTo 280, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            If a2 = b2 Then
            IfColor 275, 555, "44A0CA", 2 Then
            MoveTo 400, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            If a3 = b3 Then
            IfColor 395, 555, "44A0CA", 2 Then
            MoveTo 530, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            If a4 = b4 Then
            IfColor 525, 555, "44A0CA", 2 Then
            MoveTo 660, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            If a5 = b5 Then
            IfColor 655, 555, "44A0CA", 2 Then
            MoveTo 780, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            If a6 = b6 Then
            IfColor 765, 555, "44A0CA", 2 Then
            MoveTo 900, 620
            Delay 50
            LeftClick 1
            Delay 500
            Goto 失败选择
            End If
            End If
            Rem 失败选择
            Rem 结束战斗
            //深渊挑战失败:英雄全部阵亡后图像识别
            dm_ret = dm.FindMultiColor(660, 170, 680, 360,"e8da8f","0|120|261c1c,0|170|5e656e",0.9,1,intX,intY)
            If intX > 0 and intY > 0 Then
            Call 挑战失败()//挑战失败后点击确认并回到遗迹深渊选择界面
            End If
            //深渊战斗失败
            If 战斗失败 >= 25 Then
            Call 退出推图()//战斗失败后点击确认并回到遗迹深渊选择界面
            End If
            End Sub
            Sub 战斗胜利()


            IP属地:江苏6楼2024-05-27 19:55
            回复
              Sub 战斗胜利()
              Do
              //随机BUFF选择
              FindColorEx 572, 472, 572, 472, "149ABD", 0, 0.9, intX, intY
              If intX > 0 And intY > 0 Then
              Delay 50
              MoveTo 680, 330
              Delay 50
              LeftClick 1
              Delay 1000
              Else
              End If
              Delay 50
              //不需要替换英雄
              FindColorEx 1022,177, 1022,177, "AAD5F7", 0, 0.9, intX, intY
              If intX > 0 And intY > 0 Then
              Delay 50
              MoveTo 590, 580
              Delay 50
              LeftClick 1
              Delay 1000
              Else
              End If
              Delay 50
              //回到推图界面
              FindColorEx 1055, 65, 1055, 65, "FFFFFF", 0, 0.9, intX, intY
              If intX > 0 And intY > 0 Then
              Delay 50
              Exit Do
              End If
              Delay 50
              Loop
              //依靠边框颜色来判断目前哪个英雄在战斗
              IfColor 155, 555, "44A0CA", 2 Then
              Call 血量检测一()//检查血槽,低于某个值喝药水
              Goto 胜利选择
              End If
              IfColor 275, 555, "44A0CA", 2 Then
              Call 血量检测二()
              Goto 胜利选择
              End If
              IfColor 395, 555, "44A0CA", 2 Then
              Call 血量检测三()
              Goto 胜利选择
              End If
              IfColor 525, 555, "44A0CA", 2 Then
              Call 血量检测四()
              Goto 胜利选择
              End If
              IfColor 655, 555, "44A0CA", 2 Then
              Call 血量检测五()
              Goto 胜利选择
              End If
              IfColor 765, 555, "44A0CA", 2 Then
              Call 血量检测六()
              Goto 胜利选择
              End If
              IfColor 895, 555, "44A0CA", 2 Then
              Call 血量检测七()
              Goto 胜利选择
              End If
              Rem 胜利选择
              //战斗胜利后,因为上次战斗会应为出现互相打不死往后面选英雄的情况,所以需要选回最靠前的战斗英雄
              Call 胜利选择()
              End Sub


              IP属地:江苏7楼2024-05-27 19:56
              回复
                Sub 战斗胜利()
                Do
                //随机BUFF选择
                FindColorEx 572, 472, 572, 472, "149ABD", 0, 0.9, intX, intY
                If intX > 0 And intY > 0 Then
                Delay 50
                MoveTo 680, 330
                Delay 50
                LeftClick 1
                Delay 1000
                Else
                End If
                Delay 50
                //不需要替换英雄
                FindColorEx 1022,177, 1022,177, "AAD5F7", 0, 0.9, intX, intY
                If intX > 0 And intY > 0 Then
                Delay 50
                MoveTo 590, 580
                Delay 50
                LeftClick 1
                Delay 1000
                Else
                End If
                Delay 50
                //回到推图界面
                FindColorEx 1055, 65, 1055, 65, "FFFFFF", 0, 0.9, intX, intY
                If intX > 0 And intY > 0 Then
                Delay 50
                Exit Do
                End If
                Delay 50
                Loop
                //依靠边框颜色来判断目前哪个英雄在战斗
                IfColor 155, 555, "44A0CA", 2 Then
                Call 血量检测一()//检查血槽,低于某个值喝药水
                Goto 胜利选择
                End If
                IfColor 275, 555, "44A0CA", 2 Then
                Call 血量检测二()
                Goto 胜利选择
                End If
                IfColor 395, 555, "44A0CA", 2 Then
                Call 血量检测三()
                Goto 胜利选择
                End If
                IfColor 525, 555, "44A0CA", 2 Then
                Call 血量检测四()
                Goto 胜利选择
                End If
                IfColor 655, 555, "44A0CA", 2 Then
                Call 血量检测五()
                Goto 胜利选择
                End If
                IfColor 765, 555, "44A0CA", 2 Then
                Call 血量检测六()
                Goto 胜利选择
                End If
                IfColor 895, 555, "44A0CA", 2 Then
                Call 血量检测七()
                Goto 胜利选择
                End If
                Rem 胜利选择
                //战斗胜利后,因为上次战斗会应为出现互相打不死往后面选英雄的情况,所以需要选回最靠前的战斗英雄
                Call 胜利选择()
                End Sub


                IP属地:江苏8楼2024-05-27 19:57
                回复
                  挽尊,看不懂路过,也没有配套图片文件。


                  IP属地:江苏来自Android客户端9楼2024-05-27 22:58
                  收起回复


                    IP属地:山东来自iPhone客户端10楼2024-05-28 00:51
                    回复
                      厉害,学习!


                      IP属地:江苏11楼2024-05-28 07:29
                      回复