コード例 #1
0
def battle():
    while not elp.find("continue.png",
                       crop_from=Coord(630, 480),
                       crop_to=Coord(780, 550)):
        if is_dock_full():
            retire_ship()
            elp.tap(Button.AUTO_SEARCH)
        elp.wait(1.5)
コード例 #2
0
ファイル: farmer.py プロジェクト: cytopz/arknights-farmer
 def __handle_end_battle(self):
     while (not Elp.find('trust_meter',
                         crop_from=Coord(822, 443),
                         crop_to=Coord(880, 516))
            and not Elp.find('lvlup',
                             crop_from=Coord(652, 316),
                             crop_to=Coord(844, 416))):
         Elp.wait(1.5)
     Elp.tap(self.BUTTONS['center'])
     Elp.tap(self.BUTTONS['center'])
     Elp.wait_until_find('home')
コード例 #3
0
def retire_ship():
    print("Retiring ship...")
    elp.wait(0.75)
    elp.tap(Button.SORT, 1.7, randomize=False)
    elp.wait_until_find("qr.png")
    elp.wait(1)
    elp.tap(Button.QR, randomize=False)
    elp.tap(Coord(808, 598))  # confirm2
    elp.tap(Coord(630, 484))  # confirm >=elite
    elp.tap(Coord(785, 621))  # Tap to continue
    elp.tap(Coord(765, 511))  # confirm3
    elp.tap(Button.DISASSEMBLE)
    elp.tap(Coord(785, 621))  # Tap to continue
    elp.tap(Button.BACK)
    wait_until_main()
コード例 #4
0
ファイル: skadi_elper.py プロジェクト: cytopz/gacha-elper
def start():
    elp = Elp(find_path="./assets")
    if not elp.find("combat.png"):
        print("going home")
        elp.tap(buttons["home1"])
        elp.tap(buttons["home2"])
    elp.tap(buttons["combat_skadi"])
    elp.wait(1.5)
    elp.tap(buttons["operation_map"])
    gt_5 = True
    gt_5_count = 0
    try:
        while True:
            current_map = buttons["gt_5"] if gt_5 else buttons["gt_6"]
            elp.tap(current_map)
            if not elp.find("auto_enabled.png"):
                elp.tap(buttons["auto_deploy"])
            elp.tap(buttons["start_battle1"], 2.5)
            elp.tap(buttons["start_battle2"])
            elp.wait(35)
            elp.wait_until_find("trust.png")
            elp.tap(Coord(512, 512))
            elp.wait(7.5)
            elp.tap(buttons["back"])
            if gt_5:
                gt_5_count += 1
            if gt_5 and gt_5_count == 2:
                gt_5 = not gt_5
                gt_5_count = 0
            elif not gt_5:
                gt_5 = not gt_5
    except KeyboardInterrupt:
        print("done.")
コード例 #5
0
class Button:
    BACK = Coord(50, 45)
    GO_1 = Coord(759, 487)
    GO_2 = Coord(864, 554)
    DISASSEMBLE = Coord(640, 530)
    SORT = Coord(345, 500)
    QR = Coord(614, 669)
    AUTO_SEARCH = Coord(1000, 590)
    CONTINUE = Coord(700, 520)
コード例 #6
0
ファイル: tools.py プロジェクト: cytopz/arknights-farmer
 def find_stage(self, stage):
     current_stages = self.__find_stage_boxes(stage)
     if stage.name not in current_stages:
         current_stages = [
             int(x.split('-')[1]) for x in list(current_stages.keys())
         ]
         stage_level = int(stage.level)
         swipe_modifier = 0.25
         try:
             if stage_level > max(current_stages):
                 swipe_modifier = swipe_modifier * (stage_level -
                                                    max(current_stages))
                 Elp.swipe(Coord(640, 360),
                           Coord(640 - (640 * swipe_modifier), 360),
                           delay=3.5)
             elif stage_level < min(current_stages):
                 swipe_modifier = swipe_modifier * (min(current_stages) -
                                                    stage_level)
                 Elp.swipe(Coord(640, 360),
                           Coord(640 + (640 * swipe_modifier), 360),
                           delay=3.5)
             return self.find_stage(stage)
         except ValueError:
             Elp.swipe(Coord(640, 360),
                       Coord(randint(0, 1280), 360),
                       delay=3.5)
             return self.find_stage(stage)
     else:
         return current_stages[stage.name]
