티스토리 뷰

이전 Chapter에서 던전과 토벌대 매크로를 만들어 보았습니다.

이번 시간에는 만들었던 던전과 토벌대 매크로를 하나로 합쳐보겠습니다.

gui를 살짝 바꿔보았습니다.


#아래는 실행 화면입니다.


보시면 일반 던전과 일반 토벌대가 나뉘어져 있죠? 던전을 선택하면 던전을 도는 스크립트를, 

토벌대를 선택하면 토벌대를 도는 스크립트를 실행시킬겁니다. 여기서 gui checkbox를 사용했는데요.

한쪽이 눌릴때 다른 한쪽이 눌려져있다면 체크를 지워주어야 하는데 설명을 드릴테지만 어렵다 싶으시면 그냥 넘어가셔도 됩니다.



스크립트가 많이 길어져서 일단 원본 파일을 올려드린뒤 설명과 스크립트를 같이 보여드리는 방식으로 진행하겠습니다. 


Chapter_09_txt.txt

#원본 스크립트 입니다.



gui, Show, w300 h200 Center, Chapter09

gui, Add, Checkbox, x50 y50 w100 h50 gCheck_D vCheck_VD, 일반 던전

#Checkbox를 생성합니다. 클릭시 Check_D가 실행됩니다. Checkbox의 값은 (선택=1,비선택=0) Check_VD에 저장됩니다. 이름은 '일반 던전' 입니다

gui, Add, Checkbox, x150 y50 w100 h50 gCheck_T vCheck_VT, 일반 토벌대

#Checkbox를 생성합니다. 클릭시 Check_T가 실행됩니다. Checkbox의 값은 (선택=1,비선택=0) Check_VT에 저장됩니다. 이름은 '일반 토벌대' 입니다

gui, Add, Button, x150 y100 w50 h50 gStart, Start

gui, Add, Button, x200 y100 w50 h50 gStop, Stop

return


img_search(IMG_Name,ByRef vx,ByRef vy){

WinActivate, 녹스 플레이어

ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *10 %IMG_Name%

if(ErrorLevel=0){

vx:=fx

vy:=fy

return true

}else{

return false

}

}


Send_Clikc(FoundX,FoundY){

Send {Click %FoundX% %FoundY%}

}


Auto_D(){

#이전 시간에 만들었던 던전 매크로 스크립트를 함수로 빼냈습니다. ()이 표시는 들어갈 값이 없더라도 적어주어야합니다. 이거 함수다 라고 알려주는겁니다.

isStop:=false

isClick:=true

isSkip:=false


loop{

if(img_search("Matching.bmp",x,y)){

isClick:=true

Send_Clikc(x,y)

Sleep,1000

}

if(isClick){

if(img_search("Auto.bmp",x,y)){

Send_Clikc(x,y+40)

sleep,1000

}

if(img_search("Auto_02.bmp",x,y)){

isClick:=false

isSkip:=true

Send_Clikc(x,y)

sleep,1000

}

}

if(isSkip){

if(img_search("Auto.bmp",x,y)=false){

isSkip:=false

Send_Clikc(775,42)

sleep,1000

}

}

if(img_search("Exit.bmp",x,y)){

Send_Clikc(x,y)

sleep,5000

}

if(isStop){

break

}

}

}


Auto_T(){

#이전 시간에 만든 토벌대 매크로 스크립트를 함수로 빼냈습니다.

isStop:=false

isClick:=true


loop{

if(img_search("Matching.bmp",x,y)){

isClick:=true

Send_Clikc(x,y)

Sleep,1000

}

if(isClick){

if(img_search("Auto.bmp",x,y)=false){

x:=775

y:=82

Send_Clikc(x,y)

sleep,1000

}

if(img_search("Auto_02.bmp",x,y)){

isClick:=false

Send_Clikc(x,y)

sleep,1000

}

}

if(img_search("Exit.bmp",x,y)){

Send_Clikc(x,y)

sleep,5000

}

if(isStop){

break

}

}

}


Check_D:

#여기가 이해하시기 힘드실수 있어요. '일반 던전' checkbox에 이벤트가 발생하면 들어옵니다.

if(Check_VT=1){

#'일반 토벌대'의 값을 확인합니다. '1'이면 check가 되었다는 겁니다.

GuiControl,,Check_VT,0

#값이 '1'이라면 (check가 되어있는 상태)라면 '일반 토벌대'의 값을 0(체크 해지 상태)로 바꿉니다.

}

gui,Submit,NoHide

#gui의 값을 넣어줍니다. 

return


Check_T:

#위와 반대로 생각하시면됩니다. '일반 토벌대'를 클릭했는데 '일반 던전'의 값이 '1'이면 바꾸어줍니다.

if(Check_VD=1){

GuiControl,,Check_VD,0

}

gui,Submit,NoHide

return


Start:

if(Check_VD=1){

Auto_D()

#선택한 값이 '일반 던전'이면 실행됩니다.

}else if(Check_VT=1){

Auto_T()

#선택한 값이 '일반 토벌대'이면 실행됩니다.

}else{

MsgBox, 던정 종류를 선택해!!!

}

#else if 는 처음 다루는데요, if는 값을 찾고 값이 참일때 진행이되죠 else는 그이외의 값이면 진행이됩니다.

else if는 if에서 else에 가기전에 조건을 검사하는데요. 말이 어렵죠. 이해가 안되시면 넘어가세요.

시간날때 설명드리겠습니다.

return


Stop:

ExitApp

return


GuiClose:

ExitApp

return


일반 던전과 일반 토벌대 매크로를 합쳐보았습니다.

다음 Chapter에서는 gui창에서 던전을 선택하고, 횟수까지 정해서 진행하는 스크립트를 짜보겠습니다.


댓글