NGMsoftware

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

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

    팁 앤 테크

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

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

    커스텀 캐릭터 주변으로 아이템 줍는 매크로 만들기. (아이템 루팅 방법)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 게임을 하다보면~ 화면 가운데 고정된 내 케릭터 주변을 클릭해서 아이템을 줏어야 하죠? 빠르게 주변에 떨어진 아이템을 루팅하려면 클릭해야 하는데요. 엔지엠 매크로의 액션을 사용해서 구현할수도 있지만, 오늘은 좀 더 쉽게(?) 만드는 방법을 알아보도록 하겠습니다. 우리가 만드는 기능은 아래와 같습니다.

    hAMUl6p.gif

     

     

    그림판의 오랜지색 점이 내 케릭터의 좌표구요. 주변으로 원을 그리면서 클릭합니다. 너무 빨라서 클릭이 발생했는지 확인이 잘 안됩니다^^; 이 액션은 커스텀 모듈로 만들었기 때문에 엔지엠 프레임워크를 이용해서 커스텀 모듈을 제작하는 방법에 대해 먼저 학습해야 합니다. 커스텀 모듈 제작 가이드는 아래 글을 참고하세요.

    [ 커스텀 모듈 만들기 ]

     

    Visual Studio를 실행한 후 커스텀 모듈 프로젝트를 만들었습니다. 프로젝트 이름은 ①CustomOutsideMouseModule입니다. 엔지엠 프레임워크에서 제공하는 ②③커스텀 모듈 API들을 추가해야 합니다. 마지막으로 ④OutsideMouseModel.cs 클래스를 추가해야 합니다.

    7ciP4Zx.png

     

     

    아래는 전체 코드입니다. 이 코드를 OutsideMouseModel 클래스에 붙여넣기 하세요.

    using NGM.Utility.MouseKeyboardManager;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Design;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomOutsideMouseModule
    {
        [Serializable]
        public class OutsideMouseModel : NGM.Models.Interface.BaseCustomToolModel
        {
            /// <summary>
            /// 도구 상자에 표시될 카테고리 이름을 가져옵니다.
            /// </summary>
            public override string DisplayCategory => "NGMsoftware";
    
            /// <summary>
            /// 도구 상자에 표시될 액션 이름을 가져옵니다.
            /// </summary>
            public override string DisplayName => "아웃사이드 클릭";
    
            [Category("Action")]
            [DisplayName("마우스 좌표")]
            [Description("이 좌표를 중심으로 외각을 클릭합니다.")]
            [Browsable(true)]
            [DefaultValue(typeof(Point), "0, 0")]
            [Editor(typeof(NGM.Models.TypeEditor.MouseTrackingEditor), typeof(UITypeEditor))]
            public Point MousePoint { get; set; }
    
            [Category("Action")]
            [DisplayName("클릭 수")]
            [Description("마우스 좌표 외각으로 클릭할 횟수를 입력하세요.")]
            [Browsable(true)]
            [DefaultValue(8)]
            public int ClickCount { get; set; } = 8;
    
            [Category("Action")]
            [DisplayName("거리")]
            [Description("중심점으로부터 떨어진 거리를 입력하세요.")]
            [Browsable(true)]
            [DefaultValue(30)]
            public int Distance { get; set; } = 30;
    
            [Category("Action")]
            [DisplayName("반복")]
            [Description("거리만큼 증가하면서 반복 수행합니다.")]
            [Browsable(true)]
            [DefaultValue(1)]
            public int Repeat { get; set; } = 1;
    
            [Category("Action")]
            [DisplayName("가중치")]
            [Description("반복 횟수에 따라 거리가 멀어지면, 클릭 횟수를 늘려줍니다.")]
            [Browsable(true)]
            [DefaultValue(1)]
            public int Weight { get; set; } = 1;
    
            public override void Execute()
            {
                int distance = Distance;
                for (int r = 0; r < Repeat; r++)
                {
                    float theta = 0;
                    float deltaTheta = (float)(2 * Math.PI / (ClickCount + (Weight * r)));
                    distance *= (r + 1);
    
                    for (int c = 0; c < ClickCount + (Weight * r); c++)
                    {
                        int x = (int)(MousePoint.X + distance * Math.Cos(theta));
                        int y = (int)(MousePoint.Y + distance * Math.Sin(theta));
                        MouseSimulator.Position = new Point(x, y);
                        MouseSimulator.Click((MouseSimulator.MouseButton)Enum.Parse(typeof(MouseSimulator.MouseButton), "Left"));
                        theta += deltaTheta;
                    }
                }
            }
        }
    }

     

    프로젝트를 컴파일 한 후 엔지엠 에디터에서 모듈을 설치 해줍니다.

    X536Pzb.png

     

     

    사용자 도구에 커스텀 액션이 추가 되었습니다.

    RQZ8kHP.png

     

     

    필요하면 반복하면서 범위를 넓혀갈수도 있습니다.

    aYfOT46.gif

     

     

    좀 더 촘촘하게 클릭하려면 가중치를 늘려보세요.

    Oi1xEQW.gif

     

     

    이 커스텀 모듈은 첨부 파일로 추가되어 있으니, 한번 테스트 해보세요^^; 순수하게 엔지엠 에디터만으로 내 케릭터 주변을 돌면서 클릭하고 싶다면 아래 글을 참고하시면 됩니다. 커스텀 모듈 만들기보다 어쩌면 더 쉬울수도 있는데요. 개발 환경을 갖추는것보다 이게 더 좋은 선택일수도 있어요~

    [ 삼각함수를 이용한 아이템 루팅하는 매크로 만들기 ]

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.