NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 2
  • 매뉴얼

    NGM 2의 매뉴얼입니다.

    NGM 2

    NGM 2의 매뉴얼입니다.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    NGM Pro를 이용한 매크로 작성법 2탄 - 이미지 컨디션 사용하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. NGM Pro를 이용해서 매크로를 작성할 때 좀 더 복잡한 프로세스를 가지려면, True, False, Do while과 같은 조건식 및 반복기가 필요합니다. 좀 더 단순하게 이야기 하자면, Condition은 특정 조건으로 분기하는 것을 말합니다. 

    보통 매크로에서는 True 또는 False 이미지를 저장해놓고, 매크로가 동작하는 시점에 앞서 저장한 이미지와 현재 화면을 비교하여 동일한 이미지라면 특정 위치로 인덱스를 이동시켜 동작을 건너뛰거나 되돌릴 수 있게 합니다.

    예를 들기에는 게임이 가장 좋습니다-_-; 우선, 캐릭터가 어떤 퀘스트를 수행중이라고 가정합시다. 근데, 이 퀘스트를 완료하는 시점이 랜덤합니다.

    다른 사용자에 의해 몹이 스틸을 당할수도 있고, 레이드나 몹의 리젠 시간이 달라질 수 있는 여러가지 변수가 있기 때문이죠.

    그래서 퀘스트가 완료 되었을 때 표시되는 창 또는 버튼을 캡쳐해서 시스템에 저장하고, 반복 조건을 이용해서 1초마다 한번씩 체크하면 거의 딜레이 없이 퀘스트를 진행할 수 있게 됩니다.

    지루한 반복적인 작업을 매크로로 쉽게 처리할 수 있다는 의미입니다^^

    img.jpg

     

     

    우선 새로운 이미지를 하나 만들어 보도록 하겠습니다.

    NGM Pro의 메뉴에서 파일 > 새로 만들기 > 이미지 컨디션을 선택하세요.

    New Image Condition창이 Popup됩니다. 아래 그림처럼 1번을 클릭하면 화면 캡쳐 상태로 전환됩니다.

    캡쳐할 이미지 영역을 마우스로 드래그한 후 엔터 또는 마우스로 더블 클릭하세요.

    다시 작업하려면 ESC를 누르면 됩니다.

    img.png

     

     

    아래 그림처럼 3개의 플레이어 중 하나가 동작하지 않았다면 시작 버튼을 클릭해서 실행하는 조건을 만들도록 하겠습니다.

    아래 그림처럼 이미지 영역을 지정하세요.

    img.png

     

     

    선택한 곳을 더블클릭하거나 엔터를 치면 아래 처럼 캡쳐한 이미지가 NGM Pro에 추가됩니다. 하지만, 아직 저장된 것은 아닙니다.

    Image Layout 메뉴를 통해 이미지를 간단하게나마 확대 또는 꽉찬 화면으로 확인할 수 있습니다.

    img.png

     

     

    이미지 컨디션의 이름을 지정합니다. 기본 값은 "제목 없음"으로 입력되어 있습니다. 이 이름은 매크로에서 사용하는 이름으로 시스템 내에서 유니크해야 합니다. 신중하게 이름을 지정하세요^^

    디스크립션은 상세 설명을 입력하는 곳입니다. 이름으로 표현할 수 없는 추가적인 정보를 이곳에 저장할 수 있습니다.

    Tolerance(공차)는 이미지 컬러값의 오차를 보정하는 역할을 합니다. 컴퓨터에서는 RGB(A)라는 컬러 값을 사용하는데, 이 값들은 각각 0부터 255까지의 범위안에 존재합니다. 0에 가까울수록 어두워지고 255에 가까워질수록 밝아집니다.

    톨러런스의 역할은 이미지의 색상값이 미묘하게 변하는 것에 대처하기 위한 것으로 사실 크게 변경할 필요는 없을겁니다. 기본값은 50을 가지고 있지만, 0을 입력해도 이미지는 정상적으로 비교합니다.

    Main Window Location은 이미지를 캡쳐한 윈도우의 현재 위치를 나타냅니다. 평소에 사용되지 않는 값이지만, 내부적으로 항상 저장하고 있습니다.

    이 값이 필요한 이유는 비활성 모드에서 창의 절대 좌표를 계산하기 위함입니다. 특별히 수정할 필요는 없습니다.

    (내부 계산 로직에 의해 자동으로 절대 좌표 값을 만들고, 시스템에 반영합니다.)

    Coordinate는 이미지 영역을 계산하는데 필요한 좌표 및 사이즈를 나타냅니다. 이미지를 교체하는 경우 이 값을 수동으로 처리해야 합니다. 이 값은 상당히 신중하게 처리해야 합니다. 이미지를 교체할 일이 없다면 굳이 변경할 필요는 없습니다.

    Save를 눌러 방금 캡쳐한 이미지를 저장하세요.

    저장이 완료되면 파일 > 열기 > 이미지 컨디션을 실행하세요.

    img.png

     

     

    푸른색 Box의 내용은 앞의 이미지 캡쳐와 동일합니다. 단지, 이곳에서 Screen Capture는 이미지를 바꾸는 효과입니다.

    1번과 2번의 차이점은 Screen Capture를 이용하면 모든 정보가 새롭게 갱신된다는 점입니다.

    2번은 이미지만 교체할 수 있습니다. 하지만 이 기능은 동일한 사이즈와 동일한 위치라는 전제가 따릅니다.

    이 전제를 만족하지 않는 경우에는 사용자가 직접 Window Location과 Coordinate 값을 수정해야 합니다.

    img.png

     

     

    Test버튼을 통해서 현재 시스템에 저장한 이미지와 현재 활성화된 창의 이미지를 좌표 값을 기반으로 비교해 줍니다. 

    이미지가 동일할 경우 True를 표시하고, 다를 경우 False를 표시합니다. 

    만약, 동일한 사이즈와 위치인데도 False값이 나온다면 공차를 늘려서 테스트 할 수 있습니다.

    img.png

     

     

    이미지를 비교하면서 공차를 조정할 수 있습니다.

    img.png

     

     

    마지막으로 이미지 컨디션의 핵심 기능인 조건에 대해 알아보겠습니다.

    조건식 또는 반복기에 사용할 이미지를 선정했다면, 이 이미지의 합격 여부를 판단하여 실행을 분기해야 합니다.

    IfElse는 이미지가 같거나 다른 경우 사용합니다.

    아래 이미지와 같으면, 앱 플레이어가 실행중이 아니라는 의미입니다. 따라서, True에는 이 버튼을 클릭하는 매크로의 위치 값을 입력하고 False에는 이 버튼을 클릭하는 부분을 건너뛰고 다음 매크로를 실행하는 부분으로 값을 설정해야 하죠.

    말이 좀 복잡한데요. 시작 버튼이라면 버튼을 누르는 매크로를 실행하고, 실행중이라면 앱 플레이어에서 특정 앱을 실행시키는 매크로로 이동하도록 하면 됩니다.

    img.png

     

     

    두번째 Loop는 True만 존재합니다. 반복기는 특정 조건을 만족할 때만 실행되는 구조입니다. 

    위와는 반대로, 앱 플레이어가 정상적으로 실행중인 상황이라고 가정합시다.

    그런데, 어떤 특정 상황에서 앱 플레이어가 종료될 때가 발생하죠?

    이 때 앱 플레이어가 종료되면, 버튼은 중단이 아니라 시작으로 변경될겁니다.

    이미지 컨디션은 시작 버튼과 같으면 버튼을 클릭하고 반복기를 탈출하게 됩니다.

    한마디로 표현하면, 반복기는 특정 조건을 만족할 때까지 체크하는 로직입니다. 그래서 True일 때 탈출하는 인덱스 값을 넣어줘야 합니다.

    Term은 얼마만큼의 간격으로 조건을 체크할지 결정합니다.

    Limit는 무한 반복에 빠지는 것을 방지하기 위한 값입니다. 이 값은 Term에 따라 영향을 받습니다. 반복 체크 Term이 1초라고 할 때 Limit값을 60으로 해주면, 1분동안 체크하다가 True가 발생하지 않으면 종료하겠다는 의미입니다.

    Break는 Limit에 걸려서 미실행된 상태로 반복기가 종료될 때 이동할 인덱스를 설정합니다.

    뭔가 내용이 복잡해 보일수도 있습니다-_-; 사실 조건식이니 반복기니 하는 이야기들은 프로그래밍을 할 때 사용하는 용어이기 때문입니다.

    img.png

     

     

    매크로를 만드는 것도 일련의 프로세스를 머리속에서 정리하고, 이것들을 절차대로 나열한 후 재조립 과정을 통해 하나의 프로그램을 만드는 과정입니다.

    간단하게 싱글 프로세스 매크로를 만든다면 간단하지만, 멀티 프로세스 매크로를 만드는 것은 상당히 많은 노력이 필요합니다. 물론, 이런 학습에 익숙해져 있다면 크게 어렵지는 않겠죠-_-;

    요즘 아이들이 학교에서 배우는 프로그램들이 이런 매크로와 비슷합니다^^;

    미리 정의된 액션들을 조합하여 문제를 해결해 나가는 걸 배우거든요~

    다음에는 텍스트 관련된 내용을 중점적으로 알아보겠습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.