이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다.
내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다.
저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요.
더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다.
그래서 함수들을 조합해서 좀더 편하게 제어해보고 싶어졌습니다.
4. 이미지 클릭 함수 clickImage()
네번째로 다뤄볼 함수는 이미지검색함수 ImageSearch() 를 통해 이미지를 찾고 클릭까지 하게 만들것 입니다.
아무래도 이미지검색 기반 자동화툴인 이미지맥스의 특성상 이 함수가 가장 쓰임새가 많고 주력으로 사용할만한 함수라고 예상되네요.
function clickImage(img_string)
local boolean
local ret, acc, ix, iy, sx, sy = ImageSearch(img_string)
if ret == 1 then
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)
boolean = true
print('clickImage() : '..img_string)
end
return boolean
end
-- 인수 : 클릭할 이미지의 이름 문자열(img_string)
-- 반환 : 이미지서치 후 마우스 클릭 결과 (실패시:False, 성공시:True)
클릭을 할 이미지의 이름을 인수로 지정하여 실행하시면 이미지를 검색하고, 발견시 이미지의 영역만큼 클릭합니다.
이때 지난번에 만들어둔 이미지검색결과 클릭함수 clickResult() 를 활용하였습니다.
기억이 안나신다면 지난 글을 찾아서 봐주시면 좋을것 같습니다.
2021.05.02 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 루아 내부함수를 응용해보자! -2- (clickResult()함수)
-- 예시1) 이미지를 검색하고 발견시 클릭
clickImage('find_image')
-- 내부함수로 코드를 작성시 예문
local ret, acc, ix, iy, sx, sy = ImageSearch('find_image')
if ret == 1 then
local rx = ix - sx
local ry = iy - sy
Mouse(LBUTTON, CLICK, ix, iy, 0, 0, rx, ry)
end
기존 내부함수만으로 이미지를 검색하고, 각종 변수들을 계산해야 했던 이미지 클릭 동작이 이제 단 한줄로 가능합니다.
편리함으로 인해 루아로 이미지맥스를 활용하면서 가장 많이 활용하고 있는 함수가 아닐수가 없습니다.
특정 창에서만 있는 버튼등을 클릭할 경우 다음과 같은 예시도 가능합니다.
-- 예시2) 특정한 윈도우나 창에서 이미지를 검색하고 발견시 클릭
if isImage('confirm_window') then
clickImage('confirm_ok_btn')
end
-- 내부함수로 코드를 작성시 예문
if ImageSearch('confirm_window') == 1 then
local ret, acc, ix, iy, sx, sy = ImageSearch('confirm_ok_btn')
if ret == 1 then
local rx = ix - sx
local ry = iy - sy
Mouse(LBUTTON, CLICK, ix, iy, 0, 0, rx, ry)
end
end
복잡한 동작일수도 있지만 아주 짧고 간결하게 처리가 가능합니다.
이미지검색함수 ImageSearch()를 boolean값으로 리턴을 받을수 있는 isImage() 함수도 이전에 다룬적이 있으니 해당글을 찾아봐주시면 좋을것 같습니다.
2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기
이제 머리가 안아플것 같습니다.
'이미지맥스 그리고 루아(lua) > [응용] 내장함수 활용' 카테고리의 다른 글
[이미지맥스] 테이블로 나열한 여러 이미지를 서치 혹은 클릭하는 함수 isTable(), clickTable() (0) | 2021.07.18 |
---|---|
[이미지맥스] MultiImage() 결과값을 boolean 값으로 받기 isImage() (0) | 2021.07.18 |
[이미지맥스] 지정영역을 랜덤하게 클릭하는 함수 clickArea() (0) | 2021.05.03 |
[이미지맥스] ImageSearch()결과를 활용하여 클릭하는 함수 clickResult() (0) | 2021.05.02 |
[이미지맥스] 마우스 클릭을 조금만 더 간편하게! click() (0) | 2021.05.02 |