赞
踩
广告:
信号屏蔽器:守护你的数字生活,为你带来宁静与专注
恩山,修罗
驱动级键盘操作跳过检测
结合opencv简单识别图像
直接上代码
- import time
-
- import cv2
- import numpy as np
- import win32api
- import win32con
- import ctypes
- import win32gui
- import random
- import threading
- from PIL import Image
- from PIL import ImageGrab
- import time
- isEnd = False
- VK_CODE = {
- 'backspace': 0x08,
- 'tab': 0x09,
- 'clear': 0x0C,
- 'enter': 0x0D,
- 'shift': 0x10,
- 'ctrl': 0x11,
- 'alt': 0x12,
- 'pause': 0x13,
- 'caps_lock': 0x14,
- 'esc': 0x1B,
- 'spacebar': 0x20,
- 'page_up': 0x21,
- 'page_down': 0x22,
- 'end': 0x23,
- 'home': 0x24,
- 'left_arrow': 0x25,
- 'up_arrow': 0x26,
- 'right_arrow': 0x27,
- 'down_arrow': 0x28,
- 'select': 0x29,
- 'print': 0x2A,
- 'execute': 0x2B,
- 'print_screen': 0x2C,
- 'ins': 0x2D,
- 'del': 0x2E,
- 'help': 0x2F,
- '0': 0x30,
- '1': 0x31,
- '2': 0x32,
- '3': 0x33,
- '4': 0x34,
- '5': 0x35,
- '6': 0x36,
- '7': 0x37,
- '8': 0x38,
- '9': 0x39,
- 'a': 0x41,
- 'b': 0x42,
- 'c': 0x43,
- 'd': 0x44,
- 'e': 0x45,
- 'f': 0x46,
- 'g': 0x47,
- 'h': 0x48,
- 'i': 0x49,
- 'j': 0x4A,
- 'k': 0x4B,
- 'l': 0x4C,
- 'm': 0x4D,
- 'n': 0x4E,
- 'o': 0x4F,
- 'p': 0x50,
- 'q': 0x51,
- 'r': 0x52,
- 's': 0x53,
- 't': 0x54,
- 'u': 0x55,
- 'v': 0x56,
- 'w': 0x57,
- 'x': 0x58,
- 'y': 0x59,
- 'z': 0x5A,
- 'numpad_0': 0x60,
- 'numpad_1': 0x61,
- 'numpad_2': 0x62,
- 'numpad_3': 0x63,
- 'numpad_4': 0x64,
- 'numpad_5': 0x65,
- 'numpad_6': 0x66,
- 'numpad_7': 0x67,
- 'numpad_8': 0x68,
- 'numpad_9': 0x69,
- 'multiply_key': 0x6A,
- 'add_key': 0x6B,
- 'separator_key': 0x6C,
- 'subtract_key': 0x6D,
- 'decimal_key': 0x6E,
- 'divide_key': 0x6F,
- 'F1': 0x70,
- 'F2': 0x71,
- 'F3': 0x72,
- 'F4': 0x73,
- 'F5': 0x74,
- 'F6': 0x75,
- 'F7': 0x76,
- 'F8': 0x77,
- 'F9': 0x78,
- 'F10': 0x79,
- 'F11': 0x7A,
- 'F12': 0x7B,
- 'F13': 0x7C,
- 'F14': 0x7D,
- 'F15': 0x7E,
- 'F16': 0x7F,
- 'F17': 0x80,
- 'F18': 0x81,
- 'F19': 0x82,
- 'F20': 0x83,
- 'F21': 0x84,
- 'F22': 0x85,
- 'F23': 0x86,
- 'F24': 0x87,
- 'num_lock': 0x90,
- 'scroll_lock': 0x91,
- 'left_shift': 0xA0,
- 'right_shift ': 0xA1,
- 'left_control': 0xA2,
- 'right_control': 0xA3,
- 'left_menu': 0xA4,
- 'right_menu': 0xA5,
- 'browser_back': 0xA6,
- 'browser_forward': 0xA7,
- 'browser_refresh': 0xA8,
- 'browser_stop': 0xA9,
- 'browser_search': 0xAA,
- 'browser_favorites': 0xAB,
- 'browser_start_and_home': 0xAC,
- 'volume_mute': 0xAD,
- 'volume_Down': 0xAE,
- 'volume_up': 0xAF,
- 'next_track': 0xB0,
- 'previous_track': 0xB1,
- 'stop_media': 0xB2,
- 'play/pause_media': 0xB3,
- 'start_mail': 0xB4,
- 'select_media': 0xB5,
- 'start_application_1': 0xB6,
- 'start_application_2': 0xB7,
- 'attn_key': 0xF6,
- 'crsel_key': 0xF7,
- 'exsel_key': 0xF8,
- 'play_key': 0xFA,
- 'zoom_key': 0xFB,
- 'clear_key': 0xFE,
- '+': 0xBB,
- ',': 0xBC,
- '-': 0xBD,
- '.': 0xBE,
- '/': 0xBF,
- ' ': 0xBA,
- '[': 0xDB,
- '\\': 0xDC,
- ']': 0xDD,
- "'": 0xDE,
- '`': 0xC0}
-
-
- # handle = win32gui.FindWindow(None, '地下城与勇士')
- # win32gui.SetForegroundWindow(handle)
- # 获取随机时间上下0.1倍浮动
- def getRandomTime(t):
- t0 = t - t * 0.01
- t2 = t + t * 0.01
- # print("左边界",t0)
- # print("有边界",t2)
- t1 = random.uniform(t0, t2)
- # print("随机结果",t1)
- return t1
-
- # 等待操作
-
-
- def sleep(t):
- time.sleep(getRandomTime(t))
-
- # 按键操作(按一次松)
-
-
- def keyOperation(button, t):
- win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), 0, 0) # 0
- t = getRandomTime(t)
- sleep(t)
- win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), win32con.KEYEVENTF_KEYUP, 0)
- sleep(0.1)
- # 加破击兵刃
-
- # 按下某个键
-
-
- def keyOn(button):
- win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), 0, 0) # 0
-
-
- def keyOf(button):
- win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), win32con.KEYEVENTF_KEYUP, 0)
-
-
- def getbuff1():
-
- keyOperation("q",0.4)
-
- # 加流行狂
-
-
- def getbuff2():
- keyOperation("d", 0.05)
- keyOperation("d", 0.1)
- keyOperation("j", 0.1)
-
-
- # 流星升+刺
-
-
- def liuxingsheng():
- keyOperation("o", 0.1)
- keyOperation("l", 0.2)
- sleep(0.5)
- keyOperation("o", 0.2)
-
- # 里鬼剑术
-
-
- def ligui():
- i = 0
- while True:
- i = i + 1
- if (i == 3):
- return
- keyOperation("u", 0.05)
- keyOperation("u", 0.05)
- keyOperation("u", 0.05)
- keyOperation("o", 0.05)
- keyOperation("o", 0.05)
- sleep(1)
- # 前冲
-
-
- def go(t):
- keyOperation("d", 0.1)
- keyOperation("d", t)
-
- # 进入房间的操作d
-
-
- def intoRoom():
- go(getRandomTime(2))
- keyOperation("f", 0.1)
- go(getRandomTime(2))
- # 测试用
-
-
-
-
- # 猛龙
-
-
- def menglong():
- keyOn("d")
- keyOperation("p", 0.1)
- keyOf("d")
- keyOn("a")
- keyOperation("p", 0.5)
- keyOf("a")
-
- # 是否有闪光
- def has_gold_flash(image):
- # 加载图像并转换为RGB模式
- image = image.convert('RGB')
- # image = Image.open(image_path).convert('RGB')
-
- # 获取图像的宽度和高度
- width, height = image.size
-
- # 遍历图像的每个像素
- for x in range(width):
- for y in range(height):
- # 获取当前像素的颜色
- r, g, b = image.getpixel((x, y))
-
- # 检查当前像素是否为金色
- if r > g and r > b and g < b:
- return True
-
- # 如果没有找到金色闪光,返回False
- return False
- def gran_screen_pil():
- # 截取窗口图片,建议将游戏窗口调整到最左上角,调整后面两个参数截取你想要的图片大小
- image = ImageGrab.grab(bbox=(0, 0, 1350, 760))
- image = np.array(image)
- end = cv2.imread('D:\desktop\dnf\end.png', cv2.IMREAD_GRAYSCALE)
- if len(image.shape) > 2:
- image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- if len(end.shape) > 2:
- end = cv2.cvtColor(end, cv2.COLOR_BGR2GRAY)
- resultEnd = cv2.matchTemplate(image, end, cv2.TM_SQDIFF_NORMED)
- minEnd_val, maxEnd_val, minEnd_loc, maxEnd_loc = cv2.minMaxLoc(resultEnd)
- # print('结果{}----------------{}',minEnd_val,maxEnd_val)
- if (minEnd_val < 0.5):
- global isEnd
- print("见到结束画面,开始下一把")
- isEnd = True
-
- # if has_gold_flash(image):
- # print("有金色闪光")
- def ci():
- keyOperation("d", 0.1)
- keyOn("d")
- sleep(0.2)
- keyOperation("j", 0.05)
- keyOperation("j", 0.05)
- keyOf("d")
-
- def read_picture():
- while True:
- # 1秒后开始截图hd
- time.sleep(0.1)
- gran_screen_pil()
- def do():
- global isEnd
- while True:
- isEnd = False
-
-
- print("开始!")
- getbuff2()
- sleep(1)
- print('杀意buff!')
- getbuff1()
- print("波动刻印!")
- time.sleep(0.5)
-
- go(5)
-
- keyOperation("h", 1)
-
- sleep(1.5)
- print("第一个图打完")
- go(2.3)
- keyOperation("f", 0.2)
- sleep(getRandomTime(1.5))
- print("第2个图打完")
-
- # keyOperation("o",0.2)
- # sleep(1)
-
- go(1.3)
- keyOperation("u",0.2)
- print("邪光斩!")
- sleep(0.5)
- keyOperation("p", 0.2)
- sleep(1)
- go(3.7)
-
-
- keyOperation("y",0.2)
- print("y技能")
- sleep(3)
- go(2)
- # keyOperation("n",0.2)
- # print("二觉")
- # sleep(2)
- keyOperation("e",0.2)
- sleep(0.5)
- keyOperation("t", 0.2)
- print("三觉")
- sleep(6.2)
- if(isEnd):
- print("结束")
- doEnd()
- continue
-
- keyOperation("b",0.2)
-
-
- if(isEnd):
- print("结束")
- doEnd()
- continue
-
- if(isEnd):
- print("结束")
- doEnd()
- continue
- sleep(1)
- keyOperation("h",0.2)
- sleep(1)
- keyOperation("q",0.2)
- print("q技能")
- sleep(3)
- if(isEnd):
- print("结束")
- doEnd()
- continue
- keyOperation("h",0.2)
- print("圣又之阵")
- sleep(1)
-
- if(isEnd):
- print("结束")
- doEnd()
- continue
-
- doEnd()
-
-
- # 最后一个图的结束操作n
- def doEnd():
- print("结束")
-
- keyOperation("0", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
- keyOperation("j", 0.2)
-
- time.sleep(0.5)
- keyOperation("esc", 0.2)
- time.sleep(0.5)
- keyOperation("F10", 0.2)
- time.sleep(4)
-
- if __name__ == '__main__':
- sleep(2)
- t1 = threading.Thread(target=read_picture)
- t2 = threading.Thread(target=do)
- t1.start()
- t2.start()
注意,需要以管理员身份运行代码即可
更多细节请咨询sz-sstx.com留言
源自sz-sstx.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。