a이미지가 서치되면 a라벨로, b이미지가 서치되면 b라벨로 가는 루프문을 만든다음


루프문 내에서는 현재시간을 계속 체크하고


a라벨에선 특정함수의 마지막동작시간에서 현재시간을 빼서 동작안한 시간(분)을 구하고(처음 구동할땐 구동시작시간이 함수의 마지막 동작시간)


b라벨에서 동작안한시간을 체크해서 시간이 되면 함수를 실행하게끔 해서


최종적으론 일정시간 간격으로 b라벨에서 특정함수를 실행하게끔 다음과같이 만들었습니다.

(http://elderlykims.tistory.com/35 글을 참고했습니다)


F5::

global 현재시간 := 0


global 함수1동작시간 := 0
global 함수1정지시간 := 0

global 함수2동작시간 := 0
global 함수2정지시간 := 0

FormatTime, 현재시간,m,m


함수1동작시간 := 현재시간
함수2동작시간 := 현재시간

Loop{ 
FormatTime, 현재시간,m,m


 if(A이미지 서치할경우)
  gosub,A라벨


 else if(B이미지 서치할경우)
  gosub,B라벨

}


A:

if(현재시간 >= 함수1동작시간)
 함수1정지시간 := 현재시간 - 함수1동작시간
else
 함수1정지시간 := 현재시간 + 60 - 함수1동작시간

if(현재시간 >= 함수2동작시간)
 함수2정지시간 := 현재시간 - 함수2동작시간
else
 함수2정지시간 := 현재시간 + 60 - 함수2동작시간


{기타 a이미지가 서치되었을때 수행할 명령어들 ... }

return


b:
if(함수1정지시간 >= 5)
{  함수1동작시간 := 현재시간
    함수1정지시간 := 0

... }

if(함수2정지시간 >= 20)
{   함수2동작시간 := 현재시간
    함수2정지시간 := 0 

... }

return


즉, 함수가 실행된후 몇분지났나 계속 변수에 저장하면서 함수1의 경우 5분, 함수2는 20분이 지날경우 b이미지가 서치되었을때 각 함수가 수행되게 만들었습니다

a이미지는 1분미만간격으로 서치되므로 a라벨에서 시간체크해도 괜찮다고 생각되구요


문제는 위 매크로를 오래돌리다보면 함수1이 수십분간 실행이 안될때가 있습니다

분명 5분마다 해야하는데 한 30분간 동작을 안하다가 다시 실행되고 그시점부터 5분간격으로 또 잘 돌아가는 현상이 생기는데


a라벨에 실행해야할게 좀 있는데 그것때문일까요?

몇시간 게속 잘 구동되다가 저러니까 문제를 모르겠습니다


답글