티스토리 뷰
이번 Chapter 에서는 오토핫키를 이용해 테라M 던전을 선택하고 횟수 설정까지 할 수 있는 매크로를 만들어보겠습니다.
스크립트를 보기에 앞서 매크로 실행 순서부터 보시겠습니다.
#01선택된 던전으로 이동합니다.
#02지정된 횟수 만큼 반복합니다.
#03지정된 횟수가 끝나면 다음던전으로 이동합니다.
#04지정된 횟수 만큼 반복합니다.
.......
.......
#end 매크로를 끝냅니다.
이정도로 볼 수 있는데, 앞서 만든 스크립트가 #02, #04 의 기능이었습니다.
그럼 여기서 추가할 기능은 #01,#02 인데, 준비해야할 이미지가 생겼습니다.
#일단은 이미지 좌측위 빨간네모 만큼 이미지를 준비해주시고, Close.bmp 로 저장해줍니다.
중앙에 해놓은 설명은 스크립트 보실때 설명 드릴테니 읽어보기만 하세요.
파일부터 올려드리겠습니다.
스크립트 보시겠습니다. 좀 길어요. 지난 시간에 했던 설명은 생략하겠습니다.
Gui, Add, Text, x12 y10 w110 h20 , 독립군 보급 기지
Gui, Add, Text, x12 y40 w110 h20 , 후카키 마을 수복전
Gui, Add, Text, x12 y70 w110 h20 , 밤피르의 저택
Gui, Add, Text, x12 y100 w110 h20 , 달의 호수 쟁탈전
Gui, Add, Text, x12 y130 w110 h20 , 황금의 미궁
Gui, Add, Text, x12 y160 w110 h20 , 왕자의 궁전
Gui, Add, Text, x12 y190 w110 h20 , 불의 제단
#일반던전이름 Text 입니다.
Gui, Add, Edit, x132 y10 w40 h20 vA01 Number, 0
Gui, Add, Edit, x132 y40 w40 h20 vA02 Number, 0
Gui, Add, Edit, x132 y70 w40 h20 vA03 Number, 0
Gui, Add, Edit, x132 y100 w40 h20 vA04 Number, 0
Gui, Add, Edit, x132 y130 w40 h20 vA05 Number, 0
Gui, Add, Edit, x132 y160 w40 h20 vA06 Number, 0
Gui, Add, Edit, x132 y190 w40 h20 vA07 Number, 0
#일반던전 1~7 의 횟수를 설정 할 수 있습니다. 값은 Number 로 고정합니다.
gui Edit의 경우 이설정이 없으면 텍스트로 값이 들어가는 것 같습니다. 그럼 숫자연산이 안되요.
Number를 적어주세요.
#각각 던전의 횟수를 A01~A07 변수에 저장합니다. 기본값은 0입니다.
만들고나서 알게된건데 실행하실때 0지우시면 오류날거에요.
Gui, Add, Text, x202 y10 w110 h20 , 벤튤라
Gui, Add, Text, x202 y40 w110 h20 , 데미안
Gui, Add, Text, x202 y70 w110 h20 , 그림자기수
Gui, Add, Text, x202 y100 w110 h20 , 굴
Gui, Add, Text, x202 y130 w110 h20 , 티라누스
Gui, Add, Text, x202 y160 w110 h20 , 라우라바
#일반 토벌대 이름입니다 방식은 일반던전과 같아요.
Gui, Add, Edit, x322 y10 w40 h20 vB01 Number, 0
Gui, Add, Edit, x322 y40 w40 h20 vB02 Number, 0
Gui, Add, Edit, x322 y70 w40 h20 vB03 Number, 0
Gui, Add, Edit, x322 y100 w40 h20 vB04 Number, 0
Gui, Add, Edit, x322 y130 w40 h20 vB05 Number, 0
Gui, Add, Edit, x322 y160 w40 h20 vB06 Number, 0
#일반 토벌대 횟수 지정합니다. 일반던전과 방식은 같습니다.
Gui, Add, Button, x262 y330 w130 h50 gStart, Start
Gui, Add, Button, x262 y390 w130 h50 gStop, Stop
#버튼을 두개 만들어 줍니다. Start, Stop 입니다.
Gui, Show, w407 h473,
#Gui를 보여줍니다.
return
img_search(IMG_Name,ByRef vx,ByRef vy){
WinActivate, 녹스 플레이어
ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *10 %IMG_Name%
if(ErrorLevel=0){
vx:=fx
vy:=fy
return true
}else{
return false
}
}
Send_Clikc(FoundX,FoundY){
WinActivate, 녹스 플레이어
#마우스 클릭전에 녹스플레이를 활성화 시키는 명령어를 추가했습니다.
Send {Click %FoundX% %FoundY%}
}
Auto_D(MatchingName,ClearN){
#일반 던전을 반복하던 함수였습니다. ()메서드로 던전 이름(MatchingName)과, 클리어 횟수(ClearN)를 받게 바꿨습니다.
AutoClearN:=ClearN
#AutoClearN은 지정된 횟수를 확인하는데 사용할겁니다. ClearN의 값을 대입합니다.
MatchingY:=0
#위 이미지의 설명을 보시면 독립군 보급기지와 후카족 마을 수복전의 위치가 x는 같은 값이고 y값만 바뀌는 것을 알 수 있습니다. 던전 이름별 y값을 MatchingY에 저장합니다.
if(MatchingName="A01"){
#"A01"첫번째 일반 던전 입니다. 독립군 보급기지 입니다.
MatchingY := 130
#Y값은 130 입니다.
}else if(MatchingName="A02"){
#"A01"두번째 일반던전 입니다.
MatchingY := 180
#Y값은 180 입니다.
#아래부도 마찬가지입니다.
}else if(MatchingName="A03"){
MatchingY := 230
}else if(MatchingName="A04"){
MatchingY := 280
}else if(MatchingName="A05"){
MatchingY := 330
}else if(MatchingName="A06"){
MatchingY := 380
}else if(MatchingName="A07"){
MatchingY := 430
}
MsgBox, %MatchingName%
MsgBox, %MatchingY%
#이건 던전 이름과 횟수를 찍어본건데 안지웠네요. 사용하실땐 지우시면됩니다.
Send_Clikc(280,480)
#실행조건은 접속 후 캐릭터만 서있는 상황입니다. 기억하세요. 위좌표는 하단에 메뉴 버튼 위치입니다.
Sleep,1000
Send_Clikc(740,120)
#위좌표는 메뉴로 들어가서 레이르버튼 좌표입니다.
Sleep,1000
Send_Clikc(180,200)
#위좌표는 일반던전 좌표입니다.
Sleep,1000
Send_Clikc(70,MatchingY)
#위 좌표는 위에서 설정했던 Y값과 기본 x값으로 정한 던전을 찾습니다.
Sleep,1000
isStop:=false
isClick:=true
isSkip:=false
loop{
if(img_search("Matching.bmp",x,y)){
if(AutoClearN=0){
#AutoClearN이 0이되면 실행됩니다.
if(img_search("Close.bmp",x,y)){
#Close.bmp를 찾고 클릭합니다.
Send_Clikc(x,y)
break
}
}
isClick:=true
Send_Clikc(x,y)
Sleep,1000
}
if(isClick){
if(img_search("Auto.bmp",x,y)){
Send_Clikc(x,y+40)
sleep,1000
}
if(img_search("Auto_02.bmp",x,y)){
isClick:=false
isSkip:=true
Send_Clikc(x,y)
sleep,1000
}
}
if(isSkip){
if(img_search("Auto.bmp",x,y)=false){
isSkip:=false
Send_Clikc(775,42)
sleep,1000
}
}
if(img_search("Exit.bmp",x,y)){
AutoClearN-=1
#'나가기'를 찾고 클릭할때마다 AutoClearN을 하나씩 줄여줍니다.
GuiControl,,%MatchingName%,%AutoClearN%
#gui에서 정한 던전의 클리어 횟수도 하나씩 줄여줍니다.
Gui, Submit,NoHide
#gui값을 submit 합니다.
Send_Clikc(x,y)
sleep,5000
}
if(isStop){
break
}
##토벌대도 원리는 같으니 설명은 넘어갈게요. 이해가 잘안되시면
실행부분인 Start: 부터 봐보세요, 다른사람이 한 코딩을 한번에 이해하는건 정말힘든 일입니다 천천히보세요.
}
}
Auto_T(MatchingTName,ClearTN){
AutoTClearN:=ClearTN
MatchingY:=0
if(MatchingTName="B01"){
MatchingY := 160
}else if(MatchingTName="B02"){
MatchingY := 210
}else if(MatchingTName="B03"){
MatchingY := 260
}else if(MatchingTName="B04"){
MatchingY := 310
}else if(MatchingTName="B05"){
MatchingY := 360
}else if(MatchingTName="B06"){
MatchingY := 410
}
Send_Clikc(280,480)
Sleep,1000
Send_Clikc(740,120)
Sleep,1000
Send_Clikc(400,200)
Sleep,1000
Send_Clikc(70,MatchingY)
Sleep,1000
isStop:=false
isClick:=true
loop{
if(img_search("Matching.bmp",x,y)){
if(AutoTClearN=0){
if(img_search("Close.bmp",x,y)){
Send_Clikc(x,y)
break
}
}
isClick:=true
Send_Clikc(x,y)
Sleep,1000
}
if(isClick){
if(img_search("Auto.bmp",x,y)=false){
x:=775
y:=82
Send_Clikc(x,y)
sleep,1000
}
if(img_search("Auto_02.bmp",x,y)){
isClick:=false
Send_Clikc(x,y)
sleep,1000
}
}
if(img_search("Exit.bmp",x,y)){
AutoTClearN-=1
GuiControl,,%MatchingTName%,%AutoTClearN%
Gui, Submit,NoHide
Send_Clikc(x,y)
sleep,5000
}
if(isStop){
break
}
}
}
Start:
gui,Submit,NoHide
#gui를 전송합니다.
if(A01<>0){
#A01이, 즉 독립군 보급기지의 클리어 횟수가 0이 아니면 실행됩니다.
Auto_D("A01",A01)
#Auto_D는 일반던전 매크로였죠? 던전이름은 "A01"이고 클리어 횟수는 A01이라고 알려줍니다. 여기서
어려울수 있는데 "A01"은 텍스트, 즉 글자로 알려주는거고 A01은 gui에서 내가 설정한 클리어 횟수를 담고있는 변수 이름입니다.
#아래도 같은 원리니 설명은 넘어가겠습니다.
Sleep,2000
}
if(A02<>0){
Auto_D("A02",A02)
Sleep,2000
}
if(A03<>0){
Auto_D("A03",A03)
Sleep,2000
}
if(A04<>0){
Auto_D("A04",A04)
Sleep,2000
}
if(A05<>0){
Auto_D("A05",A05)
Sleep,2000
}
if(A06<>0){
Auto_D("A06",A06)
Sleep,2000
}
if(A07<>0){
Auto_D("A07",A07)
Sleep,2000
}
if(B01<>0){
Auto_T("B01",B01)
Sleep,2000
}
if(B02<>0){
Auto_T("B02",B02)
Sleep,2000
}
if(B03<>0){
Auto_T("B03",B03)
Sleep,2000
}
if(B04<>0){
Auto_T("B04",B04)
Sleep,2000
}
if(B05<>0){
Auto_T("B05",B05)
Sleep,2000
}
if(B06<>0){
Auto_T("B06",B06)
Sleep,2000
}
return
Stop:
ExitApp
return
GuiClose:
ExitApp
return
이걸로 좀 그럴듯한 매크로가 완성되었습니다. 그런데, 이 매크로는 사용하는 동안 컴퓨터를 쓸수 가없죠, 그래서 다음 Chapter 부터는 비활성 명령어를 몇가지 본뒤 매크로까지 만들어 보겠습니다.
'[AutoHotKey]오토핫키' 카테고리의 다른 글
#Chapter.12 ,오토핫키 비활성 이미지 서치(Gdip,Gdip_ImageSearch) (13) | 2017.12.21 |
---|---|
#Chapter.11 ,오토핫키 비활성 클릭(PostMessage) (5) | 2017.12.21 |
#Chapter.09 ,테라M 던전/토벌대 매크로 (5) | 2017.12.20 |
#Chapter.08 ,테라M 일반 토벌대 매크로 만들기 (0) | 2017.12.20 |
#Chapter.07 ,테라M 일반 던전 매크로 만들기 (0) | 2017.12.20 |
- Total
- Today
- Yesterday
- 테라M 녹스
- 오토핫키 이미지 서치
- jquery 타이머
- jquery 반올림
- 스크립트 반올림
- 오토핫키 비활성
- jquery if()
- 스크립트 for
- jquery function
- jquery 형변환
- 자바스크립트 if
- jquery if
- 오토핫키 비활성 매크로
- 테라M 오토핫키
- 테라M 던전 매크로
- 테라M 자동
- 스크립트 for()
- 테라m
- 테라M 녹스 자동
- 자바스크립트 형변환
- 테라 매크로
- 스크립트 타이머
- 스크립트 반복문
- 이미지 서치
- jquery for()
- jquery for
- jquery list
- jquery 구구단
- 오토핫키 비활성 이미지 클릭
- 테라M 매크로
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |