메이플 채집 매크로 만들기



안녕하세요.


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

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



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

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

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



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

제작방법을 알려드리는 포스팅 이며 제작방법에 대한 강의나 스크립트 의뢰는 가능합니다 :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
,

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




안녕하세요 :)


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

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


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

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

작성 하도록 하겠습니다.



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




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



메이플에서 자동사냥 플레이어를 막기위해 도입된 시스템으로 그 역할은 어느정도는 잘 수행하고 있는것 같습니다. 패턴인식이나, 이미지서치, 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
,

메이플스토리 매크로 만들기




안녕하세요

오늘은 메이플스토리 매크로에 대한

제작 포스트를 쓰도록 하겠습니다.


먼저 진행하기 앞서 찾아와주신

모든분들 정말 감사합니다.   :)


포스팅은 제작기에 대한 간략한 설명

어떠한 방식으로 만드는지, 제작후 영상,

마지막으로 테스트 스크립트 공개순으로 

포스팅 하였습니다.


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

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



메이플 매크로


메이플스토리 매크로 제작이야기 - 1



사실 작년 초여름 이미 메이플 스토리 매크로를 제작했었고 제작내용에 관하여 포스트 한 적이

있었습니다. 하지만 한시적으로 소수인원을 대상으로 테스트정도만 진행하였고 포스트 글또한

금방 내려두었습니다.  그동안 메일이나 쪽지등으로 매크로를 공유받고 싶다는 요청의 연락을

매우 많이 받았었습니다만 개인적으로 답장을 보내드리지 못해서 죄송했습니다.


오늘은 단순히 메이플스토리 매크로를 만들고 그에관한 자료 공유 포스트가 아니라 직접만들고

제작당시 작성했던 소스를 공개할 예정입니다.   여기서 소스란 하나의 프로그램이 되기전,

즉 컴파일하기이전의 것으로 매크로가 어떻게 작동하는지 그 방법을 모두 살펴 볼 수 있습니다.


대부분의 매크로 만드시는분들은 개인적으로 쓰시거나 / 비싸게 팔거나 / 비공개 커뮤니티를 통해

공유하는 방식으로 사용합니다. 이유는 매크로 배포는 약관위반과 더불어  법률 위반이기 때문입니다.

또한 사용하는것 자체만으로도 약관상 위배 이기때문에 매크로의 제작및 사용여부는 본인의 판단하에

이루어져야 할것입니다. 




서론이 길었지만,

어쨋든 오늘 이포스트가 다 끝날때 쯤에는 들러주신 모든분들이

원하는 정보를 얻으시고 그 지식을 함께 공유해 나갈 수 있었으면 좋겠습니다.




메이플스토리 매크로 제작과정 - 2



첫째로 매크로는 AutoHotkey 를 이용해서 제작하려고 합니다.

가볍고 꽤 강력한 프리웨어로서 C를 기반으로두었기때문에 매크로 이외에도 그 쓰임새가 넓습니다.


둘째로 이번 제작을 해볼 게임은 " 메이플스토리 " 입니다.

워낙 유명한 게임이니 대부분 아시리라 생각합니다. 예전에 만들어둔 백업자료가 거의다 날라가고

남은게 이미지자료 정도 뿐이 안되서 빨리작업한데다가  많은분들이 쉽게 따라하실 수 있도록 하기

위하여 쉬운명령어들로만 구성하였습니다.


자동사냥 매크로가 단순하다 뛰어나다의 그 기준은

얼마나 예외옵션을 많이두는지 / 가독성이 얼마나 뛰어나는지, 에서 차이가 나게 됩니다.


예외옵션이란 매크로는 사용자가 입력한 명령에서 절대 벗어나지 않습니다.

하지만 모든상황에는 예외가 발생합니다. 이러한 예외처리를 해두지 않으면 그 상황에서

아무 입력이 안되어 정지하거나, 반대로 꼬여버리는 현상이 발생하게 됩니다.

혹은 예외옵션을 활용하여 인공지능인척(?) 도 가능합니다. 이런 활용적인부분은

나중에 따로 포스트 하도록 하겠습니다.


게임매크로는 뭐라해도 반응속도가 생명인만큼 가독성이 뛰어나야 우리가 원하는 속도의

매크로를 만들 수 가 있겠습니다 :) 소스를 보기좋게 정리하는것부터가 그 시작입니다.

