上面的内容很多,都是很核心的解释,这个时候我们已经进入了游戏,在罗格营地里,接下来我门需要走到小站上,然后点击石旷荒野,然后用VIP护身符开启一个红门,打怪捡东西,+1重建房间如此循环。
//出城
MoveTo 870, 480
Delay 300
LeftClick 1
Delay 600
FindColor 816,31,1452,298,"F4F4CC",intX,intY
If intX > 0 And intY > 0 Then
MoveTo intx, inty
Delay 500
leftClick 1
Delay 2500
MoveTo 523, 384
Delay 900
LeftClick 1
Delay 700
Else
Delay 500
MoveTo 1352, 690
Delay 500
LeftClick 1
Delay 1500
MoveTo 1050, 440
Delay 500
LeftClick 1
Delay 900
FindColor 243,40,1086,377,"F4F4CC",intX,intY
If intX > 0 And intY > 0 Then
MoveTo intx, inty
Delay 500
leftClick 1
Delay 1700
MoveTo 523, 384
Delay 700
LeftClick 1
Delay 500
End If
End If
解释:以上是后期经常遇到的一个随机地图的处理方式,A1小站位置每次进去都不一样,我们需要找规律,使用1600*900分辨率,如果A1小站出现在屏幕右上角,我就直接点击小站走过去,如果不在这个位置,我就往下走,然后再找小站。
可以看到脚本里,我没有写找找小站的截图,而是用找颜色的命令来判断,这个颜色是小站上燃烧的两个火苗的颜色,非常特殊,我在固定区域找这个颜色,如果有,则执行点击这个火苗,否则执行B方案,B方案内再嵌套一个找另一个位置是否有火苗的IF,这和excel里多层嵌套IF函数一模一样,建议最多嵌套两层,否则脑子就糊涂了。
之后执行容错判断脚本
Delay 500
FindPic 1468,27,1606,89,"Attachment:\罗格营地.bmp",0.9,intX,intY
If intX > 0 And intY > 0 Then
Delay 500
Goto chongjian
End If
Delay 200
按道理,我已经出城了,为了保险,我找屏幕右上角,是否有“罗格营地”字的透明图,如果找到了,就证明我出城失败,执行goto 重建命令,我会在脚本最后+1前,写一个rem chongjian,goto chongjian 就是不管现在执行什么,我直接跳到rem标记的这个位置。这样我就保证即便没出去城,我也+1能重来一遍。
//用技能,加状态白骨盾冰盾
Delay 200
Call 上状态
Delay 200
KeyPress "F3", 1
Delay 200
//上状态
Sub 上状态
Delay 200
KeyPress "F4", 1
Delay 200
RightClick 1
Delay 200
KeyPress "F5", 1
Delay 200
RightClick 1
Delay 200
KeyPress "F6", 1
Delay 200
RightClick 1
Delay 200
End Sub
KeyPress "S", 1
Delay 800
MoveTo 1260, 817
Delay 500
LeftClick 1
Delay 800
RightClick 1
Delay 1100
MoveTo 791, 350
Delay 200
LeftClick 1
Delay 1000
MoveTo 1034, 379 //鼠标移动到门上
Delay 500
以上脚本是加状态,我这里用到一个函数是子程序的命令,Sub 上状态 --end sub,我定义一段语句为 上状态,后期我只要想上状态,我就可以使用一个 Call 上状态 的命令就行,当然你也可以不用子程序,直接复制那一大段再执行一遍也行,但是子程序的优点在于,方便修改,比如你换角色上快捷键需要把F6改为F7,你只要改子程序就行。
FindPic 0,0,1593,889, "Attachment:\地牢.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
Delay 500
MoveTo 1364, 215
Delay 300
KeyPress "F3", 1
Delay 200
RightClick 1
Delay 480
RightClick 1
Delay 480
RightClick 1
Delay 480
MoveTo 711, 238
Delay 200
RightClick 1
Delay 460
Delay 1000
Else
GOTO bfangan
End If
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 2
Delay 500
KeyPress "F3", 1
Delay 500
RightClick 1
Delay 500
MoveTo 804, 439
Delay 500
LeftClick 1
Delay 500
End If
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 4
Delay 500
LeftClick 1
Delay 500
End If
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 4
Delay 500
LeftClick 1
Delay 500
End If
Delay 1000
Goto CHONGJIAN
Rem bfangan
Delay 1000
KeyPress "F3", 1
Delay 200
MoveTo 334, 128
Delay 300
RightClick 1
Delay 450
MoveTo 262, 193
Delay 400
RightClick 1
Delay 450
MoveTo 265, 178
Delay 450
RightClick 1
Delay 2300
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 2
Delay 500
KeyPress "F3", 1
Delay 500
RightClick 1
Delay 500
MoveTo 804, 439
Delay 500
LeftClick 1
Delay 500
End If
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 4
Delay 500
LeftClick 1
Delay 500
End If
Delay 700
FindPic 0,0,1593,889, "Attachment:\2140.bmp", 1.0, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx - 4, inty + 4
Delay 500
LeftClick 1
Delay 500
End If
Delay 700
以上语句是,进入女伯爵红门后,这个图有两种情况随机,需要判断一下,把鼠标移动到图1地牢们上,鼠标上方会显示出地牢5曾的字眼,我门找地牢这两个字,如果找到,就证明我在图1,否则我就go to 到B方案。
我们tp到女伯爵脚下,延时3秒后开始捡东西,捡东西我做的透明图,显示了物品代码,比如A1要是代码为2140我就找这个,然后鼠标移动到物品上点右键TP,永远都会tp到物品正上方,物品的位置永远固定是屏幕中间,然后我点击左键捡一下,然后鼠标挪到屏幕左上角,然后再地上找一次,万一爆了3把钥匙。
KeyPress "B", 1
Delay 1000
//打开箱子
MoveTo 1095, 402
Delay 200
MoveTo 1095, 402
Delay 200
RightClick 1
Delay 500
//检查箱子是否被打开,否则out
FindPic 584,450,711,569, "Attachment:\转换符号.bmp", 0.9, intX, intY
If intX < 0 And intY < 0 Then
GOTO chongjian
End If
Delay 300
//如果道具栏里有3个A1钥匙则开始合成操作
//道具栏里精华变量
n = Lib.图像.查找屏幕图片数量(813, 384, 1120, 629, "Attachment:\A1钥匙.bmp", 0.9)
Delay 100
If n >= 3 Then
Do
//箱子里精华数量变
mmm = Lib.图像.查找屏幕图片数量(482, 238, 807,505, "Attachment:\A1钥匙.bmp", 0.9)
Delay 100
If mmm = 3 Then
Exit do
End If
FindPic 808,377,1114,629, "Attachment:\A1钥匙.bmp", 0.9, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx + 5, inty + 5
Delay 200
LeftClick 1
Delay 300
MoveTo 1095, 402
Delay 200
LeftClick 1
Delay 300
End If
Loop
//如果背包里没有9个精华,则退出游戏
Else
Goto chongjian
End If
//背包里现在已经有9个精华了,点击合成2次,合成精华包
Delay 500
MoveTo 640, 515
Delay 500
LeftClick 1
Delay 500
//点击精华包仍在地上
MoveTo 773, 468
Delay 500
LeftClick 1
Delay 500
MoveTo 345, 233
Delay 500
RightClick 1
Delay 500
//对道具栏进行操作丢失物品,搜索道具栏,如果出现则跳转到重建游戏
FindPic 428,194,1185,704,"Attachment:\道具栏的关闭.bmp", 0.9, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intx + 5, inty + 5
Delay 300
LeftClick 1
Delay 300
Else
GOTO chongjian
End If
//捡地上的A1钥匙扣
Delay 1000
FindPic 0,0,1593,899,"Attachment:\2165.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
Delay 1500
MoveTo intx - 2, inty + 2
Delay 400
LeftClick 1
Delay 500
End If
Rem chongjian
Delay 800
KeyPress "=", 1
Delay 3000
以上,和合成篇,因为A1钥匙需要合成钥匙串,否则太占地方。这里我用到了一个查找目标图片数量的插件函数+一个循环函数,当我打开背包和箱子后,我检查右面背包的大钥匙是否大于3个,如果大于三个,我就一直循环执行合成,否则我就停止合成,并终止循环。
还有一种情况会经常用到,就是要把合成的物品仍在地上,再捡起来,因为无法判断右边背包哪里有空格,这里面空格看上去黑色的,其实每个空格都不一样,很难搞定,不如直接再捡起来,肯定没问题。
最后标记一个rem chongjian 为了方便前面的语句,做失败判断后跳转到+1