# 사용조건 

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

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

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

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

본인의 사용하는 버튼에 알맞게 소스상에 원하는 기능 위 if문안에 번호를 수정하시면되고 

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

4. 사용방법은 

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

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

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



--


--메이플 농장 도우미(ver1.1 / 수정일자 2020-03-15)


--#설정값

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

-- 내농장의 c급펫 한마리는 맨앞열에 하나는 존재해야함

-- 현재 마우스 G502사용중 

--#기능

-- 3회돌보기 후 방출기능

-- 펫조합기능

--전역변수

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