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

json_wuwu 2024-07-21 11:35:01 阅读 97

声明:

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

转载请注明出处:https://editor.csdn.net/md?articleId=103674748

主要功能

脚本已初步完成,可以上机实战了

1.搬砖研究所、海伯伦、深渊(均衡)(持续更新中)

2.自动分解史诗

3.自动出售白蓝紫装备

4.有点券购买免修,没有免修会自动修武器

5.自动收邮件

6.自动登录wegame

7.支持所有主流刷图职业

<code>特色功能:

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分钟以下 |

每台电脑3.6以上一天可以轻松刷70-90角色

运行要求

一.硬件配置要求

1.显卡,需要安装cuda所以要显卡不低于GTX750。标配GTX1050 2G(推荐),(不要买魔改卡)

2.CPU无要求,能带动游戏即可

3.内存不低于8G

4.硬盘空间不小于128G

5.专用的硬件键鼠(30米一个),如无硬件键鼠则自动加载虚拟键鼠(虚拟键鼠无法自动登录游戏,无法输入密码)

二.运行环境软件要求

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.页面效果展示**

角色表

在这里插入图片描述

主控后台

在这里插入图片描述

信息提示

在这里插入图片描述

刷图选择

在这里插入图片描述

角色表

在这里插入图片描述

账号信息表

在这里插入图片描述

人工智能刷图



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。