目录导航

  • 说明:
  • 使用的的包:
  • 扫拍功能:

说明:

在此声明,仅作学习交流使用,对产生的任何影响,本人概不负责.
大体是实现的具体思路,完整的代码恕不免费提供.
本人也是因为喜欢打游戏dnf 最近无聊就想着自己用python编程来写点小工具,查了很多资料一步步实现了一些功能,也是自己的一种提高吧
转载请注明出处:原创地址
刷图脚本转至此处,更多源码展示
刷图脚本地址刷图脚本
更新记录
2019/11/6日,刷图脚本更新部分函数

使用的的包:

  1. import win32api, win32con, time, win32gui
  2. from ctypes import windll
  3. from PIL import Image, ImageGrab
  4. import pytesseract
  5. import cv2
  6. import tkinter as tk
  7. from tkinter import ttk
  8. from sys import exit
  9. from os import popen
  10. from numpy import load, save
  11. import numpy as np

扫拍功能:

1. 实现键鼠模拟
也只有能模拟了后才可以去做其他功能,dnf这个游戏做了很多屏蔽手段,很多普通方法都无法进行模拟,我这里采用的是win32api方式,比较贴近底层,可以实现驱动级的按键模拟,模拟代码网上一大片,我这里展示的是我封装完成实现我需要的一些功能
鼠标模拟封装

# 单击/左击
click_left(self, x, y):# 双击/右击click_right(self, x, y, sleep1=0.05, sleep2=0.1)    #sleep 控制速度 # 拖动物品
click_move(self, click_x, click_y, x, y)  #  click_x, click_y 原始坐标  x, y 移动坐标

此方法可以模拟点击事件游戏内有效,采用动态坐标形式,窗口移动了位置也无所谓,

键盘模拟

 # 按键模拟open_vk(self, sleep=0.02, *key)  # 同上,key要模拟的键位# 移动位置模拟vk_key_run(self, vk, sleep, run_type)  # vk 移动键位 , sleep 移动时间  run_type 设置停止移动的事件

2.自动输入要搜索的物品,
调用模拟按键输入就行

3.获得拍卖物品的价格
咱这里因为是脚本,所以不会读取游戏内存数据什么的,只能靠图片识别了
使用Tesseract-OCR

OCR与Tesseract介绍!

将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。
  Tesseract 是一个OCR 库,目前由Google 赞助(Google 也是一家以OCR 和机器学习技术闻名于世的公司)。Tesseract 是目前公认最优秀、最精确的开源OCR 系统。
  除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体(只要这些字体的风格保持不变就可以),也可以识别出任何Unicode 字符。
  一大通废话,主要就是使用这个识别引擎,把收集到的dnf价格图片进行训练,然后它就可以自动识别出想要的东西了,我需要的是价格,游戏图片都很统一主要就是数字比较容易识别,我这里训练一百多张后基本上识别率95以上了
  训练的越多识别率越高,固定样式的图片基本上不会出错
  图片识别封装,给它传入需要识别的区域坐标,就给你返回对应的识别结果,注:必须要自己训练识别库,否则无法识别


text 就是识别的内容,为str类型,如识别dnf价格结果就是27,111,000

首先要获得价格的截图,我直接截取价格区域,然后识别这个区域的数字.
截取的图片很小,识别起来速度会有保证,整个过程大概0.1秒左右,

如下训练用截图:

4.判断价格,合适就模拟鼠标购买
普通物品和卷子有所不同,以下是普通物品代码

判断价格和购买函数

5:简单写个界面
程序完成后我们总不能一直使用cmd来运行,使用界面,打包成exe后直接界面来操控
我了解过的python界面有两种1. tk 2. ttk推荐使用ttk
理由 比tk好看太多了
下面贴一点界面代码

def __init__(self, master=None):ttk.Frame.__init__(self, master)tab = ttk.Notebook(self.master, width=10)#  界面self.main = ttk.LabelFrame(tab)tab.add(self.main, text='智能副职业/扫拍')self.cailiao = ttk.Frame(tab)tab.add(self.cailiao, text='添加材料')self.juanzi = ttk.Frame(tab)tab.add(self.juanzi, text='添加卷子')tab.pack(expand=1, fill="both")self.name_dict = {}self.juanzi_dict = {}self.cailiao_dict = {}try:with open('name.txt', 'r') as f:for i in f:value, key = i.strip().split()self.name_dict[key] = valueexcept Exception as e:pass# 导入脚本self.tool = dnf_run.Tool_dnf()self.place()self.window_init()# 按钮self.bottmo_tk()# 文字和输入框self.check_tk()self.insert_juanzi()  # 添加要扫的卷子self.insert_cailiao()  # 添加要扫的材料

信息实时显示到界面,还有很多其他功能不贴了,主要的就这些

 def info(self, text, lv=None):"""text 要显示的文本框对象"""global IS_RUN # 控制 运行和停止if lv is None:while True:time.sleep(0.5)if position_dnf.EXIT: # 控制线程运行和停止print("info线程退出%d" % position_dnf.EXIT)breakif IS_RUN: IS_RUN = Falsebreakif len(position_dnf.INFO) >= 1:data = position_dnf.INFO[0] + '\n'color = 'red'if '成功' in data:color = 'green'text.config(state='normal')text.insert('end', data, color)text.config(state='disabled')text.see('end')text.tag_config(color, foreground=color, font=(12))position_dnf.INFO.remove(position_dnf.INFO[0])if lv:data = lv + '\n'color = 'red'if '成功' in data:color = 'green'text.config(state='normal')text.delete(1.0, 'end')text.insert('end', data, color)text.config(state='disabled')text.see('end')text.tag_config(color, foreground=color, font=(12))

