메이플 경매장 매크로 만들기




안녕하세요 :)


한동안 포스팅을 못했는데..

몇개월만에 이렇게 포스팅 하네요.

이번에는 경매장 시세파악 코드를

작성해 보도록 하겠습니다.


포스팅 순서는 경매장 스크립트에 필요한 

숫자 데이터인식과 처리방법 그에 대한

영상및 간략한 설명 순으로 하겠습니다. 



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

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





메이플 경매장 매크로 만들기



여러 게임에서 유저간의 활발한 거래를 위하여 경매장이라는 시스템이 도입되어있습니다.

이러한 경매장에서 원하는 품목의 시세를 실시간으로 가져오는 프로그램을 만들기 위해서는


무엇보다 검색한 아이템의 숫자 이미지를 실제값으로 가져오는 작업이 필요합니다.

ImageSearch , PixelSearch , RPM , ImageData.. 등 여러 방법이 있겠지만


ImageData 를 이용한 방법을 통하여 원하는 품목의 가격정보를 가져오도록 하겠습니다.

단순한 방법으로 구현한다면 이미지서치나 픽셀서치를 이용해 코드작성할수 있습니다.






위 영상은 메이플 게임에서의 경매장 이용모습과 상단의 품목에 대한 가격을 인식하고,

인식하는데 걸리는 시간을 Gui 인터페이스에 표시를 해두도록 코드를 작성한 영상 입니다.


경매장 매크로 영상




코드에 사용한 함수.



BinRead(file, ByRef data, n=0, offset=0)

{

   h := DllCall("CreateFile","Str",file,"Uint",0x80000000,"Uint",3,"UInt",0,"UInt",3,"Uint",0,"UInt",0)

   IfEqual h,-1, SetEnv, ErrorLevel, -1

   IfNotEqual ErrorLevel,0,Return,0

   m = 0

   IfLess offset,0, SetEnv,m,2

   r := DllCall("SetFilePointerEx","Uint",h,"Int64",offset,"UInt *",p,"Int",m)

   IfEqual r,0, SetEnv, ErrorLevel, -3

   IfNotEqual ErrorLevel,0, {

      t = %ErrorLevel%

      DllCall("CloseHandle", "Uint", h)

      ErrorLevel = %t%

      Return 0

   }

   m := DllCall("GetFileSize","UInt",h,"Int64 *",r)

   If (n < 1 or n > m)

       n := m

   Granted := VarSetCapacity(data, n, 0)

   IfLess Granted,%n%, {

      ErrorLevel = Mem=%Granted%

      Return 0

   }

   result := DllCall("ReadFile","UInt",h,"Str",data,"UInt",n,"UInt *",Read,"UInt",0)

   if (!result or Read < n)

       t = -3

   IfNotEqual ErrorLevel,0, SetEnv,t,%ErrorLevel%

   h := DllCall("CloseHandle", "Uint", h)

   IfEqual h,-1, SetEnv, ErrorLevel, -2

   IfNotEqual t,,SetEnv, ErrorLevel, %t%-%ErrorLevel%

   Return Read

}


Bin2Hex(ByRef h, ByRef b, n=0)

{

   format = %A_FormatInteger%

   SetFormat Integer, Hex

   m := VarSetCapacity(b)

   If (n < 1 or n > m)

       n := m

   Address := &b

   h =

   Loop %n%

   {

      x := *Address

      StringTrimLeft x, x, 2

      x = 0%x%

      StringRight x, x, 2

      h = %h%%x%

      Address++

   }

   SetFormat Integer, %format%      ; restore original format

}


Hex2Bin(ByRef @bin, ByRef @hex, _byteNb=0)

{

 local l, data, granted, dataAddress

 If (_byteNb < 1 or _byteNb > dataSize)

 {

  l := StrLen(@hex)

  _byteNb := l // 2

  if (l = 0 or _byteNb * 2 != l)

  {


   ErrorLevel = Param

   Return -1

  }

 }

 granted := VarSetCapacity(@bin, _byteNb, 0)

 if (granted < _byteNb)

 {

  ErrorLevel = Mem=%granted%

  Return -1

 }

 data := RegExReplace(@hex, "..", "0x$0!")

 StringLeft data, data, _byteNb * 5

 dataAddress := &@bin

 Loop Parse, data, !

 {

  DllCall("RtlFillMemory"

    , "UInt", dataAddress++

    , "UInt", 1

    , "UChar", A_LoopField)

 }

 Return _byteNb

}









