python纯脚本搬砖DNF之深度学习,工作室适用

news2024/11/23 17:40:23

声明:

本文章仅作学习交流使用,对产生的任何影响,本人概不负责.
转载请注明出处:https://editor.csdn.net/md?articleId=103674748

主要功能

脚本已初步完成,可以上机实战了
1.搬砖研究所、海伯伦(持续更新中)
2.自动分解史诗(可使用自己分解机)
3.自动出售白蓝紫装备
4.有点券购买免修,没有免修会自动修武器
5.自动收邮件
6,等虚弱
7.自动刷深渊(均衡)
8.自动登录wegame
9.支持所有主流刷图职业

特色功能:
1.自动做日常活跃,如进入修炼场,领取每日奖励,打开商店,工会聊天,等
5.自动兑换灵魂之源
6.图内金币、装备自动拾取
7.自动切换角色、切换大区(支持3跨区)、切换QQ
8.急速刷图,刷图算法优化更高级,移动速度的高低决定跑图时间,伤害的高低,决定打怪时间,3.6及以上的角色可以体验到急速过图,和手动单刷一样的速度)
以下为156疲劳角色过图时间统计:
| 名望     | 单角色过图时间 |
| 3.4-3.5 |  20分钟左右  |
| 3.6-3.8 |  17分钟左右  |
| 3.9-4.0 |  15分钟 左右
| 4.0及以上 | 15分钟以下 |

运行要求

一.硬件配置要求

1.显卡,需要安装cuda所以必须要显卡。标配GTX1050 2G(推荐),不低于950(不要买魔改卡)
2.CPU无要求,能带动游戏即可
3.内存不低于8G
4.硬盘空间不小于128G
5.专用的硬件键鼠

二.运行环境软件要求

1.安装CUDA驱动:
cmd 输入 nvidia-smi (查看显卡驱动版本) 根据驱动的版本,下载cuda:
安装教程参照:CUDA安装教程
2.安装python 版本3.11.5(安装过程中含有–PATH–的选项必须勾选)
安装教程参照:python安装教程
安装后查验是否成功及版本:
1.cuda查验 cmd黑窗口输入 nvcc --version
2.python查验 cmd黑窗口输入 python --version
弹出版本标识则安装成功。

代码依赖

1 识别使用最新的yolov8模型。
2 键鼠使用自研的硬件模拟。

