def start(self): '''单人战斗主循环''' mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) while True: # 在御魂主选单,点击“挑战”按钮, 需要使用“阵容锁定”! self.yys.wait_game_img('img\\TIAO-ZHAN.png', self.max_win_time) mood1.moodsleep() self.yys.mouse_click_bg(*YuhunPos.tiaozhan_btn) self.log.writeinfo('Already clicked TIAO-ZHAN') # 检测是否进入战斗 self.check_battle() # 在战斗中,自动点怪 self.click_monster() # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\TIAO-ZHAN.png', *CommonPos.second_position, mood3.get1mood()/1000) self.log.writeinfo("Back to YUHUN level selection")
def fight_moster(self, mood1, mood2): ''' 打经验怪 :return: 打完普通怪返回1;打完boss返回2;未找到经验怪返回-1;未找到经验怪和boss返回-2 ''' while self.run: mood1.moodsleep() # 查看是否进入探索界面 self.yys.wait_game_img('img\\YING-BING.png') self.log.writeinfo('进入探索页面') # 寻找经验怪,未找到则寻找boss,再未找到则退出 fight_pos = self.find_exp_moster() boss = False if fight_pos == -1: if self.fight_boss_enable: fight_pos = self.find_boss() boss = True if fight_pos == -1: self.log.writeinfo('未找到经验怪和boss') return -2 else: self.log.writeinfo('未找到经验怪') return -1 # 攻击怪 self.yys.mouse_click_bg(fight_pos) if not self.yys.wait_game_img('img\\ZHUN-BEI.png', self.zhunbei_delay, False): break self.log.writeinfo('已进入战斗') time.sleep(1) # 等待式神准备 self.yys.wait_game_color(((1024, 524), (1044, 544)), (138, 198, 233), 30) logging.info('式神准备完成') # 检查狗粮经验 self.check_exp_full() # 点击准备,直到进入战斗 self.click_until('准备按钮', 'img\\ZI-DONG.png', *TansuoPos.ready_btn, mood1.get1mood() / 1000) # 检查是否打完 self.check_end() mood1.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\MESSAGE.png', *CommonPos.second_position, mood2.get1mood() / 1000) # 返回结果 if boss: return 2 else: return 1
def wait_game_end(self): # 游戏已开始 time.sleep(1) # 检查狗粮 self.check_exp_full() # 点击准备,直到进入战斗 self.click_until_multi('准备按钮', 'img/YI-ZHUN-BEI.png', 'img/ZI-DONG.png', pos=TansuoPos.ready_btn[0], pos_end=TansuoPos.ready_btn[1], sleep_time=0.3) # 检查战斗是否结束 self.check_end() self.yys.mouse_click_bg(ut.threeposition()) # 二次结算 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('第一次结算', 'img/JIN-BI.png', *CommonPos.second_position, 0.3) self.click_until('第二次结算', 'img/JIN-BI.png', *CommonPos.second_position, 0.2, False) #保证游戏结束 self.yys.mouse_click_bg(ut.threeposition())
def start(self): '''单人战斗主循环''' mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) while self.run: # 在御魂主选单,点击“挑战”按钮, 需要使用“阵容锁定”! self.yys.wait_game_img('img\\TIAO-ZHAN.png', self.max_win_time) mood1.moodsleep() self.yys.mouse_click_bg(*YuhunPos.tiaozhan_btn) self.log.writeinfo('点击 挑战按钮') # 检测是否进入战斗 self.check_battle() # 在战斗中,标记己方式神 self.mitama_team_click() # 在战斗中,自动点怪 self.click_monster() # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\TIAO-ZHAN.png', *CommonPos.second_position, mood3.get1mood() / 1000) self.log.writeinfo("回到选择界面")
def get_reward(self, mood, state): ''' 结算处理 :param mood: 状态函数 :param state: 上一步的状态。0-战斗成功页面; 1-领取奖励页面 ''' if state == 0: self.click_until('奖励', 'img/TIAO-DAN.png', ut.firstposition(), None, mood.get1mood() / 1000) start_time = time.time() while time.time() - start_time <= self.max_op_time and self.run: maxVal, maxLoc = self.yys.find_multi_img('img/FA-SONG-XIAO-XI.png', 'img/ZHI-LIAO-LIANG.png', 'JIE-SUAN-JIA-CHENG.png') if max(maxVal) > 0.9: self.yys.mouse_click_bg((35, 295), (140, 475)) result = self.yys.find_game_img_knn('img/TIAO-DAN.png', thread=2) if not result: logging.info(self.name + '结算成功') return else: self.yys.mouse_click_bg(ut.secondposition()) self.log.writeinfo(self.name + '点击结算') mood.moodsleep() self.log.writewarning(self.name + '点击结算失败!') # 提醒玩家点击失败,并在5s后退出 self.yys.activate_window() time.sleep(5) self.yys.quit_game()
def start(self): '''单人战斗主循环''' mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) while self.run: # 在御魂主选单,点击“挑战”按钮, 需要使用“阵容锁定”! self.yys.wait_game_img('img\\TIAO-ZHAN.png', self.max_win_time) mood1.moodsleep() self.yys.mouse_click_bg(*YuhunPos.tiaozhan_btn) self.log.writeinfo('点击 挑战按钮') # 检测是否进入战斗 self.check_battle() # 在战斗中,自动点怪 self.click_monster() # 已经进入战斗,乘客自动点式神 if self.click_partner_enable: self.click_until('标记式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.left_partner_position, mood3.get1mood() / 1000) # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\TIAO-ZHAN.png', *CommonPos.second_position, mood3.get1mood() / 1000) self.log.writeinfo("回到御魂选择界面")
def start(self): '''单人御魂乘客''' # 设定点击疲劳度 mood2 = ut.Mood() mood3 = ut.Mood(3) # 战斗主循环 while self.run: # 检测是否进入战斗 self.check_battle() # 已经进入战斗,乘客自动点怪 self.click_monster() # 已经进入战斗,乘客自动点式神 if self.click_partner_enable: self.click_until('标记式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.left_partner_position, mood3.get1mood() / 1000) # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算1', 'img\\JIN-BI.png', *CommonPos.first_position, mood3.get1mood() / 1000) self.click_until('结算2', 'img\\JIN-BI.png', *CommonPos.second_position, mood3.get1mood() / 1000, False) # 等待下一轮 logging.info('Passenger: 等待下一轮') start_time = time.time() while time.time() - start_time <= 20 and self.run: # 检测是否回到队伍中 if (self.yys.wait_game_img('img\\XIE-ZHAN-DUI-WU.png', 1, False)): self.log.writeinfo('Passenger: 进入队伍') break # 检测是否有御魂邀请 yuhun_loc = self.yys.wait_game_img('img\\YU-HUN.png', 0.1, False) if yuhun_loc: # 点击自动接受邀请 if self.yys.find_game_img('img\\ZI-DONG-JIE-SHOU.png'): self.yys.mouse_click_bg((210, yuhun_loc[1])) self.log.writeinfo('Passenger: 自动接受邀请') # 点击普通接受邀请 elif self.yys.find_game_img('img\\JIE-SHOU.png'): self.yys.mouse_click_bg((125, yuhun_loc[1])) self.log.writeinfo('Passenger: 接受邀请')
def start(self): '''单人御魂司机''' # 设定点击疲劳度 mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) # 战斗主循环 self.yys.wait_game_img('img\\KAI-SHI-ZHAN-DOU.png', self.max_win_time) while self.run: # 司机点击开始战斗,需要锁定御魂阵容 mood1.moodsleep() self.log.writeinfo('Driver: 点击开始战斗按钮') self.click_until('开始战斗按钮', 'img\\ZI-DONG.png', * YuhunPos.kaishizhandou_btn, mood2.get1mood()/1000) self.log.writeinfo('Driver: 已进入战斗') # 已经进入战斗,司机自动点怪 self.click_monster() if self.click_partner: # 已经进入战斗,乘客自动点式神 if self.mitama_click_partner_left: self.click_until('标记左边式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.left_partner_position, mood3.get1mood() / 1000) if self.mitama_click_partner_right: self.click_until('标记右边式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.right_partner_position, mood3.get1mood() / 1000) # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算1', 'img\\JIN-BI.png', *CommonPos.second_position, mood3.get1mood()/1000) self.click_until('结算2', 'img\\JIN-BI.png', *CommonPos.second_position, mood3.get1mood()/1000, False) # 等待下一轮 logging.info('Driver: 等待下一轮') start_time = time.time() while time.time() - start_time <= 20 and self.run: if(self.yys.wait_game_img('img\\KAI-SHI-ZHAN-DOU.png', 1, False)): self.log.writeinfo('Driver: 进入队伍') break # todo,这里有点不准,有时间了再改 # 点击默认邀请 if self.yys.find_game_img('img\\ZI-DONG-YAO-QING.png'): self.yys.mouse_click_bg((497, 319)) time.sleep(0.2) self.yys.mouse_click_bg((674, 384)) self.log.writeinfo('Driver: 自动邀请')
def start(self): '''单人御魂司机''' # 设定点击疲劳度 mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) mood4 = ut.Mood(2) # 战斗主循环 self.yys.wait_game_img('img\\KAI-SHI-ZHAN-DOU.png', self.max_win_time) while self.run: # 司机点击开始战斗,需要锁定御魂阵容 mood4.moodsleep() self.log.writeinfo('Driver: 点击开始战斗按钮') self.click_until('开始战斗按钮', 'img\\ZI-DONG.png', * YuhunPos.kaishizhandou_btn, mood2.get1mood()/1000) self.log.writeinfo('Driver: 已进入战斗') # 已经进入战斗,司机自动点怪 self.click_monster() # 标记己方式神 self.click_team() time.sleep(10) # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img/JIN-BI.png', *CommonPos.second_position, mood3.get1mood()/1000) self.click_until('结算', 'img/JIN-BI.png', *CommonPos.second_position, mood3.get1mood()/1000, False) # 等待下一轮 logging.info('Driver: 等待下一轮') start_time = time.time() while time.time() - start_time <= 20 and self.run: if(self.yys.wait_game_img('img\\KAI-SHI-ZHAN-DOU.png', 1, False)): self.log.writeinfo('Driver: 进入队伍') break # 点击默认邀请 if self.yys.find_game_img('img\\ZI-DONG-YAO-QING.png'): self.yys.mouse_click_bg((497, 319)) time.sleep(0.2) self.yys.mouse_click_bg((674, 384)) self.log.writeinfo('Driver: 自动邀请')
def start(self): '''单人御魂乘客''' # 设定点击疲劳度 mood2 = ut.Mood() mood3 = ut.Mood(3) # 战斗主循环 while self.run: # 检测是否进入战斗 self.check_battle() # 已经进入战斗,乘客自动点怪 self.click_monster() # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) start_time = time.time() while time.time() - start_time <= 20 and self.run: # 检测是否回到队伍中 if (self.yys.wait_game_img('img\\XIE-ZHAN-DUI-WU.png', mood3.get1mood() / 1000, False)): self.log.writeinfo('Passenger: 进入队伍') break # 点击结算,直到回到主界面 if not (self.yys.find_game_img('img\\MESSAGE.png') or self.yys.find_game_img('img\\JIA-CHENG.png')): self.yys.mouse_click_bg(*CommonPos.second_position) self.log.writeinfo('Passenger: 点击结算') # 检测是否有御魂邀请 yuhun_loc = self.yys.wait_game_img('img\\YU-HUN.png', 0.1, False) if yuhun_loc: # 点击自动接受邀请 if self.yys.find_game_img('img\\ZI-DONG-JIE-SHOU.png'): self.yys.mouse_click_bg((210, yuhun_loc[1])) self.log.writeinfo('Passenger: 自动接受邀请') # 点击普通接受邀请 elif self.yys.find_game_img('img\\JIE-SHOU.png'): self.yys.mouse_click_bg((125, yuhun_loc[1])) self.log.writeinfo('Passenger: 接受邀请')
def start(self): '''单人战斗主循环''' mood1 = ut.Mood() mood2 = ut.Mood() mood3 = ut.Mood(3) while self.run: # 最大任务数小于等于0就不进行下一轮了 if self.max_tasks <= 0: self.log.writewarning("御魂任务结束") break # 在御魂主选单,点击“挑战”按钮, 需要使用“阵容锁定”! self.yys.wait_game_img('img\\TIAO-ZHAN.png', self.max_win_time) mood1.moodsleep() self.click_until('挑战按钮', 'img\\TIAO-ZHAN.png', *YuhunPos.tiaozhan_btn, appear=False) # 检测是否进入战斗 self.check_battle() # 在战斗中,自动点怪 self.click_monster() # 已经进入战斗,乘客自动点式神 if self.mitama_click_partner_left: self.click_until('标记左边式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.left_partner_position, mood3.get1mood() / 1000) if self.mitama_click_partner_right: self.click_until('标记右边式神', 'IMG\\GREEN-JIAN-TOU.png', *CommonPos.right_partner_position, mood3.get1mood() / 1000) # 检测是否打完 self.check_end() mood2.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\TIAO-ZHAN.png', *CommonPos.second_position, mood3.get1mood() / 1000) self.log.writeinfo("回到御魂选择界面") self.max_tasks -= 1
def fight_moster(self, mood1, mood2): ''' 打经验怪 :return: 打完返回True;未找到经验怪返回False ''' while True: mood1.moodsleep() # 查看是否进入探索界面 self.yys.wait_game_img('img\\YING-BING.png') self.log.writeinfo('进入探索页面') # 寻找经验怪,未找到则寻找boss,再未找到则退出 fight_pos = self.find_exp_moster() if fight_pos == -1: if self.fight_boss_enable: fight_pos = self.find_boss() if fight_pos == -1: self.log.writeinfo('未找到经验怪和boss') return False else: self.log.writeinfo('未找到经验怪') return False # 攻击怪 self.yys.mouse_click_bg(fight_pos) if not self.yys.wait_game_img('img\\ZHUN-BEI.png', 3, False): break self.log.writeinfo('已进入战斗') time.sleep(1) # 检查狗粮经验 self.check_exp_full() # 点击准备,直到进入战斗 self.click_until('准备按钮', 'img\\ZI-DONG.png', * TansuoPos.ready_btn, mood1.get1mood()/1000) # 检查是否打完 self.check_end() mood1.moodsleep() # 在战斗结算页面 self.yys.mouse_click_bg(ut.firstposition()) self.click_until('结算', 'img\\YING-BING.png', *CommonPos.second_position, mood2.get1mood()/1000)
def receive_reward(self): """ 领取奖励 :return: """ while self.run: self.log.writeinfo(self.name + '开始领取奖励') time.sleep(1.2) loc = self.yys.find_game_img('img/TAN-JIANG-LI.png') if loc: time.sleep(0.5) self.click_until('领取奖励', 'img/HUO-DE-JIANG-LI.png', loc, (loc[0] + 30, loc[1] + 30)) time.sleep(0.5) self.yys.mouse_click_bg(ut.firstposition()) time.sleep(0.3) self.yys.mouse_click_bg(ut.threeposition()) else: return
def get_reward(self, mood, state): ''' 结算处理 :param mood: 状态函数 :param state: 上一步的状态。0-战斗成功页面; 1-领取奖励页面 ''' if state == 0: self.click_until_knn('奖励', 'img/TIAO-DAN.png', ut.firstposition(), None, mood.get1mood()/1000, thread=20) start_time = time.time() while time.time()-start_time <= self.max_op_time and self.run: result = self.yys.find_game_img_knn('img/TIAO-DAN.png', thread=2) if not result: logging.info(self.name + '结算成功') return else: self.yys.mouse_click_bg(ut.secondposition()) self.log.writeinfo(self.name + '点击结算') mood.moodsleep() self.log.writewarning(self.name + '点击结算失败!') # 提醒玩家点击失败,并在5s后退出 self.yys.activate_window() time.sleep(5) self.yys.quit_game()