상세 컨텐츠

본문 제목

크루세이더 퀘스트 매크로 [1강] 루틴별 구상 #1

자작프로그램/히로/프렙-Mobile

by Rahs 2015. 2. 8. 14:47

본문



 


[1강] 루틴별 구상 #1 

1. 크루세이더 퀘스트 구동 감지, 실행 중이 아닌 경우 실행

2. 빵 판매


매크로를 만들어 드립니다가 아니라, 매크로를 만드는 방법을 알려드리자는 취지이기 때문에

아마 1강 보러 오신 분들은 1)루팅을 완료하고, 2)히로매크로 설정 및 기기관리자로 실행도 해주셨고,

3)기본적인 히로매크로 사용법은 본 페이지에서 익히실 수 있으니 익히시면 되겠고, 그 후에 아래 내용을 직접

따라해보시면서 감을 잡아나가시기 바랍니다.

 

 

 

1. 크루세이더 퀘스트 구동 감지, 실행 중이 아닌 경우 실행

 

//01-크퀘실행.txt 

// 이 코드는 크루세이더 퀘스트를 완전히 종료한 상태에서 수행시켜 보세요.

// 반복은 1, 지연시간 2초(토스트 메시지 확인 위해서), 재생속도 1.0으로 해보시면 됩니다^ ^

 

var #check 0
:start

log (0단계) 매크로를 시작합니다.

:checkApp

toast 크루세이더 퀘스트 동작여부 확인 중입니다.
CheckApp #check com.nhnent.SKQUEST

log (1단계) 실행여부 확인합니다.
// 크루세이더 퀘스트가 진행 중인지를 확인하여 진행여부를 #check 변수에 저장합니다.

if #check == 1

log (2단계) 실행 중으로 확인되어 4단계로 진행합니다.

goto :work

// 크루세이더 퀘스트가 실행 중이면 work루틴으로 가고, 실행 중이 아니면 execute 루틴으로 진행합니다.

endif

 

:execute

log (3단계) 크루세이더 퀘스트 어플을 실행합니다.

RunApp com.nhnent.SKQUEST

WaitApp com.nhnent.SKQUEST

// 크루세이더 퀘스트를 실행시키고 실행될 때까지 기다렸다가 다음 루틴으로 진행합니다.


:work

log (4단계) 본 루틴 동작 시작합니다.

 

:end


어때요, 생각보다 어렵지 않죠^ ^

 

log가 굉장히 중요한 기능을 하게 되는데.. 나중에 매크로를 돌리다보면 쥐도새도 모르게 안 돌아가고 있거나, 엉뚱하게

동작하고 있는 경우가 있어요. 그런 상황을 목격하더라도 어디서 어떻게 잘못됐는지를 모르면 고칠 수가 없잖아요?

그래서 기록을 해놓는 것이고 저 기록은 히로매크로 실행 시, 하단 4개 아이콘 중 3번째 아이콘에서 확인할 수 있답니다.


지금까지 바르게 따라오셨다면 게임이 꺼져있는 상태에서 매크로 실행 시, 지금 현재 화면에서는

크루세이더 퀘스트 첫 화면인 아래 그림이 나와 있으셔야 하구요

 

 


히로 매크로의 로그를 확인해보면,

아래와 같이 동작일자, 시간과 함께 진행현황이 일목요연하게 기록되어있겠죠??

 

 

  

 

여기까지 잘 따라오셨겠죠?

 

자, 이제 다음 루틴으로 넘어갑시다.

 

 

2. 빵 판매

 

크루세이더 퀘스트는 가지고 있는 빵이 소유할 수 있는 보관 용량에 가득차게 되면 사냥을 못 가게 되어 있습니다.

그렇다면 빵을 팔아줘야 할텐데, 어떻게 이걸 자동으로 처리할 수 있을까요?

루틴과 코드 함께 보실께요. 다시 한번 말씀드리지만 히로매크로에서 좌표는 폰을 똑바로 들었을 때 좌측 상단이 0, 0입니다.

저는 폰을 왼쪽으로 기울여서 눕혀쓰기 때문에 제 스크린샷에서는 좌측 아래가 0,0이 되겠죠^ ^?

 

