바람의나라 비활성 테스트















'프로그램 영상' 카테고리의 다른 글

메이플 매크로 영상  (7) 2018.01.07
버블팡 매크로 영상  (0) 2018.01.07
메이플 룬 매크로 영상  (6) 2018.01.07
클럽오디션 매크로 영상  (8) 2018.01.07
Posted by Khan64
,

메이플 사냥 매크로

















메이플 사냥 매크로




Posted by Khan64
,

메이플 채집 매크로 만들기



안녕하세요.


오늘은 메이플 채집매크로 만들기에 관한

포스팅을 하도록 하겠습니다.



포스팅은 채집 매크로에 이용 될

타겟 추적및 이동코드 구현에 대해서

작성및 코드 안내를 하도록 하겠습니다.



시작하기전 당부의 말씀을 드리면 본 포스팅에서 프로그램 배포는 하지않습니다.

제작방법을 알려드리는 포스팅 이며 제작방법에 대한 강의나 스크립트 의뢰는 가능합니다 :D


메이플스토리 채집 매크로


메이플스토리 채집 매크로

메이플 채집 매크로 만들기


[타겟 추적및 이동 코드 구현하기]



기본적으로 채집 매크로를 만들기 위해서는 타겟까지 찾아가도록 코드를 작성해야 합니다.

여러가지의 채집 대상중에서도 특정 타겟만을 채집하기 위함입니다.


다양한 방법이 있지만 해당 게임과 같이 직교좌표 에서는 메모리를 따는것보다

이미지 서치를 활용하는것이 더 간결하게 코드를 작성 할 수 있습니다.




여기서 이용되는 3개의 이미지가 있습니다.


첫번째, 화면내에서 타겟이 되는 이미지. 01.bmp

두번째, 화면내에서 자신의 기준이 되는 이미지. 02.bmp

세번째, 미니맵내에서 자신의 위치를 좌표화 하기위한 기준 이미지. 03.bmp


첫번째 조건은 화면내 타겟이미지가 있는가 입니다.

굳이 화면에 찾아갈곳이 없는데 쓰레드를 낭비할 필요는 없습니다.

때문에 화면내 타겟이미지가 있을경우 원하는 좌표화를 진행 할수있도록 조건문을 작성합니다.


두번째는 미니맵 내에서 자신의 좌표 위치를 찾고, 타겟이미지를 미니맵 내에 자신과 같이

좌표화를 진행하여 실제 미니맵내 타겟위치가 표시가 되는것처럼 작업을 할겁니다.


사실 이부분은 굳이 미니맵내에 자신과, 룬을모두 좌표화 

하지않고도 직접 이동을 하게 해주어도 무방 합니다. 


다만 이렇게좌표화를 특정공간에 진행하는 이유는 타겟위치까지 찾아가기 위해 

매번 이미지서치하는것보다 한번에 원하는 위치를 찍고 이동할때까지는 이동만 하도록 하게하면

코드는 좀더 내부적으로 간결해지고 구성상 조금더 깔끔한 구성이 될수 있습니다.




