매크로

조회 수 13013 추천 20 댓글 123


안녕하세요~ 바람처럼 입니다~^^


터치와 웨이트이미지 강좌를 쓰고 나서 당분간 좀 쉬려고 했었는데


엄청나게 인기있는 모 스텝분께서 제 밑천을 다 까지 않으면 레벨강등에 회원제재까지 한다고


협박하시는 통에... 힘없는 일반회원인 저로서는 어쩔수 없이 다시 쓰게 되었습니다.. 흑흑~


제 밑천을 다 털어낼테니 제발 짜르지만 말아주세요.... 알고보면 여기 무서운 커뮤니티 랍니다...ㅠㅠ




오늘 털어낼 밑천은 프렙의 프로시져 입니다...


프로그래밍 언어에 친숙한 분들은 익숙한 용어죠...?


그러나 프로그래밍을 잘 모르고 개발쪽 일을 하지 않으시는 분들은 (축복받으신 겁니다~ 할렐루야~!!!)


이 용어의 생소함은 물론이고 어디에 어떻게 써야할지 감을 잡지 못하시리라 생각합니다.


그래서 지금부터 프로시져에 대해 살펴보는 시간을 갖도록 하겠습니다~




1. 프로시져의 정의


프렙에서 프로시져는 일련의 반복된 시퀀스들을 모아놓은 꾸러미로?


반복되는 작업을 편하게 하거나, 레코드가 길어지는 것을 방지하여


사람이 알아보기 쉽고 논리적으로 이해하기 쉬운 시퀀스를 만드는데 사용되는 기능입니다.


또한, 단순하지만 성공/실패의 결과값을 리턴하여 다음 행동을 어떻게 할지 정해줄 수도 있습니다.


일반적인 다른 시퀀스와 달리 프로시져는 프렙의 기능들을 모아놓은 창에 보이지 않습니다.


이말은 바꿔 말하자면, 일반적인 방식으로는 프로시져를 지정할 수 없다는 말과 같습니다.


그럼 어떤 경우에 프로시져를 사용하고, 어떤 방식으로 지정할 수 있는지 하나씩 살펴 보도록 하겠습니다.





2. 프로시져의 지정


매번 강좌때마다 제가 단골로 우려먹는 몬길에서 하트 보내기의 예를 들어 보겠습니다.


지난번 터치와 웨이트이미지 강좌를 통해 하트 보내기 기능을 어떻게 구현할지 감을 잡으셨다면


실제로 시퀀스들을 이용해 제대로 동작하는 하트 보내기 기능을 쉽게 만들 수 있을겁니다.


제가 구현한 하트 보내기는 이렇습니다.


https://i.imgur.com/c38MYEY.png



아주 단순하죠? 먼저 몬길친구 탭에 들어가 차례대로 하트를 보내고


그 다음으로 카톡친구 탭에 들어가 마찬가지로 하트를 보내도록 구현되어 있습니다.


그런데 여기서 가만히 보면, 루프를 돌리면서 하트를 찾고 하트를 클릭하고 대기하고 스크롤 하는 부분이


몬길친구와 카톡친구 부분에 중복되어 구현되어 있습니다.


똑같은 시퀀스가 두 부분에 이용되어 레코드도 길어지고 알아보기도 힘들어지니


이 부분을 프로시져로 만들어 단순하고 깔끔하게 만들어 보겠습니다.




우선 프로시져로 지정할 시퀀스들을 모두 체크한 후, 우상단에 있는 Clip Checked 를 클릭해 줍니다.


https://i.imgur.com/sFgAuxk.png



이렇게 하면 지정할 프로시져의 이름을 물어 봅니다. 우리는 '하트 보내기' 라는 이름으로 지정하겠습니다.


https://i.imgur.com/SQcbjvr.png



아주 쉽죠? 이렇게 시퀀스 선택후 클릭 해 주는 것만으로 프로시져 지정이 끝났습니다.


여기서 한가지 주의하실 점은, 프렙에서는 중복된 프로시져를 허용하지 않습니다.


즉, 프로시져 내부에 또 프로시져가 포함되는 것을 허용하지 않는다는 말입니다.


