컴퓨터&매크로/오토핫키_중급

[스크립트]D게임 매크로

릭나스 2014. 11. 11. 22:22
반응형


#NoEnv

#SingleInstance Force

#Persistent

SetKeyDelay,0,1

ProgramName=Siz봇

ProgramVersion=1.02


TotalCount = 0

PassedCount = 0

FailedCount = 0

DiedCount = 0

RepairCount = 0

LogFileName = %a_scriptdir%\log\log1.html

IfNotExist,%a_scriptdir%\log\

FileCreateDir,%a_scriptdir%\log\

First_Start = 0

MagicCount =  0

RareCount = 0

SetCount = 0

LegendCount = 0

;SuccessCount=0


loop,60

{

inven%A_index%=1

}



end::

PostMessage,0x111,65307,,,sub.ahk - AutoHotkey 

process,close,sub.exe

exitapp                ; END 키 종료

;process,close,sub.exe

return

pause::

pause                ; PAUSE : 일시 중지 & 재시작

return

F5::                        ; F5 : 시작

run,%A_scriptDir%\sub.exe

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

loop

{


WinWait, 디아블로 III, 

        IfWinNotActive, 디아블로 III, , WinActivate, 디아블로 III, 

        WinWaitActive, 디아블로 III, 

        ResizeWin(1282,944) ;window rezie as 1292 X 850

        StartTime := A_TickCount

        ElapedTime := 0

gosub, WaitRoom        ; 방생성 완료 체크

        if res = 1

{

                        gosub, StartBot

                        ElapsedTime := A_TickCount - StartTime

        }     

}

return


ResizeWin(W,H)                ; 해상도 셋팅

{

  WinMove,디아블로 III,,0,0,%W%,%H%

}

return


WaitRoom:

        global count= 0

        loop, 40 

        {

                imagesearch,vx,vy,9,130,38,170,*30 %A_scriptDir%\image\방생성확인.bmp

                If errorLevel = 0

                {

                       global TotalCount

                        TotalCount := TotalCount+1

                        FileAppend, [%A_now%]봇시작<br> , %LogFileName%

IniWrite,1,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

res = 1

                        return

                }

                else

                {

                        sleep, 1500

                                imagesearch,vx,vy,549,530,725,588,*30 %A_scriptDir%\image\main_error.bmp        

                                if errorLevel = 0

                                {

                                        MouseClick, left,  637,  560

Sleep, 500

                                }    

                }

                

        }

res = 0

return

;;;;;;;;;;;;;;;;;;;;; [ 전투 함수 ] ;;;;;;;;;;;;;;;;;;;;;;;;;;

StartBot:

IfWinNotActive, 디아블로 III, , WinActivate, 디아블로 III, 

WinWaitActive, 디아블로 III, 

gosub,비명

if res = 1

{

gosub,동영상

if res = 1

{

gosub,인던안2

if res = 1

{

gosub,전투종료

if res = 1

{

Sleep,1000

send, {Shift Up}

Send,{Click up left} 

sleep,500

;gosub,GettingMoney

;gosub,GettingGem

gosub,GettingMagic

gosub,GettingLegend                        ; Legend Item 줍기

gosub,GettingSetItem                ; Set Item 줍기

gosub,GettingRare                        ; Rare Item줍기

gosub,town

global PassedCount

PassedCount++

;FileAppend, [%A_now%]성공<br> , %LogFileName%

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

;gosub,QuitRoom

}

else if res = 3

{

Sleep,500

Send,{Click up left} 

send, {Shift Up}

Sleep,500

global DiedCount

DiedCount++

;FileAppend, [%A_now%]사망<br> , %LogFileName%

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

;gosub,QuitRoom

sleep,12000

}

else

{

Sleep,1000

send, {Shift Up}

Send,{Click up left} 

sleep,500

;gosub,GettingMoney

;gosub,GettingGem

gosub,GettingMagic

gosub,GettingLegend                        ; Legend Item 줍기

gosub,GettingSetItem                ; Set Item 줍기

gosub,GettingRare                        ; Rare Item줍기

gosub,town

global PassedCount

PassedCount++

;FileAppend, [%A_now%]성공<br> , %LogFileName%

;gosub,QuitRoom

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

}

}

else

{

global DiedCount

        DiedCount++  

FileAppend, [%A_now%]실패<br> , %LogFileName%

;gosub,QuitRoom 

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

}

}

else

{

global FailedCount

        FailedCount++

FileAppend, [%A_now%]실패<br> , %LogFileName%

;gosub,QuitRoom 

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

}


}

