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.页面效果展示**
角色表
主控后台
信息提示
刷图选择
角色表
账号信息表
人工智能刷图
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。