原文链接: 无线火力 keyboard 版
下一篇: 无限火力 pyhook版
作用:
蚂蚱技能,一直重复按we,召唤小虫子
在按r后停止10秒,避免打断r
keyboard的性能一般,单线程没啥大问题,但是多线程和多进程时会有时读不出来r,导致大招被打断
采用pyhook,解决了该问题
from KeyBdInput import ReleaseKey, PressKey
import time
import random
import keyboard # pip install keyboard
import threading
lock = threading.Lock()
isRDown = False
rDownTime = 0
def getKey():
print('getKey')
global isRDown, rDownTime
while True:
if not keyboard.wait('w'):
print('w')
# 按下键后返回None
if not keyboard.wait('r'):
print('r down')
# 复制剪贴板图片
# lock.acquire()
isRDown = True
rDownTime = time.time()
# time.sleep(5)
isRDown = False
# lock.release()
print('r', time.time() - rDownTime)
def start():
global isRDown
time.sleep(3)
# directx scan codes http://www.gamespp.com/directx/directInputKeyboardScanCodes.html
while True:
time.sleep(.01)
if time.time() - rDownTime < 5:
# print('r 进行中')
time.sleep(.01)
continue
# lock.acquire()
# q w e
chars = [
# 0x10,
0x11,
0x12
]
sleep_time = .1
for c in chars:
if time.time() - rDownTime < 5:
# print('r 进行中')
continue
PressKey(c)
t2 = sleep_time + random.random() * .01
time.sleep(t2)
ReleaseKey(c)
time.sleep(t2)
# lock.release()
def main():
start()
if __name__ == '__main__':
# 使用threading模块,threading.Thread()创建线程,其中target参数值为需要调用的方法,同样将其他多个线程放在一个列表中,遍历这个列表就能同时执行里面的函数了
# threads = [
# threading.Thread(target=start),
# threading.Thread(target=getKey)
# ]
# for t in threads:
# 启动线程
# t.start()
th = threading.Thread(target=start)
th.start()
# th.join()
getKey()
print('ok')
# wewerwewerwerrrrrrrwewerwewewewewewewerwewewewerwewewewewerwewewewewewewrewewewewewewewewewewewr