티스토리 뷰

Chapter.14 ,테라M 매크로(비활성) 만들기 ver1


오토핫키(AutoHotKey)를 활용한 테라M 매크로 만들기 비활성 버전입니다. 

지난 Chapter에서 알아본 코드들을 활용하여 던전을 반복해서 진행하는 스크립트를 짜보도록 하겠습니다.


#스크립트 실행 하시면 이런식으로 작동합니다. 아이디나 기본 정보들 안보이게끔 하려다 보니까 화질이 좋지 않네요.


스크립트 실행전에 간단히 준비하실 이미지들 보시겠습니다.


빨간 네모로 표시 해놓은 부분을 캡쳐하시고 그림판으로 잘라내신뒤 24비트맵 형식으로 저장해주시면됩니다. 제가 준비한 이미지 올려드릴텐데, 작동안되실 수 있습니다. 안되시면 직접 준비해주세요.


Chapter_14img.zip

#이미지 파일.zip 입니다.


# 일반 던전에서 '파티 매칭' 버튼을  Matching.bmp 로 저장했습니다.

# 던전에 들어가서 나오는 우측 상단 '+'이미지를 Plus.bmp 로 저장했습니다.

!!! 이때 그림 판을 이용해 흰생 + 모양을 제외하고는 검은색으로 칠해주세요 올린 이미지 파일 보시면 이해되실 겁니다. 그림판내 기본 색 중에서 검은색으로 해주세요 색상 코드는 0x000000입니다.

# 던전이 시작되면 우측 상단 '+'버튼 아래의 '[던전]' 글씨 중간 지점을 클릭하시면 '수행' 버튼이 나옵니다. 그부분을 Auto.bmp로 저장했습니다.

# 던전이 종료되면 나오는 버튼인 '나가기'의 이미지를 Matching_Exit.bmp 로 저장했습니다.



# 던전이 시작되면 우측 상단 '+'버튼 아래의 '[던전]' 글씨 중간지점의 좌표를 구해주세요. Active Window Info (Window Spy)로 확인하시면 마우스 포지션 값의 Relative: 값을 구해주셔야합니다 제가 찾은 값은

775, 80 입니다.

# '+'이미지의 좌측 상단의 좌표를 구해주세요. 보스 이미지를 스킵할때 사용할 겁니다. 위와 같은 방식으로 찾아주세요 제가 찾은 값은 775,40 입니다.


그럼 지난 챕터와 마찬가지로 #Include 하셔야할 ahk 파일 3개, 오늘 하실 스크립트 같이 올려드리겠습니다.


Chapter_14.zip

#준비할 ahk, Chapter.14 스크립트 원본 입니다.


스크립트 보시겠습니다.

#이해안되시는 부분은 지난 챕터를 봐주세요.


gui,show,w300 h350 center,chapter14

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

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

#gui 설명을 넘어갑니다. 

return


#Include Gdip.ahk

#Include Gdip_ImageSearch.ahk

#Include Search_img.ahk

#준비한 ahk 파일 3개를 순서대로 include 해줍니다.


PostClick(FoundX,FoundY){

#PostMessage를 쓰기 편하게 함수로 만들었습니다.

lparam:=FoundX|FoundY<<16

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

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

Sleep, 1000

}

Start:

gui,Submit,NoHide

#gui의 값을 전송하고 gui를 숨기지 않습니다.

loop{

#loop안의 행동들을 반복합니다.

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

#Nox에 녹스플레이어 ID 값을 저장합니다.

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

PostClick(x,y)

isAuto:=true

#Matching.bmp 이미지를 찾고 클릭합니다.

#isAuto 를 true로 바꿔줍니다. 던전을 자동으로 돌 수있는 '수행'버튼을 누를지에대한

boolean 값입니다.

#01 던전 매칭이 시작됩니다.

}

if(isAuto){

#위에서 true로 주었기때문에 진행됩니다.

sleep,2000

PostClick(775,80)

#'+'이미지 아래 '던전' 글씨의 중앙부분을 클릭합니다. 

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

PostClick(x,y)

isAuto:=false

isSkip:=true

Sleep,5000

#'던전' 텍스트의 좌표를 클릭하면 '수행'이미지가 나옵니다 위에서 눌러줬기때문에 '수행' 이미지를 찾아서 클릭합니다.

#퀘스트 수행은 던전내에서 한번만 실행되면 됩니다. 더이상 누를 필요가 없기 때문에 isAuto를 false로 바꿔줍니다.

#이제 보스 영상이 나올거기 때문에 isSkip을 true로 바꾸어줍니다.

#02 자동으로 사냥합니다.

}

}

if(isSkip){

#위에서 isSkip을 true로 주었기 때문에 진행됩니다.

sleep,1000

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

PostClick(775,40)

isSkip:=false

Sleep,1000

#보스영상이 나오면 '+'이미지가 없어지고 보스영상이 재생됩니다. 이때 스킵을 하려면 기존에

'+' 이미지가 있던 위치를 터치해주면 되는데 위에서 구해뒀던 좌표 값은 775,40 이었습니다.

#'+'이미지가 없어지면 해당 위치를 클릭하고 보스영상을 skip했기 때문에 isSkip은 false로 바꾸어 줍니다. 

#03 보스영상을 스킵했습니다.

}

}

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

PostClick(x,y)

#Matching_Exit.bmp를 찾아서 클릭합니다.

#04 던전을 클리어하고 '나가기를 눌렀습니다'

}

#위의 행동들을 반복합니다.

}

return


F1::

Reload

return


Stop:

ExitApp

return


GuiClose:

ExitApp

return


오토핫키를 이용해서 비활성으로 매크로를 만들어 보았습니다. 다음 Chapter 에서는 토벌대를 반복해서 실행하는 매크로를 만들어 보겠습니다.










댓글