return


비명:

loop, 60 

{

pixelgetcolor check1, 1121, 39

StringLeft,check1,check1,4

if (check1=0xCD or check1=0xCE)

{

sleep,100

send,4

send,1

send,2

send,3

sleep,2000

mouseclick, right, 985,225

sleep,100

mouseclick, right, 985,225

sleep,100

mouseclick, right, 985,225

sleep,100

mouseclick, right, 985,225

sleep,100

mouseclick, right, 985,225

sleep,100

MouseClick, left,  1161,  389

sleep,1000

MouseClick, left,  1161,  389

sleep,500

MouseClick, left,  582,  371

sleep,500

MouseClick, left,  622,  249

sleep,500

MouseClick, left,  747,  300

IniWrite,1,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

res = 1

return

}

else

{

imagesearch,vx,vy,1140,25,1210,59,*30 %A_scriptDir%\image\마을체크.bmp

if errorLevel = 0

{

chh:=1

}

pixelgetcolor check2, 1172, 36

StringLeft,check2,check2,4

if (check2=0xD1 or check2=0xD2 or check2=0xB3 or check2=0xB4 or check2=0xC2 or check2=0xC3 or check2=0xFF or chh = 1)

{

MouseClick, left,  445,  185

sleep,1500

}

sleep,500

chh:=0

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

}

}

res = 0

return


동영상:

loop, 15

{

pixelgetcolor m1, 74, 913

pixelgetcolor m2, 75, 913

pixelgetcolor m3, 76, 913

pixelgetcolor m4, 77, 913

If (m1=0x000000 and m2=0x000000 and m3=0x000000 and m4=0x000000)

                {

sleep,2000

send,{esc}

sleep,500

send,{enter}

sleep,100

res = 1

return

                }

else

{

sleep,1000

}

}

res = 0

return

인던안2:

loop, 15 

{

imagesearch,vx,vy,1170,25,1230,53,*30 %A_scriptDir%\image\보스방.bmp

                If errorLevel = 0

                {

MouseClick,left,655,834

sleep,1500

MouseClick,left,655,834

sleep,1500

MouseClick,left,655,834

sleep,1500

send, {Shift Down}

Send,{Click down left}

sleep,100

mousemove, 620,288

res = 1

return

                }

else

{

sleep,1000

}

}

res = 0

return


전투종료:

loop 

{

imagesearch,vx,vy,479,746,791,850,*30 %A_scriptDir%\image\전투종료.bmp

if ErrorLevel = 0

{

   Send, {esc}

sleep,100

res = 1

return

}

else

{

gosub,죽음체크

if res = 1

{

res = 3

return

}

else

{

send,123

}

}

}

res = 0

return


죽음체크:

        Sleep, 300

        imagesearch,vx,vy,704,727,741,752,*30 %A_scriptDir%\image\죽음체크.bmp

        if ErrorLevel

        {

res = 0

                return

        }

        else

        {

res = 1

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

                return

        }

return


;;;;;;;;;;;;;;;;;;;;; [ 전투 함수 ] ;;;;;;;;;;;;;;;;;;;;;;;;;;


QuitRoom:                ; 방에서 나감

        sleep, 1000

        MouseClick, left, 888, 900

        sleep, 500

        RandomClick(640,450,1)