class Auto:
    def __init__(self):
        self.se = Search() 
        self.boss = Boss() 
        self.ski = Ski() 
        self.move = Move()  
        self.denglu = DengLu()  # 自动登录
        self.town = Twon() 
        self.DATA = None 
        self.img0 = None
        self.liefeng_num = 0
        self.start, self.end = None, None
        self.prev_start = [400, 450, 0, 0, 0, 0]
        self.stop_time = 0
        self.get_role_xinxi = 0
        self.shouci = 0

    def auto(self):
        while True:
            if not self.off_no(): 
                continue
            if not self.denglu(): 
                continue
            if not self.fuben_move_and_get_end():  # 副本中检测
                continue
            if self.town_res():  # 2.城镇检测
                continue
            self.boss_room()  # 3.通关检测

    def update_user(self):
        # 获奖角色表所有数据
        if web.role_all_data is True:
            web.role_all_data = db.get_all_role()
        if web.sy_all_data is True:
            web.sy_all_data = db.get_conf_data('shouyi')
        if web.new_role:
            role = db.get_role_by_id(web.new_role.idx)
            web.new_role.dis_col = role.dis_col
            web.new_role.dis_row = role.dis_row
            web.new_role.pwd = role.pwd
            web.new_role.name = role.name
            web.new_role.yisidalu = role.yisidalu
            web.new_role.bkr = role.bkr
            db.role_update_data(web.new_role)
            web.new_role = None
        if web.role_delete:
            db.role_delete(web.role_delete)
            web.role_delete = None

        if web.qq_all_data is True:
            web.qq_all_data = db.qq_get_all_qq()
        if web.qq_update:
            db.qq_update(web.qq_update)
            web.qq_update = None
        if web.qq_instert:
            db.qq_insert(web.qq_instert)
            web.qq_instert = None
        if web.qq_delete:
            db.qq_delete(web.qq_delete)
            web.qq_delete = None
        if web.role_conf_all:
            db.add_conf(web.role_conf_all)
            web.role_conf_all = None

     def start_info(self, start):
        if start is not None:
            start[0] = start[0] + start[2] * 0.5
            self.start = start
            self.prev_start = self.start
            return self.start
        if act.find_img('sw', img=self.img0): # 死亡自动复活。
            web.print_log('死亡复活')
            k.down_up('x')
            sleep(0.5)
            self.ski.buff()
        return self.prev_start

    def sy_fuben(self):
        if act.find_img('j_h', img=self.img0) is None:
            return True
        if self.town.jintu_time:
            self.town.jintu_time = 0
        if Map.is_boss and act.find_img('jixu'):
            self.move.up_key()
            if self.boss_room(): 
                self.shouci = 0
                Map.is_boss = None
                Map.room_dix = 0
                sleep(1)
                return
        if self.shouci == 1:
            self.shouci = 2
            sleep(0.5)
            self.ski.buff()
        if self.shouci == 0:
            self.shouci = 1
            return
        boss_ = self.get_max_conf_point(6)
        if boss_ is not None:
            if boss_[4] > 0.9:
                Map.is_boss = True
                Map.room_dix = 1
        self.start = self.start_info(self.get_max_conf_point(r_c.index))
        if Map.buff:
            Map.buff = None
            r_c.is_fz = act.find_img('f_z', img=self.img0, threshold=0.83)
            self.boss.xiu = act.find_img('xiu_li2', img=self.img0, threshold=0.8)
            self.boss.kai_shi_time = time()  # 每次时间
            self.ski.buff() 
        self.end = self.se(self.DATA, self.start)
        self.move_result(self.move(self.start, self.end)) 

    def queren_t(self):
        if act.find_img('queren', img=self.img0):  # 弹窗检测
            try:
                act.esc()
            except Exception as e:
                IMG.get_handel_or_size()
                web.print_log(e)
            web.print_log('确认弹窗')
            return True

    def get_data(self, conf=0.6):
        # x,y左上角坐标,wh宽高
        x = fb.model.predict(source=self.img0)
        self.DATA = copy(x)

    def time_12(self):
        current_time = localtime()
        if current_time.tm_hour == 0 and 0 <= current_time.tm_min <= 1 and 0 <= current_time.tm_sec <= 20:
            guanbi = act.find_img('guanbi')
            if not guanbi:
                return
            web.print_log("凌晨页面弹窗关闭")
            k.click_at(guanbi)
            sleep(0.5)
            return True

    def fuben_move_and_get_end(self):
        self.img0 = IMG.get_img()
        if self.img0 is None:
            return
        if not fb.map_id: 
            min_name = 'boss'
            if cfg.fuben_id == 1:
                min_name = 'j_h'
            if act.find_img(min_name):
                web.print_log('请在通关后运行脚本')
                sleep(5)
            return True
        self.get_data() 
        if fb.map_id == 1:
            return self.sy_fuben()
        if self.get_max_conf_point(fb.bosss) is None:
            if not Map.map_num:
                return True
            if IMG.find_template('queren') or IMG.find_template('zbl'):
                k.down_up('esc')
                return
            if Map.is_boss:
                sleep(0.2)
                self.liefeng_num = 0
                self.move.up_key()
            return True
        if self.liefeng_num > 0:
            self.liefeng_num = 0
        self.start = self.start_info(self.get_max_conf_point(r_c.index)) 
        if Map.map_main(self.get_max_conf_point(fb.min_me), self.start, self.end):
            if self.time_12():
                return
            if self.queren_t():
                return
            return self.move.up_key()
        self.get_role_info()
        self.end = self.se(self.DATA, self.start) 
        if self.end[-1] == fb.jzb:
            self.move.up_key()
            self.ski.picking_up()
            return
        self.move_result(self.move(self.start, self.end))

    def town_res(self):
        if self.town(self.img0): 
            sleep(10) 
            if not self.denglu.dnf_over:
                self.denglu.dnf_over = True
            if not self.denglu.user and self.town.denglu_qq:
                self.denglu.user = self.town.denglu_qq
            return True
        if self.denglu.user: 
            self.town.denglu_qq = self.denglu.user  # 新增qq

    def boss_room(self):
        if fb.map_id == 1:
            if not self.boss.sy_boss(self.img0):
                return
        else:
            if not self.boss(self.img0):
                return
        if self.town.role:
            self.boss.qiyue = self.town.role.x_l
            web.datas.tg_num = self.boss.t_g_num
            web.datas._time = strftime('%H:%M:%S', gmtime(self.boss.t))
            web.datas.o_time = strftime('%H:%M:%S', gmtime(self.boss.role_time))
            web.datas.zong_time = strftime('%H:%M:%S', gmtime(self.boss.zong_time))
        return True

    def get_role_info(self):
        if Map.buff:
            Map.buff = None
            if r_c.is_fz:
                r_c.is_fz = act.find_img('f_z', img=self.img0)
                self.boss.xiu = act.find_img('xiu_li2', img=self.img0)
            self.boss.kai_shi_time = time()  # 每次时间
            self.ski.buff()
        if Map.map_num == Map.boss_num - 1:
            if self.get_role_xinxi < 5:
                self.get_role_xinxi += 1
                r_c.is_fz = act.find_img('f_z', img=self.img0)
                self.boss.xiu = act.find_img('xiu_li2', img=self.img0)
                self.town.role.pl, _ = IMG.get_pl(self.img0)
                self.boss.pl = self.town.role.pl
            return
        if self.get_role_xinxi > 0: self.get_role_xinxi = 0

    def move_result(self, result):
        if not result:
            return
        if result == fb.jhj: 
            self.ski.picking_up()
        elif result in fb.guai:
            if self.se.last_att:
                k.down_up(self.se.last_att)
                self.se.last_att = None
            self.ski(self.img0)
        elif result == 99:  # 召唤释放技能
            self.se.leixing = 100
            self.ski(self.img0)

    def get_max_conf_point(self, idx):
        data = self.DATA[self.DATA[:, -1] == idx]
        if not data.any():
            return
        if len(data) == 1:
            return data[0]
        return data[argsort(data[:, 4])][-1]

    def off_no(self):
        if self.stop_time == 0:
            self.stop_time = time()
        if time() - self.stop_time > 1800:
            if not e.yanzheng():
                exit(1)
            self.stop_time = 0
        if hot.START:
            if not web.zt: web.zt = 1
            return True
        if web.zt: web.zt = 0
        self.update_user()  # 页面数据更新
        sleep(0.5)

