NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

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

    에디터 하드웨어 다클라 매크로를 제작할 때 주의할 점.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 비활성 다클라 매크로를 제작할 때 주의할 점은 아래 글을 참고하세요.

    비활성 다클라 매크로를 제작할 때 주의할 점 ]

     

    오늘 알아볼 내용은 하드웨어 또는 활성 매크로를 다클라로 제작할 때 어떻게 해야 효율적인지 알아보도록 하겠습니다. 기본적인 베이스는 비활성 다클라 매크로를 제작하는것과 비슷합니다. 다만, 몇가지 주의할점들이 있는데요. 이 내용을 모르면 몇차례 제작했던 스크립트를 수정해야 할수도 있습니다. 비활성 매크로는 마우스와 키보드 동작에 간섭이 없습니다. 그래서, [ 서브 스크립트 ]나 [ 스크립트 실행 ] 액션을 이용해서 비동기로 실행할 수 있습니다. 하드웨어 기계식 활성 매크로를 제작할 때도 첫번째 창을 윈도우의 0, 0 좌표로 이동한 후 제작을 시작하세요. 스크립트가 완료될 때까지 창 위치와 크기를 유지해야 합니다.

     

    이 예제를 학습하기 위해 엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    하드웨어 기계식 다클라 매크로를 테스트하기 위해 그림판을 4개 실행 해두었습니다. 스크립트는 1번 그림판(좌측)에서만 작업해야 합니다. 하드웨어 매크로로 동작해야 하기 때문에 외부 API의 시리얼 통신 카테고리에 있는 [ 아두이노 연결 ] 액션을 추가하세요. 비활성 다클라인 경우에는 도구 상자의 응용 프로그램 카테고리의 [ 핸들 추가 ] 액션을 사용하면 됩니다.

    eTqUxMT.png

     

     

    그림판 4개에 5개의 인식 오브젝트가 있습니다. 오랜지색점과 동그라미, 사각형, 오각형, 육각형이 있습니다. 몇개는 겹치지 않게 구성되어 있고, 스크립트는 5개를 인식하게끔 되어 있습니다. 아래 그림과 같이 이미지 매치에 각각의 찾을 이미지를 1부터 5까지 설정 했습니다.

    P4lSsSC.png

     

     

    각각 마우스 클릭도 설정하세요.

    SLtC3IP.png

     

     

    아두이노 연결 액션에서 시각적으로 확인하기 위해 속도를 줄였습니다. 기본 이동 거리는 127인데요. 50으로 줄이고, 이동 반복과 이동 속도는 1로 설정 해주세요. 하드웨어 활성 매크로에서 마우스 속도를 조절하는 방법은 [ 여기 ] 글을 참고하세요.

    csX6IMM.png

     

     

    매크로를 실행 해볼까요? 왼쪽 그림판에서 이미지를 캡쳐해서 동작시켰는데요. 두번째와 세번째를 번갈아가며 클릭하는걸 확인할 수 있습니다. [ 이미지 서치 ]나 [ 이미지 매치 ] 액션은 윈도우 화면에서 이미지를 스캔할 때 좌상단에서 우하단으로 인식합니다. 그래서, 동일한 이미지라도 상단 좌측에 가까울수록 먼저 찾게됩니다.

     

     

    이번에는 각각의 이미지 매치에서 찾기 영역을 설정하고, 다시 실행 해볼께요. 아래 그림과 같이 좌측 그림판의 인식 영역을 설정해줬습니다.

    fXrqEBx.png

     

     

    매크로를 실행해보면 이제 제대로 동작하는군요.

     

     

    스크립트를 복사해서 동일한 스크립트를 3개 더 만듭니다. 스크립트는 Script 1부터 4까지입니다.

    ZLlnImC.png

     

     

    이 스크립트를 실행하면 전부 같은 위치를 클릭하게됩니다. 각각의 그림판을 클릭해야 하기 때문에 [ 오프셋 ]을 추가해서 각각 처리할 수 있도록해줘야 합니다. 오프셋은 좌표를 해당 스크립트에서 설정한만큼 보정 해줍니다. 그림판의 가로 크기가 500이라서 2번 스크립트는 오프셋 500, 3번 스크립트는 오프셋 1000, 4번 스크립트는 오프셋 1500을 설정 했습니다. 그리고, 스크립트가 각각 동작하기 때문에 스크립트가 하나라도 완료되면 아두이노 연결 정보가 사라집니다. 그래서, 각각의 스크립트 마지막에 지연 액션을 줘서 전부 동작할 때까지 스크립트가 완료되지 않도록 처리 했습니다.

    3Adoexr.png

     

     

    매크로를 실행하고 동작을 확인 해보면 모두 잘 클릭하는걸 확인할 수 있습니다.

     

     

    이렇게 문제 없이 동작하려면 옵션에서 마우스 중복 입력 방지 옵션에 체크하고, 대기를 선택하세요.

    gmtT1sy.png

     

     

    만약, 이 옵션을 선택하지 않는다면 마우스가 클릭하기 위해 이동하면서 다른 스크립트의 마우스 클릭과 겹치면, 마우스 이동이 취소되고 다른 클릭이 실행됩니다. 비활성 매크로면 문제가 없겠지만, 하드웨어 기계식 매크로에서는 마우스 동작이 완료될때까지 다른 동작은 대기해야 합니다. 이 부분이 하드웨어 다클라 매크로를 제작할 때 주의해야 할 핵심적인 내용입니다.

     

    이렇게 매크로를 작성해도 되지만, 좀 더 확실하게 관리되는 매크로를 제작하려면 서브 스크립트나 스크립트 실행으로 비동기로 동작하게 만드는게 좋습니다. 스크립트에 추가된 아두이노 연결 액션과 마지막에 추가한 지연 액션을 모두 삭제한 후 저장 해줍니다.

    drIvXeK.png

     

     

    새로운 스크립트를 하나 추가한 후 연결 액션을 추가해줍니다. 설정은 기존과 동일합니다. 스크립트 실행 액션을 4개 추가한 후 각각 스크립트를 설정하세요. 그리고, 비동기 옵션을 True로 선택하세요. 비동기는 각각의 스크립트가 순차적으로 실행되는게 아니라 동시에 실행되도록 해줍니다. 스크립트를 모두 열고 전체 실행하는것과 동일하지만, 자신이 포함된 매인 스크립트의 설정을 상속 받게됩니다. 좀 더 쉽게 말해서 연결 설정이 서브 스크립트나 스크립트 실행 액션에 자동으로 전달됩니다.

    N64zvZg.png

     

     

    이제 매인 스크립트가 종료되면 안되기 때문에 마지막에 무한 반복할 수 있는 루틴을 추가 해줍니다. 그룹 액션과 액션 이동으로 쉽게 처리할 수 있습니다.

    Oxif9nH.png

     

     

    매크로를 실행 해보세요. 아래 동영상과 같이 여러개의 스크립트를 열고 전체 실행하는것과 동일하게 동작합니다.

     

     

    이렇게 매크로를 작동시키면 멀티 스레드로 각각의 스크립트가 모두 동작합니다. 활성 매크로에서 멀티 다클라의 경우 하나의 동작이 끝날때까지 다른 클라이언트들은 대기해야 하는데요. 이렇게 동작하게 만들면 첫번째 클라이언트에서 우편을 확인하고, 두번째 클라이언트는 스킬을 사용한다거나 물약을 먹을 수 있습니다. 세번째 클라이언트는 남아있는 에너지량에 따라 귀환을 하거나 뭔다 다른 동작을 즉시 수행할 수 있습니다. 쉽게 말해서 다클라 매크로에서 동시 다발적으로 조건들을 체크하고, 동작을 작은 단위로 수행해서 마치 비활성 매크로인것처럼 동작하게 만들 수 있습니다. 물론, 비활성 매크로보다는 효율이 떨어집니다^^; 가장 효율적인건 비활성 매크로를 만드는거고 [ ADB와 SCRCPY를 이용해서 매크로를 제작 ]하는겁니다.

     

    예를 들어서 우편이 도착했다고 생각 해봅시다. 우편을 클릭한 후 받기 버튼을 눌러야 할겁니다. 엔지엠 매크로에서 이 루틴을 구현할 때 우편 클릭 > 아이템 받기가 반복될겁니다. 더이상 아이템이 없을때까지요. 우편을 인식하면 같음(참, True) 조건에 설정한 아이디로 이동한 후 아이템이 있는지 체크하고 받기 버튼을 반복하면서 클릭하겠죠? 여기서 좀 더 빠르게 스킬 사용이나 물약을 먹어야 한다면 [ 조건 지연 실행 ] 옵션을 사용할 수 있습니다.

     

     

    이번 내용은 좀 어려울 수 있습니다. 윈도우에서 멀티로 실행할 수 있는 좋은 방법들이 있으나 소프트웨어 신호가 막힌 경우에는 어쩔수 없이 이 내용을 참고해서 매크로를 제작해야 합니다. 게임뿐만 아니라 업무용 윈도우 프로그램중에 WPF와 같은 GUI는 윈도우 오브젝트가 없습니다. 그렇다보니 이 글처럼 여러개의 클라이언트를 실행해놓고 번갈아가면서 겹치지 않게 처리해야 합니다. 웹업무라면 엔지엠 매크로의 웹 API를 사용할 수 있고, 다수의 안드로이드폰으로 홍보나 마케팅에 이용하는 경우도 ADB를 이용해서 쉽게 매크로 제작이 가능합니다. 하지만, 이런 멀티 다클라를 수행할 수 있는 API를 이용할 수 없다면 고민이 많이 필요한 부분이기도 합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    profile_image

    엔지엠소프트웨어님의 댓글

    엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date

    글의 내용이 처음 접하면 어렵고 다소 복잡할 수 있습니다.
    고객 서비스방에 궁금한 내용을 문의하시면 좀 더 자세하게 알려드리겠습니다.