1) 기본 마을 화면입니다. 마을 확인 후 [용사관리]를 눌러줄 겁니다.

 - 저는 기본 마을에 왔는지 어떤지를 체크하기 위해 도감 책 옆면(1080, 150) 색상값을 활용할 겁니다 :)

 - 히로매크로의 색상값은 BGR이라고 하는데 스크린샷과 값이 다를 때가 있습니다.

    색상값을 직접 캡쳐해 쓰는 것이 좋으니 아래 참고하셔서 좌표별 색상값 획득 매크로를 별도로 사용하시길 추천드립니다.

 

 

위 색상값 획득 매크로로 확인해보니 해당 좌표의 색상값이 15532031이라고 하네요.

이제 코드를 짜봅니다. (코드 제일 윗칸은 항상 한칸 띄워져있어야 합니다. 왜 그런지는 모르겠지만..)

//02-마을확인.txt

//현재 마을에 있는지를 확인한 후 마을인 것이 확인되면 빵 판매 루틴을 시작합니다.

//아래 코드는 그중 1번 그림에 해당하는 마을 확인 루틴입니다.


var #towncolor 15532031

var #color 0

:start

 

getColor #color 1080 150

if #color == #towncolor

toast 마을에 오신 것이 확인되었습니다.

else

toast 마을 복귀 확인 후 매크로를 재실행 해주세요.

endif

 

:end 




2) 여기서는 별도 확인 거치지 않고 바로 "훈련이 가능한" 영웅 아무나, 제 경우에는 폭스 스나이퍼를 누를 겁니다.

- 마을 화면에서 [용사 관리] 좌표는 (150, 1600), 용사 관리 화면에서 폭스 스나이퍼 좌표는 (880, 520)이네요.

- 좌표 따는 방법은 이전 포스팅에서 확인해주세요 : http:/rahs.tistory.com/53

 

 

 


3) 폭스스나이퍼가 선택이 됐죠? 이번에는 [훈련] 누를 거구요,

- 훈련버튼 좌표는 (180, 1000)

 

 

 


4) 이번에는 이 화면에 들어왔는지를 확인 후,

   판매버튼 색상이 하늘색이면 누르고, 다른 색이면 X로 나가도록 만들겁니다.

- 확인을 위해서 저는 좌표 (190, 1439), 골드의 오른쪽 위 빛나는 부분을 사용할 거구요,

- 판매버튼은 (180, 1170)의 색상값을 먼저 추출한 후, 그 값이 파란색이냐 아니냐로 더 팔 빵이 있냐 없냐를 판단시킬 겁니다.

 

 

 


5) 빵 목록이 나왔습니다. 4개씩 전량 판매할 거구요, 4개를 선택해줄겁니다.

- 찍어주는 좌표 위치는 (900, 1200), (700, 1200), (500, 1200), (300, 1200) 입니다.

 

 

 


6) 선택이 완료되었고 이제 [판매]를 눌러줘야겠죠?

- 판매버튼 좌표는 (150, 2000) 입니다.

 

 

 


7) 골드 획득 [확인]을 눌러줍니다.

- 좌표는 (380, 1300)이구요.

 



8) 빵이 다 팔린 상태면 이 화면이 나올 것이고, 1개라도 남았으면 4번 그림이 되겠죠 :) 4번 루틴으로 되돌립니다.

    8번 그림에서는 보시다시피 판매버튼 색깔이 하늘색이 아니죠? 그럼 X를 한번 누르고..

- X좌표는 (1240, 2240) 입니다.

 

 

 


9) X를 한번 더 누르고.. 왜냐하면 이제 빵 다 팔았으니까 다른 거 하러 가야죠 :)

- 이번 X좌표는 (1260, 2190) 이네요.

 

 

 


10) 자, 그럼 기본 마을 화면으로 돌아왔습니다!!

 

 

 

마을 화면에서 빵을 파는 코드를 이제 짜볼까요?

** 주의 : 아래 코드는 빵 등급 관계없이 빵이 모두 없어질 때까지 판매합니다 **

** 테스트 목적이라면 빵을 판매하는 부분-붉은색 진한 부분-은 빼고 테스트하세요 **


//03-빵판매.txt
//항상 코드 첫 줄은 띄워놔야 정상 동작하는 히로매크로..
//본격 빵팔이(...) 코드 시작합니다.


