만성피로 개발자의 블로그

[Android]루팅없이 안드로이드 게임 매크로 script 작성하기 몬스터샷 버전

작성일 작성자 스푸79

매크로 프로그램 대부분이 스마트폰 루팅을 해야한다.

 

개인적으로 루팅을 굉장히 겁내하는 편이라 루팅없이 할 수 있는 방법이 찾아보았다.

 

루팅 예시는 몬스터샷이라는 카카오 게임으로 하겠다.

 

약간만 응용을 한다면 다른 게임에서도 쉽게 적용할 수 있을 것이다.

 

우선 안드로이드 개발자 사이트에 접속한다.

 

http://developer.android.com/sdk/installing/index.html?pkg=tools

 

 

download the SDK now를 클릭하자.

 

 

 

android-sdk_r24-windows.zip 이거를 클릭해서 다운을 받는다. 그리고 특정 폴더에 압축을 푼다.

 

 

sdk 폴더를 보면 SDK Manager라는 파일이 보인다. 클릭해서 실행한다.

 

아래와 같은 Android SDK Manager 창이 뜨는데 Tools 폴더를 체크해서 하위 내용을 모두 다운 받는다.

 

 

설치가 끝나면 하위 폴더에 platform-tools이 생긴다. 이 폴더에 들어가 보자.

 

 

아래와 같이 adb.exe파일이 보일 것이다.

 

 

저 adb를 이용하여 루팅없이 매크로를 돌릴 것이다.

 

자 이게 몬샷 게임으로 들어가자.

 

게임 매크로의 기본은 반복되는 지점을 찾아내는 것인데,

 

몬스터샷의 반복지점을 찍어보자

 

1. 지역 선택창 

2. 친구 선택창 

3. 모험 시작

4. 자동 버튼 클릭, 전투 중

5. 전투종료 화면 터치

6. 전투종료 후 보상상자 선택

7. 보상 받기

8. 모험 지역선택

 

 

총 단계는 1~8까지이고

 

8에서 다시 모험지역선택을 클릭하면 1번으로 돌아간다.

 

날개가 무한대로 있다면 1에서 8까지 무한반복이 가능하다.

 

해당 그림 창을 찍는 부분의 좌표는 그림판과 같은 그리기 툴에서 좌표값을 얻었다.

 

해당 좌표값을 기반으로 아래와 같은 script를 짜보았다. 내용을 복사한 후 파일 하나를 만들자.

 

필자는 파일명을 m_shot4kakao.txt로 했다.

 

type= user
speed= 1000
start data >>
// 지역 선택창
DispatchPointer(0, 0, 0, 330,770, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 330,770, 0,0,0,0,0,0,0) //release
UserWait(5000) //wait 5 sec
// 친구 선택창
DispatchPointer(0, 0, 0, 635,395, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 635,395, 0,0,0,0,0,0,0) //release
UserWait(5000) //wait 5 sec
// 모험 시작
DispatchPointer(0, 0, 0, 360,1100, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 360,1100, 0,0,0,0,0,0,0) //release
UserWait(15000) //wait 15 sec
// 자동 버튼 클릭, 전투 중
DispatchPointer(0, 0, 0, 680,1080, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 680,1080, 0,0,0,0,0,0,0) //release
UserWait(360000) //wait 360 sec
//전투종료 화면 터치
DispatchPointer(0, 0, 0, 347,653, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 347,653, 0,0,0,0,0,0,0) //release
UserWait(5000) //wait 5 sec
//전투종료 후 보상상자 선택
DispatchPointer(0, 0, 0, 347,653, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 347,653, 0,0,0,0,0,0,0) //release
UserWait(5000) //wait 5 sec
//보상 받기
DispatchPointer(0, 0, 0, 530,1000, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 530,1000, 0,0,0,0,0,0,0) //release
UserWait(5000) //wait 5 sec
//모험 지역선택
DispatchPointer(0, 0, 0, 556,1177, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 556,1177, 0,0,0,0,0,0,0) //release
UserWait(20000) //wait 20 sec
quit


 

대충 코딩에 문외한이라도 감이 올 것이다.

 

DispatchPointer 안에 아까 추출한 단계별 좌표값이 들어가 있다.

 

UseWait는 대기 시간인데 날개 재생성 시간인 7분에 맞춰 보았다.

 

이제 자신의 스마트폰을 컴퓨터에 연결한다.

 

그리고 위의 생성한 파일을 (핸드폰기종)/Phone/Android/data 경로에 복사해서 넣는다.

 

필자의 폰은 갤노트2라서

 

SHV-E250S/Phone/Android/data 이다.

 

각자 기종에 맞는 경로명에 맞춰서 script파일을 넣는다.

 

이제 명령행 창을 열어서 아까 다운받은 adb를 사용하러 가자.

 

윈도우 버튼 클릭 후 보조프로그램 -> 명령 프롬프트를 클릭한다.

 

 

필자는 d드라이브에 설치했다. 각자 설치한 위치로 아래와 같이 cd 명령어를 이용하여 이동한다.

 

 

adb shell을 입력한다.

 

 

ps를 입력해 보자.

 

 

뭔가 리스트가 주르르륵 흘러가는데 중간쯤에 com.ftt.m_shot4kakao라는게 보일 것이다. 이것이 몬샷이 실행되는 프로세스이다.

 

 

자 이제 매크로를 실행할 시간이다.

 

우선 스마트폰에 몬샷을 실행한 후, 1번 지역선택창까지만 이동해 둔다.

 

그리고 아래와 같이 실행한다.

 

 

따라 치기 어렵다는 아래 script를 복사해서 쓰면 된다.

 

뒤에 굵은 숫자는 반복 횟수인데, 보유한 날개만큼 입력해도 되고, 크게 줘도 상관없다.

 

매크로 간격을 7분으로 해놔서 다시 생성될 시간만큼만 진행될 것이다.

 

단, 너무 오래하면 실행해 두면, 스마트폰이 과열에 맛이 갈 수 있다.

 

monkey -p com.ftt.m_shot4kakao -v -v -f storage/sdcard0/Android/data/m_shot4kakao.txt 10

 

정상적으로 실행된다면 아래 그림과 같이 Touch와 Wait 어쩌구 하는 메시지가 화면에 가득찰 것이다. 1~8번까지 행동이 끝날때마다 아래와 같은 메시지를 뿌려준다

만약 실행 중인 매크로를 중지시키려면 ctrl + C를 누른 후, 다시 adb shell 에 들어간다.

 

위에서 했던 ps를 입력한다.

 

 

찾아보면 위와 같이 monkey로 끝나는 게 보일 것이다.

 

해당 라인에 첫 숫자를 확인한 후

 

kill [해당숫자]

 

를 입력한다.

 

위의 경우에는 kill 28769가 되겠다.

 

위의 내용을 잘 응용하면 요새 범란하는 노가다 게임을 정말 스마트하게 대처할 수 있을 것이다.



통합 검색어 입력폼