로지텍 루아 좌표 - lojiteg lua jwapyo

이미지맥스는 루아 스크립트 언어를 사용하여 코딩이 가능합니다.

기본적으로 제공하는 기능을 활용하여도 괜찮지만, 코드를 통해 좀더 다양한 기능을 구현할수 있다는 것이 장점입니다.

루아의 기본적인 함수는 물론, 이미지맥스 에서 제공하는 내장함수 라이브러리도 있으니 이를 활용하여 매크로 프로그램을 설계하면 좋을것입니다.

이미지맥스에서 제공하는 함수 라이브러리는 공식카페(cafe.naver.com/imagemax/302)에서 확인하실수 있습니다.

이미지맥스에서 제공하는 마우스제어 함수는 다음과 같이 사용합니다.

Mouse(BUTTON, EVENT, X1, Y1, X2, Y2, RX, RY, DELAY_SEC, INTERLATION, SPEED, TYPE) -- BUTTON : 좌클릭(LBUTTON), 우클릭(RBUTTON), 휠클릭(MBUTTON) -- EVENT : 클릭(CLICK), 더블클릭(DBCLICK), 드래그(DRAG), 이동(MOVE), 버튼누름(DOWN), 버튼뗌(UP), 휠상승(WHEELUP), 휠하강(WHEELDOWN) -- X1, Y1 : 클릭좌표(int정수) -- X2, Y2 : 드래그시 도착 좌표(int정수) -- RX, RY : 클릭좌표를 중심으로 랜덤 범위(int정수) -- DELAY_SEC : 더블클릭시 딜레이시간(double실수) -- INTERLATION : 동작 반복횟수(int정수) -- SPEED : 가장빠름(FASTEST), 빠름(FASTER), 보통(NORMAL), 느림(SLOWER), 가장느림(SLOWEST) -- TYPE : 활성(MKEVENT), 비활성(MESSAGE), 드라이버(DRIVER), 하드웨어(HW)

각 인수는 순서대로 기입하며 사용하지 않는 인수는 숫자 0을 기입하거나 빈스트링(' ') 등으로 생략이 가능합니다.

실제로 코드를 작성하여 테스트 해보시길 권해드립니다.

-- X좌표:100, Y좌표:100 지점을 클릭 Mouse(LBUTTON, CLICK, 100, 100) -- X좌표:100, Y좌표:100 지점을 중심으로 X, Y : 50, 50 범위를 랜덤 클릭 Mouse(LBUTTON, CLICK, 100, 100, 0, 0, 50, 50) -- X좌표:100, Y좌표:100 -> X좌표:200, Y좌표:200 드래그 Mouse(LBUTTON, DRAG, 100, 100, 200, 200) -- X좌표:100, Y좌표100 지점을 중심으로 X, Y : 10, 10 범위에서 휠을 아래로 동작 Mouse(LBUTTON, WHEELDOWN, 100, 100, 0, 0, 10, 10) -- X좌표:200, Y좌표:200 지점을 중심으로 X,Y 10,10 범위를 랜덤으로 활성방식으로 클릭 Mouse(LBUTTON, CLICK, 200, 200, 0, 0, 10, 10, 0, 1, SLOWEST, MKEVENT)

실제 활용은 이미지맥스의 이미지를 검색함수 ImageSearch()를 사용하여 이미지를 검색후 좌표를 얻어 그 지점을 클릭하는데 가장 많은 빈도로 사용할것입니다.

-- 이미지를 검색하여 리턴받은 이미지의 중앙좌표 ix, iy를 중심으로 (10,10) 범위만큼 랜덤으로 클릭 local ret, acc, ix, iy, sx, sy = ImageSearch('IMAGE_NAME') if ret == 1 then Mouse(LBUTTON, CLICK, ix, iy, 0, 0, 10, 10) end

참 신통합니다.

1. 로지텍 마우스 사용자에 한하여 사용이 가능합니다.(기종무관)

2. Logitech 게임 소프트웨어를 받으셔서 해당 프로필 우클릭 - 스크립트 작성을 여신후 넣으시면됩니다.

3. 제 환경에 맞췄기 떄문에(G502) 본인의 마우스 기종에 따라 arg == N 이라는 N은 마우스 추가버튼의 번호를 말하며 

   OutputLogMessage() 함수를 선언하였기에 마우스 버튼을 눌러보시면 몇번인지 확인이 가능합니다.

