반응형

요즘 플레이하는 게임마다 간단하게 매크로를 하나씩 만들어보고 있다.

기존에 잘 써먹던 Autohotkey 같은 경우, 워낙 많이 알려져있기 때문에 PC 클라가 뜨면서 보안프로그램이 같이 떠버리면 어뷰저 (악용 유저)로 분류가 되기 마련이다. (N사 게임들이 특히 그렇다)

 

하지만, 게임사도 win32 API인 SendMessage, PostMessage는 막을 수가 없기 때문에, 이것들을 활용해보았고, 그 결과 잘 되는 것을 확인하였다.

왜 못막냐고? 저것들을 막아버리면 PC 클라로 들어오는 모든 이벤트를 막는 것이기 때문에, 일반적인 키보드 / 마우스도 사용할 수가 없기 때문이다.

 

물론 C로 쌩짜로 짜면 좋겠지만, 간단하게 python으로 구현을 해보았고, win32gui, win32con 패키지 정도만 있으면 쉽게 구현가능하다.

 

요즘 하는 게임에서 필요한 기능은 자동 사냥은 일단 제공을 하고 있고, 자동 스킬까지 제공하는 훌륭한 게임이지만, 일정주기마다 특정 키를 눌러줘야 자동 사냥의 효율성이 더 올라가고, 물약도 적게 먹기 때문에, 난 30초마다 내가 숨겨둔 PC클라에 특정 키를 입력해주는 기능을 구현하려고 한다.

 

아래 소스는 내가 플레이하는 게임창을 찾아서, 특정 시간마다 Z 키를 누르는 기능을 수행한다.

import time
import win32gui
import win32con

class DiabloByebye:

    def __init__(self):        
        self.win_title_name = "찾고자 하는 창의 타이틀명 적어준다. (winspy로 찾을 수 있음)"
        self.handle = win32gui.FindWindow(None, self.win_title_name)
        print(self.handle) # 여기서 0 찍히면 타이틀명 잘못 찾은거임
        
    def start(self):
        while True:                        
            win32gui.SendMessage(self.handle, win32con.WM_KEYDOWN, ord('Z'), 0)
            time.sleep(0.1)
            win32gui.SendMessage(self.handle, win32con.WM_KEYUP, ord('Z'), 0)
            time.sleep(30)
 
if __name__== "__main__":  
    DiabloByebye().start()

 

클래스명은 최근 영정당한 Diablo에게 인사하는 이름으로 해보았다.

키보드 이벤트를 후킹해서, 시작 / 중지 / 종료 등도 다양하게 구현이 가능하다.

 

반응형
,
반응형