def onBlueTacketAndBattle(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//blue_tacket_15_15_40_20.png", 0.9) if len(xylist) > 0: self.leftClickPer(75, 80) self.battleEvenCode = 2
def findImgAndclick(self, path): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow(self.handle, path, 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x, y) time.sleep(2)
def onDlgAccept(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//accept_60_58_80_62.png", 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x+2, y+2) self.battleEvenCode = 0
def onDlgBuyRoadAndClick(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//buy_road_20_58_40_62.png", 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x+2, y+2) self.battleEvenCode = 3
def onYellowPvpAndBattle(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//yellow_pvp_60_76_80_82.png", 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x+2, y+2) self.battleEvenCode = 3
def getEnemyLocation(self): imgs = self._enemys for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.getHandle(), imgs[i], 0.8) if len(xylist) > 0: return xylist return []
def clickMacthImg(self, imgPath, threshold=0.9): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow(self.handle, imgPath, threshold) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x, y) time.sleep(2) return True return False
def getBossLocation(self): imgs = self._boss random.shuffle(imgs) for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.getHandle(), imgs[i], 0.7) if len(xylist) > 0: return xylist return []
def onDlgOkAndClick(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow(self.handle, "on_dlg_ok_60_62_80_66.png", 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x + 2, y + 2) time.sleep(2) return True return False
def clickPoint(self): imgs = self._mapPoints for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.getHandle(), imgs[i], 0.8) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x, y) time.sleep(10) if self.onGetItems(): #防止点错 self.battleContinue() time.sleep(4)
def getEnemyLocation(self): imgs = self._exEnemys + self._enemys if self._needRandomEnemyLocation: random.shuffle(imgs) for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.getHandle(), imgs[i], 0.7) if len(xylist) > 0: print("getEnemyLocation", imgs[i]) return xylist return []
def getBossLocation(self): imgs = [ "enemy\\d1_4_boss_45_45_55_55.png", "enemy\\d1_2_boss_45_45_55_55.png", "enemy\\d1_3_boss_45_45_55_55.png", "enemy\\boss_48_45_52_55.png", ] random.shuffle(imgs) for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.handle, imgs[i], 0.7) if len(xylist) > 0: return xylist return []
def onDlgChallengeAndClick(self): screen.setForegroundWindow(self.handle) tarImgs = [ "map//challenge_60_58_80_62.png", "map//challenge2_60_58_80_62.png", "map//touxi_60_58_80_62.png", ] for img in tarImgs: xylist = screen.matchResImgInWindow( self.handle, img, 0.9) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x+2, y+2) self.battleEvenCode = 0
def onBusinessAndClose(self): screen.setForegroundWindow(self.handle) print("onBusinessAndClose") xylist = screen.matchResImgInWindow( self.handle, "map//on_business_65_73_85_76.png", 0.8) if len(xylist) > 0: # if self.canChangeRedAir(): # self.leftClickPer(75, 34) # time.sleep(3) # self.onDlgOkAndClick() # self.leftClickPer(75, 46) # time.sleep(3) # self.onDlgOkAndClick() # self.leftClickPer(75, 59) # time.sleep(3) # self.onDlgOkAndClick() x, y = xylist[0] self.leftClick(x, y)
def toSelectTeam(self, teamNo): xyList = screen.matchResImgInWindow(self.handle, "on_select_team_10_35_90_45.png") x, y = xyList[0] winH = self.getWinH() winW = self.getWinW() winW25 = int(winW * 0.25) winH10 = int(winH * 0.1) winH5 = int(winH * 0.05) offsetY = int(teamNo / 3) offsetX = (teamNo % 3) - 1 teamX = x - winW25 + (winW25 * offsetX) teamY = y + winH10 + (winH5 * offsetY) win32api.SetCursorPos((teamX, teamY)) print("teamloc", teamX, teamY) win32api.mouse_event( win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def getEnemyLocation(self): imgs = [ "enemy\\ship_p1_45_45_55_55.png", "enemy\\ship_p2_45_45_55_55.png", "enemy\\ship_p3_45_45_55_55.png", "enemy\\ship_p4_45_45_55_55.png", "enemy\\ship_z1_45_45_55_55.png", "enemy\\ship_z2_45_45_55_55.png", "enemy\\ship_z3_45_45_55_55.png", "enemy\\ship_h1_45_45_55_55.png", "enemy\\ship_h1_45_45_55_55.png", "enemy\\ship_h2_45_45_55_55.png", "enemy\\ship_q1_45_45_55_55.png", "enemy\\ship_q2_45_45_55_55.png", ] # random.shuffle(imgs) for i in range(len(imgs)): xylist = screen.matchResImgInWindow(self.handle, imgs[i], 0.7) if len(xylist) > 0: return xylist return []
def closeStartDlg(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//start_dlg_25_25_75_38.png", 0.9) if len(xylist) > 0: self.leftClickPer(88, 28)
def getGuessLocation(self): return screen.matchResImgInWindow(self.handle, "guess//guess_10_22_90_30.png")
def run(self): win32gui.SetForegroundWindow(self.handle) while self._isRun: # self.resetCursorPos() if self.onEvenSelectBattle(): # self.toEvenBattle() self.battleEvenCode = 0 # if self.onPvpSelectBattle(): # self.noPvp() # time.sleep(2) # self.onDlgBuyRoadAndClick() if self.needBuyRoad: self.onDlgBuyRoadAndClick() self.onDlgChallengeAndClick() self.onDlgAccept() self.onBlueTacketAndBattle() self.onYellowPvpAndBattle() self.closeMapInfoMenu() self.skipRocket() self.closeStartDlg() if self.onBar(): self.leftClickPer(10, 70) time.sleep(2) self.leftClickPer(10, 70) time.sleep(2) self.leftClickPer(10, 70) time.sleep(2) self.pressBack() time.sleep(3) if self.inStoryLevel() or self.onGoldBar() or self.onBlackMarket() or self.onArmyBar(): self.pressBack() time.sleep(3) if self.onYellowPvp(): self.leftClick(78, 78) self.battleEvenCode = 1 time.sleep(2) if self.onSelectTeam(): if self.battleEvenCode == 0: self.toSelectTeam(self.mapTeamNo) if self.battleEvenCode == 1: self.toSelectTeam(self.pvpTeamNo) if self.battleEvenCode == 2: self.toSelectTeam(self.blueTeamNo) if self.battleEvenCode == 3: self.toSelectTeam(self.pvpTeamNo) time.sleep(3) if self.onTalk(): self.skipTalk() time.sleep(3) if self.onDlgOkAndClick(): continue self.clickYellowOK() self.onBusinessAndClose() print("clickOnGetItems") # 获取物品执行 if self.onGetItems(): self.clickOnGetItems() time.sleep(2) # 体力不足hash print("toUseHp") if self.isHpEmpty(): if self._isUseHp: self.toUseHp() time.sleep(2) self.closeEmptyHp() if self.onSupportDlg(): self.noSupport() time.sleep(2) if self._canUseOil: self.useOil() self._canUseOil = False if self.canResetMap(): self.leftClickPer(65, 88) time.sleep(2) self.onDlgOkAndClick() self._isScranMap = False self._canUseOil = True if self.onMap(): print("findUnKnowMap") xylist = screen.matchResImgInWindow( self.handle, "map//unkown_46_46_54_50.png", 0.7) resList = [] minY = self.getPosY(20) maxY = self.getPosY(80) for point in xylist: if point[1] >= minY and point[1] <= maxY: resList.append(point) if len(resList) > 0: # for i in xylist: x, y = resList[0] cx = self.getPosX(50) cy = self.getPosY(50) # dx=int(cx+(cx-x)/2) # dy=int(cy+(cy-y)/2) self.drag(x, y, cx, cy) # 拖动不是一比一 大概是一半 time.sleep(0.5) self.drag(x, y, cx, cy) time.sleep(2) self.leftClick(cx, cy) time.sleep(2) if self.inStoryLevel(): self.pressBack() time.sleep(2) else: self.leftClick(cx, cy) # 需要连点 time.sleep(3) # self.leftClick(x,y)#需要连点 elif self.onMap(): self.resetMapPosition() time.sleep(2) self.scranDragMap() time.sleep(2) continue time.sleep(self.interval)
def closeMapInfoMenu(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//map_infomenu_70_17_98_20.png", 0.9) if len(xylist) > 0: self.leftClickPer(98, 30)
def getBossLocation(self): return screen.matchResImgInWindow(self.handle, "hongran//boss_45_45_55_55.png")
def canChangeRedAir(self): screen.setForegroundWindow(self.handle) xylist = screen.matchResImgInWindow( self.handle, "map//shop_red_air_82_40_98_48.png", 0.9) return len(xylist) > 0
def clickToFire(self): xylist = screen.matchResImgInWindow( self.getHandle(), "to_fire_80_85_95_95.png", 0.8) if len(xylist) > 0: x, y = xylist[0] self.leftClick(x, y)
def matchResImgInWindow(self,imgName,threshold=0.8): xylist=screen.matchResImgInWindow(self.handle,imgName,threshold) if len(xylist) >0: return True else: return False
def getBossLocation(self): return screen.matchResImgInWindow(self.getHandle(), "map8//boss_48_45_54_55.png")