def main(): InitLog() gli = (31, 21, 37, 37) glp = (31 + 37 // 2, 21 + 37 // 2) print("固定左侧 x: %d y: %d w: %d h: %d 中心点: (%d, %d)" % (gli[0], gli[1], gli[2], gli[3], glp[0], glp[1])) imgfile = WindowCaptureToFile("TWINCONTROL", "WeGame", GetvercodeDir(), 284, 171, 280, 161) if imgfile == "": logger.warning("截取验证拖动图片失败") return img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) x, y, w, h = GetRightPos(img) grp = (x + w // 2, y + h // 2) print("x: %d y: %d w: %d h: %d 中心点: (%d, %d)" % (x, y, w, h, grp[0], grp[1])) dis = grp[0] - glp[0] print("横轴距离: %d" % (dis)) beginx, beginy = 333, 354 aj().MouseMoveToTgp(333, 354), KongjianSleep() aj().MouseLeftDown(), KongjianSleep() aj().MouseMoveR(10, 0), KongjianSleep() movetox, movetoy = beginx + dis, beginy print("移动到 %d %d" % (movetox, movetoy)) aj().MouseMoveToTgp(movetox, movetoy) aj().MouseLeftUp(), KongjianSleep()
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 CloseSkillScene(self): while skillScene.Match(): logger.info("关闭技能栏") aj().PressKey(VK_CODE["esc"]), KongjianSleep() if skillstore.Match(): aj().PressKey(VK_CODE["enter"]), 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()
def OpenZupin(self): if not zupinScene.Match(): Clear() # 判断数量 + 租聘. 所以在这里clear logger.info("要打开幸运星租聘界面") if not Openesc(): logger.warning("打开esc失败") return False pos = xingyunxing.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), LanSleep() return zupinScene.Match()
def IsinAierwenfnagxian(): if wenziaierwenfangxian.Match() or wenzisidunxueyu.Match(): logger.info("在艾尔文防线") return True elif maptip.Match(): pos = maptip.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() logger.info("在艾尔文防线") return True else: # logger.warning("不在艾尔文防线") return False
def GetLocation(self): if IsinAierwenfnagxian(): return "艾尔文防线" elif IsinHedunmaer(): return "赫顿玛尔" elif IsinAerfayingdi(): return "阿法利亚" elif IsInJingxiangalade(): return "镜像阿拉德" elif fuckgame.Match(): # TODO 这里没有用 return "艾尔文防线" elif IsIngente(): return "根特" else: logger.warning("无法判断在哪里所以按一下.") aj().PressKey(VK_CODE['.']), KongjianSleep() return ""
def main(): InitLog() if not GameApiInit(): sys.exit() FlushPid() if not aj().Init(): sys.exit() GameWindowToTop() print(skillstore.Match())
def GetChenghao(self): if not self.OpenChenghao(): logger.warning("打开称号栏失败") return pos = zhuangbeizhanshi.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() pos = jichudabiao.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseRightClick(), KongjianSleep()
def main(): InitLog() if not GameApiInit(): sys.exit() FlushPid() if not aj().Init(): sys.exit() GameWindowToTop() eq = Equips() # eq.ZupinWuqi() eq.ChangeEquip()
def RemoveNotInStrategy(self): if not self.OpenSkillScene(): logger.warning("打开技能栏失败") return curskills = GetSkillObj() for v in curskills: if not self.IsInLearnStrategy(v.name) or self.IsBeidong(v.name): logger.warning("技能: %s 不是当前应该用的技能,拖出去" % v.name) # 向上移动, 脱离 pos = idxposmap[v.idx] aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftDown(), KongjianSleep() aj().MouseMoveTo(pos[0], pos[1] - 150), KongjianSleep() aj().MouseLeftUp(), KongjianSleep()
def OpenChenghao(self): Clear() if not chenghaobu.Match(): if not OpenBagScene(): logger.warning("打开装备栏失败") return False logger.info("要打开称号栏") pos = chenghaobubtn.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), LanSleep() aj().MouseMoveTo(0, 0) return chenghaobu.Match()
def CloseZupin(self): while zupinScene.Match(): logger.info("关闭幸运星租聘界面") aj().PressKey(VK_CODE["esc"]), KongjianSleep()
def RepairAll(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, 32), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() # 修理按钮 repairbtn = repairButton.Pos() aj().MouseMoveTo(repairbtn[0], repairbtn[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseLeftClick(), KongjianSleep()
def ZupinWuqi(self): if not self.OpenZupin(): logger.warning("打开租聘失败") return pos = zupinScene.Pos() aj().MouseMoveTo(pos[0] + self.xingyunwuqipos[0], pos[1] + self.xingyunwuqipos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseMoveTo(pos[0] + 9, pos[1] + 143), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() pos = zupinconfirm2.Pos() aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep()
def CloseFenjie(self): while fenjiexiulijiScene.Match(): logger.info("关闭分解机") aj().PressKey(VK_CODE["esc"]), KongjianSleep()
def CloseSell(self): while sellButton.Match(): logger.info("关闭分解机") aj().PressKey(VK_CODE["esc"]), KongjianSleep()
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 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 DiscardAll(self): Clear() logger.info("丢弃所有") OpenBagScene() bagpos = bagScene.Pos() equips = GetBagEquipObj() for v in equips: pos = self.BagIdxToPos(v.idx - 9, bagpos) aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftDown(), KongjianSleep() aj().MouseMoveTo(83, 129), KongjianSleep() aj().MouseLeftUp(), KongjianSleep() aj().MouseMoveR(100, 100), KongjianSleep() pos = querenbtn.Pos() aj().MouseMoveTo(pos[0], pos[1]) aj().MouseLeftClick(), KongjianSleep() CloseBagScene()
def OpenBagScene(): Clear() if not bagScene.Match(): logger.info("打开装备栏") aj().PressKey(VK_CODE["i"]), LanSleep() return bagScene.Match()
def EquipSkillInStrategy(self): if not self.OpenSkillScene(): logger.warning("打开技能栏失败") return aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseWheel(30), KongjianSleep() for v in self.learnstrategy: if v.beidong: continue if not self.HasEquipSkill(v.name): idx = self.GetEmptyPosIdx() destpos = idxposmap[idx] logger.info("技能: %s 没有装备 位置: %d 有空位 (%d, %d)", v.name, idx, destpos[0], destpos[1]) for i in range(3): if self.FindedPic(v.picutre): break aj().MouseMoveTo(536, 360), KongjianSleep() aj().MouseWheel(-3), KongjianSleep() if not self.FindedPic(v.picutre): logger.warning("找不到技能: %s" % v.name) continue srcpos = v.GetPos() aj().MouseMoveTo(srcpos[0], srcpos[1]), KongjianSleep() aj().MouseLeftDown(), KongjianSleep() aj().MouseMoveR(10, 10), KongjianSleep() aj().MouseMoveTo(destpos[0], destpos[1]), KongjianSleep() aj().MouseLeftUp(), KongjianSleep()
def OpenSkillScene(self): # Clear() 不要再这里. 因为连续3次 (加点,脱进来,脱出去,太浪费时间了) if not skillScene.Match(): logger.info("打开技能栏") aj().PressKey(VK_CODE["k"]), LanSleep() return skillScene.Match()
def CloseBagScene(): while bagScene.Match(): logger.info("关闭装备栏") aj().PressKey(VK_CODE["esc"]), KongjianSleep()
def SellAll(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, 32), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() # 出售按钮 sellbtn = sellButton.Pos() aj().MouseMoveTo(sellbtn[0], sellbtn[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() bagpos = bagScene.Pos() equips = GetBagEquipObj() for v in equips: pos = self.BagIdxToPos(v.idx - 9, bagpos) aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() aj().MouseLeftClick(), KongjianSleep() self.CloseSell()