그래서 이렇게 체크후 프로시져 지정을 하려고 할 때 가끔 보면


Cannot Clip Procedure Item. 이란 메시지가 뜨면서 지정이 되지 않는 경우가 있습니다.


이럴때는 내가 선택한 시퀀스 중에 프로시져가 포함되어 있는지 확인한 후 빼주시면 됩니다.




지정된 프로시져는 어디에 보관될까요?


프렙 레코드 관리화면인 Manage Traces 의 가장 오른쪽에 위치한 PROC 탭에 보관됩니다.


https://i.imgur.com/4c3B3lW.png


방금 우리가 지정한 하트보내기도 저장되어 있는 것을 보실 수 있습니다.


어떤식으로 저장되어 있는지 Edit 로 살펴보도록 하겠습니다.


https://i.imgur.com/wZZM1TR.png


오오~ 신기하군요.. 방금 지정한 시퀀스가 그대로 들어 있는것이 보이네요~


분기에 사용되는 시퀀스 번호도 알아서 다 맞춰져 있습니다. 똑똑한 프렙이군요~^^


그럼 이렇게 만들어진 프로시져를 어떻게 사용할 수 있을지 계속 살펴 보겠습니다.





3.. 프로시져 부르기


힘들게(?) 프로시져를 만들었으면 써먹어야 하겠죠?


우선 아까 보셨던 메인 루틴에서 프로시져로 지정했던 두 부분을 모두 선택하여 지워줍니다.


https://i.imgur.com/0YqqlXj.png



그런 다음, 프로시져가 삽입될 바로 다음 시퀀스를 선택하여 프로시져콜을 클릭합니다.


주의하실 점은 이렇게 삽입될 위치를 지정하지 않으면 프렙에서 모든 시퀀스는 가장 마지막에 추가됩니다.


120dpi 이하에서는 바로 Procedure Call을 클릭하시면 되고


160dpi 이상에서는 오른쪽 아래 [+] Control 을 선택하여 마찬가지로 Procedure Call 을 클릭하면 됩니다.


https://i.imgur.com/KDfrRyQ.png

https://i.imgur.com/7KWCpkJ.png



아까 우리가 만들었던 하트보내기 프로시져가 보이는 군요. 선택합니다.


https://i.imgur.com/XoUgBWd.png



이런 식으로 두군데 모두 프로시져를 불러보니, 오오 놀랍습니다.?


떡하니 프로시져가 레코드 가운데 자리잡고 있네요~


https://i.imgur.com/bhtoUKY.png



어떻습니까? 아까보다 레코드가 훨씬 간결해지고 보기도 편해졌죠?


또한 적절한 이름을 지정하여 프로시져가 하는 역할이 뭔지도 한눈에 파악됩니다.


뿌듯한 마음으로 방금 프로시져를 이용해 새로만든 하트보내기를 실행시켜 보았습니다.


아앗 그러나 이게 웬일입니까? 몬길친구는 잘 동작합니다만


카톡친구는 중간에 보내다 말아 버리는 군요....;;


알고봤더니, 프로시져 내의 루프 횟수가 15로 지정되어 있어서


50명 한정인 몬길친구는 상관없지만, 천명이 넘는 제 카톡친구는 스크롤 횟수가 모자라는군요~


https://i.imgur.com/bYeMpfq.png


어쩔수 없이 루프를 프로시져 밖으로 빼내야 할 것 같습니다.?너무 쉽게 갈려고 했나 봅니다....ㅠㅠ


그리고 이왕이면 스크롤도 밖으로 빼서 프로시져의 리턴 기능에 대해서도 함께 살펴보도록 하겠습니다.





4. 프로시져의 결과값 리턴


프렙의 프로시져에는 단순한 시퀀스의 실행 뿐만이 아니라


해당 프로시져의 동작에 대한 성공/실패 여부를 리턴할 수 있도록 되어 있습니다.


어떤식으로 하는지 살펴 볼까요? 방금 예를 든 하트보내기를 다시 만들어 보겠습니다.




이번에는 루프를 포함하지 않고 실제 하트를 보내는 부분만 선택해 프로시져로 만듭니다.