实现的效果
好了到这里扫拍功能全部完成,使用pyinstaller -F -w filename 打包成exe
给这个exe程序管理员权限,点击运行

副职业是最近添加的功能有空再贴代码

2019年11月6日最近稍微优化了下脚本的数据读取,采用的是numpy的数组方式(所有信息均保存为二进制),源码数量减少了很多,程序读取预设信息的速度加快,更加稳定了,简单帖点代码

def juanzi_run(self):"""扫卷子循环主体"""p = position_dnf.Price("地下城与勇士")hotkey = position_dnf.HotKey()hotkey.start()data = np.load('juanzi.npy')p.input_dnf(data)p.start_dnf(vk='b')while True:if position_dnf.EXIT:position_dnf.EXIT = Falsebreaktotal = p.search(p.price_juanzi)

最新Python使用键鼠模拟,DNF拍卖行相关推荐

  1. Python 实现键鼠操作

    Python 实现键鼠操作 前言 需要的库 直接上代码 小结 前言 前几天玩的按键精灵由于版本太老,不兼容UTF8编码,就用python来封装了一些键鼠操作. 需要的库 time pyautogui ...

  2. 批量去除PDF水印 —— quicker 键鼠模拟操作

    前言 每一篇我写的教程,都是因为我自身需求催发出来的,且我在网上没找到一个相对较好的解决方案. 目前,很多公众号或者内容生产者都会在PDF中添加水印,这是无可厚非的.一个精美的水印,往往能让内容排版更 ...

  3. 工具收集 - 键鼠模拟改建

    工具收集 - 键鼠模拟&改建 AutoTiny FreeMouseClicker X-Mouse Button Control AutoTiny 官网:https://autotiny.cn ...

  4. Python 键鼠控制

    2021/9/18,在bilibili看到小马视频https://www.bilibili.com/video/BV1b4411T7Gn?share_source=copy_web,学到了用Pytho ...

  5. 从入门到入土:Python实现爬取刷新微博推荐和最新好友微博|cookie调用|模拟登录

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取刷新微博推荐和最新好友微博|cookie ...

  6. 【python自动化】02. pywin32库自动操作键鼠(保姆级代码注释)

    目录 源码和工具下载 大漠综合工具->坐标和窗口信息抓取 在你的桌面上新建一个记事本用于后面的代码测试 完整项目源码 实现思路 介绍win32的基础思路 基本步骤 API介绍 代码实战 1. 获 ...

  7. Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一 ...

  8. 2019年最新 Python 模拟登录知乎 支持验证码

    2019年最新 Python 模拟登录知乎 支持验证码和保存 Cookies 知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包 ...

  9. python同时监控键鼠教程

    小白也能看懂的python同时监控键鼠教程 虽然pynupt模块也可以实现,但监控不完全(主要是不会) 这里我主要使用多个模块来实现互不冲突的监控 首先用到的模块就是threading#使键鼠监控同时 ...

  10. python自动化操作教程_Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一 ...

最新文章

  1. linux驱动:音频驱动(三)ASoc之machine驱动及card初始化
  2. 梦心日记本V2.0完工
  3. poj1988(判断一个结点下面有多少个结点,推荐)
  4. 二叉树的最长的路径长度最大路径和
  5. 操作系统基础:存储管理知识笔记(一)
  6. react中key的正确使用方式
  7. java中thread实例_Java多线程并发执行demo代码实例
  8. python 相关性检验怎么计算p值_生信工具 | 相关性热图还能玩出什么花样?
  9. ConceptDraw使用Rapid Draw简化流程图教程指南
  10. 软件测试视频教程下载:APP测试类型和方法
  11. 金融信息化及交易管理系统(股票交易系统APP)
  12. 2019年5月个人总结:大家都在跨界,原谅自己的懈怠
  13. 在心中刻上你的名字,让思念如烟
  14. poscms清除html,POSCMS开源内容管理系统 v3.6.0 升级说明
  15. OKLink行业观察:投资数字资产的机构版图(三)——Stone Ridge和纽约数字投资集团
  16. 一兆mysql能存多少个字_MySQL 中一个汉字占多少存储?
  17. GSM多时隙NV配置
  18. 支付宝、微信注册时间,轻松查看!
  19. 我在网吧上网用的QQ给好友狂发病毒
  20. 使用UltraISO制作U盘CentOS启动盘

热门文章

  1. android实现模拟微信调用相机和手机图库更换头像
  2. 如何卸载office201032位_win7卸载office2010的步骤_win7如何完美卸载office2010-win7之家...
  3. LitJson扩展支持float类型和自定义类型
  4. SpreadJS v14.1.5 Crack
  5. apipost如何使用mock测试
  6. 电脑重装系统误删重要数据了怎么办
  7. python中文文本聚类_python进行中文文本聚类实例(TFIDF计算、词袋构建)
  8. UE4开发游戏的流程
  9. BC26通过LWM2M接入电信AEP平台(透传模式)
  10. l3119双闪_打印机进纸灯和墨水灯双灯齐闪 解决方法