아래는 실제 채집 매크로를 만들면서 작성하였던 타겟이동및 추적에 관한 실제 코드중 일부입니다.



  ImageSearch, lx, ly, stx1, sty1, stx2, sty2, *80 %A_ScriptDir%/Image/01.bmp

  If Errorlevel = 0

  {

    ImageSearch, tx, ty, 7, 40, 170, 140, *60 %A_ScriptDir%/Image/03.bmp

    If Errorlevel = 0

    {

      ImageSearch, cx, cy, 5, 30, 1020, 680, *100 %A_ScriptDir%/Image/02.bmp

      If Errorlevel = 0

      {

        If (cx>lx)

          Setx:=cx-35

        If (cx<lx)

          Setx:=cx+10

      }

      Rxv1:=tx+floor((lx-Setx-65)/16.1)

      Rxv2:=tx+floor((lx-Setx+75)/16.1)

    }

  

  ....




      Rxv1:=tx+floor((lx-Setx-65)/16.1)

      Rxv2:=tx+floor((lx-Setx+75)/16.1)


목표위치는 하나인데 위 코드와 같이 두개의 지점을 둔이유는

멈추는 지점을 다르게 하고, 오차범위를 미리 설정해주기 위함입니다.

목표 지점은 하나이나 타겟으로부터 어디에 위치해있는지에 따라 조금 앞에서 멈추도록 말입니다.


위 계산식의 16.1은 좌표화 되는거리와 실제거리차의 비율 입니다.

SetX 를 설정한 이유는 타겟이미지로부터 어떤 방향에 있는지에따라 

기준치를 좀더 세밀하게 조정하기 위해 설정해둔 변수입니다.


계산식을 풀이하자면 미니맵내 자신의위치(tx) 로부터 얼만큼 떨어져있는지 계산하여 

변수 Rxv1~2 에 저장한다는 뜻입니다.





메이플스토리 채집 매크로


메이플스토리 채집 매크로

메이플 채집 매크로 만들기


위 영상은 실제 완성된 코드의 영상으로 

사실 하나의 완벽한 채집 매크로를 만들기 위해서는 다른 요소의 코드작성이 필요합니다.


문제의 소지가 있을수있어 전체 코드공개는 못하지만 작성된 코드의 원리는 같습니다.

그래픽 개체의 이용과 이미지서치의 활용 입니다.


추후 기회가 되면 더많은 오픈소스와 자료로 포스팅 하도록 하겠습니다 :)



코드 작성에 대해 궁금한점이 있으시거나 

오토핫키 스크립트 작성법 혹은 다른 스크립트 제작의뢰 요청시 아래 메일로 연락주세요.

이메일 : cai6452@naver.com



Posted by Khan64
,

메이플 매크로 영상













아래 영상은 룬 매크로 영상입니다.


스크립트 작성법 , 코드 작성에 관하여 궁금한점이 있으시면 아래 메일로 연락주세요.

이메일 : cai6452@naver.com




'프로그램 영상' 카테고리의 다른 글

바람의나라 비활성 매크로 테스트.  (11) 2018.11.01
버블팡 매크로 영상  (0) 2018.01.07
메이플 룬 매크로 영상  (6) 2018.01.07
클럽오디션 매크로 영상  (8) 2018.01.07
Posted by Khan64
,

버블팡 매크로 영상












아래 영상은 버블팡 매크로 영상입니다.


코드 작성에 관하여 궁금한점이 있으시거나 스크립트 작성법, 코드의뢰시 아래 메일로 연락주세요.

이메일 : cai6452@naver.com




'프로그램 영상' 카테고리의 다른 글

바람의나라 비활성 매크로 테스트.  (11) 2018.11.01
메이플 매크로 영상  (7) 2018.01.07
메이플 룬 매크로 영상  (6) 2018.01.07
클럽오디션 매크로 영상  (8) 2018.01.07
Posted by Khan64
,

메이플 룬 매크로 영상












아래 영상은 룬 매크로 영상입니다.


스크립트 작성법 , 코드 작성에 관하여 궁금한점이 있으시면 아래 메일로 연락주세요.

이메일 : cai6452@naver.com


2018/01/11

메이플 룬 매크로 영상



2018/09/12

'프로그램 영상' 카테고리의 다른 글

바람의나라 비활성 매크로 테스트.  (11) 2018.11.01
메이플 매크로 영상  (7) 2018.01.07
버블팡 매크로 영상  (0) 2018.01.07
클럽오디션 매크로 영상  (8) 2018.01.07
Posted by Khan64
,

클럽오디션 매크로 영상












아래 영상은 클럽오디션 매크로 영상입니다.


코드 작성에 관하여 궁금한점이 있으시거나 스크립트 작성법, 코드의뢰시 아래 메일로 연락주세요.

이메일 : cai6452@naver.com




'프로그램 영상' 카테고리의 다른 글

바람의나라 비활성 매크로 테스트.  (11) 2018.11.01
메이플 매크로 영상  (7) 2018.01.07
버블팡 매크로 영상  (0) 2018.01.07
메이플 룬 매크로 영상  (6) 2018.01.07
Posted by Khan64
,