3.页面效果展示**

角色表
在这里插入图片描述
主控后台
在这里插入图片描述
信息提示
在这里插入图片描述
刷图选择
在这里插入图片描述
角色表
在这里插入图片描述
账号信息表
在这里插入图片描述

人工智能刷图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1699374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【揭秘!在线ChatGPT神器,体验入口在此!】

&#x1f680;【揭秘&#xff01;在线ChatGPT神器&#xff0c;体验入口在此&#xff01;】&#x1f680; 前言 嘿&#xff0c;大家好&#xff01;今天我要和大家分享一些关于如何使用免费的ChatGPT的技巧。ChatGPT是一项令人兴奋的人工智能技术&#xff0c;它可以成为我们的好…

【vue-2】v-on、v-show、v-if及按键修饰符

目录 1、v-on事件 2、按键修饰符 3、显示和隐藏v-show 4、条件渲染v-if 1、v-on事件 创建button按钮有以下两种方式&#xff1a; <button v-on:click"edit">修改</button> <button click"edit">修改</button> 完整示例代码…

AlexNet论文解析—ImageNet Classification with Deep Convolutional Neural Networks

AlexNet论文解析—ImageNet Classification with Deep Convolutional Neural Networks 2012 研究背景 认识数据集&#xff1a;ImageNet的大规模图像识别挑战赛 LSVRC-2012&#xff1a;ImageNet Large Scale Visual Recoanition Challenge 类别训练数据测试数据图片格式Mnist1…

Block-level Image Service for the Cloud——论文泛读

TOS 2024 Paper 论文阅读笔记整理 问题 企业越来越需要敏捷和弹性的计算基础设施来快速响应现实世界的情况。容器通过提供高效的基于流程的虚拟化和分层映像系统&#xff0c;可以实现灵活和弹性的应用程序部署。然而&#xff0c;由于图像下载和解包过程&#xff0c;创建或更新…

Web开发学习总结

学习路线 Web 全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准&#xff0c;由一系列的标准组成&#xff0c;大部分由W3C(World Wide Web Consortium&#xff0c;万维网联盟)负责制定。三个组…

Qt pro工程文件编写汇总(区分debug和release、32位和64位的方法,编译输出目录等)

前言&#xff1a; 从事qt开发已经好几年了&#xff0c;但有关pro编写的一些细节问题一直没有一个很好的梳理汇总——因为实际工作开发中&#xff0c;往往只需要编译特定版本的软件&#xff08;例如32位release版本&#xff09;&#xff0c;项目创建好后并设置好编译路径&#x…

OSPF网络类型实验2

对R4 对R5&#xff0c;找R1注册 对R1宣告环回&#xff0c;再宣告一下tunnel接口 本实验不考虑区域划分 现在已经全部宣告完成 对R1&#xff0c;2&#xff0c;3改接口 broadcast工作方式hello时间10s&#xff0c;然后进行dr选举&#xff0c;由于2&#xff0c;3之间没有伪广播 …

【探索数据结构】线性表之双链表

