欢迎光临散文网 会员登陆 & 注册

[按键精灵]火影世界自动周环任务,以及后台思想

2021-08-13 15:12 作者:秋天的落葉_  | 我要投稿


游戏网址;naruto.newxixi.com

//游戏网址naruto.newxixi.com

//代码如下

//屏幕分辨率1920*1080,星愿浏览器窗口最大化,缩放80%,显示书签栏

Dim clr, clr1a,clr1b,clr2a,clr2b,clr3a,clr3b,clr4a,clr4b,clr5a,clr5b,clrm,clrn,clrN1,clrN2,clrN3

Dim hwnd

Hwnd = Plugin.Window.Find(0,"火影世界官網-火影忍者遊戲官網-橫版網頁遊戲扛鼎之作-無需下載終身免費-naruto.xixigames.com - Twinkstar")//(类名,"标题")

TracePrint hwnd


Call 找富岳

Delay 500

Do While true//判断接任务

    clr = GetPixelColor(897, 642)'

    If clr = "8F5111"Then //'blue

        //当循环条件成立时---执行以下程序---离开循环体 

        Call Plugin.Bkgnd.LeftClick(Hwnd, 897, 636)//'接任务

        Delay 1000

        Rem 情况判断

        clrm=GetPixelColor(1024,519 )'

        clrn=GetPixelColor(1023,527)'

        If clrm = "008700" and clrn = "005900" Then //难度为1,无法刷新,跳过情况判断

            Goto 难度为1不再刷新

        Else//难度不为1,则判断情况

            //**********情况1*****c4自爆者 跳过***************************//

            clr1a = GetPixelColor(852,535)'

            clr1b = GetPixelColor(853, 535) '

            If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,则降低任务难度.

                Call 降低难度并确认使用乾坤密卷

                Delay 1100

            End If

            //**********情况2***犬冢牙 跳过****************************//

            clr2a = GetPixelColor(830,551)'

            clr2b = GetPixelColor(826, 561)'

            If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,则降低任务难度.

                Call 降低难度并确认使用乾坤密卷

                Delay 1100

            End If

            //**********情况3 御手洗红豆 跳过***********************//

            clr3a = GetPixelColor(826,552)'

            clr3b = GetPixelColor(833, 560)'

            If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗红豆,则降低任务难度.

                Call 降低难度并确认使用乾坤密卷

                Delay 1100

            End If

            //************情况4 日向雏田 跳过**********************//

            clr4a = GetPixelColor(827,550)'

            clr4b = GetPixelColor(834,561)'

            If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雏田,则降低任务难度.

                Call 降低难度并确认使用乾坤密卷

                Delay 1100

            End If

            //************情况5 森乃伊比喜 跳过**********************//

            clr5a = GetPixelColor(826,551)'

            clr5b = GetPixelColor(833,559)'

            If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,则降低任务难度.

                Call 降低难度并确认使用乾坤密卷

                Delay 1100

            End If

        End If

        clr1a = GetPixelColor(852,535)'

        clr1b = GetPixelColor(853, 535)'

        clr2a = GetPixelColor(830,551)'

        clr2b = GetPixelColor(826, 561)'

        clr3a = GetPixelColor(826,552)'

        clr3b = GetPixelColor(833, 560)'

        clr4a = GetPixelColor(827,550)'

        clr4b = GetPixelColor(834, 561)'

        clr5a = GetPixelColor(826,551)'

        clr5b = GetPixelColor(833,559)'

        If clr1a = "008300" and clr1b = "005A00" Then 

            Goto 情况判断

        ElseIf clr2a = "00C400" and clr2b = "00ED00" Then

            Goto 情况判断

        ElseIf clr3a = "00A300" and clr3b = "00CF00" Then

            Goto 情况判断

        ElseIf clr4a = "008400" and clr4b = "00E300" Then

            Goto 情况判断

        ElseIf clr5a = "008400" and clr5b = "00C400" Then

            Goto 情况判断

        End If

        //*********************************************//

        Delay 5000

        Rem 难度为1不再刷新

        Call Plugin.Bkgnd.LeftClick(Hwnd, 959, 753)//开始任务,之前加一条如果是....那么刷新任务       

        Exit do   

    End If

    Delay 2000

Loop


Do While true//判断NPC对话

    clrN1 = GetPixelColor(883, 630)

    clrN2 = GetPixelColor(880, 621)

    clrN3 = GetPixelColor(880, 611)

    If clrN1 = "008C00" Then 

        Call Plugin.Bkgnd.LeftClick(Hwnd, 883, 625)//1.1完成对话

        Delay 100

        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    

        Delay 2000

        Exit do

    ElseIf clrN2 = "008900" Then

        Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 615)//1.2完成对话

        Delay 100

        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    

        Delay 2000

        Exit do

    ElseIf clrN3 = "008700" Then

        Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 606)//1.3完成对话

        Delay 100

        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    

        Delay 2000

        Exit do

    End If  

