Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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!")
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)