타이틀.jpg

저는 어릴 때 부터 매크로에 관심이 참 많았습니다. 마침 제가 즐겨하던 게임이 매크로가 필수였기 때문에 일찌감치 매크로를 접하고, 사용법을 익혔어요.

게임 속에서 캐릭터에게 명령을 내릴 작은 루틴을 만들고, 고치는 과정이 마치 지금의 스크래치 처럼 어린 저에게 자연스럽게 알고리즘에 대한 개념을 익히게 해준 것 같아요.

어쨌든 저는, 매크로를 사용하는 것을 넘어 만들고 싶어졌습니다. 매크로를 만드는 방법을 찾아보니 그 당시 제가 사용했던 매크로는 대부분 “오토핫키” 라는 스크립트 언어로 만들어졌어요. 저도 그렇게 오토핫키를 배워보게 되었습니다.

이번엔 오토핫키로 이미지를 인식하는 봇 만드는 과정을 짧게 담아보았습니다.


ImageSearch.jpg

ImageSearch

오토핫키는 미리 따 놓은 이미지를 화면 내에서 찾아주는 ImageSearch 라는 명령어를 제공합니다. 기본적인 문법은 아래와 같습니다.

배경화면.jpg

***ImageSearch, X, Y, x1, y1, x2, y2, *30 file
	if ErrorLevel = 0 {
		#이미지 서치 성공
	}
	if ErrorLevel = 1 {
		#이미지 서치 실패
	}
 if ErrorLevel = 2 {
		#오류가 발생하여 이미지 서치 수행 불가
	}***
 
 > X : 이미지를 찾았을 때 영역의 X좌표가 담기는 변수
 > Y : 이미지를 찾았을 때 영역의 Y좌표가 담기는 변수
 > x1 : 이미지 서치를 시작하는 x좌표
 > y1 : 이미지 서치를 시작하는 y좌표
 > x2 : 이미지 서치를 끝내는 x좌표
 > y2 : 이미지 서치를 끝내는 y좌표
 > *30 file : 오차범위와 이미지 파일 경로
(오차범위는 0~255이며 작을 수록 정확한 이미지를 찾음.)
 > ErrorLevel = 0 : 이미지 서치에 성공했을 때의 동작
 > ErrorLevel = 1 : 이미지 서치에 실패했을 때의 동작
 > ErrorLevel = 2 : 오류가 발생하여 이미지 서치를 수행하지 못했을 때의 동작

위 사진을 참고하면 각 파라미터의 용도를 조금 더 이해하기 쉽습니다.


필요한 이미지 구하기

Untitled

저는 인스타그램에서 클릭되지 않은 좋아요 아이콘을 찾아주는 봇을 만들어 보려고 합니다.

인스타그램의 클릭되지 않은 좋아요와 댓글 아이콘 이미지를 캡처해 Like.png라는 파일명으로 저장해 두었습니다.

#F1키를 눌러 스크립트 시작
F1::

#화면의 0, 0 좌표부터 2560, 1080 좌표까지 Like.png 파일과 같은 이미지를 찾아라
ImageSearch X, Y, 0, 0, 2560, 1080, *30 Like.png

	#이미지를 찾았다면 이미지의 위치를 출력해라
	if ErrorLevel = 0
		MsgBox, Empty heart image location : %X%, %Y%

	#이미지를 찾지 못했다면 메시지를 출력해라
	if ErrorLevel = 1
		MsgBox, There is no empty heart image.

그리고 간단히 아래와 같은 스크립트를 작성했습니다.