FileAppend, [%A_now%]방나가기<br> , %LogFileName%

return


town:

sleep,500

send,t

;sleep,500

loop, 30 

{

imagesearch,vx,vy,1140,25,1210,59,*30 %A_scriptDir%\image\마을체크.bmp

If errorLevel = 0

{

sleep,2500

MouseClick, left, 994,206

sleep,2500

gosub,Inven_First

if res = 1

{

gosub, Inven_Input ;초기 인벤값을 불러와서 저장한다.

}

gosub,CheckRepair                        

if res = 1

{

gosub, GoToMerchant

gosub, RepairItem

gosub, RepairBack

}

gosub,Inven_clean

if res = 1

{

gosub,GoToSmith ;대장간으로 가서 아이템레벨 62-63을 제외한 아이템을 융해시킨다.

gosub,decomposition ;초기인벤값과 비교후 융해시키기

gosub,BackSmith

gosub,InputStore ;인벤이 가득 찼다면, 창고이용, 인벤을 정리한다.

gosub,BackStore ;창고정리후 복귀

}

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

return

}

else

{

sleep,1000

}

}

IniWrite,2,C:\Documents and Settings\All Users\Documents\tran.ini,방,확인

return


Inven_First:

        Sleep, 300

        if First_Start = 0

        {

First_Start = 1

res = 1

                return

        }

        else

        {

res = 0

                return

        }

return


Inven_Input:

        Sleep, 300

        X:=867, Y:=540, pW:=41, pH:=41, C:=1, Ix:=1

loop,60

{

inven%Ix%X:=X, inven%Ix%Y:=Y

X:=X+pW , C:=C+1, Ix:=Ix+1

If ( C > 10 )

X:=867, Y:=Y+pH, C:=1

}

sleep,500

mouseclick,left, 840, 894

sleep,500

gosub,인벤체크

sleep,500

loop,60

{   

pX:=inven%A_Index%X

pY:=inven%A_Index%Y

pixelgetcolor inven%A_Index%, %pX%, %pY%

if (inven%A_Index%=0x080C11 or inven%A_Index%=0x080C12 or inven%A_Index%=0x080C13 or inven%A_Index%=0x080C14 or inven%A_Index%=0x080C16)

{

F_inven%A_Index% = 0

}

else

{

F_inven%A_Index% = 1

}

}

sleep,1000

send, {esc}

sleep,500

return


인벤체크:

loop, 15 

{

imagesearch,vx,vy,1016,44,1085,109,*30 %A_scriptDir%\image\인벤체크.bmp

                If errorLevel = 0

                {

return

                }

else

{

sleep,1000

}

}

return


Inven_clean:

        Sleep, 300

        imagesearch,vx,vy,970,660,1070,692,*30 %A_scriptDir%\image\full.bmp

        if ErrorLevel

        {

res = 0

                return

        }

        else

        {

MouseClick, left, 1212, 675

sleep,500

res = 1

                return

        }

return


CheckRepair:

        Sleep, 300

        PixelSearch, Px, Py, 916, 40, 950,100, 0x00F0FF, 10, Fast        ;수리 아이콘 픽셀 체크

        if ErrorLevel

        {

res = 0

                return

        }

        else

        {

res = 1

                return

        }

return


GoToMerchant:                ; 상인에게로...

        sleep, 1000

        mouseclick, left, 888,58

        sleep, 5000

        mouseclick, left, 678,370

sleep, 1000

return


RepairItem:                ; 수리 -> 모두 수리 버튼 클릭

        global RepairCount 

        sleep, 1000

mouseclick, left, 436,432

sleep, 1000

mouseclick, left, 223,528

        Sleep,500

        send, {esc}

        RepairCount++

        FileAppend, [%A_now%]장비를 수리하였습니다.<br>, %LogFileName% 

        sleep, 200

return


RepairBack:

        sleep, 1000

        mouseclick, left,496,846

