def is_fighting(task): if task.d.exists(img('fighting')): # task.d.click(*task.position.get('mid')) return True if task.d.exists(img('ready')): return True return False
def fighting(task, times=4, auto_ready=False): if auto_ready: task.d.click_image(img('ready_icon'), timeout=20.0) else: time.sleep(1.5 + get_delay()) while not is_fighting(task): if get_ready(task.d): break while is_fighting(task): pass get_bonus_task(task.d) continue_(task, times) return True
class Pipeline(Window): MAX_COLUMN = 6 READY = img() + "Gray_pipeline.gif" GOING = img() + "Yellow_pipeline.gif" PENDING = img() + "Blue_pipeline.gif" FAIL = img() + "Red_pipeline.gif" PASS = img() + "Green_pipeline.gif" def __init__(self, status_list, app): super().__init__(app) self.app.setPadding([10, 0]) self.app.setInPadding([1, 1]) # self.app.setSticky("nsew") self.times_done = 0 self.status_list = status_list self.status = {} self.task_running = None self.current = status_list[0] self.task = None def run_task(self): pass def kill(self): self.task.d = None def stop_task(self, btn): self.app.hide() self.app.events = [] self.app.removeAllWidgets() self.app.setGuiPadding(0, 0) self.kill() from windows.task_choose import TaskChoose TaskChoose(self.app).choose_task() def set_pipeline(self, task_running): self.task_running = task_running column = 0 for name in self.status_list: self.app.addLabel(name + "Label", name, 0, column, 1) self.app.addImage(name, self.READY, 1, column, 1) self.app.addLabel(name, "", 2, column, 1) column += 1 self.app.addLabel("times", "已刷了" + str(self.times_done) + "次", 3, column - 1, 1) self.app.addButton("停止并返回", self.stop_task, 3, 0, 1) self.app.setButtonSticky("停止并返回", "") self.app.registerEvent(self.update_pipeline) self.app.go() def update_pipeline(self): self.app.setLabel("times", "已刷了" + str(self.times_done) + "次") for name in self.status: self.set_status(name, self.status[name]) if not self.task_running.isAlive(): self.set_status(self.current, "fail") return def set_status(self, name, value): if isinstance(value, int): if value == 0: self.app.setImage(name, self.READY) self.app.setLabel(name, "") elif time.time() + 1 < value: self.app.setImage(name, self.PENDING) pending = str(int(value - time.time())) self.app.setLabel(name, pending + " 秒后") elif time.time() - 1 > value: self.current = name self.app.setImage(name, self.GOING) pending = str(int(62 - time.time() + value)) self.app.setLabel(name, "剩余 " + pending + " 秒") else: self.status[name] = 0 elif value == "going": self.current = name self.app.setImage(name, self.GOING) self.app.setLabel(name, "") elif value == "ready": self.app.setImage(name, self.READY) self.app.setLabel(name, "") elif value == "pass": self.app.setImage(name, self.PASS) self.app.setLabel(name, "") elif value == "fail": self.app.setImage(name, self.FAIL) self.app.setLabel(name, "任务出错") self.app.events = [] else: self.app.setImage(name, self.PENDING) self.app.setLabel(name, "")
def click_get(d): if d.click_image(img('cancel'), offset=(2, 0), timeout=60.0): time.sleep(3 + get_delay()) return True else: return False
def click_ok(d): if d.click_image(img('confirm'), timeout=90.0): time.sleep(3 + get_delay()) return True else: return False
def get_bonus_task(d): d.click_image(img('bonus_task'), safe=True, timeout=1.0, offset=(1, 6.5))
def get_ready(d): if d.exists(img('not_ready')): d.click_nowait(img('ready_icon')) time.sleep(1 + get_delay()) return True return False
def in_group(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('in_group'))
def is_not_ready(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('not_ready'))
def is_breaking(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('breaking'))
def is_exploring(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('exploring'))
def in_explore_map(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('JueXing'))
def in_yard(d): time.sleep(0.5 + get_delay()) return not not d.exists(img('mail'))