Loop

Call 传送木叶

Delay 3500

//*************子程序↓************************//

Sub 找富岳

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1791, 287)//地图

    Delay 200

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1183, 683)//富岳

    Delay 100

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1228, 799)//寻至此点

    Delay 100

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1791, 287)//地图关闭

End Sub

Sub 传送木叶

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1790, 288)//地图

    Delay 500

    Call Plugin.Bkgnd.LeftClick(Hwnd, 688, 386)//世界地图

    Delay 1500

    Call Plugin.Bkgnd.LeftClick(Hwnd, 906, 603)//木叶

    Delay 300

    Call Plugin.Bkgnd.LeftClick(Hwnd, 859, 669)//确定

    Delay 1200

End Sub

Sub 降低难度并确认使用乾坤密卷

    Call Plugin.Bkgnd.LeftClick(Hwnd, 1073, 546)'降低难度

    Delay 500

    Call Plugin.Bkgnd.LeftClick(Hwnd, 892, 667)'确定,使用乾坤密卷

    Delay 500

End Sub

//*************子程序↑************************//

RestartScript

//********代码部分结束,以下为解释说明部分****************************//

代码中的命令主要有两部分,点取色和鼠标在某坐标位置单击.

我在下文中会说明为什么要取点,以及取完点怎么用.

先从最开始取点代码说起,我按照从前往后排一下序.

  1. 判断接取任务

  2. 判断任务难度是否为1,不是进行情况判断;则跳过情况判断;

3.1 情况一:C4自爆者,跳过(即刷新任务)

3.2 情况二:犬冢牙,跳过

3.3情况三:御手洗红豆 跳过

3.4情况四:日向雏田 跳过

3.5情况五:森乃伊比喜 跳过

4.仍存在以上情况,回到情况一,重复判断:否则开始任务

5.循环语句内IF判断任务是否结束(是否找到任务回复人NPC),若是,退出循环,传送回木叶村:若不是继续循环判断

代码中像素点所取位置如下图:

1.判断接取任务


clr = GetPixelColor(897, 642)
 If clr = "8F5111"Then //'blue

2.判断任务难度是否为1,不是进行情况判断;则跳过情况判断;

clrm=GetPixelColor(1024,519 )'
        clrn=GetPixelColor(1023,527)'
        If clrm = "008700" and clrn = "005900" Then //难度为1,无法刷新,跳过情况判断
            Goto 难度为1不再刷新
clrm=GetPixelColor(1024,519 )'
        clrn=GetPixelColor(1023,527)'
        If clrm = "008700" and clrn = "005900" Then //难度为1,无法刷新,跳过情况判断
            Goto 难度为1不再刷新

3.1情况一:C4自爆者,跳过(即刷新任务)

            clr1a = GetPixelColor(852,535)'
            clr1b = GetPixelColor(853, 535) '
            If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If
            clr1a = GetPixelColor(852,535)'
            clr1b = GetPixelColor(853, 535) '
            If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If

3.2情况二:犬冢牙,跳过

clr2a = GetPixelColor(830,551)'
            clr2b = GetPixelColor(826, 561)'
            If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If
clr2a = GetPixelColor(830,551)'
            clr2b = GetPixelColor(826, 561)'
            If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If

3.3情况3 御手洗红豆 跳过

clr3a = GetPixelColor(826,552)'
            clr3b = GetPixelColor(833, 560)'
            If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗红豆,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If
clr3a = GetPixelColor(826,552)'
            clr3b = GetPixelColor(833, 560)'
            If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗红豆,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If

3.4情况4 日向雏田 跳过

clr4a = GetPixelColor(827,550)'
            clr4b = GetPixelColor(834,561)'
            If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雏田,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If
clr4a = GetPixelColor(827,550)'
            clr4b = GetPixelColor(834,561)'
            If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雏田,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If

3.5情况5 森乃伊比喜 跳过

clr5a = GetPixelColor(826,551)'
            clr5b = GetPixelColor(833,559)'
            If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If
clr5a = GetPixelColor(826,551)'
            clr5b = GetPixelColor(833,559)'
            If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,则降低任务难度.
                Call 降低难度并确认使用乾坤密卷
                Delay 1100
            End If

4.仍存在以上情况,回到情况一,重复判断:否则开始任务

