|
之前有高人说,用TC比用按键精灵好,所以学了下TC,代码是TC7.0写的,用的大漠3.1233的免费插件。TC其实难易程度和按键差不多。感觉到要多开还是好点,大家还是都来学TC吧,都弄按键我找谁交流去?
代码解释:
三开是开了三个线程,每个线程绑定指定的人物窗口。我的是法牧战,牧战打钱,战用的是两屏AK坑,牧用的一屏非AK坑,法打经验。
后台断线重连,其实很简单。断线重连需要点鼠标,可不能后台绑定鼠标。我这代码,是假设断线就三个全断,先连第一个,发现第一个连上了再连第二个,第二个连上了再连第三个。鼠标前台绑定,发现断线,先置顶窗口一次,就可正常使用鼠标了。要分别连线就是怕窗口乱了鼠标不正常。
找字都是放在主屏幕,以前看到人公布代码是在小屏幕找字,其实在主屏也是一样很准确找到的,不过主屏的字相对小屏颜色有点改变而矣。
代码有点小错误,F11启动,F12停止,也可按开始,停止按钮。F10暂停当前窗口,F9恢复。F12停止不起作用。还没研究什么原因,不影响使用。
启动代码后,要先点法师窗口,按F11启动,再切换牧窗口按任意键,再切换战窗口按任意键。然后就可聊天切换窗口都不影响了。其实刚发现,多开时,每个游戏窗口的标题是不一样的。通过这点可以再优化,启动代码后不用一个个点,全自动。
var thread_id1,thread_id2,thread_id3
var close=0
var dm=array()
var hwnd=array()
//从这里开始执行
function 双开打AK坑_初始化()
var ws = com("Wscript.Shell")
ws.run("regsvr32 atl.dll /s")
var path = getrcpath("rc:")
regdll("f:\\game\\game_script\\dm.dll",true)
var ret=isregister("dm.dmsoft")
if(ret==0)
messagebox("插件未注册")
end
end
function 绑窗口()
thread_id1=threadbegin("第一个挂机","")
sleep(500)
var keycode=keywait()
thread_id2=threadbegin("第二个挂机","")
sleep(500)
keycode=keywait()
thread_id3=threadbegin("第三个挂机","")
end
//F1 召狼 F2 冥想
function 第一个挂机()
var intX,intY
var f,n
var key=array()
key[0]=0
key[1]=6
key[2]=12
key[3]=18
var man=array()
man[0]="gibfe"
man[1]="gibfd"
man[2]="gjbfe"
man[3]="gjbfd"
man[4]="habfe"
man[5]="habfd"
man[6]="hfbfd"
man[7]="hgbfe"
man[8]="hgbfd"
man[9]="hhbfe"
man[10]="hhbfd"
man[11]="hibfe"
man[12]="hfbdh"
man[13]="hgbdg"
man[14]="hgbdh"
man[15]="hhbdg"
man[16]="hhbdh"
man[17]="hibdg"
man[18]="habdh"
man[19]="habdg"
man[20]="gjbdh"
man[21]="gjbdg"
man[22]="gibdh"
man[23]="gibdg"
sleep(500)
dm[0]=com("dm.dmsoft")
dm[0].SetPath("f:\\game\\game_TC")
dm[0].SetDict(0,"自建字库.txt")
hwnd[0] = dm[0].GetMousePointWindow()
sleep(200)
dm[0].BindWindow(hwnd[0],"dx2","normal","windows",0)
sleep(500)
traceprint("第一个绑好")
//初始判断蓝 这段用了大漠找色,在蓝条那定位一个点,最开始蓝到了这个点就开打。
threadbegin("restart1","")
while(true)
dm[0].FindColor(770,412,788,414,"0000ff-000000",1.0,0,intX,intY)
if(intX > 0)
break
else
while(true)
dm[0].KeyPressChar("F2")
for(var e=0;e<5;e++)
sleep(1000)
end
dm[0].FindStr(2,360,94,378,"你从冥思中醒来|你现在精神正好|你的精神还没有","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
break
end
end
end
end
//打非自动坑
while(true)
for(var m = 0; m < 4; m++)
//判断蓝
while(true)
dm[0].FindColor(740,412,742,414,"0000ff-000000",1.0,0,intX,intY)
if(intX > 0)
break
else
while(true)
dm[0].KeyPressChar("F2")
for(var e=0;e<5;e++)
sleep(1000)
end
dm[0].FindStr(2,360,94,378,"你从冥思中醒来|你现在精神正好|你的精神还没有","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
break
end
end
end
end
//标man
for(var id = 0; id < 6; id++)
dm[0].SendString(hwnd[0],"kill "&man[id+key[m]])
sleep(200)
dm[0].KeyPressChar("enter")
sleep(500)
end
//召狼
f = 0
n = 0
while(true)
if(f == 4)
break
elseif(n == 10)
break
end
dm[0].KeyPressChar("F1")
for(var e=0;e<6;e++)
sleep(1000)
end
n=n+1
dm[0].FindStr(2,360,94,378,"一颗光点由你|魔狼开始小心","fbfc65-000000|",0.9,intX,intY)
if(intX >0)
f=f+1
end
end
//判断战斗状态
while(true)
dm[0].KeyPressChar("F2")
for(var e=0;e<3;e++)
sleep(1000)
end
dm[0].FindStr(2,360,94,378,"战斗中","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
dm[0].KeyPressChar("F1")
for(var e=0;e<6;e++)
sleep(1000)
end
end
dm[0].FindStr(2,360,94,378,"你从冥思中醒来|你现在精神正好","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
break
end
sleep(500)
end
end
end
end
//F2 冥思 F5 换标 F6 换锤
function 第二个挂机()
//从这里开始你的代码
var intX,intY
var key=array()
key[0]=0
key[1]=8
key[2]=16
var addr=array()
addr[0]=6029456
addr[1]=6029457
addr[2]=6094994
addr[3]=6094993
addr[4]=6160528
addr[5]=6094991
addr[6]=6094990
addr[7]=6029455
var man=array()
man[0]="iibdg"
man[1]="iibdh"
man[2]="jfbdh"
man[3]="jgbdg"
man[4]="iibfe"
man[5]="iibfd"
man[6]="jfbfd"
man[7]="jgbfe"
man[8]="ijbdg"
man[9]="ijbdh"
man[10]="jgbdh"
man[11]="jhbdg"
man[12]="ijbfe"
man[13]="ijbfd"
man[14]="jgbfd"
man[15]="jhbfe"
man[16]="jabfe"
man[17]="jabfd"
man[18]="jhbdh"
man[19]="jibdg"
man[20]="jabdg"
man[21]="jabdh"
man[22]="jhbfd"
man[23]="jibfe"
sleep(2000)
dm[1]=com("dm.dmsoft")
dm[1].SetPath("f:\\game\\game_TC")
dm[1].SetDict(0,"自建字库.txt")
hwnd[1] = dm[1].GetMousePointWindow()
sleep(200)
dm[1].BindWindow(hwnd[1],"dx2","normal","windows",0)
sleep(500)
traceprint("绑好第二个了吗")
threadbegin("restart2","")
while(true)
for(var m = 0; m < 3; m++)
for(var e = 0; e < 3; e++)
dm[1].KeyPressChar("F5")
sleep(400)
end
//标man
for(var id = 0; id < 8; id++)
dm[1].SendString(hwnd[1],"kill "&man[id+key[m]])
sleep(500)
dm[1].KeyPressChar("enter")
sleep(500)
end
sleep(1000)
//换锤
for(var e = 0; e < 3; e++)
dm[1].KeyPressChar("F6")
sleep(400)
end
//判断战斗状态
for(var e = 0; e < 250; e++)
dm[1].KeyPressChar("F2")
sleep(1000)
dm[1].FindStr(2,360,94,378,"你从冥思中醒来|你现在精神正好|你的精神还没有","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
break
end
end
//点柜台
for(var i = 0; i < 3; i++)
dm[1].SendString(hwnd[1],"look 1@6094987")
sleep(400)
dm[1].KeyPressChar("enter")
sleep(500)
dm[1].FindStr(6,360,94,378,"这是一张","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
break
end
end
//捡
for(var i = 0; i < 8; i++)
dm[1].SendString(hwnd[1],"get ALL_ITEM_IN "&addr)
sleep(500)
dm[1].KeyPressChar("enter")
sleep(500)
for(var get = 0; get < 8; get++)
dm[1].FindStr(6,360,94,378,"你捡起|你拿不动了","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
//卖
for(var e = 0; e < 6; e++)
dm[1].SendString(hwnd[1],"sell 1")
sleep(200)
dm[1].KeyPressChar("enter")
sleep(500)
dm[1].FindStr(6,360,94,378,"你不能把这个","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
break
end
end
break
end
end
end
//净化
for(var i = 0; i < 8; i++)
dm[1].SendString(hwnd[1],"purify "&addr)
sleep(500)
dm[1].KeyPressChar("enter")
sleep(500)
end
end
end
end
//F5 向左跑 F7 向右跑 F6 sing F8 look compass
function 第三个挂机()
//从这里开始你的代码
var intX,intY
var count
var h
var dir
var direct=array()
direct[0]="F5"
direct[1]="F7"
var 柜台=array()
柜台[0]=4784307
柜台[1]=3473587
var 捡=array()
捡[0]=0
捡[1]=9
var addr=array()
//左
addr[0]=4718776
addr[1]=4718777
addr[2]=4784314
addr[3]=4784313
addr[4]=4849848
addr[5]=4784311
addr[6]=4784310
addr[7]=4718775
addr[8]=4784312
//右
addr[9]=3408056
addr[10]=3408057
addr[11]=3473594
addr[12]=3473593
addr[13]=3539128
addr[14]=3573591
addr[15]=3473590
addr[16]=3408055
addr[17]=3473592
sleep(2000)
dm[2]=com("dm.dmsoft")
dm[2].SetPath("f:\\game\\game_TC")
dm[2].SetDict(0,"自建字库.txt")
hwnd[2] = dm[2].GetMousePointWindow()
sleep(200)
dm[2].BindWindow(hwnd[2],"dx2","normal","windows",0)
sleep(500)
traceprint("第三个绑好")
threadbegin("restart3","")
//判断地址 这一小段是代码开始判断站位,站第几屏就从第几屏开打
dm[2].KeyPressChar("F8")
sleep(1000)
var location=dm[2].Ocr(157,361,219,381,"e2e2e2",1.0)
sleep(500)
var lo = regexmatchtext(location,"\\d+",true,true,false)
sleep(500)
if(lo[0]==53)
h=1
elseif(lo[0]==73)
h=0
end
while(true)
var m=0
for(var d = 0; d < 2; d++)
if(h==1)
d=1
end
h=0
//等待
count=0
for(var n = 0; n < 1000; n++)
// traceprint("count="&count)
if(count>60)
break
elseif(m==24)
break
end
dm[2].FindStr(1,360,246,382,"你得到","e2e2e2-000000",1.0,intX,intY)
if(intX > 0)
dm[2].KeyPressChar("F6")
sleep(500)
dm[2].KeyPressChar("F6")
sleep(500)
m = m+1
count=0
else
sleep(1000)
end
// traceprint("m="&m)
count=count+1
end
//打完24只捡一次继续下屏
//点柜台
for(var i = 0; i < 3; i++)
dm[2].SendString(hwnd[2],"look 1@"&柜台[d])
sleep(400)
dm[2].KeyPressChar("enter")
sleep(500)
dm[2].FindStr(6,360,94,378,"这是一张","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
break
end
end
//捡
for(var i = 0; i < 9; i++)
dm[2].SendString(hwnd[2],"get ALL_ITEM_IN "&addr[i+捡[d]])
sleep(500)
dm[2].KeyPressChar("enter")
sleep(500)
for(var get = 0; get < 5; get++)
dm[2].FindStr(6,360,94,378,"你捡起|你拿不动了","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
//卖
for(var e = 0; e < 7; e++)
dm[2].SendString(hwnd[2],"sell 1")
sleep(200)
dm[2].KeyPressChar("enter")
sleep(500)
dm[2].FindStr(6,360,94,378,"你不能把这个|这个东西你正","e2e2e2-000000",1.0,intX,intY)
if(intX>0)
break
end
end
break
end
end
end
//跑
dm[2].KeyPressChar(direct[d])
for(var e=0;e<15;e++)
sleep(1000)
end
sleep(500)
end //for 跑位 d 尾
end //本挂机循环while 尾
end
function restart1()
var intX,intY
while(true)
dm[0].FindPic(210,432,270,449,"断线.bmp","000000",1.0,0,intX,intY)
if(intX>0)
threadclose(thread_id1)
sleep(1000)
windowactivate(hwnd[0])
for(var i = 0; i < 120; i++)
sleep(1000)
end
while(true)
dm[0].MoveTo(530,446)
sleep(500)
dm[0].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
dm[0].FindPic(680,325,718,346,"账密输入窗.bmp","000000",1.0,0,intX,intY)
if(intX>0)
dm[0].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id1=threadbegin("第一个挂机","")
close=1
break
end
dm[0].MoveTo(615,472)
sleep(500)
dm[0].LeftClick()
sleep(1000)
while(true)
dm[0].SendString(hwnd[0],"第一个账号")
sleep(500)
dm[0].KeyPressChar("tab")
sleep(500)
dm[0].SendString(hwnd[0],"第一个账号密码")
sleep(500)
dm[0].KeyPressChar("enter")
for(var i = 0; i < 8; i++)
sleep(1000)
end
dm[0].FindStr(215,420,238,435,"账号","45260f-000000",1.0,intX,intY)
if(intX>0)
dm[0].MoveTo(530,473)
sleep(500)
dm[0].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
for(var i = 0; i < 15; i++)
dm[0].KeyPressChar("back")
sleep(200)
end
dm[0].KeyPressChar("tab")
sleep(500)
for(var i = 0; i < 15; i++)
dm[0].KeyPressChar("back")
sleep(200)
end
end
dm[0].FindPic(560,513,619,540,"服务器确定.bmp","000000",1.0,0,intX,intY)
if(intX>0)
while(true)
for(var c = 0; c < 2; c++)
dm[0].MoveTo(588,528)
sleep(500)
dm[0].LeftClick()
for(var i = 0; i < 3; i++)
sleep(1000)
end
end
dm[0].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id1=threadbegin("第一个挂机","")
close=1
break
end
end//最里层四while
break
end
end//三层while
break
end
end//二层while
end
for(var i = 0; i < 10; i++)
sleep(1000)
end
end//一层while
end
function restart2()
var intX,intY
while(true)
dm[1].FindPic(210,432,270,449,"断线.bmp","000000",1.0,0,intX,intY)
if(intX>0)
threadclose(thread_id2)
sleep(1000)
for(var i = 0; i < 300; i++)
sleep(1000)
if(close==1)
break
end
end
windowactivate(hwnd[1])
for(var i = 0; i < 3; i++)
sleep(1000)
end
while(true)
dm[1].MoveTo(530,446)
sleep(500)
dm[1].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
dm[1].FindPic(680,325,718,346,"账密输入窗.bmp","000000",1.0,0,intX,intY)
if(intX>0)
dm[1].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id2=threadbegin("第二个挂机","")
close=2
break
end
dm[1].MoveTo(615,472)
sleep(500)
dm[1].LeftClick()
sleep(1000)
while(true)
dm[1].SendString(hwnd[1],"第二个账号")
sleep(500)
dm[1].KeyPressChar("tab")
sleep(500)
dm[1].SendString(hwnd[1],"第二个账号密码")
sleep(500)
dm[1].KeyPressChar("enter")
for(var i = 0; i < 8; i++)
sleep(1000)
end
dm[1].FindStr(215,420,238,435,"账号","45260f-000000",1.0,intX,intY)
if(intX>0)
dm[1].MoveTo(530,473)
sleep(500)
dm[1].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
for(var i = 0; i < 15; i++)
dm[1].KeyPressChar("back")
sleep(200)
end
dm[1].KeyPressChar("tab")
sleep(500)
for(var i = 0; i < 15; i++)
dm[1].KeyPressChar("back")
sleep(200)
end
end
dm[1].FindPic(560,513,619,540,"服务器确定.bmp","000000",1.0,0,intX,intY)
if(intX>0)
while(true)
for(var c = 0; c < 2; c++)
dm[1].MoveTo(588,528)
sleep(500)
dm[1].LeftClick()
for(var i = 0; i < 3; i++)
sleep(1000)
end
end
dm[1].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id2=threadbegin("第二个挂机","")
close=2
break
end
end//最里层四while
break
end
end//三层while
break
end
end//二层while
end
for(var i = 0; i < 10; i++)
sleep(1000)
end
end//一层while
end
function restart3()
var intX,intY
while(true)
dm[2].FindPic(210,432,270,449,"断线.bmp","000000",1.0,0,intX,intY)
if(intX>0)
threadclose(thread_id3)
sleep(1000)
for(var i = 0; i < 600; i++)
sleep(1000)
if(close==2)
break
end
end
windowactivate(hwnd[2])
for(var i = 0; i < 3; i++)
sleep(1000)
end
while(true)
dm[2].MoveTo(530,446)
sleep(500)
dm[2].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
dm[2].FindPic(680,325,718,346,"账密输入窗.bmp","000000",1.0,0,intX,intY)
if(intX>0)
dm[2].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id3=threadbegin("第三个挂机","")
close=0
break
end
dm[2].MoveTo(615,472)
sleep(500)
dm[2].LeftClick()
sleep(1000)
while(true)
dm[2].SendString(hwnd[2],"第三个账号")
sleep(500)
dm[2].KeyPressChar("tab")
sleep(500)
dm[2].SendString(hwnd[2],"第三个账号密码")
sleep(500)
dm[2].KeyPressChar("enter")
for(var i = 0; i < 8; i++)
sleep(1000)
end
dm[2].FindStr(215,420,238,435,"账号","45260f-000000",1.0,intX,intY)
if(intX>0)
dm[2].MoveTo(530,473)
sleep(500)
dm[2].LeftClick()
for(var i = 0; i < 5; i++)
sleep(1000)
end
for(var i = 0; i < 15; i++)
dm[2].KeyPressChar("back")
sleep(200)
end
dm[2].KeyPressChar("tab")
sleep(500)
for(var i = 0; i < 15; i++)
dm[2].KeyPressChar("back")
sleep(200)
end
end
dm[2].FindPic(560,513,619,540,"服务器确定.bmp","000000",1.0,0,intX,intY)
if(intX>0)
while(true)
for(var c = 0; c < 2; c++)
dm[2].MoveTo(588,528)
sleep(500)
dm[2].LeftClick()
for(var i = 0; i < 3; i++)
sleep(1000)
end
end
dm[2].FindPic(7,422,41,469,"进入1.bmp|进入2.bmp","000000",1.0,0,intX,intY)
if(intX>0)
thread_id3=threadbegin("第三个挂机","")
close=0
break
end
end//最里层四while
break
end
end//三层while
break
end
end//二层while
end
for(var i = 0; i < 10; i++)
sleep(1000)
end
end//一层while
end
function 窗口单停()
//传入我们要停的句柄
var hwnds=windowgetpointhwnd()
var keycode
if(hwnds==hwnd[0])
threadsuspend(thread_id1)
sleep(1000)
elseif(hwnds==hwnd[1])
threadsuspend(thread_id2)
sleep(1000)
else
threadsuspend(thread_id3)
sleep(1000)
end
end
function 启动_热键()
threadbegin("绑窗口","")
end
//终止热键操作
function 终止_热键()
exit()
end
function 按钮0_点击()
//这里添加你要执行的代码
threadbegin("绑窗口","")
end
function 按钮1_点击()
//这里添加你要执行的代码
exit()
end
function 热键0_热键()
//这里添加你要执行的代码
threadbegin("窗口单停","")
end
function 热键0_失去焦点()
//这里添加你要执行的代码
hotkeydestroy("热键0")
hotkeyregister("热键0")
end
function 热键1_热键()
//恢复
//传入我们要恢复的句柄
var hwnds=windowgetpointhwnd()
var keycode
if(hwnds==hwnd[0])
keycode=keywait()
threadresume(thread_id1)
sleep(500)
elseif(hwnds==hwnd[1])
keycode=keywait()
threadresume(thread_id2)
sleep(500)
else
keycode=keywait()
threadresume(thread_id3)
sleep(500)
end
end
|
|