&#x1f389;&#x1f389;&#x1f389;欢迎莅临我的博客空间&#xff0c;我是池央&#xff0c;一个对C和数据结构怀有无限热忱的探索者。&#x1f64c; &#x1f338;&#x1f338;&#x1f338;这里是我分享C/C编程、数据结构应用的乐园✨ &#x1f388;&#x1f388;&…

乡村振兴的农业品牌建设:打造农业品牌,提升农产品附加值,增强乡村经济竞争力,实现美丽乡村经济繁荣

目录 一、引言 二、农业品牌建设的重要性 &#xff08;一&#xff09;提升农产品附加值 &#xff08;二&#xff09;增强乡村经济竞争力 &#xff08;三&#xff09;实现美丽乡村经济繁荣 三、农业品牌建设的现状及问题 &#xff08;一&#xff09;现状 &#xff08;二…

Go微服务: Nacos的搭建和基础API的使用

Nacos 概述 文档&#xff1a;https://nacos.io/docs/latest/what-is-nacos/搭建&#xff1a;https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式&#xff0c;我们这里使用 docker 来搭建 Nacos 的搭建 这里&#xff0c;我们选择单机模式&#xf…

java实现图书系统源码

建包和类: Book Book: package Book;public class Book {private String name;private String author;private int price;private String type;private boolean isBorrowed;public Book(String name, String author, int price, String type) {this.name name;this.author …

【Qnx 】Qnx IPC通信PPS

Qnx IPC通信PPS Qnx自带PPS服务&#xff0c;PPS全称Persistent Publish/Subscribe Service&#xff0c;就是常见的P/S通信模式。 Qnx PPS的通信模式是异步的&#xff0c;Publisher和Subscriber也无需关心对方是否存在。 利用Qnx提供的PPS服务&#xff0c;Publisher可以通知多…

OrangePi KunPengPro | 开发板开箱测评之学习与使用

OrangePi KunPengPro | 开发板开箱测评之学习与使用 时间&#xff1a;2024年5月23日20:51:12 文章目录 OrangePi KunPengPro | 开发板开箱测评之学习与使用概述1.参考2.资料、工具3.使用3-1.通过串口登录系统3-2.通过SSH登录系统3-3.安装交叉编译工具链3-4.复制文件到设备3-5.第…

Android 使用 ActivityResultLauncher 申请权限

前面介绍了 Android 运行时权限。 其中&#xff0c;申请权限的步骤有些繁琐&#xff0c;需要用到&#xff1a;ActivityCompat.requestPermissions 函数和 onRequestPermissionsResult 回调函数&#xff0c;今天就借助 ActivityResultLauncher 来简化书写。 步骤1&#xff1a;创…

攻防世界[GoodRe]

攻防世界[GoodRe] 学到知识&#xff1a; 逆向的精髓&#xff1a;三分懂&#xff0c;七分蒙。TEA 算法快速识别&#xff08;蒙&#xff09;&#xff1a; 数据处理的形式&#xff1a;进入加密时的数据和加密结束后的数据&#xff0c;处理时数据的分组等等&#xff0c;都能用来…

AtCoder Beginner Contest 355 A~F

A.Who Ate the Cake?(思维) 题意 已知有三个嫌疑人&#xff0c;有两个证人&#xff0c;每个证人可以指出其中一个嫌疑人不是罪犯&#xff0c;如果可以排除两个嫌疑人来确定犯人&#xff0c;输出犯人的身份&#xff0c;如果无法确定&#xff0c;输出"-1"。 分析 …

Pytorch(Overview)

目标 如何利用pytorch完成学习系统&#xff1f; 理解神经网络&#xff08;neural networks&#xff09;和深度学习&#xff08;deep learning&#xff09;基础。 需要了解线性代数和概率论数理统计等相关关系&#xff0c;和python编程语言。 讨论理解 到底什么是human int…

vue3项目+TypeScript前端项目 ———— elemnet-plus,svg图标配置,sass,mock数据

一.集成element-plus 官网地址 安装 pnpm install element-plus 引入 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.…

esp32-idf 开发踩坑记录

现象 直接使用原始命令编译idf.py build 但是提示idf 版本错误 卸载旧版本 编译出错build 问题 然后删除编译文件后&#xff0c;重新编译&#xff0c;还是出错 解决方法1 最后发现是因为项目所在文件夹有中文目录&#xff0c;把项目迁移到英文目录后&#xff0c;重新编译&a…

重学java 46.集合 ① Collection集合

事常与人违&#xff0c;事总在人为 —— 24.5.26 集合 知识导航 1.集合的特点以及作用 2.使用collection接口中的方法 3.使用迭代器迭代集合 4.ArrayList以及LinkedList的使用 5.使用增强for遍历集合 一、单列集合框架的介绍 1.长度可变的容器&#xff1a;集合 2.集合的特点 a.…