본인농장의 남은칸에 따라 maxCount , OutCount  숫자를 조절하시면됩니다.

4. 사용방법은 

SumCount()함수를 누를 버튼을 지정하여 n번 누른뒤 매크로농장으로 이동하여 SumPet(count) 함수를 호출하시면됩니다.

그후 본인의 농장으로 돌아와 돌보기 및 방출할 몬스터에 마우스를 가져다대고 CareAndOutPet(OutCount) 함수를 호출합니다.

그외 마우스 추가 버튼의 여유가 되시는분들은 제가 추가로 만든 친구찾기함수, 본인농장으로 이동함수, 몬스터첫번째 위치이동함수등을 마우스버튼에 매핑하시면됩니다.

--전역변수

count = 0 -- 조합카운트

maxCount = 9 --조합맥스카운트

OutCount = 9 --돌보기후 펫방출 반복횟수

function OnEvent(event, arg)

OutputLogMessage("event = %s, count = %d, arg = %dn", event, count,arg)

if (event == "PROFILE_ACTIVATED") then

EnablePrimaryMouseButtonEvents(true)

elseif event == "PROFILE_DEACTIVATED" then

ReleaseMouseButton(2) -- to prevent it from being stuck on

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 5) then--(휠우측 = 펫3회돌보기 후 방출),전환형태

CareAndOutPet(OutCount)

Sleep(60)

FindFriend()

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 4) then--(휠좌측 = 펫조합)

SumPet(count)

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 6) then--(엄지손가락)

GetOut()

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 8) then--(횟수 카운트용)

SumCount()

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 9) then--(테스트용)

FindFriend() --친구검색

--PrintMousePosition()

end

if (event == "MOUSE_BUTTON_PRESSED" and arg == 10) then--(1번째 몬스터칸으로 이동)

GoFirst()

end

end

-- 기능함수 작성 --

--마우스 화면밖으로보내기

function GoOutside()

MoveMouseRelative(-120, 0)

Sleep(1)

MoveMouseRelative(-120, 0)

Sleep(1)

MoveMouseRelative(-120, 0)

Sleep(1)

MoveMouseRelative(-120, 0)

Sleep(1)

PressAndReleaseMouseButton(1)

end

--1번째 몬스터칸으로 이동

function GoFirst()

GoOutside()

Sleep(10)

MoveMouseTo(2664 , 50351)

Sleep(10)

PressAndReleaseMouseButton(1)

end

--나가기

function GetOut()

--나가기 클릭

GoOutside()

Sleep(10)

MoveMouseTo(33399 , 52841)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(800)

--나가기 클릭

--돌보기위치 초기화

--몬스터위치7번째이동

GoOutside()

Sleep(10)

MoveMouseTo(18305, 50776)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(100)

MoveMouseWheel(-1)

Sleep(60)

MoveMouseWheel(-1)

Sleep(60)

--MoveMouseWheel(-1)

--Sleep(60)

--몬스터위치7번째이동

--돌보기위치 초기화

end

--펫조합

-- 내 농장의c급펫은 맨앞열에 위치해야한다.

-- 옵션1024 * 768 기준 창모드로 메이플아이콘 모양이 절대좌표(478, 7288) 위치시킴

function SumPet(_n)

if _n <= 7 then

--7회까지 조합

for i = 1, _n do

local _x, _y = GetMousePosition();

PressAndReleaseMouseButton(3);

Sleep(30)

GoMouse(0,9)

Sleep(30)

PressAndReleaseMouseButton(1);

Sleep(30)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(8538, 40876)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16426, 35288)

Sleep(40)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(3100)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16290, 37900)

Sleep(30)

PressAndReleaseMouseButton(1)

Sleep(70)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(_x+2600, _y)

Sleep(30)

PressAndReleaseMouseButton(1)

Sleep(60)

end--end_for

--7회까지 조합

else

--7회이후 maxCount까지 조합

for i = 1, 7 do

local _x, _y = GetMousePosition();

PressAndReleaseMouseButton(3);

Sleep(30)

GoMouse(0,9)

Sleep(30)

PressAndReleaseMouseButton(1);

Sleep(30)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(8538, 40876)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16426, 35288)

Sleep(40)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(3100)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16290, 37900)

Sleep(30)

PressAndReleaseMouseButton(1)

Sleep(70)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(_x+2600, _y)

Sleep(30)

