def sendMouseRightClickEx(self, x=300, y=300, count=1, shift=False, sleep=300): lparam = win32api.MAKELONG(x, y) if not shift: win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, win32con.VK_RBUTTON, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, win32con.VK_RBUTTON, lparam) return win32api.PostMessage(self.hwnd, win32con.WM_KEYDOWN, win32con.VK_SHIFT, 0) for a in range(count): win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, win32con.VK_RBUTTON, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, win32con.VK_RBUTTON, lparam) libs.rSleep(300) win32api.PostMessage(self.hwnd, win32con.WM_KEYUP, win32con.VK_SHIFT, 0) if shift: wparam = win32con.MK_SHIFT | win32con.MK_RBUTTON else: wparam = win32con.MK_RBUTTON for a in range(count): win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, wparam, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, wparam, lparam) libs.sleep(sleep)
def ShowMask(self): animation = self.Text print for i in range(len(self.Text)): libs.sleep(0.001) libs.sys.stdout.write(animation[i % len(animation)]) libs.sys.stdout.flush() print
def pickItemImage(self, img): try: maxLoc = self.isImageAtWindow(img) self.setCursorPos(*maxLoc) libs.sleep(400) self.clickMouseLeftButton() libs.sleep(1800) except: pass
def setSkills(self, skills): for skill in skills: menu_loc = Skills.menu_location[skill] img, sub_skill_loc = skills[skill] img = config.imgs_dir + img # Open skill menu self.sendMouseRightClick(*menu_loc) libs.sleep(400) # Set skill self._setSkills(img, sub_skill_loc)
def attackMonster(self): try: x, y = self.monster() print "monster", str(x), str(y) except: return self.ctl.setCursorPos(x, y) libs.sleep(400) for a in range(30): self.ctl.skill2() libs.sleep(100)
def pickItem(self, min_hsv, max_hsv, min_pixels): self.setCursorPos(10, 10) contours = self.findHSVEX(min_hsv, max_hsv, min_pixels) #print contours try: x, y = contours[0][0][0] print "PickItem: ", x, y except: return self.setCursorPos(x, y) libs.sleep(400) self.clickMouseLeftButton() libs.sleep(1800)
def pickItems(self): self.sendAlt() libs.sleep(600) # legend #(109, 182-192, 150-161) #more tight #(109, 179-195, 123-171) #problem for a in range(1): self.pickItem([109, 182, 150], [109, 192, 161], 2) self.pickItem([60, 245, 107], [62, 255, 255], 2) libs.sleep(300) # rare #(90-90, 234-254, 136-241) # libs.sleep(500) # self.pickItem([90, 234, 136], [90, 254, 241]) self.pickItemImages()
def repair(self): self.ctl.select(491, 64) libs.sleep(1400) self.ctl.select(422, 120) libs.sleep(800) self.ctl.select(141, 293) libs.sleep(800) self.ctl.sendESC() libs.sleep(300) config.REPAIRP = False
def _setSkills(self, img, sub_skill_loc): for a in range(10): try: libs.sleep(800) # (229, 69), (577, 199) maxloc = self.isImageAtRegion(img, 229, 69, 350, 130) self.click(*maxloc) libs.sleep(400) self.click(*Skills.menu_sub_location[sub_skill_loc]) libs.sleep(400) self.click(338, 455) libs.sleep(400) return except: # Next page self.click(*Skills.menu_next_button_location) libs.sleep(400) continue
def main(): d3w = DWindowUtiles() win32gui.SetForegroundWindow(d3w.hwnd) win32gui.MoveWindow(d3w.hwnd, 0, 0, 800, 600, win32con.TRUE) controller = D3Controller(D3ForegroundController) town = Town(controller) libs.sleep(1400) town.setSkill() while 1: town.clickContinueGameButton() town.waitTown() libs.sleep(800) town.ctl.click(776, 211) # remove subject window if config.REPAIRP: town.repair() town.exitToMenu() continue town.goIntoWarrior() libs.sleep(1000) town.goFront() town.setRepair() #town.war_throw() town.war() for a in range(2): town.ctl.pickItems() libs.sleep(100) town.ctl.move(529, 232) libs.sleep(1000) town.ctl.pickItems() town.exitToMenu()
def setSkill(self): if not self.isInMenu(): self.exitToMenu() libs.sleep(800) self.clickContinueGameButton() self.waitTown() libs.sleep(800) self.ctl.setSkills(Skills.war_jump) libs.sleep(800) self.exitToMenu()
def war(self): self.ctl.setCursorPos(790, 274) libs.sleep(300) self.ctl.sendKey("1") libs.rSleep(300) self.ctl.setCursorPos(326, 345) libs.rSleep(100) self.ctl.swingStandingLefta(8, 500) self.ctl.setCursorPos(497, 275) libs.sleep(100) self.ctl.swingStandingRighta(8, 500) self.ctl.sendKey("4") libs.rSleep(400) self.ctl.sendKey("2") libs.sleep(400) # Hero self.ctl.sendKey("3") libs.rSleep(400) self.ctl.sendKey("3") libs.rSleep(400) # Volcano self.ctl.clickMouseRightButton() libs.rSleep(400) self.ctl.clickMouseRightButton() self.ctl.swingStandingLefta(9, 500) self.ctl.swingStandingRighta(9, 500) self.ctl.sendKey("2") libs.rSleep(200) self.ctl.swingStandingLefta(11, 500) self.ctl.swingStandingRighta(11, 500) #pickItems() #imagePickItem() self.ctl.move(529, 232) libs.rSleep(1200) self.ctl.move(40, 374) libs.rSleep(1800) self.ctl.move(524, 195) libs.rSleep(1700)
def pickItemImages(self): for img in Items.images: libs.sleep(400) img = config.imgs_dir + img self.pickItemImage(img)
def goIntoWarrior(self): self.ctl.move(17, 167) libs.sleep(2900) self.ctl.select(289, 135) libs.sleep(2900)
def war_throw(self): self.ctl.skill4() libs.sleep(300) self.ctl.skill1() self.ctl.setCursorPos(782, 227) libs.sleep(300) for a in range(30): # throw self.ctl.skill2() libs.sleep(100) self.ctl.skill3() libs.sleep(300) self.ctl.skillb() libs.sleep(300) # for a in range(100): # self.ctl.skill2() # libs.sleep(100) # center is about (406, 278) # 1step is (491, 273) for a in range(3): self.ctl.skill1() self.attackMonster() libs.sleep(700) self.ctl.move(556, 278) libs.sleep(1000) self.ctl.pickItems() for a in range(3): self.ctl.skill1() self.attackMonster() libs.sleep(700) self.ctl.move(556, 278) libs.sleep(1000) self.ctl.skilla() for a in range(3): self.ctl.skill1() self.attackMonster() libs.sleep(700) for a in range(3): self.ctl.skill1() self.attackMonster() libs.sleep(700) self.ctl.pickItems()
def select(self, x, y): self.setCursorPos(x, y) libs.sleep(300) self.clickMouseLeftButton()