clr1a = GetPixelColor(852,535)'

        clr1b = GetPixelColor(853, 535)'

        clr2a = GetPixelColor(830,551)'

        clr2b = GetPixelColor(826, 561)'

        clr3a = GetPixelColor(826,552)'

        clr3b = GetPixelColor(833, 560)'

        clr4a = GetPixelColor(827,550)'

        clr4b = GetPixelColor(834, 561)'

        clr5a = GetPixelColor(826,551)'

        clr5b = GetPixelColor(833,559)'

        If clr1a = "008300" and clr1b = "005A00" Then 

            Goto 情况判断

        ElseIf clr2a = "00C400" and clr2b = "00ED00" Then

            Goto 情况判断

        ElseIf clr3a = "00A300" and clr3b = "00CF00" Then

            Goto 情况判断

        ElseIf clr4a = "008400" and clr4b = "00E300" Then

            Goto 情况判断

        ElseIf clr5a = "008400" and clr5b = "00C400" Then

            Goto 情况判断

        End If

5.循环语句内IF判断任务是否结束(是否找到任务回复人NPC),若是,退出循环,传送回木叶村:若不是继续循环判断

5.1.1回复任务时只有一行

clrN1 = GetPixelColor(883, 630)

    clrN2 = GetPixelColor(880, 621)

    clrN3 = GetPixelColor(880, 611)

If clrN1 = "008C00" Then
        Call Plugin.Bkgnd.LeftClick(Hwnd, 883, 625)//1.1完成对话
        Delay 100
        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    
        Delay 2000
        Exit do

5.1.2回复任务时有两行

 ElseIf clrN2 = "008900" Then
        Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 615)//1.2完成对话
        Delay 100
        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    
        Delay 2000
        Exit do

5.1.3回复任务时有三行

ElseIf clrN3 = "008700" Then
        Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 606)//1.3完成对话
        Delay 100
        Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//离开npc    
        Delay 2000
        Exit do
    End If

任务结束后返回木叶.没有详细解释的部分不难,结合代码部分的注释自己可以理解.

//###################修改记录########################################//

2021.10.05

这种脚本属于图色脚本(文中代码仅涉及到找色,没有找图),更高级则是内存脚本。不过涉及到内存风险也更大。

兼容问题:

想要让脚本换一台电脑仍可以运行,就要考虑到兼容问题(比如窗口大小、页面缩放)。一般来说开发者开发时用的哪款浏览器,就让用户用那款浏览器,这样能省去很多麻烦。对于图色脚本来说最大的问题就是这个色的问题。由于每台电脑显卡不同,对于同一点的颜色有一定偏差,如果必须要精准找色,那么只能让用户截好图(当然是*.bmp格式,手机端是*.png格式)打包发给制作者去做;如果允许颜色有偏差就可以设置偏色(同理,如果这个点的颜色是动态变化的也可以设置偏色)。与偏色有一个类似的东西叫模糊度,他俩的区别可以理解为前者是对颜色设置容差,后者是图片整体的模糊程度。

经过我测试,很多浏览器(如chrome、edge、星愿)都绑定窗口后一片黑,可能是因为有窗口保护,也就没法做后台图色脚本,而有一款是可以的——搜狗浏览器。

文章中代码是前台找色 后台按键,总体还是前台脚本。而我是对全局截图找的色,所以换一台电脑估计脚本就不能用了。(这里本该用窗口截图,但当时还没找到可以绑定窗口的浏览器,(用的星愿浏览器)一截图就全黑,没法操作,所以就用了全局截图)。

搜狗浏览器既可以绑定窗口,又支持flash(主要用来玩4399以及其他页游)。但最新版的我试了下flash有些问题,所以我用了8.几版本的,是从搜狗论坛下载的,论坛地址我会放在评论区。

后台问题:

一般写后台图色脚本我用大漠插件,所以说下使用大漠插件写的大致流程:(以下都是写在代码中的)

注册大漠插件——绑定窗口——使用大漠插件内的键鼠、图色命令(绑定窗口大漠的命令即为后台命令)——脚本停止前加上解除绑定窗口命令用来释放CPU。

注意:不要频繁的绑定窗口,最起码也要等到上一个绑定结束再绑定下一个。

用BindwindowEx命令,display用dx2模式,mouse和keyboard用dx模式,public用dx.public.active.message模式,最后的参数mode用4。

做脚本以及做完后运行时都要记住:不要把窗口最小化,否则识别不到,一定要把窗口露出一部分

//################################################################//

如果你也有想法,欢迎在评论区留言.

如果觉得写的还不错,欢迎点赞,投币,收藏,谢谢!




[按键精灵]火影世界自动周环任务,以及后台思想的评论 (共 条)

分享到微博请遵守国家法律