안녕하세요.

    이번엔 간단한 스크립트를 알려드려고 합니다.

    요새 녹스나 미뮤를 이용해서 모바일 게임을 많이 플레이 하실겁니다.


    근데 모바일 게임 하나만 하기엔 허전해서 동시에 여러 계정을 돌리는 경우가 있습니다.

    그런 경우 한번의 액션을 계정 수 만큼 반복을 해야되서 무지하게 피곤한 일이 되어버립니다.


    또한 어떤 게임은 피버 연타라는 광클릭을 필요로 하구요.


    그 두가지 기능을 도와주는 스크립트 입니다.


    가장 먼저 오토핫키가 설치되어 있어야 합니다.

    보안을 위해 스크립트만 제공을 하기때문에 매크로를 실행하려면 오토핫키가 설치되어 있어야 합니다.


    아래 링크에서 다운로드 하여 오토핫키를 설치합니다.

    https://autohotkey.com/download/



    첨부된 스크립트 파일 입니다.

    다운로드

    MouseHelper.ahk


    오토핫키 설치 후 첨부된 MouseHelper.ahk를 오른클릭하여

    Run with UI Access

    를 클릭하여 실행합니다.



    실행되면 트레이 아이콘에 오토핫키 아이콘이 생기며 종료는 트레이 아이콘을 오른클릭하여 Exit를 클릭하면 됩니다.


    사용방법입니다.

    일괄 클릭은 컨트롤키+윈도우키+마우스 좌클릭을 안드로이드 에뮬레이터(녹스,미뮤)의 창 하나에서 클릭하면 나머지 창에도 동일한 위치에 클릭을 합니다.

    연타 광클릭은 안드로이드 에뮬레이터(녹스,미뮤) 창이 활성화된 상태에서 우클릭을 누르고 있으면 누르고 있는 동안 좌클릭을 연타하게 됩니다.


    일괄 클릭의 활용 예를 영상으로 첨부합니다.


    주의점은

    같은 해상도 설정의 앱 클라이언트여야 합니다.

    클릭 딜레이는 스크립트 안의 Sleep 부분의 숫자를 조절하면 됩니다. 단위는 ms(밀리 세컨드)입니다.


    아래는 스크립트 내용입니다.


    #NoEnv
    #SingleInstance Force
    #Persistent
    CoordMode, Pixel, Screen
    CoordMode, Mouse, Screen
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 2
    SetBatchLines,-1
    
    ~$RButton:: ; 앱플레이어에서 오른클릭시 좌클릭 연타
    IfWinActive,ahk_class Qt5QWindowIcon
    {	
    	while ( GetKeyState("RButton","P") ){
    		if ( A_index > 2 )
    			SendInput, {LButton}
    		Sleep,50
    	}
    }
    return
    
    ~^#LButton UP:: ; 윈도우키와 컨트롤키를 누르고 좌클릭시 모든 앱플레이어에서 같은 위치를 클릭
    multiClick()
    return
    
    multiClick()
    {
    	IfWinActive, ahk_class Qt5QWindowIcon
    	{
    		static x,y,wh,mX,mY,Lists,hWnd
    		GetClietPos(x,y,w,h)
    		WinGet, Lists, List, ahk_class Qt5QWindowIcon
    		MouseGetPos, mX,mY	
    		Loop,% ( Lists )
    		{
    			hWnd := Lists%A_Index%
    			if ( hWnd <> WinExist("A") )
    				postClickWin(floor(w*Round((mX-x)/w,2)),floor(h*Round((mY-y)/h,2)),1,hWnd)
    		}
    	}
    }
    
    postClickWin(pX,pY,cnt,hwnd){
    	static rx,ry,rw,rh
    	ControlGetPos, rx,ry,rw,rh,subWin1,% "ahk_id " hwnd
    	pX:=pX+rx
    	pY:=pY+ry
    	Loop, %cnt%
    	{
    		PostMessage, 0x201, 0x0001, ((pY*65536)+pX),, ahk_id %hwnd%,sub      ;WM_LBUTTONDOWN
    		Sleep,20	
    		PostMessage, 0x202 , 0, ((pY*65536)+pX),, ahk_id %hwnd%,sub            ;WM_LBUTTONUP
    		Sleep, 50
    	}
    }
    
    GetClietPos(ByRef x, ByRef y, ByRef w, ByRef h)
    {
    	static rx,ry,rw,rh,tx,ty,tw,th
    	ControlGetPos, rx,ry,rw,rh,subWin1,% "ahk_id " WinExist("A")
    	WinGetPos, tx,ty,tw,th,% "ahk_id " WinExist("A")
    	x:=tx+rx
    	y:=ty+ry
    	w:=rw
    	h:=rh
    }
    


    저작자 표시 비영리 변경 금지
    신고
    Posted by 확인소장
    • 감사합니다
      2017.04.19 02:05 신고

      좋은 정보 감사합니다