https://i.imgur.com/nluUboa.png



앞서 했던 작업과 마찬가지로 Clip Checked를 클릭하며 하트보내기 프로시져를 만들고 난 후


해당 부분에 프로시져를 불러서 각각 루프값을 다르게 조정 했습니다.


https://i.imgur.com/WNmCrTB.png



이제는 잘 동작하겠지 하는 순간, 또다른 문제가 발생해 버렸네요~


하트를 찾은 동안은 계속 반복해서 하트를 보내다가


더이상 화면에 하트 이미지가 없으면 스크롤을 해야 합니다.


그런데 우리가 만든 하트보내기 프로시져는 하트를 보내는 기능만이 있을 뿐


루프나 스크롤을 판단하는 부분이 없어 제어가 제대로 되지 않습니다.


그림에서 보자면, 7번 하트보내기가 진행되는 동안은 8번에서 잠시 기다렸다 다시 보내고


만약 더이상 하트이미지가 없으면 9번 스크롤을 실행해 줘야 합니다.




이 문제는 어떻게 해결해야 할까요? 정답은 바로 프로시져의 리턴값 컨트롤 입니다.


우리가 만든 하트보내기 프로시져를 다시 살펴 보겠습니다.


https://i.imgur.com/HQfXbq9.png


여기서는 오로지 하트이미지와 확인창의 클릭 기능만 있을 뿐


이미지 검색 성공/실패에 대한 분기가 없습니다. 그 부분은 메인에 위치하고 있죠.


그럼 이미지 검색의 성공여부를 메인으로 전달하면 어떻게 될까요?


1번 하트이미지 찾는 부분의 시퀀스를 아래와 같이 바꿔 보겠습니다.


https://i.imgur.com/lTEo3oN.png


하트이미지 찾기에 성공했으면 다음 시퀀스로 내려가고


만약 찾는데 실패하면 Abort 해버립니다. 이렇게 지정하면 어떻게 될까요?


여기서 우리는 프렙 시퀀스의 분기항목에 지정하는 Return 과 Abort 의 차이점에 대해 짚어봐야 합니다.


메인시퀀스에서 Return/Abort 는 모두 같은 동작을 합니다. 그자리에서 매크로를 중단해 버리죠.


그러나 프로시져 내부에서 이 두가지 동작은 메인과는 다르게 동작합니다.


Return 은, 프로시져의 동작을 중단하고 메인에서 해당 프로시져를 불렀던 바로 다음 시퀀스로 가게 됩니다.


Abort 또한 매크로를 중단하는게 아닌 Return 과 마찬가지로 메인의 다음 시퀀스로 가게 됩니다.


여기서 프로시져 내의 Return/Abort 차이점은 뭘까요?


바로 메인 시퀀스에서 해당 프로시져의 작동결과의 리턴값을 전달할 수 있다는 점입니다.




메인 레코드로 돌아와서 아래와 같이 프로시져의 분기를 지정해 보겠습니다.


https://i.imgur.com/BzbJHQt.png



이렇게 하면 프로시져 아이콘에 성공/실패에 따른 해당 시퀀스의 번호가 표시됩니다.


https://i.imgur.com/9NTcnjk.png



이제 다시 돌려 보겠습니다. 오오 제대로 잘 동작하는 군요~^^


하트이미지를 못찾은 경우에도 제대로 제어가 전달되어 스크롤이 수행됩니다.






이처럼 프로시져는 반복되는 단순작업을 처리할 뿐만 아니라 결과값까지 리턴할 수 있어서?


좀더 효율적인 시퀀스를 설계하는데?많은 도움을 줍니다.


잘만 사용하면 복잡한 시퀀스와 논리흐름을 알아보기 쉽게 정리하고


작은 분량으로도 복잡한 일을 할 수 있는 스마트한 매크로를 만들 수 있지 않을까요?


아무쪼록 이 강좌가 많은 분들께 도움이 되었으면 합니다~