룬 해제 매크로 만들기



안녕하세요 :D


오늘은 메이플 룬해제 매크로를

만들어 보려 합니다.


특수한 경우에 미니게임처럼 등장하는 것으로,

지난 포스팅에서 소개했던 클럽오디션 게임과 

방법은 유사하나 좀더 단순한 구조인듯 합니다.


포스팅 순서는 간략한 설명글과 코드작성시

사용하였던 함수소개후 마무리 하도록 하겠습니다.



시작하기 전 당부의 말씀을 드리면 본 포스팅은 프로그램을 판매하거나 배포하지 않습니다.

제작 방법을 알려드리는 포스팅이며 제작방법에 대한 강의나 기타 스크립트 의뢰는 가능합니다 :D



특정 방향키를 정해진 순서에 따라 입력하여 플레이 하는게임들.



메이플 룬해제 미니게임 매크로 만들기


지난 포스팅 에선 Sort2DArray 함수를 이용하여 서치 하였던 이미지를 순서대로 나열하도록

알고리즘을 구성 하였지만, 이번 적용 대상은 보다 조금 단순한 구조 이기 때문에 해당 함수는

사용하지 않았습니다.


다만 이번 포스팅에서 다루는 부분은 GDI (Graphic Device Interface) 라는 그래픽 구현장치를

이용하려 합니다. GDI 란 그래픽 디바이스를 이용하여 그림을 그릴수있도록 AP에게 제공하는

모든 기능을 통틀어 GDI라고 하며, AP는 GDI를 이용하여 그래픽을 구현하는것입니다.



이것이 필요한 이유는, 어떠한 이미지를 서치하는데 있어 색이 변하거나, 혹은 크기가 변하거나

하는 경우에 따라서 해당이미지를 받아 우리가 원하는 그림으로 그려줄 수 있기 때문입니다.



2018/10/19


2018/01/02


2018/01/05


[메이플 룬 매크로]


2018/09/12



사용된 명령어



문제가 될 수 있는부분이 있어 구체적인 코드는 생략하도록 하겠습니다.


기본적인 이미지의 분류 방법은 픽셀서치를 사용하여도,

이미지서치를 사용하여도 상관은없습니다.


영상과 같이 흑백화한 이미지를 통해 원하는 값을 찾아내는것도

위에 언급한 GDI 장치를 이용한것이구요.


혹은 픽셀값을 이용해도 무방 합니다. 아래와 같은 단순한 코드를

이용해서도 원하는 키패드를 찾을 수도 있습니다.



GetCCD(code, stnd)
{
  Loop, 3 {
    StringMid,gcd,code,stnd,2
    If gcd<=ff
      result=3
    If gcd<=af
      result=2
    If gcd<=45
      result=1
   
BMPH =
( Join
%BMPH%
%result%
)

stnd+=2
}
return BMPH
}


지난번  Sort2DArray 함수를 이용하여 키패드를 검색하고

입력받는 방법에 관한 부분은 아래 포스팅을 참고하시면 됩니다.


http://haha92.tistory.com/36



오토핫키 스크립트 작성법이나 다른 스크립트 제작 의뢰도 같이 받고 있습니다.

이메일 : cai6452@naver.com






Posted by Khan64
,

피싱마스터 매크로 만들기



안녕하세요 :)


이번 포스팅은 피싱마스터 모바일 게임

매크로만들기에 관한 포스팅을 하겠습니다.


피싱마스터 모바일 게임은 낚시 게임으로

낚시의 캐스팅, 챔질, 릴링의 요소가 잘갖추어진 

게임으로 실제 낚시형태와 유사한듯합니다.



포스팅순서는 피싱마스터 게임에대한 간략한 소개와

비활성 이미지서치에대한 포스팅을 하도록 하겠습니다.


시작하기전 당부의 말씀을 드리면 본 포스팅은 프로그램 배포는 하지않습니다.

제작방법을 알려드리는 포스팅 이며 제작방법에 대한 강의나 스크립트 의뢰는 가능합니다 :D


피싱마스터 매크로 만들기 피싱마스터 매크로 만들기

