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


//游戏网址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,若不是进行情况判断;若是则跳过情况判断;
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,若不是进行情况判断;若是则跳过情况判断;

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

clrn=GetPixelColor(1023,527)'
If clrm = "008700" and clrn = "005900" Then //难度为1,无法刷新,跳过情况判断
Goto 难度为1不再刷新
3.1情况一:C4自爆者,跳过(即刷新任务)

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

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

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

clr2b = GetPixelColor(826, 561)'
If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,则降低任务难度.
Call 降低难度并确认使用乾坤密卷
Delay 1100
End If
3.3情况3 御手洗红豆 跳过

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

clr3b = GetPixelColor(833, 560)'
If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗红豆,则降低任务难度.
Call 降低难度并确认使用乾坤密卷
Delay 1100
End If
3.4情况4 日向雏田 跳过

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

clr4b = GetPixelColor(834,561)'
If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雏田,则降低任务难度.
Call 降低难度并确认使用乾坤密卷
Delay 1100
End If
3.5情况5 森乃伊比喜 跳过

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

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)

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回复任务时有两行

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回复任务时有三行

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。
做脚本以及做完后运行时都要记住:不要把窗口最小化,否则识别不到,一定要把窗口露出一部分
//################################################################//
如果你也有想法,欢迎在评论区留言.
如果觉得写的还不错,欢迎点赞,投币,收藏,谢谢!