티스토리 뷰

#Chapter.17 ,테라M 매크로(비활성) 만들기 ver4

시작합니다.


오토핫키를 활용한 비활성 매크로(테라M 매크로 만들기) ver4 입니다. 이번 시간에는 지난 시간에 말씀드렸듯이 던전 종류와 횟수를 선택해서 작동하는 스크립트를 짜보겠습니다. 이번에 추가될 명령문은 gui 와 if 입니다. 비교적 간단한 명령문이 천천히 보고 따라해보세요.


#이번 스크립트 실행 화면입니다.


위 이미지를 보시면 던전 Tab 안에 던전 종류들과 횟수를 입력할 수 있는 창이 보이시죠, 던전 이름은 gui,Text 로, 횟수는 gui,Edit 으로 작성된겁니다. 실행순서는 위에서(독립군 보급기지가 1순위) 아래로 실행되며, 모든 던전의 횟수가 0이 되면 실행이 멈춥니다. 스크립트를 보시기 전에 좌표값에 대해 간단히 설명을 드릴게요. 우측에 던전 종류를 선택하는 UI가 있는데요, 저 이미지들은 배경이 투명이고, 자세히 보시면 배경이 바뀌는걸 볼 수 있는데요, 이미지 서치로 클릭을 하기에는 오류가 날 확률이 높습니다. UI위치가 바뀌는 것이 아니니, 좌표값으로 클릭을 하겠습니다.


#좌표값 이미지 입니다.


위 이미지를 보시면 '독립군 보급기지'의 경우 x100,y140 이고, '후카족 마을 수복전'의 경우 x100,y190 인걸 볼 수 있습니다. '밤피르의 저택' 의 경우도 마찬가지로 x100,y240 입니다.

x값은 100으로 고정, y값만 +50 이라는 결과가 나옵니다.


그럼 스크립트 보면서 설명 드리겠습니다.


일단, 이미지파일과 ahk파일들, 스크립트 원본 txt파일 올려드릴게요.

Chapter_17.zip


스크립트 입니다.


gui,show,w300 h350 center,chapter17


gui,Add,Tab,x0 y0 w300 h300 vTAB ,던전|토벌대

gui,Tab,던전

#던전 Tab안에 gui요소를 추가하겠습니다.


gui,Add,Text, x10 y50 w120 h20 , 독립군 보급기지

gui,Add,Text, x10 y80 w120 h20 , 후카족 마을 수복전

gui,Add,Text, x10 y110 w120 h20 , 밤피르의 저택

gui,Add,Text, x10 y140 w120 h20 , 달의 호수 쟁탈전

gui,Add,Text, x10 y170 w120 h20 , 황금의 미궁

gui,Add,Text, x10 y200 w120 h20 , 왕자의 궁전

gui,Add,Text, x10 y230 w120 h20 , 불의 제단

#각 던전 이름들을 Text 로 생성합니다.

gui,Add,Edit, x140 y50 w50 h20 vA01 Number, 0

gui,Add,Edit, x140 y80 w50 h20 vA02 Number, 0

gui,Add,Edit, x140 y110 w50 h20 vA03 Number, 0

gui,Add,Edit, x140 y140 w50 h20 vA04 Number, 0

gui,Add,Edit, x140 y170 w50 h20 vA05 Number, 0

gui,Add,Edit, x140 y200 w50 h20 vA06 Number, 0

gui,Add,Edit, x140 y230 w50 h20 vA07 Number, 0

#각 던전 클리어 횟수를 Edit으로 생성합니다. 각 던전마다 A01~07변수에 저장합니다. 

default값은 0이고, 숫자만 입력할 수 있게 Number 옵션을 줍니다.

gui,Tab,토벌대

#여긴 다음 Chapter에서 할게요.

gui,Tab

gui,Add,Button,x0 y300 w150 h50 gStart, Start

gui,Add,Button,x150 y300 w150 h50 gStop, Stop

return


#Include Gdip.ahk

#Include Gdip_ImageSearch.ahk

#Include Search_img.ahk


PostClick(FoundX,FoundY){

lparam:=FoundX|FoundY<<16

PostMessage,0x201,1,%lparam%,,녹스 플레이어

PostMessage,0x202,0,%lparam%,,녹스 플레이어

Sleep, 1000

}


Auto_D(MatchingName,MatchingY,ClearNum){

#Auto_D에 파라미터값을 적용시켜줍니다 왼쪽부터 던전 이름, 위에서 좌표값을 설명 드렸듯이 바뀌는 y값,

던전 클리어 횟수를 받습니다.


sleep,2000

PostClick(100,MatchingY)

#x값은 100이죠? x100 그리고 파라미터로 받은 y값을 클릭합니다.

sleep,1000

loop{

WinGet,Nox,ID,녹스 플레이어

if(Search_img("Matching.bmp",Nox,x,y)){

if(ClearNum=0){

break

#클리어 횟수가 0이되면 loop를 종료합니다.

}

PostClick(x,y)

isAuto:=true

}

if(isAuto){

sleep,2000

PostClick(775,80)

if(Search_img("Auto.bmp",Nox,x,y)){

PostClick(x,y)

isAuto:=false

isSkip:=true

Sleep,5000

}

}

if(isSkip){

sleep,1000

if(Search_img("Plus.bmp",Nox,x,y)=false){

PostClick(775,40)

isSkip:=false

Sleep,1000

}

}

if(Search_img("Matching_Exit.bmp",Nox,x,y)){

ClearNum-=1

GuiControl,,%MatchingName%,%ClearNum%

Gui,Submit,NoHide

sleep,1000

#'나가기' 이미지를 클릭하기전, ClearNum을 1줄여주고, gui창의 값 또한 1줄여줍니다.

PostClick(x,y)

}

}

}

Auto_T(){


loop{

WinGet,Nox,ID,녹스 플레이어

if(Search_img("Matching.bmp",Nox,x,y)){

PostClick(x,y)

isAuto:=true

}

if(isAuto){

sleep,2000

PostClick(775,80)

if(Search_img("Auto.bmp",Nox,x,y)){

PostClick(x,y)

isAuto:=false

Sleep,5000

}

}

if(Search_img("Matching_Exit.bmp",Nox,x,y)){

PostClick(x,y)

}

}

}


Start:

gui,Submit,NoHide

if(TAB="던전"){

if(A01>0){

Auto_D("A01",140,A01)

#gui창에서 받은 값이 0보다 크면 작동합니다.

#A01(독립군 보급기지)의 값이 0보다 크면 if문이 실행되고, Auto_D()의 파라미터로 A01, y좌표 값인

140, 그리고 gui창에서 받은 클리어 횟수를 담은 변수 A01를 넣어줍니다.

#아래 if들도 같은 조건들이니 설명은 넘어갑니다.

}

if(A02>0){

Auto_D("A02",190,A02)

}

if(A03>0){

Auto_D("A03",240,A03)

}

if(A04>0){

Auto_D("A04",290,A04)

}

if(A05>0){

Auto_D("A05",340,A05)

}

if(A06>0){

Auto_D("A06",390,A06)

}

if(A07>0){

Auto_D("A07",440,A07)

}


}else if(TAB="토벌대"){

Auto_T()

}

return



Stop:

ExitApp

return


GuiClose:

ExitApp

return



#이번 Capter에서는 던전 클리어를 좀더 세부적으로 설정하고 반복하는 스크립트를 만들어 보았는데요, 다음 시간에는 토벌대 쪽을 조정해볼겠습니다.

 

댓글