피싱마스터 매크로 만들기 피싱마스터 매크로 만들기


피싱마스터 모바일 게임 



게임빌에서 개발한 모바일 낚시 게임으로 , 에너지를 소모하여 플레이 할 수 있습니다.

에너지는 일정시간이후 회복이 되거나, 캐시 구매를 통해 얻을수 있는 스타로 구매할 수 있습니다.


기본 조작은 낚시대를 물가로 던지는 캐스팅과, 낚아올리는 챔질, 물고기를 끌고오는 릴링으로

구성되어 있으며 물고기의 상태에 따라 게이지등 공략에 약간의 차이가 있습니다.


낚시 게임이지만 특유의 그래픽적인 요소도 잘 살려낸 게임 입니다.

각 캐릭터마다 다양한 코스튬을 장착 할 수 있으며 다양한 미끼를 사용할 수 있습니다.



피싱마스터 매크로 만들기 피싱마스터 매크로 만들기


피싱마스터 매크로 만들기 피싱마스터 매크로 만들기

피싱 마스터 매크로 제작 - 매크로 제작 방법은 ?


전체 소스를 공개하기에는 무리가 있어 

제작방법에 대한 안내의 포스팅으로 진행하겠습니다.


아래는 피싱마스터 매크로를 제작할때 사용한 비활성 이미지서치 함수와에 대한

안내가 있으니 직접 제작해보실 분들은 관련 함수를 참고하시면 좋을듯합니다.



오토핫키 스크립트 작성법이나 다른 스크립트 제작의뢰도 같이 받고있습니다.

이메일 : cai6452@naver.com


피싱마스터 매크로 만들기 피싱마스터 매크로 만들기

피싱마스터 매크로 - 스크립트 제작방법



물론 이미지서치는 굳이 비활성 이미지서치를 사용할 필요는 없습니다.

활성 ImageSearch 명령어로도 충분히 제작이 가능하며 

오히려 더 쉽게 코드를 작성 할 수 있습니다.


* Gdip ImageSearch를 사용하기 위해서는 Gdip 라이브러리가 필요합니다.


1.    먼저 반복구문의 형태를 구성해야 합니다. 

Loop 문으로 할건지, Settimer 로 할건지 Goto 로 할건지 정한이후

반복구문안에 이미지서치 함수를 사용하여 조건문을 구성합니다.


2.    이미지서치 성공의 경우 ControlClick 혹은 MouseClick 명령어를 사용해서 

클릭이벤트를 발생 합니다. 끊김이나 오류없는 반복을 위해서는 예외로 나타날수있는

팝업 메세지나 문구에대한 이미지 반응도 염두하여 코드를 작성해야 합니다.



