最近守望職業選手疑似開掛事件挺熱鬧的,在下小菜一枚,並不能從視頻中看出端倪。看了一些關於外掛的討論,自動點射和壓槍只需在鼠標驅動上做些改動即可,自瞄或其他高級功能則需要讀內存或修改游戲文件,檢測也更容易。
士兵76長按左鍵掃射4發子彈之后准星就會小范圍隨機飄,所以想自己實現一個長按左鍵變自動點射的程序。
僅作測試使用,鄙視一切外掛,玩游戲就好好玩。
選擇使用python,用到的庫pyHook,pywin32
pyHook的文檔:http://pyhook.sourceforge.net/doc_1.5.0/
接下來照着文檔寫就可以了,代碼如下
1 # coding: utf-8 2 3 import pythoncom 4 import pyHook 5 import win32api 6 import win32con 7 import time 8 import threading 9 import random 10 11 def send_click(): 12 global down_num,up_num 13 while(1): 14 if down_num!=up_num: 15 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) 16 #連射多少秒,大約0.1秒一發子彈 17 time.sleep(random.uniform(0.38,0.42)) 18 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 19 #連發之間的停頓時間 20 time.sleep(random.uniform(0.25,0.29)) 21 print 'click ok' 22 23 def onMouse_leftdown(event): 24 # 監聽鼠標左鍵按下事件 25 global down_num 26 down_num += 1 27 print "left DOWN DOWN"+str(down_num) 28 return True 29 # 返回 True 表示響應此事件,False表示攔截 30 31 def onMouse_leftup(event): 32 # 監聽鼠標左鍵彈起事件 33 global up_num 34 up_num += 1 35 print "left UP UP UP"+str(up_num) 36 return True 37 38 def main(): 39 hm = pyHook.HookManager() 40 41 hm.MouseLeftDown = onMouse_leftdown 42 hm.MouseLeftUp = onMouse_leftup 43 44 hm.HookMouse() 45 46 # 進入循環,如不手動關閉,程序將一直處於監聽狀態 47 pythoncom.PumpMessages() 48 49 if __name__ == "__main__": 50 down_num = 0 51 up_num = 0 52 # 新線程執行的代碼: 53 print('thread %s is running...' % threading.current_thread().name) 54 t = threading.Thread(target=send_click, name='sendThread') 55 t.start() 56 #t.join() 57 main()
效果是出來了,然而並沒有什么卵用。