def PressSkill(self, key, delay, afterdelay, thenpress=None, doublepress=False, issimpleattack=False): youlingstr = VK_reverse[key] if issimpleattack: for i in range(10): socketrpc("keydown %s" % youlingstr), RanSleep(0.05) socketrpc("keyup %s" % youlingstr), RanSleep(0.05) RanSleep(0.05) else: socketrpc("keydown %s" % youlingstr), RanSleep(delay) socketrpc("keyup %s" % youlingstr), RanSleep(afterdelay) if thenpress is not None: youlingstrThen = VK_reverse[thenpress] socketrpc("keydown %s" % youlingstrThen), KongjianSleep() socketrpc("keyup %s" % youlingstrThen) if doublepress: def worker(): for i in range(10): socketrpc("keydown %s" % youlingstr), KongjianSleep() socketrpc("keyup %s" % youlingstr), KongjianSleep() threading.Thread(target=worker).start()
def ChangeEquip(self): if not OpenBagScene(): logger.warning("打开装备栏失败") return bagpos = bagScene.Pos() aj().MouseMoveTo(bagpos[0] - 91, bagpos[1] + 192), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() def EquipBetter(): for v in CheckReplices: betterEquip = self.BagEquipBetter(v[0], v[1]) if betterEquip is not None: logger.info("更换装备: %s", betterEquip) pos = self.BagIdxToPos(betterEquip.idx - 9, bagpos) aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftDown(), KongjianSleep() aj().MouseMoveTo(bagpos[0], bagpos[1] + 100), KongjianSleep() aj().MouseLeftUp(), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() # 两次调用. 防止魔法封印 EquipBetter() if self.DoesBagHaveBetterEquip(): RanSleep(0.5) EquipBetter()
def MouseMoveR(self, x, y): (curx, cury) = GetCursorInfo() centrex, centrey = curx + x, cury + y flag = False # 修正 while not self.IsMovedTo(centrex, centrey): (curx, cury) = GetCursorInfo() if flag: logger.warning("当前鼠标坐标: (%d, %d) != (%d, %d)" % (curx, cury, centrex, centrey)) else: flag = True socketrpc("moveto %d %d" % (centrex, centrey)), RanSleep(0.3)
def FenjieAll(self): Clear() logger.info("分解所有") pos = self.GetFenjieJiPos() if pos is None or pos == (0, 0): return aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseMoveR(56, 54), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() # 分解按钮 fenjiebt = fenjieButton.Pos() aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep() # 检查 "稀有" "勇者" "包含我的职业装备" 是否勾选 xiyoucheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 47, 12, 12), (fenjiebt[0] + 67 + 6, fenjiebt[1] + 47 + 6)) yongzhecheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 61, 12, 12), (fenjiebt[0] + 67 + 6, fenjiebt[1] + 61 + 6)) zhiyecheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 80, 12, 12), (fenjiebt[0] + 67 + 6, fenjiebt[1] + 80 + 6)) checks = [xiyoucheck, yongzhecheck, zhiyecheck] for v in checks: if not v[0].Match(): aj().MouseMoveTo((v[1])[0], (v[1])[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep() # 分解按钮 aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() # 确认 pos = fenjieConfirm.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), RanSleep(3.0)
def MouseMoveToTgp(self, x, y): hwnd = win32gui.FindWindow("TWINCONTROL", "WeGame") try: centrex, centrey = win32gui.ClientToScreen(hwnd, (int(x), int(y))) except: return flag = False # 修正 while not self.IsMovedTo(centrex, centrey): (curx, cury) = GetCursorInfo() if flag: logger.warning("当前鼠标坐标: (%d, %d) != (%d, %d)" % (curx, cury, centrex, centrey)) else: flag = True socketrpc("moveto %d %d" % (centrex, centrey)), RanSleep(0.3)
def AddSkillPoints(self): if not self.OpenSkillScene(): logger.warning("打开技能栏失败") return logger.info("技能栏已经打开") needLearn = False if self.NeedWangji(): logger.info("去掉不需要技能的加点") aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseWheel(30), KongjianSleep() for v in self.deletedskills: logger.info("开始忘记技能: %s", v.name) if not IsSkillLearned(v.name): logger.info("技能: %s 不需要忘记" % v.name) else: for i in range(3): if self.FindedPic(v.picutre): break aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseWheel(-3), KongjianSleep() if not self.FindedPic(v.picutre): logger.warning("找不到技能: %s" % v.name) continue pos = v.GetPos() needLearn = True logger.info("忘记,移动到相对位置: (%d,%d)" % (pos[0], pos[1])) aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().ShiftRight(), KongjianSleep() logger.info("开始学习技能") aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseWheel(30), KongjianSleep() if self.AttackType is not None: pos = skillScene.Pos() if pos is not None or pos != (0, 0): tolearnpos = [] if self.AttackType == MOFA: tolearnpos.append((pos[0] + mofabaoji[0], pos[1] + mofabaoji[1])) tolearnpos.append((pos[0] + mofabeiji[0], pos[1] + mofabeiji[1])) elif self.AttackType == WULI: tolearnpos.append((pos[0] + wulibaoji[0], pos[1] + wulibaoji[1])) tolearnpos.append((pos[0] + wilibeiji[0], pos[1] + wilibeiji[1])) for pos in tolearnpos: w, h = 50, 60 halfw, halfh = w // 2, h // 2 cannotLearn = Picture(GetImgDir() + "cannotlearn.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h) jingtong = Picture(GetImgDir() + "jingtong.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h) if cannotLearn.Match() or jingtong.Match(): logger.warning("暴击不需要学习") else: needLearn = True aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().ShiftLeft(), KongjianSleep() else: logger.warning("没有找到技能栏") for v in self.learnstrategy: logger.info("学习技能: %s" % v.name) for i in range(3): if self.FindedPic(v.picutre): break aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseWheel(-3), KongjianSleep() if not self.FindedPic(v.picutre): logger.warning("找不到技能: %s" % v.name) continue pos = v.GetPos() # w, h = 30, 25 w, h = 50, 60 halfw, halfh = w // 2, h // 2 cannotLearn = Picture(GetImgDir() + "cannotlearn.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h) jingtong = Picture(GetImgDir() + "jingtong.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h) if cannotLearn.Match() or jingtong.Match(): logger.info("技能: %s 不需要学习", v.name) else: needLearn = True logger.info("学习,移动到相对位置: (%d,%d)" % (pos[0], pos[1])) aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().ShiftLeft(), KongjianSleep() # aj().MouseMoveR(- (30 // 2 - 2), 0), KongjianSleep() logger.info("技能已学习完毕") if needLearn: # 确认按钮 learnpos = skillSceneLearn.Pos() aj().MouseMoveTo(learnpos[0], learnpos[1]), KongjianSleep() aj().MouseLeftClick(), RanSleep(0.3) aj().MouseLeftClick(), KongjianSleep()
def JiPaoZuo(self): socketrpc("keydown Left"), RanSleep(0.15) socketrpc("keyup Left"), RanSleep(0.15) socketrpc("keydown Left"), RanSleep(0.15)
def JiPaoYou(self): socketrpc("keydown Right"), RanSleep(0.15) socketrpc("keyup Right"), RanSleep(0.15) socketrpc("keydown Right"), RanSleep(0.15)
def DeleteAll(self): socketrpc("keydown Backspace"), RanSleep(2) socketrpc("keyup Backspace"), RanSleep(0.05)