그이후에야 알고리즘의 개선이나 서브루틴및 함수의 활용이 더해지는거라고 생각합니다.







아래는 이번주 제작했던 메이플스토리 매크로 영상 입니다.





메이플 스토리 매크로 제작은? - 3



사실은 매크로는 자신이 어떻게 만드냐에 따라 그 기능과 효율차이가 많이 납니다.

또한 스크립트에 많은 기능을 담을수록 힘들고 어려워 집니다. 


위 사진처럼 1000줄을 쓸수도.. 15000줄을 쓸수도 300줄을 쓸수도

그 기능에 따라 소스의 길이나 내용은 완전 달라집니다.


스크립트를 전부 공개하는것은 악용될 소지가 많아 영상처럼 테스트용으로 

작성했던 스크립트만 공개 하도록 하겠습니다. 해당 스크립트를 기반으로 다양한 기능을

추가해보시거나 소스를 응용하여 직접 만들어 보시는건 어떨까요? :)


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

이메일 : cai6452@naver.com







스크립트




Gui,3: +LastFound +AlwaysOnTop -Caption +ToolWindow 

Gui,3: Add, Button, x20 y10 w82 h16 gBop,Option

Gui,3: Add, Button, x20 y30 w82 h16 gBst,Start

Gui,3: Add, Picture, x0 y0 BackgroundTrans, C:\KHAN\Mps\bn.png

Gui,3: Show, x400 y100 w500 h357, Mps


Gui,1: Color, FFFAFA

Gui,1: Add, GroupBox, x11 y14 w250 h190 cgreen, Option

Gui,1: Add, GroupBox, x271 y14 w180 h85 cgreen, Sub Skill

Gui,1: Add, GroupBox, x271 y100 w180 h82 cgreen, Buff

Gui,1: Add, Text, x23 y47 w70 h20 , 사냥터

Gui,1: Add, Text, x23 y87 w100 h20 , 물약  f11/f12

Gui,1: Add, Text, x23 y117 w100 h20 , 탐지기 알림

Gui,1: Add, Text, x23 y167 w50 h20 , 주스킬

Gui,1: Add, Text, x153 y167 w50 h20 , 점프

Gui,1: Add, Text, x425 y39 w15 h20, /s

Gui,1: Add, Text, x425 y69 w15 h20, /s

Gui,1: Add, Text, x425 y122 w15 h20, /s

Gui,1: Add, Text, x425 y152 w15 h20, /s


Gui,1: Add, ComboBox, x101 y44 w150 h100 vBa, 또 다른 망각의길4|남겨진 용의 둥지1|준비중

Gui,1: Add, Radio, x121 y84 w50 h20 vR1, On

Gui,1: Add, Radio, x171 y84 w70 h20 , Off

Gui,1: Add, Radio, x121 y114 w50 h20 Group vR2, On

Gui,1: Add, Radio, x171 y114 w70 h20, Off

Gui,1: Add, ComboBox, x74 y164 w60 h80 vB1, Ctrl||Shift|Alt|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|f11

Gui,1: Add, ComboBox, x191 y164 w60 h80 vB2, Alt||Shift|Ctrl|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z


Gui,1: Add, CheckBox, x281 y36 w20 h20 vC1,

Gui,1: Add, CheckBox, x281 y66 w20 h20 vC2,

Gui,1: Add, ComboBox, x305 y36 w65 h60 vB3, a||b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

Gui,1: Add, ComboBox, x305 y66 w65 h60 vB4, a||b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

Gui,1: Add, Edit, x381 y36 w40 h24 vE1,10

Gui,1: Add, Edit, x381 y66 w40 h24 vE2,10


Gui,1: Add, CheckBox, x281 y119 w20 h20 vC3,

Gui,1: Add, CheckBox, x281 y149 w20 h20 vC4, 

Gui,1: Add, ComboBox, x305 y119 w65 h60 vB5, PgDn||PgUp|Home|End|Ins|Del|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

Gui,1: Add, ComboBox, x305 y149 w65 h60 vB6, PgUp||PgDn|Home|End|Ins|Del|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

Gui,1: Add, Edit, x381 y119 w40 h24 vE3, 60

Gui,1: Add, Edit, x381 y149 w40 h24 vE4, 60


Gui,1: Add, Button, x271 y185 w85 h20 gBld, Load

Gui,1: Add, Button, x366 y185 w85 h20 gBok, Ok


