def go_character(): character_temp = util.read_template('templates', '2pick', 'chose_character.png') chose_temp = util.read_template('templates', '2pick', 'chose.png') while not util.check_existed(screenshotter, chose_temp): util.find_and_click(screenshotter, character_temp, rel_h=1.5) time.sleep(1)
def go_entrance(): entrace_temp = util.read_template('templates', '2pick', 'entrance.png') useticket_temp = util.read_template('templates', '2pick', 'use_ticket.png') noticket_temp = util.read_template('templates', '2pick', 'no_tickets.png') while not util.check_existed(screenshotter, useticket_temp): util.find_and_click(screenshotter, entrace_temp) if util.check_existed(screenshotter, noticket_temp): return False return True
def process_battle(mob_pos, is_boss): # Unlock team so we can replace farm materials later util.find_and_click("lock.png", LOCK_BTN_BOX, double_click=False) # Click on Fight util.click_image("fight.png", mob_pos) # Wait for the back button to appear try: screen_processor.wait("realm_back_btn.png", sleep=1, click=False, wait_count=15) except screen_processor.ImageNotFoundException: # We possibly missed the fight button, just return return # Check for max level materials need_replace = [] for i in range(0, 2): mat_pos = screen_processor.abs_search("max_lvl_1.png", FOOD_LOC_BATTLE[i]) # logger.info("Index {} {}".format(i, mat_pos)) if mat_pos[0] != -1: need_replace.append(i) if len(need_replace) > 0: # Click on the change team area emu_manager.mouse_click(CHANGE_TEAM_POS[0], CHANGE_TEAM_POS[1]) emu_manager.mouse_click(CHANGE_TEAM_POS[0], CHANGE_TEAM_POS[1]) time.sleep(2) # "ALL" button emu_manager.mouse_click(68, 690, sleep=1) food_coord = FOOD_OPTIONS.get(bot_cfg.get_property("General", "food_type")) if not food_coord: raise bot_config.InvalidConfiguration emu_manager.mouse_click(*food_coord, sleep=1) # screen_processor.wait("food_slide_bar.png", click=False) for item in need_replace: # Process replacing materials process_replace(item) # Press return emu_manager.mouse_click(35, 60) time.sleep(1.5) while screen_processor.abs_search("auto_icon.png", (0, WINDOW_HEIGHT-300, 300, WINDOW_HEIGHT))[0] == -1: # Ensure we clicked Start Battle emu_manager.mouse_click(*BATTLE_START_BTN) # Start spamming target for at least 5 seconds start = time.time() spam_time = 10 if is_boss else 5 while time.time() - start < spam_time: # Target the left most monster in the front row. This is for single target shiki like Irabaki emu_manager.mouse_click(623, 210) while screen_processor.abs_search("auto_icon.png", (0, WINDOW_HEIGHT-300, 300, WINDOW_HEIGHT))[0] != -1: time.sleep(1) if is_boss: while screen_processor.abs_search("back.png", BACK_BTN_BOX)[0] == -1: time.sleep(0.5) # Click center of the screen with some offset emu_manager.mouse_click(663, 317) logger.info("Won boss battle, searching for rewards...") time.sleep(5) for i in range(0,4): if screen_processor.abs_search("boss_reward.png", click=True)[0] != -1: logger.info("Got boss reward #{}".format(i)) time.sleep(1) # Click outside to close reward popup emu_manager.mouse_click(675, 560) time.sleep(1) else: break # Wait a bit for it to go back to map time.sleep(5) while screen_processor.abs_search("buff_btn.png", BUFF_BTN_BOX)[0] == -1: # If we can't find buff btn here, probably we missed some rewards. Manually click back util.click_image("back.png", (16, 71)) # Confirm exit map emu_manager.mouse_click(EXIT_MAP_OK_BTN[0], EXIT_MAP_OK_BTN[1]) logger.info("Got back to map from boss battle!") return logger.info("Ending battle, waiting for map...") # Wait for map while screen_processor.abs_search("back.png", BACK_BTN_BOX)[0] == -1: time.sleep(0.5) # Click center of the screen with some offset emu_manager.mouse_click(663, 317) logger.info("Got back to map from battle!")
def go_goback(): goback_temp = util.read_template('templates', '2pick', 'goback.png') arena_temp = util.read_template('templates', '2pick', 'arena.png') while not util.check_existed(screenshotter, arena_temp): util.find_and_click(screenshotter, goback_temp)
def go_giveup2(): giveup2_temp = util.read_template('templates', '2pick', 'giveup2.png') goback_temp = util.read_template('templates', '2pick', 'goback.png') while not util.check_existed(screenshotter, goback_temp): util.find_and_click(screenshotter, giveup2_temp)
def go_pickcard(): pickcard_temp = util.read_template('templates', '2pick', 'pick_card.png') giveup_temp = util.read_template('templates', '2pick', 'giveup.png') while not util.check_existed(screenshotter, giveup_temp): util.find_and_click(screenshotter, pickcard_temp)
def go_chose(): chose_temp = util.read_template('templates', '2pick', 'chose.png') pickcard_temp = util.read_template('templates', '2pick', 'pick_card.png') while not util.check_existed(screenshotter, pickcard_temp): util.find_and_click(screenshotter, chose_temp)
def go_getin(): getin_temp = util.read_template('templates', '2pick', 'get_in.png') character_temp = util.read_template('templates', '2pick', 'chose_character.png') while not util.check_existed(screenshotter, character_temp): util.find_and_click(screenshotter, getin_temp)
def go_useticket(): useticket_temp = util.read_template('templates', '2pick', 'use_ticket.png') getin_temp = util.read_template('templates', '2pick', 'get_in.png') while not util.check_existed(screenshotter, getin_temp): util.find_and_click(screenshotter, useticket_temp)
def go_2pick(): twopick_temp = util.read_template('templates', '2pick', '2pick.png') entrace_temp = util.read_template('templates', '2pick', 'entrance.png') while not util.check_existed(screenshotter, entrace_temp): util.find_and_click(screenshotter, twopick_temp)