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

声明:

本文章仅作学习交流使用,对产生的任何影响,本人概不负责.

转载请注明出处: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 键鼠使用自研的硬件模拟。

bash 复制代码
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.页面效果展示**

角色表

主控后台

信息提示

刷图选择

角色表

账号信息表

人工智能刷图

相关推荐
cm6543203 小时前
用Python破解简单的替换密码
jvm·数据库·python
人间打气筒(Ada)3 小时前
如何基于 Go-kit 开发 Web 应用:从接口层到业务层再到数据层
开发语言·后端·golang
2501_924952693 小时前
代码生成器优化策略
开发语言·c++·算法
wan9yu3 小时前
为什么你需要给 LLM 的数据"加密"而不是"脱敏"?我写了一个开源工具
python
清风徐来QCQ3 小时前
八股文(1)
java·开发语言
lsx2024063 小时前
网站主机技术
开发语言
摇滚侠3 小时前
你是一名 java 程序员,总结定义数组的方式
java·开发语言·python
xyq20243 小时前
Vue3 条件语句详解
开发语言
这个名有人用不3 小时前
解决 uv 虚拟环境使用 pip 命令提示command not found的办法
python·pip·uv·claude code