OnMessage(0x201, "WM_LBUTTONDOWN")

WM_LBUTTONDOWN() 

PostMessage, 0xA1, 2,,, A 

}

WinSet, Transparent, 205 , Mps

WinSet, Region, R35-35 W500 H357 0-0

Pause

return


Bop:

Gui,1: +LastFound +AlwaysOnTop -Caption +ToolWindow 

Gui,1: Show, x700 y400 h272 w576, option

WinSet, Transparent, 230 , option

WinSet, Region, R10-10 W576 H272 0-0

Gui,Submit,nohide

return


Bld:

IniRead, L_C1, C:/KHAN/Mps/save.ini, ini, C1, 0 

GuiControl,,C1, %L_C1% 

IniRead, L_C2, C:/KHAN/Mps/save.ini, ini, C2, 0 

GuiControl,,C2, %L_C2% 

IniRead, L_C3, C:/KHAN/Mps/save.ini, ini, C3, 0 

GuiControl,,C3, %L_C3% 

IniRead, L_C4, C:/KHAN/Mps/save.ini, ini, C4, 0 

GuiControl,,C4, %L_C4% 

IniRead, L_E1, C:/KHAN/Mps/save.ini, ini, E1, 0 

GuiControl,,E1, %L_E1% 

IniRead, L_E2, C:/KHAN/Mps/save.ini, ini, E2, 0 

GuiControl,,E2, %L_E2% 

IniRead, L_E3, C:/KHAN/Mps/save.ini, ini, E3, 0 

GuiControl,,E3, %L_E3% 

IniRead, L_E4, C:/KHAN/Mps/save.ini, ini, E4, 0 

GuiControl,,E4, %L_E4% 

IniRead, L_R1, C:/KHAN/Mps/save.ini, ini, R1, 0 

GuiControl,,R1, %L_R1% 

IniRead, L_R2, C:/KHAN/Mps/save.ini, ini, R2, 0 

GuiControl,,R2, %L_R2% 

IniRead, L_B1, C:/KHAN/Mps/save.ini, ini, B1, 0 

GuiControl,,B1, %L_B1% 

IniRead, L_B2, C:/KHAN/Mps/save.ini, ini, B2, 0 

GuiControl,,B2, %L_B2% 

IniRead, L_B3, C:/KHAN/Mps/save.ini, ini, B3, 0 

GuiControl,,B3, %L_B3% 

IniRead, L_B4, C:/KHAN/Mps/save.ini, ini, B4, 0 

GuiControl,,B4, %L_B4% 

IniRead, L_B5, C:/KHAN/Mps/save.ini, ini, B5, 0 

GuiControl,,B5, %L_B5% 

IniRead, L_B6, C:/KHAN/Mps/save.ini, ini, B6, 0 

GuiControl,,B6, %L_B6% 

return


Bok:

Gui, Submit, Hide

GuiControlget,E1

IniWrite,%E1%, C:\KHAN/Mps/save.ini, ini, E1

GuiControlget,E2

IniWrite,%E2%, C:\KHAN/Mps/save.ini, ini, E2

GuiControlget,E3

IniWrite,%E3%, C:\KHAN/Mps/save.ini, ini, E3

GuiControlget,E4

IniWrite,%E4%, C:\KHAN/Mps/save.ini, ini, E4

GuiControlget,B1

IniWrite,%B1%, C:\KHAN/Mps/save.ini, ini, B1

GuiControlget,B2

IniWrite,%B2%, C:\KHAN/Mps/save.ini, ini, B2

GuiControlget,B3

IniWrite,%B3%, C:\KHAN/Mps/save.ini, ini, B3

GuiControlget,B4

IniWrite,%B4%, C:\KHAN/Mps/save.ini, ini, B4

GuiControlget,B5

IniWrite,%B5%, C:\KHAN/Mps/save.ini, ini, B5

GuiControlget,B6

IniWrite,%B6%, C:\KHAN/Mps/save.ini, ini, B6

GuiControlget,R1

if R1 = 1

{

Settimer, Ma, 300

}

IniWrite,%R1%, C:\KHAN/Mps/save.ini, ini, R1

GuiControlget,R2

if R2 = 1

{

Settimer, Mb, 1000

}

IniWrite,%R2%, C:\KHAN/Mps/save.ini, ini, R2

GuiControlget,C1

if C1 = 1

{

Settimer, S1,%E1%000

}

