본문 바로가기
이미지맥스 그리고 루아(lua)/[응용] 내장함수 활용

[이미지맥스] ImageSearch()결과를 활용하여 클릭하는 함수 clickResult()

by 위치결정 2021. 5. 2.
반응형

이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다.

 

내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다.

저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요.

 

더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다.

그래서 함수들을 조합해서 좀더 편하게 제어해보고 싶어졌습니다.

 

2. 이미지 검색 결과 좌표 클릭 함수 clickResult()

두번째로 다뤄볼 함수는 이미지검색함수 ImageSearch()를 통해 이미지를 검색시 리턴되는 좌표(ix, iy, sx, sy)를 통해 마우스 제어 함수 Mouse()를 이용해 클릭하는 부분을 간소화하여 함수로 활용하는것입니다.

-- ImageSearch() 결과를 이용한 마우스 클릭
function clickResult(_ix, _iy, _sx, _sy)
    local rx = _ix - _sx
    local ry = _iy - _sy
    local rx = math.random(-rx, rx)
    local ry = math.random(-ry, ry)
    
    local ix = ix + rx
    local iy = iy + ry

    Mouse(LBUTTON, CLICK, ix, iy)
    print('clickResult() : '..ix, iy)
end

-- 인수 : _ix, _iy (이미지 중앙좌표) / _sx, _sy (이미지 좌상단 기준좌표)

이미지검색 함수를 통해 리턴받은 이미지의 중앙좌표(ix, iy)와 이미지의 좌상단 기준좌표(sx, sy)를 활용하여 이미지의 중앙지점을 기준으로 랜덤영역(rx, ry)을 자동으로 계산하여 클릭하는 함수입니다.

 

-- 예시) 이미지 검색 함수를 이용하여 이미지를 검색후 이미지 클릭
local ret, acc, ix, iy, sx, sy = ImageSearch('find_img')
clickResult(ix, iy, sx, sy)


-- 내부함수 Mouse()를 사용하는 예문
local ret, acc, ix, iy, sx, sy = ImageSearch('find_img')
local rx = ix - sx
local ry = iy - sy
Mouse(LBUTTON, CLICK, ix, iy, 0, 0, rx, ry)

 

너무 너무 편리합니다.

반응형

댓글