Gdip_ImageSearch(pBitmapHaystack,pBitmapNeedle,ByRef OutputList=""

,OuterX1=0,OuterY1=0,OuterX2=0,OuterY2=0,Variation=0,Trans=""

,SearchDirection=1,Instances=1,LineDelim="`n",CoordDelim=",") {


    ; Some validations that can be done before proceeding any further

    If !( pBitmapHaystack && pBitmapNeedle )

        Return -1001

    If Variation not between 0 and 255

        return -1002

    If ( ( OuterX1 < 0 ) || ( OuterY1 < 0 ) )

        return -1003

    If SearchDirection not between 1 and 8

        SearchDirection := 1

    If ( Instances < 0 )

        Instances := 0


    ; Getting the dimensions and locking the bits [haystack]

    Gdip_GetImageDimensions(pBitmapHaystack,hWidth,hHeight)

    ; Last parameter being 1 says the LockMode flag is "READ only"

    If Gdip_LockBits(pBitmapHaystack,0,0,hWidth,hHeight,hStride,hScan,hBitmapData,1)

    OR !(hWidth := NumGet(hBitmapData,0))

    OR !(hHeight := NumGet(hBitmapData,4))

        Return -1004


    ; Careful! From this point on, we must do the following before returning:

    ; - unlock haystack bits


    ; Getting the dimensions and locking the bits [needle]

    Gdip_GetImageDimensions(pBitmapNeedle,nWidth,nHeight)

    ; If Trans is correctly specified, create a backup of the original needle bitmap

    ; and modify the current one, setting the desired color as transparent.

    ; Also, since a copy is created, we must remember to dispose the new bitmap later.

    ; This whole thing has to be done before locking the bits.

    If Trans between 0 and 0xFFFFFF

    {

        pOriginalBmpNeedle := pBitmapNeedle

        pBitmapNeedle := Gdip_CloneBitmapArea(pOriginalBmpNeedle,0,0,nWidth,nHeight)

        Gdip_SetBitmapTransColor(pBitmapNeedle,Trans)

        DumpCurrentNeedle := true

    }


    ; Careful! From this point on, we must do the following before returning:

    ; - unlock haystack bits

    ; - dispose current needle bitmap (if necessary)


    If Gdip_LockBits(pBitmapNeedle,0,0,nWidth,nHeight,nStride,nScan,nBitmapData)

    OR !(nWidth := NumGet(nBitmapData,0))

    OR !(nHeight := NumGet(nBitmapData,4))

    {

        If ( DumpCurrentNeedle )

            Gdip_DisposeImage(pBitmapNeedle)

        Gdip_UnlockBits(pBitmapHaystack,hBitmapData)

        Return -1005

    }

    

    ; Careful! From this point on, we must do the following before returning:

    ; - unlock haystack bits

    ; - unlock needle bits

    ; - dispose current needle bitmap (if necessary)


    ; Adjust the search box. "OuterX2,OuterY2" will be the last pixel evaluated

    ; as possibly matching with the needle's first pixel. So, we must avoid going

    ; beyond this maximum final coordinate.

    OuterX2 := ( !OuterX2 ? hWidth-nWidth+1 : OuterX2-nWidth+1 )

    OuterY2 := ( !OuterY2 ? hHeight-nHeight+1 : OuterY2-nHeight+1 )


    OutputCount := Gdip_MultiLockedBitsSearch(hStride,hScan,hWidth,hHeight

    ,nStride,nScan,nWidth,nHeight,OutputList,OuterX1,OuterY1,OuterX2,OuterY2

    ,Variation,SearchDirection,Instances,LineDelim,CoordDelim)


    Gdip_UnlockBits(pBitmapHaystack,hBitmapData)

    Gdip_UnlockBits(pBitmapNeedle,nBitmapData)

    If ( DumpCurrentNeedle )

        Gdip_DisposeImage(pBitmapNeedle)


    Return OutputCount

}



피싱마스터 매크로 만들기 피싱마스터매크로 매크로 피싱마스터

Posted by Khan64
,

메이플 거짓말탐지기 매크로 만들기




안녕하세요 :)


이번 포스팅에선 메이플 스토리 거짓말탐지기에

관한 매크로를 만들어 보았습니다.


포스팅 순서는 코드 작성 방식에 관한 간략한 내용과

코드작성후 촬영한 영상, 방해요소에 대한 순서로

작성 하도록 하겠습니다.



시작하기 전 당부의 말씀을 드리면 본 포스팅은 프로그램을 판매하거나 배포하지 않습니다.




메이플 거짓말탐지기 매크로 만들기



메이플에서 자동사냥 플레이어를 막기위해 도입된 시스템으로 그 역할은 어느정도는 잘 수행하고 있는것 같습니다. 패턴인식이나, 이미지서치, ocr 같은 방응형 프로그램으로는 직접풀기에는 어려움이 있기도 하구요.


키보드 자체에도 녹화 매크로기능이 있는 것부터 ,관련 유틸까지 매크로를 구하는데 어려움이 없어, 사용하는 유저들이 많지만 이러한 외부적인 요소 때문에 직접 해제는 어렵더라도 알림정도로 사용하려는 분들이 꽤 많은듯 합니다.


창을 여러개 띄어둔이후에 'Errorlevel = 1' 을 이용해 알림만 받아서 사용하는 방법이나,

카카오톡과 같은 SNS를 이용해서 알림을 전송받고 해제하도록 사용하시는 분들도 있을겁니다.  

