首页 > Python资料 博客日记
dnf python自动搬砖定制脚本
2024-05-30 06:00:05Python资料围观341次
本篇文章分享dnf python自动搬砖定制脚本,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
广告:
信号屏蔽器:守护你的数字生活,为你带来宁静与专注
恩山,修罗
驱动级键盘操作跳过检测
结合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
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Anaconda版本和Python版本对应关系(持续更新...)
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程