IniWrite,%C1%, C:\KHAN/Mps/save.ini, ini, C1

GuiControlget,C2

if C2 = 1

{

Settimer, S2,%E2%000

}

IniWrite,%C2%, C:\KHAN/Mps/save.ini, ini, C2

GuiControlget,C3

if C3 = 1

{

Settimer, S3,%E3%000

}

IniWrite,%C3%, C:\KHAN/Mps/save.ini, ini, C3

GuiControlget,C4

if C4 = 1

{

Settimer, S4,%E4%000

}

IniWrite,%C4%, C:\KHAN/Mps/save.ini, ini, C4

GuiControlget,Ba

if Ba = 또 다른 망각의길4

{

Settimer, Aak, 300

Settimer, Mve1, 2500

Settimer, Upr1, 500

}

if Ba = 남겨진 용의 둥지1

{

Settimer, Bak, 230

Settimer, Mve2, 1000

Settimer, Upr2, 500

}

return


]::

pause

Sendinput, {%B1% Up}

return


Bst:

WinWait, MapleStory, 

IfWinNotActive, MapleStory, , WinActivate, MapleStory, 

WinWaitActive, MapleStory, 

WinMove, 0, 0

Settimer, cfm, 1800000

Settimer, Err, 600000

return




Aak:

Thread, Notimers

Gui, Submit, nohide

Imagesearch, vr, vt, 1, 1, 1024, 768, *63 C:\KHAN\Mps\nw.bmp

Imagesearch, vx, vy, vr-320, vt-250, vr, vt, *11 C:\KHAN\Mps\mv.bmp

If Errorlevel = 0

{

Sendinput, {Right Up}

Sendinput, {Left Down}

Sleep, 50

Sendinput, {%B1% Down}

Sleep, 1000

}

If Errorlevel = 0

{

Sendinput, {%B1% up}

}

Imagesearch, vr, vt, 1, 1, 1024, 768, *63 C:\KHAN\Mps\nw.bmp

Imagesearch, vx, vy, vr, vt-250, vr+320, vt, *11 C:\KHAN\Mps\mv.bmp

If Errorlevel = 0

{

Sendinput, {Left Up}

Sendinput, {Right Down}

Sleep, 50

Sendinput, {%B1% Down}

Sleep, 1000

}

If Errorlevel = 0

{

Sendinput, {%B1% up}

}

return



Mve1:

Thread, NoTimers

Imagesearch, va, vb, 117, 170, 157, 186, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, va, vb, 62, 147, 157, 167, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, va, vb, 92, 107, 157, 124, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, va, vb, 32, 127, 151, 144, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

Imagesearch, va, vb, 32, 170, 117, 186, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

return


Upr1:

Thread, NoTimers

Imagesearch, va, vb, 112, 170, 120, 186, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left Up}

Sendinput, {Right Up}

Sleep, 50

Sendinput, {Up Down}

Sleep, 50

Sendinput, {Up up}

Sendinput, {Right Down}

}

Imagesearch, va, vb, 146, 127, 157, 144, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Down Down}

Sleep, 50

Sendinput, {%B2% Down}

Sleep, 50

Sendinput, {%B2% Up}

Sleep, 50

Sendinput, {Down Up}

}

return



Bak:

Thread, Notimers

Gui, Submit, nohide

Imagesearch, vr, vt, 1, 1, 1024, 768, *60 C:\KHAN\Mps\nw2.bmp

Imagesearch, vx, vy, vr-320, vt-250, vr, vt, *14 C:\KHAN\Mps\mv2.bmp

If Errorlevel = 0

{

Sendinput, {Right Up}

Sendinput, {Left Down}

Sleep, 50

Sendinput, {%B1% Down}

Sleep, 1000

}

If Errorlevel = 0

{

Sendinput, {%B1% up}

}

Imagesearch, vr, vt, 1, 1, 1024, 768, *60 C:\KHAN\Mps\nw2.bmp

Imagesearch, vx, vy, vr, vt-250, vr+320, vt, *14 C:\KHAN\Mps\mv2.bmp

If Errorlevel = 0

{

Sendinput, {Left Up}

Sendinput, {Right Down}

Sleep, 50

Sendinput, {%B1% Down}

Sleep, 1000

}

If Errorlevel = 0

{

Sendinput, {%B1% up}

}

return


Mve2:

Thread, Notimers

Imagesearch, PX, PY, 39, 169, 72, 187, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

