스크립트의 내용은
박스1 | 3 | 5 | 7 |
|
박스2 |
|
|
| 10 |
이렇게 10개의 박스가 있는데, 박스를 1~10까지(누르는 순서는 상관없음) 누를때 흰색 이미지or픽셀이 나오면
중지하는 스크립트입니다.
--------------------------1. 함수를 이용한 스크립트 ------------------------
함수(a, b)
{
send {q}
sleep, 50
Mouseclick,left, a, b, 1
sleep, 10
imagesearch, vx, vy, 100, 150, 1000, 1500, 흰색.bmp
if errorlevel = 0
{
return
}
}
f1::
함수(100, 200)
.
.쭉쭉 있는데 마찬가지로 생략했습니다.
.
함수(500, 300)
return
--------------------------------------------------------------------------------
위 함수를 이용한 스크립트로 실행하면 흰색 이미지가 나와도 이미지서치를 안하고
그냥 박스를 1~10번까지 차례대로 클릭만 합니다.
아마도 제 생각에 함수안에서 return은 중지가 아니라 반환이라서 이미지서치를 해도 정지를 안하는 것 같습니다만..??
--------------2. gosub를 이용한 스크립트입니다.----------------------------------
f1::
send {q}
sleep, 50
Mouseclick,left, 100, 200, 1
sleep, 10
gosub, 1
.
. 쭉쭉 있지만 마찬가지로 생략했습니다.
.
return
1:
imagesearch, vx, vy, 100, 150, 1000, 1500, 흰색.bmp
if errorlevel = 0
{
return
}
return
---------------------------------------------------------------------------------
위 gosub로 이용한 스크립트는 무슨 이유인지 도대체 모르겠지만 100, 200 좌표로 마우스 클릭이 아니라
마우스 이동하고 멈춥니다.. 도대체 클릭도 아니고 왜 이동하고 멈추는지 도저히 이해가 안됩니다만..
이렇게 1.함수, 2. gosub 를 제가 아는선에서 공부해서 만들었는데 제가 잘못했는지 안됩니다. ㅠㅠ
분명 긴 스크립트를 줄이는 방법이 있을거같아서 이렇게 질문올립니다.
긴글 읽어주셔서 감사합니다
-글이 너무 길어서 핵심만 짧게 수정했습니다.
함수의 경우 아래와 같이 변경
함수(a, b)
{
send {q}
sleep, 50
Mouseclick,left, a, b, 1
sleep, 10
imagesearch, vx, vy, 100, 150, 1000, 1500, 흰색.bmp
if errorlevel = 0
{
return 1
}
}
f1::
if (함수(100, 200)=1)
return
.
.
return
gosub 의 경우 아래와 같이 변경
f1::
send {q}
sleep, 50
Mouseclick,left, 100, 200, 1
sleep, 10
gosub, 1
if (result=1)
return
.
.
.
1:
imagesearch, vx, vy, 100, 150, 1000, 1500, 흰색.bmp
if errorlevel = 0
{
result=1
return
}
else
result=0
return
본문 스크립트에선 함수의 결과값을 반영하는 구문이 없습니다
그래서 멈추지 않고요, 이미지서치도 정상적으로 작동했을겁니다
gosub의 경우도 위 내용만으로는 멈추지 않아야 정상입니다