본문 바로가기

반응형

안녕하세요. 이번 강좌에서는 하나의 행동을 계속 반복하는 매크로를 만들어 볼 생각입니다.

게임을 하다보면 같은 작업을 계속 반복하는 일이 발생합니다.

수동으로 돌아가고 변수가 많다면 모르겠지만 요즘 게임은 변수가 적은편이여서 반복적인 요소가 보이는데

자신이 어떻게 반복하고 있는지 알고있다면 하나의 행동을 작성해서 무한으로 반복시켜주면 됩니다.

init:
start := false
Cool := 0.0

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

loop{
	if(start){	; 전투 시작 전
		Sleep, 1000
		Send {4}
		sleep, 1000
		MouseMove, 960, 1080
		sleep, 500
		MouseClick, Left,,,,D
		sleep, 500
		mouseclick, left,,,,u
		sleep, 500
		Send {2}
		Random, Cool, 7000, 10000
		sleep, Cool
		send {PgUp}
		Random, Cool, 7000, 10000
		sleep, Cool
		send {PgUp}
		Random, Cool, 7000, 10000
		sleep, Cool
		send {PgUp}
		Random, Cool, 7000, 10000
		sleep, Cool
		send {PgUp}
		Random, Cool, 7000, 10000
		sleep, Cool
		send {PgUp}
		Random, Cool, 7000, 10000
		sleep, Cool
	}
}
return

F5::
start := true
SoundBeep, 750, 200
return


F6::
start := false
SoundBeep, 550, 200
return

제가 보통 모바일 게임을 하거나 다른 프로그램을 반복적으로 사용할 때 자주 쓰는 코드를 가져왔습니다.

보통 여기서 입맛에 맞게 매일 수정해가며 사용하고 있습니다.

그렇다면 이 프로그램은 어떻게 작동하는 것일까요?

 

컴퓨터 코딩에 익숙하지 않은 사람들이 본다면 이 코드만으로도 혼잡이 올지도 모르겠지만

생각보다 많이 쉬운 내용이니 한번 보시면 쉽게 이해가 가능할겁니다.

 

1. init:

프로그램이 작동중이라면 계속 돌아가는 역할을 하는 것으로 보입니다.

사실 예전에 익혔던 내용이지만 몇 년간 사용하지 않아 자세하게는 설명드리지 못합니다.

프로그램이 시작한 뒤 꺼질때까지 무한정으로 반복해주거나 혹은 다른 프로그램 키를 입력받았을 때

init가 실행되는 것일 수도 있습니다.

 

2. start, cool

'start'는 1강과 같은 용도로 사용됩니다.

반복되는 것을 끝낼 때 사용합니다.

 

하지만 'cool'을 본적이 없습니다. 어디에 사용하는 것일까요?

요즘 모바일 게임에서 같은 시간으로 계속 반복하면 정지를 먹는 일이 있습니다.

그것을 피해가기 위해서 랜덤으로 값을 뽑아 저장해 줄 변수가 하나 필요했습니다.

그래서 하나를 생성해 만들어 두었으며 '정수'면 시간이 너무 딱딱 맞아 정지를 먹을까봐 '실수'로 설정했습니다.

사실 이렇게 해도 정지를 먹을 것 같습니다.

 

3. CoordMode, Pixel, Screen / CoordMode, Mouse, Screen

자신의 용도에 맞는 것을 넣지 않으면 문제가 하나 발생합니다.

그것은 프로그램이 맨 위에 선택되어 있지 않다면 인식이 되지 않는다는 것입니다.

그래서 스크린에 보이는 것을 인식한다는 의미로 넣어주는 것입니다.

 

하지만 현재 매크로에서는 사실상 필요없는 코딩입니다.

애초에 키 입력을 반복하려면 그 반복하려는 프로그램이 맨 위에 선택되어 있어야하기 때문이죠.

따로 나중에 이 코딩에서 이미지 서치같은 것을 안하신다면 굳이 넣을 필요가 없습니다.

 

자세한 내용은 이미지 서치를 사용하게 되었을 때 설명드리겠습니다.

 

4. Send {Key}

이 것은 매크로를 작성할 때 매우 자주 사용하게 되실겁니다.

'Send'는 사전적 내용으로 '보내다'라는 의미를 가지고 있습니다.

네, 그렇습니다. 말 그대로 컴퓨터에 {} 안에 든 내용을 전송해줍니다.

예를 든다면 Send {4} 를 적으면 코드를 실행했을 때 '4' 를 입력해줍니다.

 

그럼 PageUp 같은 것은 입력하지 못하나요?

당연히 못하지 않습니다.

 

https://www.autohotkey.com/docs_1.0/commands/Send.htm

본 링크는 오토핫키에서 제공해주는 커맨드 키입니다.

아래에 살짝 내리시면 표가 있는데 그 안에 여러가지 어떠한 값을 넣으면 무엇이 선택되는지 적혀있습니다. 영어로

여기서 자신이 원하는 키를 찾아서 입력하시면 됩니다.

 

5. MouseMove, X, Y, Speed

1강에서 'Click'을 배웠다면 2강에서는 'Move'를 배웁니다.

'Move'는 움직인다는 의미를 가지고 있죠?

간단하게 'X, Y' 좌표로 이동한다는 의미를 가지고있습니다.

'Speed' 는 사실 저는 사용하지 않습니다만 화면에서 이동하는 속도를 조절할 수 있습니다.

값의 범위는 '0~100'으로 높을수록 느려집니다.

 

6. SoundBeep, Frequency, Duration

간단한 소리를 내주는 코드입니다.

제가 버튼을 눌렀는지 안 눌렀는지 확인하기 위해서 추가되었습니다.

컴퓨터가 렉걸렸을 때 누르면 안 눌리는 경우가 있는데 그럴 경우 아무 반응이 없다면 확인하기 힘들기 때문이죠.

 

이 코드는 약간의 난이도를 가지고 있습니다.

'SoundBeep, 주파수, 지속시간' 으로 왠만한 전공분야 뺨칠거같은 포스를 품기는 이 코드는

혼자 쓸거라면 쓰는 것만 쓰기때문에 어렵지 않습니다.

저 것으로 노래를 만들어서 노셔도 되지만 그런 작업을 하느니 그냥 음악 프로그램으로 음악을 만드시면 됩니다.

 

주파수는 제가 사용하는 주파수와 같게 사용하면 별 문제 없이 쉽게 버튼이 눌렸다는 것을 확인하실 수 있습니다.

그러나 다른 주파수도 설정해보고 싶으신 분들을 위해 범위는 '37~32767' 이라는 것을 알려드립니다.

 

지속시간은 단위가 'ms'로 1000을 적으면 소리가 1초동안 들립니다.

 

1강에서 잡다한 것들이 많다보니 2강에선 딱히 할 것이 없었습니다.

하지만 다들 자주 사용하는 것들이니 외우기보단 그냥 메모장에 적어두고 자신이 필요할 때 꺼내쓰면 좋습니다.

물론 혼자 쓴다면 말이죠.

 

전문적으로 하신다면 검색하실 때 구글에 'Autohotkey code' 를 적으시면

그 코드에 대한 전문적인 정보를 볼 수 있습니다. 영어로

 

그러면 다음 강좌에서는 이미지 서치 기능에 대해서 설명드리겠습니다.

댓글