이번 포스팅 에서는 해당 이미지를 촬영하고, SNS로 전송, 답변을 받기까지 작성해보았습니다.



메이플 거짓말 탐지기 알리미




메이플 거짓말탐지기 매크로 만들기




서치이후에 찾아낸 좌표의 변수를 기억하고 해당 좌표부터 일정영역까지 

외부 캠 어플리케이션을 이용해서 촬영하도록 하였습니다. 

촬영이후에는 카카오톡으로 촬영한 gif 파일을 보내었습니다.


여기서 한가지 예상하지 못했던점은, 한글을 전송한이후에 Clipboard 에 저장한 단어를 

붙여넣기(Ctrl+v/Shift+Insert)로 보낼 수가 없었습니다.


때문에 입력받은 한글을 한글 자모 개별로 키 입력을 하도록 코드를 작성해야 했습니다.

입력받은 문장을 우선 한글자씩 뽑아낸뒤 초성과 중성, 종성으로 분리하도록 진행하였습니다.

여기서 주의해야 하는점은 초성과 종성은 배당번호가 겹받침 때문에 다른코드가 나오게됩니다.


때문에 종성의 경우 한번더 변환되도록 코드를 작성해야 합니다. 

실제로 한글에서 사용가능한 모든 글자수는 11172 자로서 한글<>유니코드 변환공식을 보면


[{(초성)×588}+{(중성)×28}+(종성)]+44032


추출할 한글 유니코드값에서 44032를 빼준이후에 28로 나눈 나머지가

바로 한번더 변환과정을 거쳐야할 종성코드가 되겠습니다.





초성 ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ, ㄲ, ㄸ, ㅃ, ㅆ, ㅉ
중성 ㅏ, ㅑ, ㅓ,ㅕ, ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ, ㅐ, ㅒ, ㅔ, ㅖ, ㅘ, ㅙ, ㅚ, ㅝ, ㅞ, ㅟ, ㅢ 
종성 ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ, ㄲ, ㄳ, ㄵ, ㄶ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅄ, 


19×21(초+중) + 19×21×27(초+중+종) = 11172 입니다.



메이플 거짓말 탐지기 매크로 만들기



위와 같은 방식으로 한글을 전송받지 않고도 편법으로 조금더 쉬운방법은 있습니다.

한글의 경우 합성자모 (ㄻ , ㅙ ...) 와 같은것때문에 키보드와 서로 대응되지 않습니다.


실제 'ㄱ' 을 Clipboard 에 저장한이후 

한영키를 번갈아가며 누르면서 Sendinput, %Clipboard% 명령어를 내보내면 ㄱ 만 나오는대신에


' r ' 를 Clipbaoard 에 저장한 이후 

한영키를 번갈아가며 누르면서 Sendinput, %Clipboard% 명령어를 내보내면 r , ㄱ 두가지가 나오는것을 확인할 수 있습니다. 



여기서 조금 살펴보면 영어로 입력을 받았을경우 별다른 과정없이 한영키 입력하나로

한글로 바로 대응시켜 입력을 보낼수 있는것을 알 수 있습니다.





현재 한글입력인지 영어 입력인지 확인하는 함수.

HanEnCheck()

IfEqual, hWnd,, WinGet, hWnd, ID, A 

DefaultIMEWnd  := DllCall( "imm32\ImmGetDefaultIMEWnd", "UInt", hWnd) 

DetectSaved = %A_DetectHiddenWindows% 

DetectHiddenWindows, On 

SendMessage, 0x283, 5, 0,, ehl_id %DefaultIMEWnd% 

IfNotEqual, A_DetectHiddenWindows, %DetectSaved%, DetectHiddenWindows, %DetectSaved% 

Return  ErrorLevel 

}



메이플스토리 메이플 메이플매크로 거짓말탐지기 거탐 알리미 알림이 거탐알리미 거탐알림이

메이플거탐 메이플 거탐 메이플 거탐매크로 거탐매크로알리미 탐지기알리미 탐지기 알림이

탐지기알림이 거짓말 탐지기거탐매크로 거탐거탐거탐매크로 거탐 매크로 거탐매크로



Posted by Khan64
,