A B C D 단계로 이뤄진 루프를 돌리고 있다고 할때, 각 단계에서 if를 걸어 조건 불만족시 처음 A로 돌아가는 함수를 쓰려고 합니다
Loop
{
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 C:\Image1\001.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 1000
}
}
sleep, 4000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 C:\Image1\002.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 1000
}
}
sleep, 2000
......요런식으로 진행하다가(여기까지는 문제가 없이 동작됩니다), 루프안에 if를 많이 넣을경우 문제가 생기고 있습니다(이것보다 쉽게 하는법을 모르겠네요; 뭔가 더 방법이 있을것 같긴 한데 초보라서...)
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 C:\Image1\010.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
sleep, 3000
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\enemy.bmp
if(ErrorLevel = 0)
{
mouseclick, L, 1000, 450
sleep, 4000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\pause1.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 300
}
}
sleep, 1000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\withdraw.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 300
}
}
sleep, 4000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\hg.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 300
}
}
sleep, 4000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\stop1.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 300
}
}
sleep, 2000
Loop
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *70 C:\Image1\stop2.bmp
if(ErrorLevel = 0)
{
Send {Click %FoundX% %FoundY%}
break
}
else
{
sleep, 300
}
}
sleep, 3000
reload
}
else
{
mouseclick, L, 1000, 450
break
}
}
else
{
sleep, 1000
}
}
reload --->;요기가 문제인것 같습니다. 여기에서 다시 맨 처음 시작하는 곳으로 가고 싶은데 어떤식으로 표현해야 할지 모르겠습니다...실제로 적용해보니 reload가 맨 처음으로 돌아가게 하지는 않는것 같더라구요
reload라고 쓴 부분에 어떻게 해야 매크로를 처음으로 시작하는것 처럼 만들 수 있을까요??
(image 1,2를 찾는 앞부분은 잘 되다가 image10을 찾는것이 잘 안되는 상태입니다)
sss:
loop
{
...
goto, sss
}
이렇게 라벨을 만들어 점프 하면 됩니다.
님의 코드는 거짓일때만 reload를 하게 되어 있습니다.
참일때는 루프를 벗어나서 reload를 실행하지 않아요.
의도하신바가 맞고 reload 시켰을때 스크립트가 끊김없이 수행하는거라면 문제없습니다.
그리고 로그를 넣어서 각 이미지서치마다 성공했을 경우 알수 있게 하는게 디버깅 하는데에도 좋습니다.