sleep, 5000

        mouseclick, left,413,597

sleep, 2000

return


GoToSmith:

        sleep, 1000

        mouseclick, left, 1184,566

        sleep, 3000

        mouseclick, left, 743,404

        sleep, 1000

mouseclick, left, 440,432

        sleep, 1000

mouseclick, left, 227,266

        sleep, 1000

return


decomposition:

        Sleep, 300

gosub,인벤체크

X:=887, Y:=560, pW:=41, pH:=41, C:=1, Ix:=1

loop,60

{

if (C=2 or C=6)

{

pW=42

}

else

{

pW=41

}

if Y=765

{

Y=764

}

check%Ix%X:=X-3, check%Ix%Y:=Y-2

X:=X+pW , C:=C+1, Ix:=Ix+1

If ( C > 10 )

X:=887, Y:=Y+pH, C:=1

}

loop,60

{   

pX:=check%A_Index%X

pY:=check%A_Index%Y

pixelgetcolor check%A_Index%, %pX%, %pY%

}

Bx:=60

loop,60

{   

if F_inven%Bx% = 0

{


if (check%Bx% = 0xB9150E or check%Bx% = 0xB7130D or check%Bx% = 0xB4120C or check%Bx% = 0x5F301F or check%Bx% = 0x592C1D or check%Bx% = 0x53291B or  check%Bx% = 0xF00000 or check%Bx% = 0xF10000 or check%Bx% = 0x040305 or check%Bx% = 0x030205)

{

global xx 

global yy

xx:=check%Bx%X-10

yy:=check%Bx%Y-10

;sleep,100

MouseMove,%xx%,%yy%

sleep,100

gosub,확인

if (rex=0)

{

sleep,500

mouseclick, left

}

sleep,500

}


}

Bx:=Bx-1

}

sleep,300

return



BackSmith: ;창고로 가서 열기

        sleep, 1000

        send,{esc}

        sleep, 1000

        mouseclick, left, 311,304

        sleep, 3000

mouseclick, left, 269,555

sleep, 2000

mouseclick, left, 437,329

sleep, 1000

return


InputStore:

Sleep, 300

X:=867, Y:=540, pW:=41, pH:=41, C:=1, Ix:=1

loop,60

{

inven%Ix%X:=X, inven%Ix%Y:=Y

X:=X+pW , C:=C+1, Ix:=Ix+1

If ( C > 10 )

X:=867, Y:=Y+pH, C:=1

}

loop,60

{   

pX:=inven%A_Index%X

pY:=inven%A_Index%Y

pixelgetcolor C_inven%A_Index%, %pX%, %pY%

if (F_inven%A_Index% = 0)

{

if (C_inven%A_Index%=0x080C11 or C_inven%A_Index%=0x080C12 or C_inven%A_Index%=0x080C13 or C_inven%A_Index%=0x080C14 or C_inven%A_Index%=0x080C16)

{

}

else

{

sleep,500

MouseClick, right,  %pX%,  %pY%

sleep,500

}

}

}

return


BackStore:

        sleep, 1000

        send,{esc}

        ;sleep, 1000

return


GettingSetItem:

{

        loop 5

        {

                send, {alt}

                PixelSearch, Px, Py, 0, 0, 900,834, 0x00FF00, 10, Fast

                if ErrorLevel = 0

                {

                        global SetCount

                        sleep 500

                        send, {alt}

                        MouseClick, left, Px + 15, Py + 10

                        ;SetCount++

                        sleep 1500

                        ;FileAppend, [%A_now%]Get a Set Item..yes!yes!...<br>, C:\Log\Google 드라이브\log1.html

                }

        }

}

return

GettingRare:

