매크로

조회 수 1171 추천 0 댓글 5
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#NoEnv  ;내장환경변수 제거, 퍼포먼스 향샹 목적
#NoTrayIcon  ;트레이아이콘 제거
#KeyHistory 0  ;키저장기능 제거, 퍼포먼스 향샹 목적
ListLines Off  ;라인제거, 퍼포먼스 향샹 목적
SetWinDelay, 0  ;윈도우 관련 딜레이 최소한으로 설정 (-1은 딜레이X)
SetBatchLines, -1  ;코드간 자동 Sleep 삭제, 속도 향샹 목적
#Include Gdip_All.ahk
#Include Gdip_ImageSearch.ahk

매크로:=0
시간:=0
모험클리어:=0
결장클리어:=0
레이드클리어:=0

Gui, Add, GroupBox, x13 y10 w100 h40 +Center cBlue, 경과시간
Gui, Add, Text, x28 y30 w70 h12 +Center vTi, 미작동중
Gui, Add, GroupBox, x125 y10 w100 h40 +Center cBlue, 전환타이머
Gui, Add, Text, x140 y30 w70 h12 +Center vTii, 미작동중
Gui, Add, GroupBox, x13 y60 w65 h40 +Center cBlue, 결장
Gui, Add, Text, x22 y80 w50 h12 +Center v결장클리어, 0
Gui, Add, GroupBox, x87 y60 w65 h40 +Center cBlue, 레이드
Gui, Add, Text, x93 y80 w50 h12 +Center v레이드클리어, 0
Gui, Add, GroupBox, x161 y60 w65 h40 +Center cBlue, 모험
Gui, Add, Text, x168 y80 w50 h12 +Center v모험클리어, 0
Gui, Add, Checkbox, x15 y105 w45 h30 v결장, 결장
Gui, Add, Checkbox, x80 y105 w45 h30 v모험, 모험
Gui, Add, Checkbox, x15 y127 w52 h30 v레이드, 레이드
Gui, Add, Checkbox, x80 y127 w45 h30 v3배, 3배
Gui, Add, GroupBox, x130 y106 w95 h45 +Center cBlue, 강화
Gui, Add, Checkbox, x138 y123 w35 h20 v5성, 5성
Gui, Add, Checkbox, x183 y123 w35 h20 v3성, 3성
Gui, Add, Edit, x10 y164 w35 h18 v전환
Gui, Add, Text, x48 y167 w70 h18 , 분 후 전환
Gui, Add, DropDownList, x115 y162 w50 h80 v난이도, 쉬움|보통|용
Gui, Add, DropDownList, x175 y162 w50 h80 v지역, 8-10|10-1|12-1|13-1
Gui, Add, Button, x15 y195 w60 h30 , 시작
Gui, Add, Button, x87 y195 w60 h30 g정지, 정지
Gui, Add, Button, x87 y195 w60 h30 g재시작 Hidden, 재시작
Gui, Add, Button, x160 y195 w60 h30 , 재실행
Gui, Add, ListBox, x10 y235 w215 h100 v로그, ListBox
Gui, Show, y21

Gui, Submit, nohide
IniRead,결장,설정.ini,설정값,결장
GuiControl,,결장,%결장%
IniRead,모험,설정.ini,설정값,모험
GuiControl,,모험,%모험%
IniRead,레이드,설정.ini,설정값,레이드
GuiControl,,레이드,%레이드%
IniRead,3배,설정.ini,설정값,3배
GuiControl,,3배,%3배%
IniRead,전환,설정.ini,설정값,전환
GuiControl,,전환,%전환%
IniRead,난이도,설정.ini,설정값,난이도
GuiControl,Choose,난이도,%난이도%
IniRead,지역,설정.ini,설정값,지역
GuiControl,Choose,지역,%지역%
IniRead,5성,설정.ini,설정값,5성
GuiControl,,5성,%5성%
IniRead,3성,설정.ini,설정값,3성
GuiControl,,3성,%3성%
return