Posted by Khan64
,

클럽 오디션 매크로 만들기



안녕하세요 :)


오랜만에 이렇게 포스팅 하는것 같습니다.

17년 초부터 업무가 많아 최근에 들어서야

여유가 생겨 이렇게 포스팅 하네요.


이번에는 클럽오디션 이라는 모바일게임의

키노트를 자동으로 인식후 눌러주는 매크로를

만들어 보도록 하겠습니다.


포스팅 순서는 클럽오디션에 대한 게임 안내

간단한 게임방법 에 대한 포스팅 이후 매크로 

 스크립트 일부를 공개하도록 하겠습니다.



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

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






클럽 오디션 모바일 게임 - 간단한 소개


2000년대 초반 음악에 맞추어 마치 악기를 연주하는듯한 플레이로 

큰 인기를 누렸던 pc 게임이 모바일 게임으로도 출시한걸로 알고있습니다.


단순히 리듬에 맞추어 게임을 플레이 하는것뿐 아니라 캐릭터를 원하는 

스타일로 꾸밀수도 있어 많은 여성분들에게 인기를 끌었던 게임이 였죠.


최근 모바일 게임을 pc에서 플레이 할 수 있게 녹스,미뮤,지니모션,블루스택등 

많은 에뮬레이터들이 나와 모바일과 pc게임의 경계가 모호 해지긴 했습니다








클럽 오디션 모바일 게임 - 게임 방법 소개


게임설치이후 튜토리얼을 진행하게 되면 크게 스토리모드 / 커플모드 / 댄싱홀 모드를

중심으로 게임을 즐길 수 있으며 , 자신이 원하는 모드로 게임을 플레이 하시면 됩니다.


기본적으로 게임 플레이방법은 비슷한데 키노트가 2개인 경우와 4개인경우로 나뉩니다.

4개의 키노트를 사용하는것이 훨씬 어려우며 공통적으로 키노트를 모두 입력후에 


마지막으로 디스크를 타이밍에 맞게 터치 해주어야 춤을 추게 되며 콤보 달성시 많은

점수를 획들 할 수 있습니다. 플레이를 하며 느낀점은. 


키노트 2개인경우도 손으로 못누르는 필자의 똥손을 확인하였습니다..

매크로 제작을 진행한 결과는 상당히 만족 스러웠습니다. :)





BPM 자동인식후 자동 조정하며,

정확도는 대략 6~70%정도로 수정해두었습니다.

대기시간 공식을 1ms단위까지 좁혀 계산한다면.. 좀더 정확히 할 수 있겠죠 :) 

처음에 128 이라고 작성된것은 OCR에 의해 자동으로 인식하여 작성된것입니다.



아래 영상은 루비라는 캐시아이템을 자동으로 소모하는 과정 입니다.





     클럽 오디셔 매크로 제작기 - 매크로 제작방법은?


전체소스 공개는 무리가 있어 매크로 제작방법에 대한 

스크립트 안내의 포스팅으로 진행하겠습니다.


아래 스크립트에 대한 설명과 안내를 해두었으며 더이상 바이러스나 랜섬웨어같은 

악성 프로그램에 대한 걱정없이 직접 프로그램을 만들어 보는건 어떨까요?



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

이메일 : cai6452@naver.com






스크립트



중복 이미지서치및 찾은 이미지와 연관된 벼수에 특정 마킹을 남겨

찾은 이미지를 분류하고 순서대로 기억하여 호출하는 방식으로 스크립트를 작성하셔야 합니다.


중복 이미지서치는 여러 방법이 있지만

가장 간단한방법은 ImageSearch 변수를 바꾸어 가며 서치를 진행하시면 됩니다.


먼저 각자의 방식으로 중복이미지서치에 대한 Loop / Settimer / goto / 함수등을  설정합니다.


1. 해당 키 이미지를 중복 서치한뒤에 서치한 순서대로 배열 변수에 저장 합니다,.

2. 아래는 이중배열에 대한 나열로 저장한 배열을 아래 함수를 이용하여 나열 한 이후 

   그 순서대로 호출하여 불러내면 됩니다.

3. BPM 에 따른 최종 디스크 클릭 시간을 달리 주어야 하기 때문에 OCR 프로그램을

   이용하여 BPM 속도를 읽은 이후 슬립시간을 달리 주어 클릭하게 하여야 합니다.


  물론 BPM을 굳이 OCR로 읽어 들일필요는 없으며 숫자이미지인식을 통하여 코딩을

  하여도 무방합니다. 하지만 이미지숫자를 일일이 따기 귀찮다면 OCR을 이용하시면 됩니다 :)

OCR은 문자인식 프로그램으로 Capture2Text 프로그램을 이용하였으며

문자 인식의 경우 숫자나 영문같은경우는 정확도가 매우 높습니다. lol



Sort2DArray(Byref TDArray, KeyName, Order=1) {

   ;TDArray : a two dimensional TDArray

   ;KeyName : the key name to be sorted

   ;Order: 1:Ascending 0:Descending

 

    For index2, obj2 in TDArray {           

        For index, obj in TDArray {

            if (lastIndex = index)

                break

            if !(A_Index = 1) &&  ((Order=1) ? (TDArray[prevIndex][KeyName] > TDArray[index][KeyName]) : (TDArray[prevIndex][KeyName] < TDArray[index][KeyName])) {    

               tmp := TDArray[index][KeyName] 

               TDArray[index][KeyName] := TDArray[prevIndex][KeyName]

               TDArray[prevIndex][KeyName] := tmp  

            }         

            prevIndex := index

        }     

        lastIndex := prevIndex

    }

}



클럽오디션/ 클럽/ 오디션/ 매크로/ 오토핫키 / 리듬게임 / 매크로만들기/ 매크로 제작


매크로 /오토핫키 /클럽 /오디션/

Posted by Khan64
,

오토핫키 스크립트 사용방법.



안녕하세요 :)


오늘은 오토핫키 사용방법에 관하여

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


포스팅 순서로는 먼저

오토핫키 다운로드및 설치 방법과

스크립트 소스를 사용하는 방법에 관하여

차례 대로 포스팅 하도록 하겠습니다 :)




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

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




오토핫키 공식 홈페이 : https://www.autohotkey.com/



오토핫키 다운로드및 설치방법



먼저 오토핫키 공식 홈페이지에서 다운 받을 수 있으며

아래 사진과 같이 최신 버전을 설치해주시면 됩니다.


특별한 이유가 없다면 구버전이 아닌 최신버전을 설치해주시면 됩니다.

구버전의 경우 간혹 특정 라이브러리나 1.1 버전 이후에 적용되는 특정 함수관련하여

작동 하지 않는 경우가 있으니 구버전을 사용하시려면 관련부분을 참고 해주셔야 합니다.





오토핫키 스크립트 사용방법



이렇게 오토핫키를 설치하게 되면 

아래 사진과 같이 바탕화면에 마우스 우클릭을 눌렀을 경우

새로만들기 탭에서 오토핫키 스크립트 파일이 있는것을 확인 할 수 있습니다.


클릭후 오토핫키 파일을 생성하신이후에

우클릭을 눌러 Edit 을 누르거나 메모장으로 여신 이후에

소스코드를 작성한후에 해당 파일을 더블클릭 하면 실행 되며

혹은 오픈 스크립트 소스를 구하셨다면 그안에 복사 후 실행 하시면 됩니다.








마지막으로,


오토핫키의 경우 지원하는 인코딩 방법에 따라 달리 실행 되어 지기도 하는데


이경우엔 우클릭후 연결시스템을 확인하여  


Ansi 32/ Unicode 32 / Unicode 64 중 사용자 환경에 맞는걸 택하여 사용 하셔야 합니다.

오픈 소스 스크립트를 구하셨을 경우 어떠한 파일을 이용하여 실행해야 하는지 확인후 사용 하시면 됩니다 :) 



그럼 이만 포스팅을 마치도록 하겠습니다 (_ _)



'프로그램 안내' 카테고리의 다른 글

디아3 헬퍼 다운및 사용방법  (0) 2017.07.01
디아헬퍼 초간단 설치및 사용방법  (0) 2017.03.14
테일즈위버 사용방법  (0) 2016.05.19
Posted by Khan64
,