감사합니다~^^




  • 겨울캠퍼 2014.11.25 22:22

    앗 강좌닷... 매번 감사 드립니다.

  • profile
    숨어야산다 2014.11.25 22:23
    @채원 님덕분에 많은준들이 좋은정보 얻어가네요 ㅎㅎ
    감사합니다
  • profile
    바람처럼 2014.11.25 22:50
    아앗..안되요 이거 비밀이에요...ㅋㅋ
  • profile
    숨어야산다 2014.11.25 23:00
    테일스타 모니터링요원 채원님이 오늘은 조기퇴근하셨나보네요
    아직 댓글을 안다시다니...
  • profile
    채원 2014.11.25 23:19
    집에 오는길이었습니다 ㅋㅋㅋ
    딱 제가 발걸음을 돌릴때 글이 올라왔군요 ~.~!
  • profile
    채원 2014.11.25 23:08

    전 아직도 프로시져내에서 return과 abort의 차이를 모르겠습니다.!

    리턴으로 메인으로 흐름이 넘어가면 on success이고 어볼트로 메인으로 흐름이 넘어가면 fail(timeout) 인겁니까 ?!

    라고 땡깡부려봅니다.


    그리고 ... 스텝이라곤 저혼자뿐인데 ^^;; ㅎㅎㅎ;;;ㅎㅎㅎ;;

  • profile
    바람처럼 2014.11.25 23:10

    위에 예를 들어 주신건 웨이트이미지 구요 프로시져는 On Finish / On Abort 이옵니다~


    한마디로 앞에껀 성공, 뒤에껀 실패라고 생각하면 편하실거에요~

    글구 스텝이 혼자 뿐이셨어요? 전 또 수십명 되는줄 알고....ㅎㅎㅎ

  • profile
    채원 2014.11.25 23:11
    괴씸죄를 적용해야겠군요.
    어떤 불이익을 줄지 고심해보겠습니다 후 +_+
  • profile
    채원 2014.11.25 23:08

    이제 바람님의 강좌만 보면 프렙을 어느정도 다룰 수 있겠군요.

  • profile
    바람처럼 2014.11.25 23:11
    진짜 이제 밑천 다 털었어요~ 남은거 없어요..흑흑~ㅠㅠ
  • profile
    채원 2014.11.25 23:12
    없으면 어떻게 해야할까요 ... ?
    크리에이티브한 사고를 해주시기 바랍니다 !!! -_-^
  • profile
    바람처럼 2014.11.25 23:13
    아앗..창의적으로 사고치란 말씀이신가요?

    아... 여기서 더이상 사고치면 매장 당하지 싶은데..;;
  • profile
    채원 2014.11.25 23:15
    헐 ... 사고치시면 뒷감당을 해드립니다.
    바람처럼 오셨다 바람처럼 가실 수 있도록 ... !!!!!
  • profile
    바람처럼 2014.11.25 23:22
    그게 평소 제 인생관이긴 한데... 채원님 손에 당하고 싶지는 않아요...@@;;
  • profile
    채원 2014.11.25 23:24
    윽 ... 저에게 기회를 주시지 않다니 ... ㅠㅠ
    사일런트킬을 노려야겠군요 ....
  • 올해안에 2014.11.26 00:07

    또 하나의 대박 강좌를 하셨군요...


    밑천이 바닥나면 더 이상 쓸모가 없어지게 됩니다.

    퇴물 취급 받게 되죠... 흐흐흐

    바람님도 이제 여기서 끝인가요....

    아쉽네요.

    가시는 길 고이 보네 드리오리다.


    이제 공부를 해야 할 때입니다.

  • profile
    바람처럼 2014.11.26 01:51
    오...올해님 마저.......ㅠㅠ

    제가 없어지면 뒷일을 부탁할께요...흑~
  • 게임당 2014.11.26 10:29

    오..강좌까지... 대단하세요..감사합니다.!!!

  • Hangoon 2014.11.26 11:26

    프로시져에서 return과 abort의 차이가 궁금했는데 이렇게 사용하는거로군요...

    또 하나 배워갑니다

    감사합니다

  • 미르태풍 2014.11.26 12:31

    좋은 글 감사합니다~~ 프렙을 알게되니 신세계네요 ㅋㅋ

  • 메이지 2014.11.26 20:08

    좋은 강의 감사합니다!

    일련의 시퀀스를 체크후 프로시저로 만드는거군요!?

    지니에서 자작으로 프렙 매크로를 정말 단순하게 돌리고 있는데.. 살짝 고급스럽게 변경 할수 있겠네요 ^^


    바람처럼님!! 질문 하나만 드리겠습니다!

    skip next wait 옵션이 어떤 의미인가요???



  • profile
    바람처럼 2014.11.26 22:00
    제가 쓴 다른강좌 웨이트이미지 편에 상세하게 설명되어 있습니다~
  • 메이지 2014.11.26 22:02
    앗 감사합니다.
    가입한지 얼마 않되서 꼼꼼히 못봤네요!
    찾아보고 열공 할께요!! ^^
  • 삥땅85 2015.01.20 01:19

    많이 배워갑니다.^^

  • 데코 2015.01.23 16:24

    프로그래머분들이 대단하게 느껴지네요.. 정말 잘 배우고 갑니다 ^^

  • profile
    성은남편 2015.01.24 09:05

    아..저 프로시저 안에 리턴과 about 의 개념을 이해 못해서 작업이 진행되지 않은데ㅠㅠ 읽었는데요 이해가 되질 않네요ㅠㅠ 큰일입니다ㅠㅠ

  • 키루스 2015.01.25 02:53

    와 되네요 좋은거 배워감니다?

  • 키루스 2015.01.25 21:19
    프로시져 기능 잘쓰고 있습니다 프로시져 안에 또 넣으면 딱인데 아쉽네요
  • 로폐 2015.01.26 15:31

    프로시져기능을 읽어도 잘 이해가 가지않네요 ㅠㅠ, 오늘도 열공입니다


    그리고 혹시 프렙이 작동도중에 이유없이 중단되는 경우아시나요? 매크로자체에는 이상이없는거같은데 자꾸 멈춰버려서

    고생입니다 ㅠ.ㅠ

  • 초보아빠 2015.02.02 20:40

    좋은거 배워갑니다... 대충감은 이제 오네요

  • 저리가 2015.02.02 22:17

    프렙의 길은 멀고도 험하네요 ㅠㅠㅠ

  • 조나단 2015.02.04 10:48

    아~~~~

    이건 포기다.


    좀 더 연습해보고 해봐야 겠네요.


    여튼 장문의 강좌 감사합니다.

  • 으리의세나 2015.02.04 11:12

    abort 와 return 에 대한부분이 잘 이해가 안되네요....

    어디 자세한 설명이있는 곳이있을까요?

  • 송상 2015.02.04 13:00
    녹화방법중에 프로시져(이미지검색) 심플(터치방식) 이두가지 알고있는데 두가지를 혼합하여 못쓰나요??

    터치방식으로 녹화 한것에 재뽑을 넣고 싶은데 혹시 아시는분 없으신가요

    아직 렙1이라서 글쓰기 안되네요 ㅠㅠ

  • 이정균 2015.02.04 14:08

    혹시 재가?s3로 프랩을 만들었는데 베가시크릿노트 핸드폰으로 db를 가져와서 수정하는 방법은없ㅌ을까요?

  • 간지모기 2015.02.12 00:10

    폰 달라두 디비는 가져 오질건데여 제폰 g2에서 만들어서 동생 s5에 넣어서 이미지랑 좌표만 수정해서 잘쓰고 잇떠여 ㅎ


  • 로기다 2015.02.12 17:15

    잘 배우고 갑니다.^^ 감사합니다.

  • Emp코난 2015.02.12 20:43

    오호 이런기능이 있었군요!!!

  • 메샤 2015.02.16 22:52

    정말 잘 배우고 갑니다

  • 코쟁 2015.02.20 11:39

    잘 배우고 갑니다~

  • 플루티너스 2015.02.24 12:33

    여러번 읽으면서 잘 배워봅니다ㅎ 감사합니다.

  • Cliyarn 2015.03.13 10:31

    프로시저 기능은 처음 알게 됬습니다 ㅎㅎ 감사합니다 ㅎ

  • 이리온 2015.03.18 13:05

    많이 배워갑니다ㅠㅠ 그래도 어렵네요

  • 한도르 2015.03.18 21:54

    return과 abort는 프로시저 내에서의 성공과 실패 결과를 호출한 메인에 알려주는 역할이라 생각하면 되는거죠????

    그 결과에 따라서 프로스저 호출한 메인에서 분기하면 되는거고요..... 좋은 강좌 감사합니다... ?^^;;

  • 쎄놔 2015.03.19 00:31

    어렵네요 ㅠ !! 그래도 도전합니다~

  • 찍히지마라 2015.03.19 16:52

    강좌 감사합니다

  • 빠른판단 2015.03.20 13:01

    강좌감사합니다...


    질문좀요 3번 프로시서부르기? 에서 체크를 다하시고??


    vvLHzqM.png



    요거에 체크올이랑 이런? 도구탭은 어떻게 나오게햇어요??

    다른분들 사진보시면 오른쪽 위에있던데...바람처럼님처럼 저도 위에 도구창이없는데..

    나타나게 하셧네요...? -0-;; 답변부탁드려요^^;;


  • 락샤타 2015.03.27 11:47

    확실히 프로시져를 사용하니 간편해지는군요~ 바람님 덕분에

    프렙을 다루는 방법이 좋아지고 있습니다. 감사합니다~

  • zkwmTl 2015.04.06 21:04

    바람님 몬길매크로 잘 쓰고있습니다 뭐하나만 여쭤볼까합니다 wait app 불러올때 없다는 메시가뜨는데

    이건 어떻게 해결하는건가요???

  • 찰스당 2015.04.08 12:18

    와 어렵네요 한달은 배워야 할 듯


