바람의나라 매크로를 만들어서 사용하고 있습니다.
1~2시간정도 돌아가면 autohotkey unicode 64-bit 작동이 중지되었습니다. 라는 오류가 뜹니다
여기 저기서 오류에 대해 찾아보니 메모리가 쌓여서 작동이 중지 된다고 하시더군요
제가 필요한부분만 짜집어서 배우고 만들다보니까
거의 초보수준이라 해결하기가 쉽지 않네요
return은 잘 넣고 있는데
실시간으로 좌표를 인식해서 불러와야 하기 때문에
loop 안에 gosub으로 이미지 서치해서 좌표를 따내는 명령을 불러옵니다.
gosub이 굉장히 많이 돌아가는 거죠
gosub이 많으면 메모리가 쌓여서 위와 같은 오류가 발생한다고 하신 글을 읽었습니다.
그래서 gosub같은 명령어를 쓰지 않고 함수를 사용하신다고 하셨구요
밑에는 좌표인식 부분만 복사한 내용입니다 x좌표 세자리 y좌표 세자리
0부터 순서대로 이미지와 대조해서 맞는것이 나오면 그 값을 저장하고 다음자리를 검색하는 방식으로 만들었습니다
XXX:
imagesearch, xg, yg, 800, 700, 1000, 800, 좌표\x.bmp
100x=0
loop, 9
{
imagesearch, 100xx, 100xy, xg+20, yg, xg+32, yg+12, *transwhite 좌표\%100x%.bmp
if errorlevel = 1
{
100x:=100x+1
}
else if errorlevel = 0
{
break
}
}
10x=0
loop, 9
{
imagesearch, 10xx, 10xy, xg+28, yg, xg+41, yg+12, *transwhite 좌표\%10x%.bmp
if errorlevel = 1
{
10x:=10x+1
}
else if errorlevel = 0
{
break
}
}
1x=0
loop, 9
{
imagesearch, 1xx, 1xy, xg+37, yg, xg+48, yg+12, *transwhite 좌표\%1x%.bmp
if errorlevel = 1
{
1x:=1x+1
}
else if errorlevel = 0
{
break
}
}
x좌표=%100x%%10x%%1x%
return
YYY:
imagesearch, hx, hy, 800, 700, 1000, 800, 좌표\y.bmp
100y=0
loop, 9
{
imagesearch, 100yx, 100yy, hx+20, hy, hx+32, hy+12, *transwhite 좌표\%100y%.bmp
if errorlevel = 1
{
100y:=100y+1
}
else if errorlevel = 0
{
break
}
}
10y=0
loop, 9
{
imagesearch, 10yx, 10yy, hx+28, hy, hx+41, hy+12, *transwhite 좌표\%10y%.bmp
if errorlevel = 1
{
10y:=10y+1
}
else if errorlevel = 0
{
break
}
}
1y=0
loop, 9
{
imagesearch, 1yx, 1yy, hx+37, hy, hx+48, hy+12, *transwhite 좌표\%1y%.bmp
if errorlevel = 1
{
1y:=1y+1
}
else if errorlevel = 0
{
break
}
}
y좌표=%100y%%10y%%1y%
return
이것을 함수로 표현 한다면
xxx(){
내용}
yyy(){
내용}
이렇게 해도 될까요?
gosub, xxx
gosub, yyy
이건
xxx()
yyy()
이렇게 되는 거겠죠?
정말 모르는게 많다보니 궁금한것도 많고 질문할것도 많네요
다른분들이 올리신걸 읽어보니
함수
function()
이건 function을 호출 하는 것이고
function() 다음에 {}가 바로 오면
function의 내용이 되는 것... 맞나요?
function()
{
내용
리턴 ;써도되고 안써도되구.. 그런다네요 ㅋ
}
이렇게하고 알고계신대로..
function() 요거만써서.. 펑션의 내용을 불러옵니다.