最新Python使用键鼠模拟,DNF拍卖行

news/2024/11/28 4:12:29/

目录导航

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

说明:

在此声明,仅作学习交流使用,对产生的任何影响,本人概不负责.
大体是实现的具体思路,完整的代码恕不免费提供.
本人也是因为喜欢打游戏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)

http://www.ppmy.cn/news/350458.html

相关文章

DNF可以在Linux系统运行吗,Linux中dnf命令起什么作用呢?

摘要: 下文讲述Linux中dnf的功能说明,如下所示; dnf简介: dnf是一个新的rpm软件包管理器,它出现的目的是取代yum dnf在用户体验,内存占用,依赖分析,运行速度等方面进行了性能提升 dnf命令功能: …

DNF史诗计算机最新版,dnf全职业史诗装备搭配计算器2020

dnf史诗装备计算器(100级一键搭配)专为喜欢DNF的玩家打造,能够帮助玩家快速配置自己的装备属性,了解最新的配装方式,提高自己的战斗哦,根据不同的要求自由的进行配装哦,感兴趣的玩家不要错过哦! 版本说明 3.2版本更新 默认首饰和特殊更换为普雷同时更新贴图,修复左右槽颠…

使用dnf shell安装本地rpm包的遇到的问题

使用dnf shell安装本地rpm包的遇到的问题 序dnf local installdnf shell注意总结ref 序 最近项目中使用dnf安装本地安装包遇到了2个问题,调试了蛮久,记录下来,也供大家参考。 dnf是yum的升级版,在redhat8之后yum逐渐升级为dnf&a…

linux dnf配置文件,RedHat8.1配置本地dnf源

环境准备 RHEL8.1 不联网 REHL8.1 启动盘 RHEL8中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接,当然依旧可以使用的。 一、挂载RHEL 8 ISO文件/安装DVD 要在RHEL 8服务器中挂载RHEL 8 ISO文件,请使用下面的mount命令 [root@li…

DNF可以在Linux系统运行吗,系统安装-009 Linux下dnf使用

dnf命令 软件包管理 Linux学习路线规划,掌握小白变怪兽的独门绝技,让站长用13年的工作经验告诉你什么是捷径!Linux面试必备技巧,技术面+主管面+HR面,每一面都能脱颖而出,轻松搞定 Offer! DNF是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它…

Linux环境下YUM和DNF详细介绍

目录 1、基础概念 1.1 YUM介绍 1.2 DNF介绍 1.3常用Linux版本介绍 2、YUM和DNF对比 2.1软件版本对比 2.2帮助内容对比 2.2.1 DNF帮助命令的输出 2.2.2 YUM帮助命令的输出 2.2.3对比结论 2.3软件仓库对比 2.4安装软件对比 2.4.1 YUM命令安装VSFTPD 2.4.2 DNF命令安装VSFTPD 2.4.…

论DNF手游辅助hook 硬盘驱动下载

1、程序调用底层驱动逻辑代码、 2、逻辑代码加载手游dnf驱动代码 3、修改dnf手游秒杀辅助 4、制作DNF手游刷钱脚本 dnf手游辅助盘:https://www.fzpan.com/ package com.fuxuemingzhu.solidgraphics.contants;/*** <p>* Title: Contants* </p>* <p>* Descri…

dnf如何快速拾取物品_DNF:最经典的十大宠物,你有几个?拥有三个你就是骨灰级玩家!...

TOP10. 刘关张三兄弟 恩....虽然他们三个看起来有点傻&#xff0c;但是至今他们仍是DNF最强的宠物&#xff01;属性超级强力&#xff0c;完爆17年年宠&#xff0c;许多著名主播大神都在用刘关张&#xff0c;而非今年的年套宠物。 TOP9.憨憨牛 2012年5月22日推出售一个宠物礼包&…