Exemplo n.º 1
0
    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")
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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())
Exemplo n.º 4
0
    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("回到选择界面")
Exemplo n.º 5
0
 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()
Exemplo n.º 6
0
    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("回到御魂选择界面")
Exemplo n.º 7
0
    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: 接受邀请')
Exemplo n.º 8
0
    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: 自动邀请')
Exemplo n.º 9
0
    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: 自动邀请')
Exemplo n.º 10
0
    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: 接受邀请')
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
 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
Exemplo n.º 14
0
 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()