{

        loop 5

        {

                send, {alt}

                PixelSearch, Px, Py, 0, 0, 900,834, 0x02F0F0, 6, Fast

                if ErrorLevel = 0

                {

                        global RareCount

                        sleep 500

                        send, {alt}

                        MouseClick, left, Px + 15, Py + 10

                        RareCount++

                        sleep 1500

                ;FileAppend, [%A_now%]Get a Rare Item..yes!...<br>, C:\Log\Google 드라이브\log1.html

                }

        }

}


return

GettingMagic:

{

        loop 30

        {

                send, {alt}

                PixelSearch, Px, Py, 278, 189, 900,834, 0xF06463, 1, Fast

                if ErrorLevel = 0

                {

                        global MagicCount

                        sleep 500

                        send, {alt}

                        MagicCount++

                        MouseClick, left, Px + 15, Py + 10

                        sleep 500

                        ;FileAppend, [%A_now%]Get a magic..! %MagicCount% <br>, C:\Log\Google 드라이브\log1.html

                }

        }

}

return

GettingLegend:

{

        loop 5

        {

                send, {alt}

                PixelSearch, Px, Py, 0, 0, 900,834, 0x2F64BF, 2, Fast

                if ErrorLevel = 0

                {

                        global LegendCount

                        sleep 500

                        send, {alt}

                        MouseClick, left, Px + 15, Py + 10

                        LegendCount++

                        sleep 1500

                ;FileAppend, [%A_now%]Get a Legend Item..yes!yes!...<br>, C:\Log\Google 드라이브\log1.html

                }

        }

}

return


확인:

rex:=0

loop,2

{

xxx1:=xx+10-422

xxx2:=xx+10

imagesearch,vx,vy,%xxx1%,660,%xxx2%,870,*30 %A_scriptDir%\image\item%A_index%.bmp

If errorLevel = 0

{

rex:=1

}


}

return


;************* 랜덤 함수 A P I **************;0x1000BD

PingDelay(delay)

{

pixelgetcolor pingvlaue, 917,915

if (pingvlaue=0x164823)

{

t_time=250

}

else if (pingvlaue=0x0056AF)

{

t_time=500

}

else

{

t_time=900

}

sleep, delay * 1000 + t_time

}

return

RandomClick(x,y,delay)

{

        random,randX, -3, 3

        random,randY, -3, 3

        

        x := x + randX

        y := y + randY


        mouseclick,left, x, y

        sleep, delay * 1000        

}

return

RandomMove(x,y,delay)

{

        random,randX, -3, 3

        random,randY, -3, 3

        

        x := x + randX

        y := y + randY


        mousemove, x, y

        send, '

        sleep, delay * 1000        

}

return

;************* 랜덤 함수 A P I **************



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;여기서 부터 보조컴퓨터용 2번째 스크립트 입니다 ;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;적이없는 안전한 위치가 확인되면 파티초대 신청을 합니다 ;;;;;


Loop

{

sleep,100

WinMove,디아블로 III,,0,0,1282,944

gosub,건달

gosub,멀티플레이어체크

gosub,퀘스트확인창

gosub,퀘스트비수락

gosub,초대수락

gosub,초대나가기확인

}

초대수락:

        imagesearch,vx,vy,1070,663,1200,854,*30, %A_scriptDir%\image\초대수락.bmp

        If errorLevel = 0

        {

                MouseClick, left,  1116,  810

                return

        }

return


초대나가기확인:

        imagesearch,vx,vy,472,541,603,577,*30, %A_scriptDir%\image\초대나가기확인.bmp

        If errorLevel = 0

        {

                MouseClick, left,  546,  559

                return

        }

return


건달:

imagesearch,vx,vy,562,57,620,97,*30 %A_scriptDir%\image\건달.bmp

If errorLevel = 0

{

MouseClick, left,  573,  304

return

}

return


멀티플레이어체크:

imagesearch,vx,vy,955,663,1060,689,*30 %A_scriptDir%\image\멀티플레이어창.bmp

If errorLevel = 0

{

MouseClick, left,  1211,  677

return

}

return


728x90