Button시작:
Gui, Submit, nohide
settimer,timer,1000
GuiControl, Disabled, 시작
while(매크로=0)
{
 전환시간:=전환*60*1000
 settimer,timer1,1000
 ifWinnotExist, BlueStacks App Player 
 {
 run, "C:\Program Files (x86)\BlueStacks\HD-StartLauncher.exe"
 로그함수("블루스택재시작")
 Sleep, 1000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\시작\대전.bmp",60,0))
 {
 로그함수("로비확인")
 gosub, 결장
 Sleep, 500
 이미지서치("Image\시작\뒤로가기.bmp",20,0)
 gosub, 레이드
 Sleep, 500
 이미지서치("Image\시작\뒤로가기.bmp",20,0)
 gosub, 모험
 }
 이미지서치("Image\시작\세나실행.bmp",60,0)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\시작\시작화면.bmp",60,0))
 {
 로그함수("시작화면")
 click(imgsearch_x-100, imgsearch_y)
 }
 이미지서치("Image\시작\공지닫기.bmp",60,0)
 이미지서치("Image\시작\광고닫기1.bmp",60,0)
 이미지서치("Image\시작\광고닫기2.bmp",60,0)
 이미지서치("Image\시작\광고닫기3.bmp",60,0)
 이미지서치("Image\시작\닫기.bmp",60,0)
 이미지서치("Image\시작\뒤로가기.bmp",20,0)
 이미지서치("Image\모험\자기용.bmp",60,0)
 이미지서치("Image\모험\30렙.bmp",60,0)
}
return

결장:
Gui, Submit, nohide
if(결장=1)
{
로그함수("결장Loop")
매크로:=1
}
else
매크로:=0

while(매크로=1)
{
 이미지서치("Image\시작\닫기.bmp",60,0)
 이미지서치("Image\시작\대전.bmp",60,1000)
 이미지서치("Image\결장\결투장.bmp",60,1000)
 if(결장=0) && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장준비.bmp",60,0))
 {
  로그함수("결장종료/뒤로가기")
  매크로:=0
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  break
 }
 이미지서치("Image\결장\결장준비.bmp",60,1000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장시작.bmp",60,0))
 {
  로그함수("결장시작")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  gosub, 결장중
 }
 click(750, 270)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장입장실패.bmp",60,0))
 {
  로그함수("결장입장실패/결장종료/뒤로가기")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  break
 }
}
return

결장중:
Gui, Submit, nohide
로그함수("결장중")
Loop
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장입장실패.bmp",60,0))
 break
 click(400, 300)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장종료승리.bmp",30,0))
 {
 로그함수("결장종료승리")
 Sleep, 1500
 click(750, 270)
 결장클리어:=결장클리어+1
 GuiControl,,결장클리어,%결장클리어%
 Sleep, 1000
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\결장\결장종료패배.bmp",30,0))
 {
 로그함수("결장종료패배")
 Sleep, 1500
 click(750, 270)
 결장클리어:=결장클리어+1
 GuiControl,,결장클리어,%결장클리어%
 Sleep, 1000
 break
 }
 Sleep, 500
}
 return


레이드:
Gui, Submit, nohide
if(레이드=1)
{
로그함수("레이드Loop")
매크로:=1
}
else
매크로:=0

while(매크로=1)
{
 이미지서치("Image\시작\닫기.bmp",60,0)
 이미지서치("Image\시작\전투.bmp",60,1000)
 이미지서치("Image\레이드\레이드입장.bmp",60,1000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\미참여클릭.bmp",60,0))
 {
  로그함수("미참여클릭")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  click(740, 420)
  Sleep, 1000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\겔리검색.bmp",60,0))
 {
 로그함수("겔리검색")
 click(760, 150)
 Sleep, 2000
 }
 if(난이도="용") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\아무용.bmp",60,0))
 {
 로그함수("입장")
 click(imgsearch_x, imgsearch_y)
 Sleep, 2000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\겔리없음.bmp",60,0))
 {
  로그함수("겔리없음/레이드종료/뒤로가기")
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  break
 }
 이미지서치("Image\레이드\레이드준비.bmp",60,2000)
 이미지서치("Image\레이드\레이드시작.bmp",60,4000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\입장횟수초과.bmp",60,0))
 {
 로그함수("입장횟수초과/레이드종료/뒤로가기")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(21, 52)
 Sleep, 1000
 click(21, 52)
 Sleep, 1000
 click(21, 52)
 break 
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\겔리.bmp",60,0))
 {
 로그함수("겔리")
 Sleep, 500
 이미지서치("Image\레이드\자동스킬.bmp",20,200)
 Click(650, 420)
 Sleep, 500
 Click(710, 470)
 Sleep, 500
 Click(710, 420)
 Sleep, 1000
 gosub, 초반스킬
 gosub, 스킬
 Sleep, 3000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\파멸.bmp",60,0))
 {
 로그함수("파멸")
 Sleep, 500
 이미지서치("Image\레이드\자동스킬.bmp",20,200)
 Click(585, 420)
 Sleep, 500
 gosub, 스킬
 Sleep, 3000
 }
 이미지서치("Image\레이드\보상받기.bmp",60,800)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\보상확인.bmp",60,0))
 {
  로그함수("보상확인/뒤로가기")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
 }
}
return

초반스킬:
로그함수("초반스킬")
loop
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\3번째스킬.bmp",120,0))
 Sleep, 500
 else if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\2번째스킬.bmp",120,0))
 Sleep, 500
 else if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\1번째스킬.bmp",120,0))
 Sleep, 500
 else
 {
 로그함수("초반스킬종료")
 break
 }
}

스킬:
로그함수("레이드중")
loop
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\레이드완료.bmp",60,0))
 {
  로그함수("레이드완료")
  Sleep, 500
  click(750, 230)
  레이드클리어:=레이드클리어+1
  GuiControl,,레이드클리어,%레이드클리어%
  break
 }
 이미지서치("Image\레이드\스피나스킬2.bmp",20,0)
 이미지서치("Image\레이드\스피나스킬1.bmp",20,0)
 이미지서치("Image\레이드\스피나스킬3.bmp",30,0)
 이미지서치("Image\레이드\아라곤스킬.bmp",40,0)
}
return

모험:
Gui, Submit, nohide
if(모험=1)
{
로그함수("모험Loop")
매크로:=1
}
else
매크로:=0

while(매크로=1)
{
 이미지서치("Image\시작\뒤로가기.bmp",20,0)
 이미지서치("Image\시작\닫기.bmp",60,0)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\시작\대전.bmp",60,0))
 {
 로그함수("대전")
 click(750, 450)
 Sleep, 2000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\월드맵.bmp",60,0))
 {
 로그함수("월드맵")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1000
 gosub, 맵선택
 Sleep, 500
 }
 이미지서치("Image\모험\모험준비.bmp",60,0)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\영웅최대치.bmp",60,0))
 {
 로그함수("영웅최대치/뒤로가기")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(21, 52)
 Sleep, 1000
 click(21, 52)
 Sleep, 2000
 gosub, 5성
 gosub, 3성
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\장비판매.bmp",60,0))
 {
 로그함수("장비판매")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1500
 gosub, 장비판매
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\열쇠부족.bmp",60,0))
 {
 로그함수("열쇠부족")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1000
 gosub, 열쇠구매
 }
 이미지서치("Image\모험\자기용.bmp",60,3000)
 이미지서치("Image\모험\30렙.bmp",60,500)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\미참여클릭.bmp",60,0))
 {
  로그함수("미참여클릭")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  click(740, 420)
  Sleep, 1000
  gosub, 용찾기
  gosub, 자기용
 }
 이미지서치("Image\모험\자동모험ON.bmp",60,2000)
 if(3배=1) && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3배OFF.bmp",60,0))
 {
 로그함수("3배ON")
 IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3배OFF.bmp",60,0)
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3배모드종료.bmp",60,0))
 {
 로그함수("3배모드종료")
 click(imgsearch_x, imgsearch_y)
 3배:=0
 GuiControl,,3배,0
 }
 if(3배=0) && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3배ON.bmp",60,0))
 {
 로그함수("3배OFF")
 IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3배ON.bmp",60,0)
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\모험시작.bmp",60,0))
 {
 로그함수("1팀")
 click(115, 105)
 Sleep, 2000
 }
 이미지서치("Image\모험\모험시작.bmp",60,1000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\확인.bmp",60,0))
 {
 로그함수("확인")
 click(imgsearch_x, imgsearch_y)
 gosub, 쫄교체
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\자동모험장비최대치.bmp",60,0))
 {
 로그함수("자동모험장비최대치/자동모험OFF/모험시작")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(370, 415)
 Sleep, 1000
 click(520, 465)
 Sleep, 3000
 }
 이미지서치("Image\모험\3배모드시작.bmp",60,3000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\영웅장비최대치3배모드.bmp",60,0))
 {
 로그함수("영웅장비최대치3배모드/3배모드OFF/모험시작")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(545, 415)
 Sleep, 500
 click(520, 465)
 Sleep, 3000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\모험중.bmp",65,0))
 {
 로그함수("모험중")
 ;이미지서치("Image\모험\자동스킬.bmp",60,500)
 click(525, 420)
 Sleep, 500
 click(525, 470)
 gosub, 모험중
 }
 if(모험매크로=0)
 break
}
return

맵선택:
로그함수("맵선택")
 Loop
 {
 if(난이도="쉬움") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\보통.bmp",60,0))
 {
 로그함수("난이도쉬움")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(60, 120)
 Sleep, 1000
 }
 if(난이도="보통") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\쉬움.bmp",60,0))
 {
 로그함수("난이도보통")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 click(60, 155)
 Sleep, 1000
 }
 if(지역="8-10") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\8지역.bmp",60,0))
 {
 로그함수("8-10")
 click(540, 130)
 Sleep, 500
 break
 }
 if(지역="10-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\10지역.bmp",60,0))
 {
 로그함수("10-1")
 click(295, 120)
 Sleep, 500
 break
 }
 if(지역="12-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\12지역.bmp",60,0))
 {
 로그함수("12-1")
 click(130, 190)
 Sleep, 500
 break
 }
 if(지역="13-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\13지역.bmp",60,0))
 {
 로그함수("13-1")
 click(260, 385)
 Sleep, 500
 break
 }
 else
 {
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\월드맵클릭.bmp",60,0))
 {
 로그함수("월드맵클릭")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1000
 }
 if(지역="8-10") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\지역선택.bmp",60,0))
 {
 로그함수("8지역")
 click(445, 175)
 Sleep, 500
 }
 if(지역="10-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\지역선택.bmp",60,0))
 {
 로그함수("10지역")
 click(730, 175)
 Sleep, 500
 }
 if(지역="12-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\지역선택.bmp",60,0))
 {
 로그함수("12지역")
 click(740, 340)
 Sleep, 500
 }
 if(지역="13-1") && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\지역선택.bmp",60,0))
 {
 로그함수("13지역")
 click(655, 85)
 Sleep, 500
 }
 }
 }
return
 
쫄교체:
로그함수("쫄교체")
Loop
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\자동모험종료.bmp",100,0))
 {
  로그함수("자동모험종료")
  click(750, 450)
  Sleep, 1000
  click(500, 435)
  Sleep, 1000
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\자동모험닫기.bmp",60,0))
 {
  로그함수("자동모험닫기")
  click(770, 55)
  Sleep, 1000
  이미지서치("Image\모험\모험시작.bmp",60,3000)
  break
 }
}
return

모험중:
모험매크로:=1
while(모험매크로=1)
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\보상.bmp",100,0))
 {
 로그함수("보상")
 Sleep, 2000
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\바로시작골드.bmp",50,0))
 {
 로그함수("바로시작골드")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 Sleep, 2500
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\바로시작쫄.bmp",50,0))
 {
 로그함수("바로시작쫄")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 Sleep, 2500
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\바로시작3배.bmp",50,0))
 {
 로그함수("바로시작3배")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 Sleep, 2500
 break
 }
 if(모험=0)
 {
 로그함수("모험종료/전환")
 모험매크로:=0
 매크로:=0
 gosub, 모험종료
 break
 }
 if(sec1<=0)&&(min1<=0)&&(hour1<=0)
 {
 로그함수("시간완료/모험종료/전환")
 모험매크로:=0
 매크로:=0
 gosub, 모험종료
 break
 }
}
return

모험종료:
Gui, Submit, nohide
while(모험매크로=0)
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\보상.bmp",100,0))
 {
 로그함수("보상")
 Sleep, 2000
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 Sleep, 500
 click(400, 280)
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\홈으로1.bmp",30,0))
 {
 로그함수("홈으로1")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\홈으로2.bmp",30,0))
 {
 로그함수("홈으로2")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\홈으로3.bmp",30,0))
 {
 로그함수("홈으로3")
 click(imgsearch_x, imgsearch_y)
 모험클리어:=모험클리어+1
 GuiControl,,모험클리어,%모험클리어%
 break
 }
}
return

자기용:
Loop
{
 이미지서치("Image\레이드\레이드준비.bmp",60,2000)
 이미지서치("Image\레이드\레이드시작.bmp",60,1000)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\파멸.bmp",60,0))
 {
 로그함수("파멸")
 Sleep, 500
 ;이미지서치("Image\레이드\자동스킬.bmp",40,200)
 Click(585, 420)
 Sleep, 500
 gosub, 스킬
 }
 이미지서치("Image\레이드\보상받기.bmp",60,800)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\보상확인.bmp",60,0))
 {
  로그함수("보상확인/레이드종료/뒤로가기")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  click(21, 52)
  Sleep, 1000
  break
 }
}
return

용찾기:
로그함수("용찾기")
 Loop
 {
  if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\레이드\내용.bmp",60,0))
  {
  로그함수("자기용입장")
  click(imgsearch_x+360, imgsearch_y)
  Sleep, 2000
  break
  }
  else
  {
  sendDrag10(520, 330)
  sendDrag11(520, 140)
  sendDrag12(520, 140)
  Sleep, 500
  }
 }
 return
 
5성:
Gui, Submit, nohide
if(5성=1)
{
로그함수("5성강화")
강화시작:=1
}
else
강화시작:=0

while(강화시작=1)
{
cX:=300
dX:=400

if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\영웅.bmp",60,0))
{
 로그함수("영웅")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1500
 click(715, 100)
 Sleep, 500
 click(720, 325)
 Sleep, 1000
 IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\높은순.bmp",60,0)
 click(imgsearch_x, imgsearch_y)
 sendDrag10(540, 215)
 sendDrag11(540, 260)
 sendDrag12(540, 260)
}
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\5성.bmp",130,0,300,150,800,330))
{
 로그함수("5성찾음")
 재료:=0
 Loop 5
 {
  if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\5성.bmp",130,0,cX,150,dX,330))
  {
  로그함수("5성")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  gosub, 강화
  }
  if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\재료없음.bmp",60,0))
  break
  else
  {
  cX := cX + 100
  dX := dX + 100 
  }
 }
}
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\재료없음.bmp",60,0))
{
 로그함수("재료없음/뒤로가기/5성강화종료")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1000
 click(21, 52)
 Sleep, 2000
 click(21, 52)
 Sleep, 1000
 click(21, 52)
 Sleep, 2000
 재료:=1
 break
}
sendDrag10(540, 340)
sendDrag11(540, 244)
sendDrag12(540, 244)
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\2성.bmp",100,0,300,150,800,330))
{
 로그함수("강화대상없음/5성강화종료")
 click(21, 52)
 Sleep, 2000
 break
}
}
return

3성:
Gui, Submit, nohide
if(3성=1)
{
강화시작:=1
로그함수("3성강화")
}
else
강화시작:=0

while(강화시작=1)
{
cX:=300
dX:=400

if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\영웅.bmp",60,0))
{
 로그함수("영웅")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1500
 click(715, 100)
 Sleep, 500
 click(720, 325)
 Sleep, 1000
 IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\높은순.bmp",60,0)
 click(imgsearch_x, imgsearch_y)
 sendDrag10(540, 215)
 sendDrag11(540, 260)
 sendDrag12(540, 260)
}
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3성.bmp",130,0,300,150,800,330))
{
 로그함수("3성찾음")
 재료:=1
 Loop 5
 {
  if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\3성.bmp",130,0,cX,150,dX,330))
  {
  로그함수("3성")
  click(imgsearch_x, imgsearch_y)
  Sleep, 1000
  gosub, 강화
  }
  if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\재료없음.bmp",60,0))
  break
  else
  {
  cX := cX + 100
  dX := dX + 100 
  }
 }
}
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\재료없음.bmp",60,0))
{
 로그함수("재료없음/뒤로가기/3성강화종료")
 click(imgsearch_x, imgsearch_y)
 Sleep, 1000
 click(21, 52)
 Sleep, 2000
 click(21, 52)
 Sleep, 1000
 click(21, 52)
 Sleep, 2000
 break
}
sendDrag10(540, 340)
sendDrag11(540, 244)
sendDrag12(540, 244)
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\2성.bmp",100,0,300,150,800,330))
{
 로그함수("강화대상없음/3성강화종료")
 click(21, 52)
 Sleep, 2000
 break
}
}
return

강화:
Loop
{
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\5강화.bmp",60,0)) && (!IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\강화.bmp",60,0))
 {
 로그함수("5강화/뒤로가기")
 Sleep, 500
 click(21, 52)
 Sleep, 500
 break
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\강화.bmp",60,0))
 {
 로그함수("강화")
 click(imgsearch_x, imgsearch_y)
 Sleep, 2000
 IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\30레벨만.bmp",60,0)
 로그함수("30레벨만")
 click(imgsearch_x, imgsearch_y)
 Sleep, 500
 }
 if(재료=0) && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\4성재료.bmp",60,0))
 {
 로그함수("4성재료")
 click(740, 140)
 Sleep, 500
 }
 if(재료=1) && (IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\2성재료.bmp",60,0))
 {
 로그함수("2성재료")
 click(540, 140)
 Sleep, 500
 }
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\재료없음.bmp",60,0))
 break
 이미지서치("Image\모험\강화시작1.bmp",40,1000)
 이미지서치( "Image\모험\강화시작2.bmp",60,0)
 이미지서치( "Image\모험\강화완료.bmp",60,800)
 if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\찾기.bmp",60,0))
 {
 로그함수("찾기")
 break
 }
}
return

장비판매:
 Loop
 {
   if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\4성이하.bmp",60,0))
   {
    로그함수("4성이하")
    click(imgsearch_x, imgsearch_y)
    Sleep, 1000
    click(200, 465)
    Sleep, 1000
   }
   if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\장비판매하기.bmp",60,0))
   {
    로그함수("장비판매하기")
    click(imgsearch_x, imgsearch_y)
    Sleep, 3500
    click(21, 52)
    Sleep, 500
   }
   if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\장비부족.bmp",60,0))
   {
    로그함수("장비부족")
    click(imgsearch_x, imgsearch_y)
    Sleep, 500
    click(21, 52)
    break
   }
 }
return

열쇠구매:
로그함수("열쇠구매")
click(440, 265)
Sleep, 1000
이미지서치("Image\모험\명예부족확인.bmp",60,500)
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\열쇠구매.bmp",60,0))
{
로그함수("명예/열쇠구매")
click(500, 435)
Sleep, 3000
click(400, 300)
Sleep, 500
}
click(760, 265)
Sleep, 1000
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\루비부족.bmp",60,0))
{
로그함수("루비부족")
click(330, 435)
Sleep, 500
}
if(IsImageCheck(imgsearch_x, imgsearch_y, "Image\모험\열쇠구매.bmp",60,0))
로그함수("루비/열쇠구매")
click(500, 435)
Sleep, 3000
click(400, 300)
Sleep, 500
}
로그함수("열쇠구매종료")
click(21, 52)
Sleep, 1000
return

timer:
Gui, Submit, nohide
시간 := 시간 + 1000
sec := result(mod(시간 // 1000, 60))
min := result(mod(시간 // 60000, 60)) 
hour := result(mod(시간 // 3600000, 24))
GuiControl, , ti, % hour " : " min " : " sec
return

timer1:
Gui, Submit, nohide
전환시간 := 전환시간 - 1000
sec1 := result(mod(전환시간 // 1000, 60))
min1 := result(mod(전환시간 // 60000, 60)) 
hour1 := result(mod(전환시간 // 3600000, 24))
GuiControl, , tii, % hour1 " : " min1 " : " sec1
if(sec1<=0)&&(min1<=0)&&(hour1<=0)
SetTimer,timer1,off
return

result(data) {
if (data < 10) 
data := "0" data
return data
}

정지:
GuiControl, Hide, 정지
GuiControl, Show, 재시작
로그함수("정지")
Pause
return

재시작:
GuiControl, Hide, 재시작
GuiControl, Show, 정지
로그함수("재시작")
Pause
return

GuiClose:
Gui, Submit, nohide
IniWrite,%결장%,설정.ini,설정값,결장
IniWrite,%모험%,설정.ini,설정값,모험
IniWrite,%레이드%,설정.ini,설정값,레이드
IniWrite,%3배%,설정.ini,설정값,3배
IniWrite,%전환%,설정.ini,설정값,전환
IniWrite,%난이도%,설정.ini,설정값,난이도
IniWrite,%지역%,설정.ini,설정값,지역
IniWrite,%5성%,설정.ini,설정값,5성
IniWrite,%3성%,설정.ini,설정값,3성
ExitApp
return

Button재실행:
Gui, Submit, nohide
IniWrite,%결장%,설정.ini,설정값,결장
IniWrite,%모험%,설정.ini,설정값,모험
IniWrite,%레이드%,설정.ini,설정값,레이드
IniWrite,%3배%,설정.ini,설정값,3배
IniWrite,%전환%,설정.ini,설정값,전환
IniWrite,%난이도%,설정.ini,설정값,난이도
IniWrite,%지역%,설정.ini,설정값,지역
IniWrite,%5성%,설정.ini,설정값,5성
IniWrite,%3성%,설정.ini,설정값,3성
Reload
return

이미지서치(파일명,정확도,대기)
{
if(IsImageCheck(imgsearch_x, imgsearch_y, 파일명 , 정확도 ,0))
{
click(imgsearch_x, imgsearch_y)
로그함수(파일명)
Sleep, %대기%
}
}

로그함수(로그명)
{
formattime,nowtime,,HH:mm:ss
guicontrol,,로그,%nowtime%/%로그명%||
}

;--------------------------------------함수----------------------------------------------------------
;check_reg는 이미지서치가 되었는지 안되었는지 판단하는 전역변수입니다. 전체코드에서 맨 앞에 써주세요.
;x,y좌표 변수입니다. 전역변수 저장
global check_reg := 0
global imgsearch_x = 0
global imgsearch_y = 0

CoordMode,Pixel,Client
;coordmode 이부분은 쓰고 한번 해보고 안쓰고 한번 해보세요... 전 일단 쓰고있는데 잘모르겠네요 ..ㅠ

Gdip_ImageSearchWithdHwnd(Hwnd,Byref X,Byref Y,Image,Variation=0,Trans="",sX = 0,sY = 0,eX = 0,eY = 0)
{
 Sleep, 500
SysGet, wFrame, 7
SysGet, wCaption, 4
gdipToken := Gdip_Startup()
bmpHaystack := Gdip_BitmapFromHwnd(Hwnd)
bmpNeedle := Gdip_CreateBitmapFromFile(Image)
if( sX!= 0 || sY!= 0 || eX!= 0 || eY != 0)
{
sX := sX + wFrame
sY := sY + wCaption + wFrame
eX := eX + wFrame
eY := eY + wCaption + wFrame
}
RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,sX,sY,eX,eY,Variation,Trans,1,1)
Gdip_DisposeImage(bmpHaystack)
Gdip_DisposeImage(bmpNeedle)
Gdip_Shutdown(gdipToken)
StringSplit, LISTArray, LIST, `,
X := LISTArray1
Y := LISTArray2
;여기에서 , 바로 밑 주석친걸로 하니 postMessage쪽이랑 좌표가 헷갈려서 전 바로 위 코드처럼 wFrame,wCaption 을
;안뺐습니다. 그리고 뭔가 값도 이상하더라구요... 물론 제기준
;X := LISTArray1 - wFrame
;Y := LISTArray2 - wCaption - wFrame
check_reg := RET
;GuiControl,,로그, %bmpHaystack%||%bmpNeedle%||%RET%
;msgbox, %X%,%Y%,%RET%
if(RET = 1)
{
return true
}
else
{
return false
}
}

IsImageCheck(ByRef ClickX, ByRef ClickY, CKImage, errorRange, trans, sX = 0, sY = 0, eX = 0, eY = 0)
{
 WinGet, Title, ID, BlueStacks App Player
 If(Gdip_ImageSearchWithdHwnd(Title, ClickX, ClickY, CKImage, errorRange, trans, sX, sY, eX, eY))
 {
 return true
 }
}

click(clickx, clicky) 
{
CoordMode, mouse, window
xx := clickx - 3
yy := clicky - 25
;이부분이 , 비활성 이미지서치에서 좌표 따오는거에서 모모플레이어보면 맨 위 제목표시줄 만큼 y좌표를 빼는겁니다.
N := xx|yy<<16
PostMessage, 0x201, 1, %N%,,BlueStacks App Player
PostMessage, 0x202, 0, %N%,,BlueStacks App Player
}

sendDrag10( x, y)
{
    SysGet, capH, 4 ; 캡션Height
    SysGet, bordW, 32 ; 보더Width
    SysGet, bordH, 33 ; 보더Height

    px:=x-bordW/2
    py:=y-bordH/2-capH

    p := px|py<<16
    p1 := px+100|py<<16
    PostMessage, 0x201, 1, %p%, , BlueStacks App Player
    ;Sleep, 100

    PostMessage, 0x201, 1, %p1%, , BlueStacks App Player
    ;Sleep, 100
    Return 
}

sendDrag11( x, y)
{
    SysGet, capH, 4 ; 캡션Height
    SysGet, bordW, 32 ; 보더Width
    SysGet, bordH, 33 ; 보더Height

    px:=x-bordW/2
    py:=y-bordH/2-capH

    p := px|py<<16

    PostMessage, 0x200, 1, %p%, , BlueStacks App Player
    
    ;Sleep, 100
    Return 
}

sendDrag12( x, y)
{
    SysGet, capH, 4 ; 캡션Height
    SysGet, bordW, 32 ; 보더Width
    SysGet, bordH, 33 ; 보더Height

    px:=x-bordW/2
    py:=y-bordH/2-capH

    p := px|py<<16

    PostMessage, 0x202, 2, %p%, , BlueStacks App Player
    
    ;Sleep, 100
    Return 
}


;고수님들 소스확인하시어 개선되어야 하는부분이나, 이상한부분 댓글 남겨주세요 ^^


List of Articles
분류 제목 글쓴이 최근변경 추천
공유 화면 이미지 흑백화 추출 프로그램 만들어봤습니다. 숨꿀 2018.07.02 0/0
공유 가상화폐 거래소 업비트 실시간 가격 보기 1 태환은린 2018.01.17 0/0
공유 초보가 만든 세나매크로 소스공유 5 공유야우 2020.03.20 0/0
공유 초보가 만든 세나매크로 공유 공유야우 2018.01.28 0/0
공유 배틀그라운드 식생제거 최신버전 4 오토에임 2018.10.15 0/0
공유 배틀그라운드 풀,연막,불,피,돌,나무등 식생제거 15 오토에임 2018.03.04 0/0
공유 앱플레이어스샷모니터링 12 큐르 2020.03.20 0/0
공유 그럼 혹시 메m 매크로 제작하시분 있으신가요? 잇으시... jiil 2017.03.25 1/0
공유 포켓몬고 닌자봇 매크로 감시 매크로 소스 공유 1 T7GG 2017.03.05 0/0
공유 미완성 구이 공유합니다. 5 이무 2019.11.06 2/0
공유 세나 진형설정 UI 소스코드 3 암드래 2016.12.27 0/0
공유 다비쫄작 +만렙시 쫄 교체 + 차일드 창 꽉 찼을 시 1성... 16 한성수 2016.12.24 2/0
공유 녹스 로딩 완료 시점 체크로직 1 천행 2016.11.18 0/0
공유 제가 만들어 본 닼나용 오토핫키 소스입니다. 8 Deceptor 2016.11.22 0/0
공유 오버워치 오토에임 공유해주실분 이나 최신소스좀 던져... 2 박둘니 2016.10.30 0/0
공유 오버워치 오토핫키 오토에임입니다 13 오토에임 2022.10.02 2/0
공유 간단한 스톤에이지 레이드 매크로 19 셋쇼마루 2017.09.21 0/0
공유 스톤에이지 r4id 매크로 공유. 0.9v 32 nadore 2020.03.20 1/0
공유 postmessage 문자열 입력함수 모닝커피 2016.07.02 0/0
Board Pagination Prev 1 2 Next
/ 2

전체 최신 인기글

전체 주간 인기글