NGMsoftware

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

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

    팁 앤 테크

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

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

    커스텀 캐이스 바이 캐이스 멀티 이미지 체크, 멀티 이미지 서치에서 공차(Tolerance) 사용하기.

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 보통은 이미지 체크나 이미지 서치를 사용합니다. 물론, 이미지 매치나 욜로 매치등도 있죠. 이런것들을 모두 이미지 조건이라고 부릅니다. 보통은 단순하게 이미지가 같은지 또는 찾았는지를 같음(참: True)과 다름(거짓: False)으로 구분합니다. 일반적으로 아래와 같이 스크립트를 구성하게 됩니다.

    3ThJpmf.png

     

     

    그렇다면 다중 조건을 구성하려면 어떻게 해야 할까요? 프로그래밍이라면 아래와 같이 쉽게 구성할 수 있겠지만, GUI는 약간 더 복잡하게 처리됩니다.

    if (조건1)
    {
        // 참
        if (조건2)
        {
            // 참: 조건1 and 조건 2
        }
        else
        {
            // 거짓: 조건1 or 조건2
        }
    }
    else
    {
        // 거짓
        if (조건2)
        {
            // 참: 조건1 and 조건 2
        }
        else
        {
            // 거짓: 조건1 or 조건2
        }
    }

     

    GUI는 이렇게 처리가 됩니다.

    nYpEyfD.png

     

     

    이렇게 하는건 비효율적입니다. 그래서 멀티 이미지 서치를 이용하면 좀 더 쉽고 직관적으로 다중 조건을 만들 수 있습니다.

    B1OVjMq.png

     

     

    이렇게해서 조건을 다중으로 처리하는 방법을 알아 봤습니다. 하지만, 실행해야 할 루틴이 많은 경우에는 여전히 불편합니다. 그래서 캐이스 바이 캐이스로 처리하는게 효율면에서 가장 좋습니다. 많은 루틴을 처리하려면 커스텀 모듈에 있는 "멀티 이미지 체크, 서치"를 이용해야 합니다. 이 모듈은 [ 여기 ]에서 다운로드 받을 수 있습니다. 모듈이라서 소스를 수정할 수 없습니다. 만약, 기능을 확장해서 사용하려면 [ 여기 ] 에서 전체 코드를 받아야 합니다.

    using System;
    using System.ComponentModel;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization.Formatters.Binary;
    
    namespace CustomFunctionConditionModule
    {
        [Serializable]
        public class MultiImageSearchModel : NGM.Models.Interface.BaseCustomConditionFunctionModel
        {
            [Browsable(false)]
            public new string TrueID { get; set; }
            [Browsable(false)]
            public new string FalseID { get; set; }
    
            private string _imageName1;
            private string _imageName2;
            private string _imageName3;
            private string _imageName4;
            private string _imageName5;
    
            /// <summary>
            /// 도구 상자에 표시할 카테고리 이름입니다.
            /// </summary>
            public override string DisplayCategory { get { return "NGM 커스텀 컨디션 도구"; } }
    
    ...

     

    공차(Tolerance)를 설정하려면 231라인에 아래와 같이 코드를 추가해야 합니다.

            [Category("Action")]
            [DisplayName("공차")]
            [Description("공차를 설정하세요. 기본값은 0입니다.")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Tolerance { get; set; }

     

    278라인은 아래와 같이 수정해야 합니다.

    rect = NGM.Utility.ImageManager.ImageCondition.IsSearch(sourceImage, targetImage, Tolerance, true);

                    if (player.MainHandle == IntPtr.Zero)
                        targetImage = NGM.Utility.ScreenCaptureManager.ScreenShot.GetActiveImage(Rectangle.Empty, player);
                    else
                        targetImage = NGM.Utility.ScreenCaptureManager.ScreenShot.GetInactiveImage(player, Rectangle.Empty, Rectangle.Empty, Rectangle.Empty, false);
    
                    //rect = NGM.Utility.ImageManager.ImageCondition.IsSearch(sourceImage, targetImage, 0, true);
                    rect = NGM.Utility.ImageManager.ImageCondition.IsSearch(sourceImage, targetImage, Tolerance, true);
                    isSame = !rect.IsEmpty;

     

    컴파일 후 커스텀 모듈을 설치하세요. 에디터에서 확인하면 공차 속성이 추가된 것을 확인할 수 있습니다.

    궁금한 사항은 댓글로 남겨주세요^^

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

    댓글목록

    등록된 댓글이 없습니다.