Imagesearch, PX, PY, 39, 145, 72, 166, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

Imagesearch, PX, PY, 39, 125, 56, 143, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

Imagesearch, PX, PY, 39, 108, 96, 125, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Left up}

Sleep, 50

Sendinput, {Right Down}

}

Imagesearch, PX1, PY1, 85, 169, 137, 187, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, PX1, PY1, 80, 145, 112, 166, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, PX1, PY1, 62, 125, 96, 143, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Right up}

Sleep, 50

Sendinput, {Left Down}

}

Imagesearch, PX3, PY3, 101, 128, 140, 166, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Up up}

Sendinput, {Right down}

Sleep, 50

Sendinput, {Down down}

Sendinput, {%B2% Down}

Sleep,50

Sendinput, {%B2% up}

Sleep,100

Sendinput, {Down Up}


}

return


Upr2:

Thread, NoTimers

Gui, Submit, Nohide

Imagesearch, PX2, PY2, 75, 174, 86, 187, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Up up}

Sleep, 50

Sendinput, {Left down}

Sleep, 50

Sendinput, {%B2% down}

Sleep, 50

Sendinput, {%B2% up}

Sleep, 200

Sendinput, {Up down}

Sendinput, {Left Up}

}

Imagesearch, PX2, PY2, 75, 157, 86, 164, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Up up}

Sleep, 50m

Sendinput, {Left down}

Sendinput, {%B2% down}

Sleep, 50

Sendinput, {%B2% up}

Sleep, 200

Sendinput, {Up down}

Sendinput, {Left up}

}

Imagesearch, PX2, PY2, 60, 134, 68, 144, *12 C:\KHAN\Mps\bs.bmp

If Errorlevel = 0

{

Sendinput, {Up up}

Sleep, 50

Sendinput, {%B2% down}

Sleep, 50

Sendinput, {%B2% up}

Sleep, 200

Sendinput, {Up down}

}

return




S1:

Thread, NoTimers

Gui, Submit, Nohide

Sleep, 100

Sendinput, {%B3% down}

Sleep, 50

Sendinput, {%B3% up}

return


S2:

Thread, NoTimers

Gui, Submit, Nohide

Sleep, 100

Sendinput, {%B4% down}

Sleep, 50

Sendinput, {%B4% up}

return


S3:

Thread, NoTimers

Gui, Submit, Nohide

Sleep, 50

Sendinput, {%B5% down}

Sleep, 50

Sendinput, {%B5% up}

Sleep, 4000

return


S4:

Thread, NoTimers

Gui, Submit, Nohide

Sleep, 50

Sendinput, {%B6% down}

Sleep, 50

Sendinput, {%B6% up}

Sleep, 4000

return



Ma:

Thread, NoTimers

Imagesearch, p1, p2, 340, 730, 365, 790, *10 C:\KHAN\Mps\h1.bmp

If Errorlevel = 1

{

Sendinput, {F11 down}

Sleep,50

Sendinput, {F11 up}

}

Imagesearch, p3, p4, 500, 750, 515, 790, *10 C:\KHAN\Mps\h2.bmp

If Errorlevel = 1

{

Sendinput, {F12 down}

Sleep,50

Sendinput, {F12 up}

}

return


Mb:

Thread, NoTimers

ImageSearch, VX, VY, 1, 1, A_ScreenWidth, A_ScreenHeight, *10 C:\KHAN\Mps\gt.bmp

If Errorlevel = 0

{

Soundplay, C:\KHAN\Mps\Collide.mp3

pause

}

return



cfm:

Thread, NoTimers

Urldownloadtofile, http://mynewblogcai2.blogspot.kr/2016/05/blog-post.html, C:\KHAN\Temp2.txt

Fileread, Int, C:\KHAN\Temp2.txt

Ifinstring, Int, 0x01

{

filedelete,C:\KHAN\Temp2.txt

}

else

{

filedelete,C:\KHAN\Temp2.txt

ExitApp

}

return


Err:

Sleep, 10000

return


GuiClose:

ExitApp

return


3GuiContextMenu:

ExitApp

return









로, 매크로만들기,매크로제작, 메이플,메이플스토리, 메이플 스토리, 메이플 매크로 메이플매크로, 매크로제작, 메이플매크로 만들기, 매크로 만들기,메이플스토리매크로메이플스토리매크로 메이플 스토리 매크로















Posted by Khan64
,