매크로

조회 수 13005 추천 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



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


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






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


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


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


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


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




감사합니다~^^





List of Articles
제목 글쓴이 최근변경 추천
프렙으로 페이스북 복사한글 붙히기 1 kakasi78 2018.11.27 3/0
프렙에서 타이머를 써보자~! 179 바람처럼 2023.01.16 17/0
프렙에서 다이나믹 변수를 써보자~! 67 바람처럼 2023.11.14 6/0
프렙 3.8 의 새로운 기능들 104 바람처럼 2023.05.26 12/0
프렙 3.7 의 새로운 기능... 응용편 #2 (영역 & 이미지) 155 바람처럼 2023.07.20 19/0
프렙 3.7 의 새로운 기능... 응용편 #1 (루프 & 스트링) 107 바람처럼 2021.07.19 11/0
밖에서 frep이 무슨 아이템을 먹고 있나 확인을 해보자... 117 쉐브 2022.11.08 8/0
[Frep] 세나-쫄작 스퀸즈 만들기 방법(엑셀자료) 115 두환애비 2023.01.22 19/0
프렙 3.7 의 새로운 기능... 조건문(If), 로그(Error, ... 95 바람처럼 2020.12.25 16/0
프렙 3.7 의 새로운 기능... 변수(Variables) 기초편 114 바람처럼 2021.01.04 18/0
[몬길] frep 매크로 아주 간단하게 따라하며 만들기 2편 94 오렌지케이크 2024.01.04 10/0
[몬길] frep 매크로 아주 간단하게 따라하며 만들기 1편 195 오렌지케이크 2021.05.25 24/0
세나] 프렙으로 대동단결 2탄 - 프렙 강좌(1) 19 옹스컴 2023.07.27 1/0
[Frep] 쫄교체 매크로 동영상 강좌 2 76 제이먼청 2023.07.21 6/0
[Frep] 쫄교체 매크로 동영상 강좌 1 101 제이먼청 2023.01.22 15/0
간단하게 만드는 7-9쫄 기반 세븐나이츠 3쫄 교체(3) 76 제이먼청 2020.12.24 9/0
간단하게 만드는 7-9쫄 기반 세븐나이츠 3쫄 교체(2) 41 제이먼청 2020.12.24 8/0
간단하게 만드는 7-9쫄 기반 세븐나이츠 3쫄 교체(1) 77 제이먼청 2023.07.27 10/0
세나 프랩 간단하게..강좌 117 김부관 2020.12.24 19/0
프렙의 단순작업 도우미... 프로시져 (Procedure) 123 바람처럼 2020.12.23 20/0
Board Pagination Prev 1 2 Next
/ 2

전체 최신 인기글

전체 주간 인기글