コード例 #7
0
ファイル: farmer.py プロジェクト: cytopz/arknights-farmer
class CombatHandler:

    BUTTONS = {
        'home1': Coord(270, 38),
        'home2': Coord(90, 283),
        'combat': Coord(995, 200),
        'combat2': Coord(535, 185),
        'next_chp': Coord(1185, 665),
        'prev_chp': Coord(980, 665),
        'auto_toggle': Coord(1150, 600),
        'start1': Coord(1142, 665),
        'start2': Coord(1105, 505),
        'refill': Coord(1100, 575),
        'center': Coord(720, 360),
        'chips': Coord(400, 650),
        'supplies': Coord(250, 650)
    }

    def __init__(self, task=None, refill=0, manual=0):
        self.task = task
        self.refill = refill
        self.manual = manual

    def __enter_battle(self):
        Elp.tap(self.BUTTONS['start1'], delay=3)
        if Elp.find('sanity_out', sim_to=0.75):
            Logger.log('You ran out of sanity')
            if self.refill <= 0:
                self.terminate()
            Logger.log('Refilling sanity...')
            Elp.tap(self.BUTTONS['refill'], delay=2.6)
            Elp.tap(self.BUTTONS['start1'])
            self.refill -= 1
        Elp.wait_until_find('mission_start')
        Elp.tap(self.BUTTONS['start2'])

    def __enter_stage(self):
        if stage.classifier == 'supplies' or stage.classifier == 'chips':
            if not stage.isopen:
                Logger.log(f'{stage.name.upper()} is currently not open',
                           mode='warn')
                return False
            Elp.tap(self.BUTTONS[stage.classifier])
            op_coord = Elp.find(f'daily_resources/{stage.opcode}',
                                sim_from=0.98,
                                sim_to=0.9)
            Elp.tap(op_coord)
            Elp.tap(stage.coord)
        elif stage.classifier == 'event':
            Logger.log(
                'Event stages are not implemented yet. Use manual mode instead',
                mode='warn')
            return False
        else:
            Elp.tap(self.BUTTONS['combat'], delay=3.5)
            current_chapter = Elp.find_current_chapter()
            target_chapter = int(stage.chapter)
            for _ in range(abs(target_chapter - current_chapter)):
                if target_chapter > current_chapter:
                    Elp.tap(self.BUTTONS['next_chp'], delay=3)
                else:
                    Elp.tap(self.BUTTONS['prev_chp'], delay=3)
            stage_coord = Elp.find_stage(stage)
            Elp.tap(stage_coord, random_radius=5)
        if Elp.find('auto_off', sim_from=0.9, sim_to=0.8):
            Elp.tap(self.BUTTONS['auto_toggle'])
            if Elp.find('auto_off', sim_from=0.9, sim_to=0.8):
                Logger.log(
                    "You don't have auto enabled for this stage! Skipping...",
                    mode='warn')
                return False
        return True

    def __handle_end_battle(self):
        while (not Elp.find('trust_meter',
                            crop_from=Coord(822, 443),
                            crop_to=Coord(880, 516))
               and not Elp.find('lvlup',
                                crop_from=Coord(652, 316),
                                crop_to=Coord(844, 416))):
            Elp.wait(1.5)
        Elp.tap(self.BUTTONS['center'])
        Elp.tap(self.BUTTONS['center'])
        Elp.wait_until_find('home')

    def terminate(self, code=0):
        if self.task:
            Logger.log('Saving task...')
            Elp.save_task(self.task)
        Logger.log('Exitting...')
        Elp.exit(code)

    def start(self):
        if self.manual == 0:
            if not Elp.find('combat'):
                Elp.tap(self.BUTTONS['home1'])
                Elp.tap(self.BUTTONS['combat2'])
            else:
                Elp.tap(self.BUTTONS['combat'])
                Elp.wait_until_find('home')
        try:
            if self.manual > 0:
                Logger.log("Waiting for you to enter a stage...")
                Elp.wait_until_find('exit_battle')
                Logger.log("Entered a stage")
                self.__handle_end_battle()
                self.manual -= 1
                while self.manual > 0:
                    self.__enter_battle()
                    self.__handle_end_battle()
                    self.manual -= 1
            else:
                for stage in list(self.task.keys()):
                    Logger.log(
                        f'Doing {stage.name} run for {self.task[stage]} time(s)'
                    )
                    if not self.__enter_stage():
                        continue
                    while self.task[stage] > 0:
                        self.__enter_battle()
                        self.__handle_end_battle()
                        self.task[stage] -= 1
                    Elp.tap(self.BUTTONS['home1'])
                    Elp.tap(self.BUTTONS['combat2'])
                    del (self.task[stage])
            Logger.log('Completed all task')
            Logger.log('Exiting...')
        except KeyboardInterrupt:
            self.terminate()
        except Exception as e:
            Logger.log('Something went horribly wrong', mode='error')
            self.terminate(1)
コード例 #8
0
ファイル: skadi_elper.py プロジェクト: cytopz/gacha-elper
from gacha_elper.elper import Elper as Elp
from gacha_elper.elper import Coordinate as Coord

buttons = {
    "home1": Coord(215, 30),
    "home2": Coord(73, 230),
    "back": Coord(70, 35),
    "combat_skadi": Coord(927, 255),
    "operation_map": Coord(766, 385),
    "gt_5": Coord(682, 376),
    "gt_6": Coord(774, 282),
    "auto_deploy": Coord(919, 616),
    "start_battle1": Coord(913, 666),
    "start_battle2": Coord(888, 475),
}


def start():
    elp = Elp(find_path="./assets")
    if not elp.find("combat.png"):
        print("going home")
        elp.tap(buttons["home1"])
        elp.tap(buttons["home2"])
    elp.tap(buttons["combat_skadi"])
    elp.wait(1.5)
    elp.tap(buttons["operation_map"])
    gt_5 = True
    gt_5_count = 0
    try:
        while True:
            current_map = buttons["gt_5"] if gt_5 else buttons["gt_6"]
コード例 #9
0
def is_dock_full():
    return elp.find("sort.png",
                    crop_from=Coord(273, 444),
                    crop_to=Coord(430, 510))
コード例 #10
0
def wait_until_main():
    elp.wait_until_find("auto_search.png",
                        crop_from=Coord(930, 530),
                        crop_to=Coord(1024, 630))