var #gold 0

var #coincolor 12320767
var #sell 0
var #sellcolor 15518532

:start

//나중에는 모든 루틴을 결합 후 최적화하겠지만
//우선은 루틴별 제작, 정상동작 확인부터 하겠습니다.

 

toast 빵 판매를 시작합니다.
log [5단계]빵 판매 시작
sleep 1000

touchpress 0 150 1600
sleep 1000
//1)그림에서 [용사 관리]메뉴 선택, 향후 로딩을 제외한 화면 이동 시 Delay는 우선은 1초로 쓰겠습니다.

 

touchpress 0 880 500
sleep 1000
// 2)그림에서 [폭스 스나이퍼] 선택

// 훈련이 가능하고, 훈련상태가 MAX가 아닌 영웅을 선택해주셔야 합니다.

// 제 기준에서는 y좌표만 첫번째가 500, 두번째가 800, 세번째가 1100 이런식으로 나가더군요.

 

touchpress 0 180 1000
sleep 1000
// 3)그림에서 [훈련] 선택

 

:breadsell

getColor #gold 190 1439

// 4)그림에서 골드모양 빛나는 부분의 색상을 가져옵니다.

if #gold == #coincolor
sleep 1000
else
goto :breadsell
endif
// 4)그림의 빵 판매 화면이 나올때까지 기다립니다.

// 여기서부터 4)그림으로 완전히 넘어 온 것으로 볼 수 있습니다.

 

getColor #sell 180 1170

// 4)그림에서 판매버튼의 색깔을 가져옵니다.

if #sell == #sellcolor
sleep 500
else
goto :finish
endif

//팔 수 있는 빵이 없으면, 즉 판매버튼이 파란색이 아니면 finish부분으로 이동합니다.

//여기까지 왔다, 즉 판매버튼이 파란색이라는 것은 팔 빵이 있다는 거겠죠?

 

touchpress 0 180 1170
sleep 1000
//4)그림에서 판매버튼을 눌러준 후

touchpress 0 900 1200
sleep 500
touchpress 0 700 1200
sleep 500
touchpress 0 500 1200
sleep 500
touchpress 0 300 1200
sleep 500
// 빵을 모두 선택했습니다. (5번 그림)
// 빵이 1개밖에 없는 상태라도 빈공간을 터치하는 것이기 때문에 관계없습니다.

touchpress 0 150 2000
sleep 1000
//판매 버튼 누릅니다. (6번 그림)

touchpress 0 380 1300
sleep 1000
//확인 버튼 누릅니다. (7번 그림)

goto :breadsell
//다시 빵 판매 화면으로 돌아가서 남은 빵이 있는지를 확인하고 반복해서 판매합니다.


:finish
touchpress 0 1240 2240
sleep 1000
// X를 눌러 빵 판매창을 닫고

touchpress 0 1260 2040
sleep 1000
// 용사 정보 창도 닫고

touchpress 0 1270 2190
sleep 1000
// 용사 관리 창도 닫으면

 

log [6단계]빵 판매완료
toast 빵 판매를 완료하였습니다.

:end


어떤가요! 히로매크로 자체에서 지원하는 기능 수가 적다보니 소스가 쓸데없이 길지만 확실히 따라오실 수는 있으시겠죠?

폰 기종이 다른 분들은 일일이 색상값/좌표값을 새로 따셔야 하는 불편함이 있으시겠지만 그 과정에서 매크로 사용 자체에

익숙해지시게 되고 다른 프로그램이나 게임, 업무, 평소생활 등에서도 유용하게 사용할 수 있을지 모릅니다!! (..어이;;)

 

심지어 폰 기종도 같은 분들은 그대로 코드를 긁어서 써서 적용해보실 수 있다는 장점이 있겠네요^ ^;

매크로라는 것이 어떤 과정을 거쳐 제작되는지 이제 감은 잡으셨죠?

 

2강에서는 0~1강에서 설명드린 부분은 과감하게 생략하고 조금 더 속도를 내어서

[모험 시작]과 스테이지 선택, 사냥 루틴에 대해 알아보도록 하겠습니다 :)

관련글 더보기

댓글 영역