关于使用按键精灵对战网所有副本的教学(示例经典战网)
暗黑破坏神吧
全部回复
仅看楼主
level 6
bandanmao0 楼主
将陆续对各个场景的脚本进行详细讲解,并附上脚本附件
2021年01月10日 01点01分 1
level 1
然后呢?
2021年03月03日 03点03分 3
level 6
bandanmao0 楼主
好忙,我有空做一下
2021年03月03日 07点03分 4
楼主 看下吧内消息箱 加下我
2021年03月03日 23点03分
level 1
期待期待
2021年03月14日 09点03分 5
level 6
bandanmao0 楼主
上面的内容很多,都是很核心的解释,这个时候我们已经进入了游戏,在罗格营地里,接下来我门需要走到小站上,然后点击石旷荒野,然后用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
2021年03月18日 14点03分 7
level 6
bandanmao0 楼主
案例2:A2召唤者钥匙
有了案例一的详细说明,A2钥匙就比较简单了,到小站,需要从A2进入后,先往右走,再往上,再往左,再右上进入小站,绕个圈子是因为往左走会经常碰到NPN出现意外,这里直接就用固定坐标移动就行。
进入庇护所后,有四个方向,我需要选择有绿色指引线的那个方向进行tp。
这里可以用,找颜色方式判断,
FindColor 1036,539,1149,625,"00FC18",intX,intY
If intX > 0 And intY > 0 Then
一大段语句,包括tp,打怪,捡东西,打开背包,合成钥匙
end if
四个方向一共需要写四段这样的
原理就是,在屏幕中画个长方形,找四条边区域内是否有绿色,如果有,则执行提前录制好的移动语句。
案例3:A5 钥匙
鼠标固定到小站,到痛苦厅,在1600*900分辨率下,可以在小地图上看到一个瓦特厅的字眼,不管那种随即图都可以看到,将鼠标移动到这个字眼上,一直右键TP 5秒后,这个延时自己掌握,正好能到瓦特厅的入口,然后再找地下入口那个截图,也不用做什么透明图,就截一大片,相似度设置0.8,找到为止,然后点击进入这个坑。
进入瓦特厅之后,出现四个方向,这个和A2钥匙一样,四个方向,再写四段脚本就行。
案例4:牛场
牛场一般都有VIP能直接开门,有些MOD需要到崔斯特姆捡牛腿合成,之类,这个从石矿荒野到崔斯特姆的石柱是个难点
tt = now
FindPic 0, 0, 1599, 899, "Attachment:\石柱.bmp", 0.8, intX, intY
If intX > 0 And intY > 0 Then
Delay 500
MoveTo intx, inty
Delay 200
RightClick 1
Delay 500
MoveTo 808, 543
Delay 1000
LeftClick 1
Delay 500
Goto cuisi
Else
Do While intx = - 1
Call move
Delay 300
KeyPress "Tab", 1
Delay 300
Call zhaotu
Delay 300
KeyPress "Tab", 1
Delay 300
call jishi
Loop
//退出循环
End If
Sub move
//次找绿点
Delay 300
FindPic 0,0,1593,889,"Attachment:\绿点.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
If intX > 854 Then
intZ = 481 + 571 * (intY - 480) / (intX - 854)
Delay 200
If 35 < intZ < 840 Then
MoveTo 1425, intZ
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
Elseif intZ <35 then
MoveTo 890, 34
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
Elseif intZ >=840 then
MoveTo 890, 840
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
End If
End If
If intX < 854 Then
intZ = 481 - 637 * (intY - 480) / (intX - 854)
Delay 300
If 35 < intZ < 840 Then
MoveTo 87, intZ
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
Elseif intZ <35 then
MoveTo 330, 34
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
Elseif intZ >=840 then
MoveTo 330, 840
Delay 200
RightClick 1
Delay 400
RightClick 1
Delay 400
End If
End If
Else MoveTo 973, 430
Delay 200
LeftClick 1
Delay 400
End If
End Sub
Sub zhaotu
FindPic 0, 0, 1599, 899, "Attachment:\石柱.bmp", 0.85, intX, intY
If intX > 0 And intY > 0 Then
Delay 500
MoveTo intx, inty
Delay 200
RightClick 1
Delay 500
MoveTo 808, 543
Delay 1200
LeftClick 1
Delay 500
Goto cuisi
End If
End Sub
Sub jishi
If DateDiff("s", tt, now) >= 30 Then
Goto chongjian
End If
End Sub
Delay 1000
Rem cuisi
Delay 600
MoveTo 296, 672
Delay 600
RightClick 1
Delay 500
RightClick 1
Delay 600
RightClick 1
MoveTo 280, 219
Delay 600
RightClick 1
Delay 600
RightClick 1
Delay 600
RightClick 1
Delay 600
RightClick 1
Delay 1800
//通过找打脚丫子进入免费红门
Delay 100
FindPic 0,0,1593,889, "Attachment:\红门3.bmp", 0.1, intX, intY
Delay 300
If intX > 0 And intY > 0 Then
Delay 300
MoveTo intx + 20, inty + 40
Delay 300
KeyPress "F3", 1
Delay 500
RightClick 1
Delay 300
MoveTo 804, 439
Delay 300
LeftClick 1
Delay 800
Else
Goto chongjian
End If
Delay 300
以上这段是刚到石矿小站,我们的目标图是石柱子,需要费心点做个透明图,一进小站就找石柱子,因为有时候石柱子就在小站旁边,如果没有找到,则执行判断逻辑,这个判断逻辑是核心,很多人看不明白,从小站到石柱子会有一个绿色指引线,我们手工操作就是跟着线去tp,找到石阵,进入红门。
我们把屏幕画个十字,分成四个区域,我们找那个绿色的指引线的原点,如果这原点在右上角区域内找到,那么酒吧鼠标移动到固定位置右上角tp2次,然后再找一次石柱,如此反复循环。比如我右上角tp2次,tp过头了,绿点出现在左上角区域,那么第二次循环就会鼠标放到左上角tp2次,再找石柱,最后肯定能找到石柱。
进入了崔斯特姆后,就就可以找牛腿了,这里有个问题,就是牛腿的颜色因为属性不一样有可能是红色,也有可能是蓝色,黄色之类的,这是因为mod有变色补丁,这就需要我们把5种颜色的牛腿都做好图找一次,然后才能放入箱子进行合成。
还有一种办法,就是通过遍历方式,就是把鼠标一格一格的在背包内移动,如果出现牛腿的字眼,就证明鼠标放在牛腿上了,然后执行合成,这样会慢一点,但是十分可靠。
同样用到遍历的情况有,比如一个场景开了一个红门,这个红门还被柱子或墙挡住了,如果这个红门没挡住,我们可以直接用红门截图,相似度0.1直接查找就行,如果被挡住了,我们可以先找,找不到则执行把鼠标放在屏幕上,一格一格的移动,这个鼠标总会放到红门上,显示出红门上方的副本名字,然后就可以进入这个红门了,这个遍历比较复杂,可以参考一下语句
如果遍历15秒钟还没找到,则跳出循环,只要是循环必须有个跳出时间限制,否则容易卡死。
这个是十八层地狱副本中的一层
本帖中牛腿,还有十八层地狱的复杂脚本编写都为zhu01000,特此鸣谢。
//十一层地狱
Sub shiyiceng
tt = now
Do
Delay 200
MoveTo 518, 70
Delay 300
RightClick 1
Delay 500
MoveTo 411, 94
Delay 300
RightClick 1
Delay 500
If DateDiff("s", tt, now) >= 15 Then
Exit Do
End if
Loop
Call wucai
Delay 1500
Call hongmen2
Delay 500
FindPic 1450,34,1600,189,"Attachment:\十一.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
Delay 500
Call 小地图小黄圈
Delay 500
M = 800
For 7
N = 1560
For 19
MoveTo N, M
N = N - 80
Delay 300
FindPic 0,0,1561,893,"Attachment:\10.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
Delay 300
RightClick 1
Delay 300
MoveTo 803, 431
Delay 500
LeftClick 1
Delay 1000
Goto f12
End If
Next
M = M - 100
Next
Goto chongjian
End if
End Sub
2021年03月18日 14点03分 8
level 6
bandanmao0 楼主
进阶高手篇
将多个场景整合:例如把A1\A2\A5整合成一个,都打一遍,检查背包里是否够合成娃娃的钥匙数量直接合成娃娃,并且每次+1后,先打开储物箱,把合成好的娃娃放在仓库内。每次进去判断是否死亡再捡尸体。
GM防查房篇:
这需要涉及到双线程:原理是主线程一直挂机刷怪,副线程每隔0.2秒检查是否有人进入房间,就是不停的XX进入暗黑世界这个字眼的图,如果发现有人进入房间则按下主线程副本1的热键,当屏幕上出现XX离开暗黑世界后,再恢复主线程。
比如下面这个例子:我另写一个脚本为防查房,主脚本设置暂停/继续热键为:Pause/Break,我把两个脚本同时勾选F10启动,这样两个脚本就会独立的执行。当有人进来后我就不动,人一走我继续刷。
//请勾选主脚本一起执行,主脚本暂停/继续热键为Pause/Break
Do
FindPic 0,23,585,347,"Attachment:\进入.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
Delay 500
KeyPress "Pause/Break", 1
Delay 500
Exit Do
End If
Loop
Delay 500
Do
FindPic 0,23,585,347,"Attachment:\离开.bmp",1.0,intX,intY
If intX > 0 And intY > 0 Then
Delay 500
KeyPress "Pause/Break", 1
Delay 500
Exit Do
End If
Loop
Delay 500
多开辅助工具:
经常有需要多开打旗帜的需求,8开非常累,可以利用按键精灵的后台插件脚本,实现主屏幕一直玩的情况下,另外7个号陆续进入主游戏。
准备条件:
1个主号、7个小号
桌面游戏快捷方式,创建2个,
主号进入的图标快捷方式命令为:C:\暗黑破坏神2毁灭之王\D2Loader.exe -w -pdir Plugin
小号为为:C:\暗黑破坏神2毁灭之王\D2Loader.exe -w -pdir Plugin -title 多开小号 ;分辨率需要选择为800*600进入
这样做的目的就是让7个小号的窗口内容为“多开小号”这四个字,而主号窗口上什么字都没有,这样就能区分对待了。
脚本解释:
1、遍历所有窗口,把带 多开小号字眼的窗口,记录在系统里,并且给出一个这样窗口的个数值为MyArray
2、我们取到这个数值为7,(如果我们只开了4个小号,这个值就是4)
3、执行for循环,循环次数为MyArray这个变量,7个小号就循环7次,4个小号就循环4次,循环内容为:将小号1窗口挪到0,0坐标,就是屏幕左上角,然后用后台鼠标移动插件语句,鼠标移动到固定点,点击开始、加入
4、使用方法:主号先+1,然后执行下脚本,小号跟着都+1,点击开始-加入游戏,因为房间号都一样,这样小号就都进来了。
我这里的+1设置的是键盘的=号,根据键位查询为187,如果你的不一样,需要查询好后修改这个值。
这个多开脚本鸣谢Meteora
//下面这句是按查找方式(模糊),遍历符合窗口类名(0)且标题("多开小号")的句柄,保存到数组(HwndEx)里
HwndEx = Plugin.Window.SearchEx(0,"多开小号",0)
//下面这句用于分割字符串,将获得的句柄组分割
dim MyArray
MyArray = Split(HwndEx, "|")
If UBound(MyArray)>=0 Then
i=0
For UBound(MyArray)
Delay 100
Call Plugin.Window.Move(MyArray(i), 0, 0)
Delay 200
Call Plugin.Bkgnd.KeyPress(MyArray(i), 187)//按= +1
Delay 2000
Call Plugin.Bkgnd.LeftClick(MyArray(i), 710, 459)
Delay 800
Call Plugin.Bkgnd.LeftClick(MyArray(i), 702, 421)
i=i+1
Next
End If
忘记说了,我每次游戏分辨率都是1600*900,双击抬头,再双击一次,窗口会自动到了左上角,所有脚本都是这个位置写的。
2021年03月18日 15点03分 9
level 4
[啊]技术贴,不懂。围观
2021年03月18日 15点03分 11
level 9
牛场一般都有VIP能直接开门[滑稽] 有些MOD需要到崔斯特姆捡牛腿合成[阴险]
2021年03月18日 15点03分 12
特别好奇楼主玩得什么游戏[滑稽]
2021年03月20日 07点03分
level 6
bandanmao0 楼主
后期买了个云主机,弄了个服务器,简单尝试修改技能伤害,范围,玩了一下,发现学的东西更多了,实在整不了了。
想了解服务器架设的,可以看看b站有个神话gm的视频,一共三节课很受用。
2021年03月18日 15点03分 13
弄服务器了?
2021年04月20日 00点04分
level 6
bandanmao0 楼主
这是被吞的一楼
我也不是计算机专业,完全是小白,最早接触按键精灵是工作中有重复操作,使用录制的功能完成简单重复性操作,后来接触游戏,组后把暗黑一款肝的游戏,变成抽空写语句,电脑g机,回家看收获的养成类游戏。
以下将由浅入深,对按键精灵进行讲解,这并不只是游戏,工作中也会有很多收获的。
以下脚本适用于原版相似的,就是增加点副本,修改点技能,增加点物品的,画面还需要和原版一致
一、案例1:A1钥匙-出城开红门
//这段脚本是对鼠标所在窗口设置前置,这是避免出现意外打开网页或者鼠标点到桌面上其他图标,这段是利用了按键精灵窗口插件的功能,想了解命令可以到插件中找到这个的说明
Hwnd = Plugin.Window.Foreground()
Delay 400
Call Plugin.Window.Top(Hwnd, 0)
//下面的是点开始--创建游戏,我先设置了一个随机的变量,这个是为了输入房间号变成随机数,而不是一直+1,容易引起怀疑;接下来的一段DO--LOOP是一段循环函数,配合TT1=NOW,可以实现指定时间内循环找图,这段脚本适用于非常多的场景。例如我+1后不知道什么时候可以页面显示出可以点开始,也许系统快时候2秒就行了,有时候卡了需要5秒,那么用这段函数,就可以在13秒内一直找开始的按钮,不管几秒内出现,我都可以瞬间点击开始,并且通过EXIT DO跳出循环,13秒的设置,是我对这个页面预估的最大时间。
以下将对这段进行拆解讲解
tt1 = now
定义变量TT1=这行这行记录时候的时间
DO LOOP 开始循环
循环第一条指令为
If DateDiff("s", tt1, now) >= 13 Then
Exit Do
end if
这个的意思就是,我检查这条记录的时间和上面记录TT1时间差,是否超过13秒,如果超过就终止do循环,这样的会避免语句一直找不到开始按钮,一直卡在这个循环内。
正常情况下13秒检查这条记录,肯定是这个时间差是小于13秒,所以上面那条IF不会被触发,
然后开始继续执行下面的语句
FindPic 506,425,671,542,"Attachment:\开始按钮.bmp",0.5,intX,intY
If intX > 0 And intY > 0 Then
MoveTo intx, inty +
2021年03月20日 07点03分 14
level 6
bandanmao0 楼主
然后开始继续执行下面语句
FindPic 506,425,671,542,"Attachment:\开始按钮.bmp",0.5,intX,intY
If intX > 0 And intY > 0 Then
MoveTo intx, inty + 5
Delay 500
LeftClick 1
Delay 500
上面这段缺个END IF,因为我把end if写到最下面了,上面这段是按键精灵最核心的最常用的语句,找一个图片,找的范围是屏幕左上角坐标和右下角坐标之间的矩形,相似度是50%,图片路径使用脚本附件路径,这个路径就是要把找的图片上传到附件选项,找到图标的左上角那个点的坐标后,对这个坐标定义为 intX intY。
然后开始IF函数,如果 intX intY,大于0(如果屏幕上没有这个图,找到的坐标将是-1,-1,所以用>0来区分是否找到图片),then那么就开始执行下面的语句,MoveTo intx, inty + 5,移动到 intx, inty这个变量,我在变量后面写了个+5的意思就是坐标向下偏移5个像素点的位置,因为找到的坐标都是左上角,所以基本所有语句都需要加一个向右、向下的变量,也就是+5,如果要向左、向上就是-5。现在鼠标已经找到开始按钮,并且移动到这个图标上了,Delay 500--LeftClick 1--Delay 500,这个是延时命令500就是500毫秒,半秒的意思,半秒后执行点击鼠标左键1下,这个点击鼠标命令可以在鼠标命令里找到,所有操作都需要设置延时,否则同一时间内执行两个命令肯定会出问题的。
之后到了创建房间窗口,执行SayString "noin-"--Delay 200--SayString suijiSayString suiji,这个是喊话的语句,输入noin-",200毫秒后再的输入上面定义的三位数随机数,最后房间号就是noin-861这样结果。
最后再执行MoveTo 678, 443,这个是固定坐标移动鼠标,移动到开始按钮上并点击一次,正是因为脚本内有很多这样固定坐标移动的命令,所以导致1024*768,1600*900等等分辨率不同的电脑无法共用一个脚本,比如我的脚本常用1920*1086的电脑,暗黑为1600*900分辨率打开,你想用我的脚本也必须用这个分辨率。
那么创建游戏就完成了,接下来加上EXIT DO
2021年03月20日 07点03分 15
level 6
bandanmao0 楼主
接下来加上EXIT DO,已经进入游戏了,目的达到了,就需要退出循环了,之后再加end if,这个是对If intX>0这段的结束,再loop,是对开通的DO的结尾。
这段中还涉及到一个找图,图片的做法,还有相似度0.5,50%是什么意思,我这款是核心内容,请打开按键精灵--抓抓--点击图像--点击截屏--用鼠标按住不放往右下拖松手--点击用图形处理打开--进入图像处理页面--点击右下角放大按钮--发现你所选的图片变成网格状的了,每一个网格就是一个分辨率点,坐标里往右移动1,就是一个格子的距离,50%相似度就是你要找的图片的像素点的位置和颜色,在整个屏幕内任何区域有一半的颜色或者位置相同,这就需要我们找图时候尽可能找屏幕中最不同的地方去定位,哪怕这个位置和实际想点的位置相差很远,我们也可以通过+偏移量500这么大的数值来点到想要的位置。
常见的作图方法,相似度经常需要改为1.0就是100%吻合,这就需要作透明图了,比如右上角写着崔斯特姆这四个字,我需要判断我现在所处的场景是否在这里,就需要找这四个字的图片,我先截图,做透明图,就是把除了这个字以外的地方都用填充、和铅笔把每个网格都涂成一个颜色,比如说我都涂成红色,那么系统就认为底色一样的地方就是透明的,系统只找这四个字的颜色区域,涂色的时候需要保证最少四周一圈都是红色的,这样系统才认。
suiji = lib.算法.随机数字串(3)
tt1 = now
Do
If DateDiff("s", tt1, now) >= 13 Then
Exit Do
End If
Delay 100
FindPic 506,425,671,542,"Attachment:\开始按钮.bmp",0.5,intX,intY
If intX > 0 And intY > 0 Then
MoveTo intx, inty + 5
Delay 500
LeftClick 1
Delay 500
SayString "noin-"
Delay 200
SayString suiji
Delay 500
MoveTo 678, 443//创建游戏
Delay 500
LeftClick 1
Delay 3000
Exit Do
End If
Delay 100
Loop
2021年03月20日 07点03分 16
level 3
哇,太棒啦
2021年03月20日 07点03分 17
level 3
楼主有a4打大菠萝的脚本介绍吗?
2021年06月21日 05点06分 19
有,A4也有脚本,很稳定。上中下,每个位置都有2种随机地形
2022年01月23日 08点01分
@bandanmao0 人呢,私信也不回[小乖]
2022年12月08日 01点12分
1 2 尾页