List of Articles
제목 글쓴이 최근변경 추천
프렙의 꽃... 웨이트 이미지 (Wait Image) 163 바람처럼 2020.12.23 47/0
[ Frep 5편 ] 실전! 세븐나이츠 매크로 만들기 179 파더 2020.12.22 38/0
프렙의 만능 해결사... 터치의 모든것~ (2/2) 116 바람처럼 2021.06.19 36/0
프렙의 만능 해결사... 터치의 모든것~ (1/2) 180 바람처럼 2021.06.19 36/0
[ Frep 4편 ] 실전 눈뜨자마자의 동영상촬영... 147 파더 2020.12.22 30/0
[ Frep 1편 ] 초보자가 알아야하는 기본 매크로 팁 326 파더 2022.02.12 29/0
[ Frep 3편 ] 앱과 친해지기... 183 파더 2022.01.04 28/0
[몬길] frep 매크로 아주 간단하게 따라하며 만들기 1편 195 오렌지케이크 2021.05.25 24/0
[ Frep 2편 ] 어떻게 만들지 구상하기! 168 파더 2022.01.04 21/0
프렙의 단순작업 도우미... 프로시져 (Procedure) 123 바람처럼 2020.12.23 20/0
프렙 3.7 의 새로운 기능... 응용편 #2 (영역 & 이미지) 155 바람처럼 2023.07.20 19/0
[Frep] 세나-쫄작 스퀸즈 만들기 방법(엑셀자료) 115 두환애비 2023.01.22 19/0
세나 프랩 간단하게..강좌 117 김부관 2020.12.24 19/0
프렙 3.7 의 새로운 기능... 변수(Variables) 기초편 114 바람처럼 2021.01.04 18/0
프렙에서 타이머를 써보자~! 179 바람처럼 2023.01.16 17/0
프렙 3.7 의 새로운 기능... 조건문(If), 로그(Error, ... 95 바람처럼 2020.12.25 16/0
[Frep] 쫄교체 매크로 동영상 강좌 1 101 제이먼청 2023.01.22 15/0
프렙 3.8 의 새로운 기능들 104 바람처럼 2023.05.26 12/0
[ Frep 6편 ] 세븐나이츠 스킬 추가 하기!! 67 파더 2020.12.23 12/0
프렙 3.7 의 새로운 기능... 응용편 #1 (루프 & 스트링) 107 바람처럼 2021.07.19 11/0
Board Pagination Prev 1 2 Next
/ 2

전체 최신 인기글

전체 주간 인기글