PressAndReleaseMouseButton(1)

Sleep(60)

end--end_for

--8회이상구간

for i = 1, maxCount - 7 do

--조합로직

--몬스터위치7번째이동

GoOutside()

Sleep(10)

MoveMouseTo(18305, 50776)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

MoveMouseWheel(-1)

Sleep(60)

--몬스터위치7번째이동

PressAndReleaseMouseButton(3);

Sleep(30)

GoMouse(0,9)

Sleep(30)

PressAndReleaseMouseButton(1);

Sleep(30)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(50)

GoOutside()

Sleep(10)

MoveMouseTo(8538, 40876)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16426, 35288)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(3100)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(16290, 37900)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(70)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

PressKey("enter");

Sleep(40)

ReleaseKey("enter");

Sleep(80)

MoveMouseWheel(-1) --휠다운 1회

Sleep(30)

end--end_for

--조합로직

--7회이후 maxCount까지 조합

end--end_if

count = 0

end

--펫방출

function RemovePet()

local _x, _y = GetMousePosition();

PressAndReleaseMouseButton(3)

Sleep(30)

GoMouse(0,9)

Sleep(30)

PressAndReleaseMouseButton(1)

Sleep(50)

GoOutside()

Sleep(10)

MoveMouseTo(16665, 33648)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(100)

PressKey("enter");

Sleep(50)

ReleaseKey("enter");

Sleep(80)

GoOutside()

Sleep(10)

MoveMouseTo(_x, _y)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(40)

end

--자동 돌보기(_n회)

function CarePet(_x)

for i = 1,_x do

PressAndReleaseMouseButton(3);

Sleep(10)

GoMouse(0,12)

Sleep(10)

PressAndReleaseMouseButton(1);

Sleep(10)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(30)

PressKey("enter");

Sleep(30)

ReleaseKey("enter");

Sleep(30)

GoMouse(0,-12)

Sleep(30)

end

end

-- 공통함수 작성 --

--마우스 상대좌표 이동(_x : x좌표, _y : y좌표)

--양수일경우 y는 위, x는 우측 이동 음수는 그반대로 이동

function GoMouse(_x, _y)

local cx = 1

local cy = 1

if _x > 0 then cx = -1

elseif _x == 0 then cx = 0

else cx = 1

end

if _y > 0 then cy = -1

elseif _y == 0 then cy = 0

else cy = 1

end

for i = 1, Abs(_x) do

MoveMouseRelative(cx*10, 0)

Sleep(1)

end

Sleep(1)

for i = 1, Abs(_y) do

MoveMouseRelative(0, cy*10)

Sleep(1)

end

end

--현재좌표-> 절대좌표값 이동

function GoAbsMouse(_x, _y)

local now_x, now_y = GetMousePosition();

local gap_x = _x - now_x

local gap_y = _y - now_y

local cx = 1 --x방향

local cy = 1 --y방향

if gap_x > 0 then cx = -1

elseif _x == 0 then cx = 0

else cx = 1

end

if gap_y > 0 then cy = -1

elseif _y == 0 then cy = 0

else cy = 1

end

for i = 1, Abs(_x) do

MoveMouseRelative(cx*1, 0)

Sleep(1)

end

Sleep(1)

for i = 1, Abs(_y) do

MoveMouseRelative(0, cy*1)

Sleep(1)

end

end

--절대값 구하기

function Abs(_x)

if _x > 0 then return _x

else return -_x

end

end

-- 마우스 절대좌표확인

function PrintMousePosition()

local _x, _y = GetMousePosition();

OutputLogMessage("Mouse is at %d, %dn", _x, _y);

end

--반복횟수 지정

function SumCount()

count = count + 1

if count > maxCount then count = maxCount

end

end

-- (돌보기3회 + 펫방출1회) * x회

function CareAndOutPet(_x)

for i = 1, _x do

CarePet(3)

Sleep(70)

RemovePet()

Sleep(70)

end

end

--농장친구 검색클릭

function FindFriend()

--친구목록 클릭

GoOutside()

Sleep(10)

MoveMouseTo(26535 , 52902)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

--친구목록 클릭

--친구이름검색 클릭

GoOutside()

Sleep(10)

MoveMouseTo(31760 , 42576)

Sleep(10)

PressAndReleaseMouseButton(1)

Sleep(60)

--친구이름검색 클릭

end

Toplist

최신 우편물

태그