def find_template(template_file, option=None):#pass template to function #option == to option in menu when righ-clicked on item #checks to see wheater to add cur dir or not if "/" not in template_file: template_file = cwd+"/imgs/"+template_file rs_bag, bagx,bagy = RS.get_bag("bag, and it's coords") #Screenshot taken here, #loc is where the templates found are in loc, w, h = Match.this(rs_bag, template_file) #for loops iterates through every found template for pt in zip(*loc[::-1]):#goes through each found image #pt = ((pt[0]+bagx),(pt[1]+bagy)) #pt is the Top-left coord of the found template #create Bott-Right coord of found template btmX = pt[0] + w - ((w/2)/2) btmY = pt[1] + h - ((h/2)/2) #moving the pt coord of the template a bit to the right, so options menu get brought up pt = (pt[0]+((w/2)/2), pt[1]+((h/2)/2)) #gencoord adds RS position x, y = gen_coords(pt,btmX, btmY)#gets random x, y coords relative to RSposition on where to click #x, y = Mouse.randCoord(pt, w, h) if option == 'click' or option == 1: Mouse.moveClick(x,y, 1)#left clicks on given x,y coords else: Mouse.moveClick(x,y, 3)#right clicks on given x,y coords #menu_x, menu_y, menu = RS.getOptionsMenu(x,y)#takes screenshot of options menu and returns the point at Top-left of the menu RandTime.randTime(0,0,0,0,0,1) #RS.findOptionClick(x,y, menu_x, menu_y, menu, option) RS.findOptionClick(x,y,option) break
def withdrawFromBank(template_): rsx, rsy = RS.position() bankWindow, x1, y1 = RS.getBankWindow() loc, w, h = Match.this(bankWindow,template_) for pt in zip(*loc[::-1]): #unpackaged pt x, y = pt #make btm coords btmx = x + x1 + w - 5 btmy = y + y1 + h - 5 #add bankwindow+RS coords to pt x += x1 + 5 y += y1 + 5 #gen random coords x = random.randint(x,btmx) y = random.randint(y,btmy) Mouse.moveClick(x, y, 3 ) #removing RS coords since they are added findOptionClick x -= rsx y -= rsy RS.findOptionClick(x,y,'withdraw14') break
def find_ham_guard(): import random try: ps, psx, psy = RS.getPlayingScreen() lower_pink = np.array([154, 0, 0]) upper_pink = np.array([160, 255, 255]) mask = cv2.inRange(ps, lower_pink, upper_pink) _, contours, _ = cv2.findContours(mask.copy(), 1, 2) for cnt in contours: if cv2.contourArea(cnt) <= 1: continue #print("Area: {}".format(cv2.contourArea(cnt))) M = cv2.moments(cnt) cx = int(M['m10'] / M['m00']) cy = int(M['m01'] / M['m00']) cx += psx cy += psy cx += random.randint(-20, 20) cy += random.randint(-20, 20) # Find bouding box coords Mouse.moveClick(cx, cy, 3) break RS.findOptionClick(cx, cy, 'pickpocket') except Exception as e: print(e)
def find_ham_guard(): import random try: ps, psx, psy = RS.getPlayingScreen() lower_pink = np.array([154,0,0]) upper_pink = np.array([160,255,255]) mask = cv2.inRange(ps, lower_pink, upper_pink) _, contours, _ = cv2.findContours(mask.copy(), 1,2) for cnt in contours: if cv2.contourArea(cnt) <= 1: continue #print("Area: {}".format(cv2.contourArea(cnt))) M = cv2.moments(cnt) cx = int(M['m10']/M['m00']) cy = int(M['m01']/M['m00']) cx += psx cy += psy cx += random.randint(-20,20) cy += random.randint(-20,20) # Find bouding box coords Mouse.moveClick(cx,cy, 3) break RS.findOptionClick(cx,cy, 'pickpocket') except Exception as e: print(e)
def tp_duel_arena(): RS.press_button('equipment') # Teleports to Duel Arena # moves to the ring equpiment x,y = Mouse.genCoords(689,395,712,417) Mouse.moveClick(x,y,3) RS.findOptionClick(x,y,'duelArenaTeleport')
def main(herb_object): # var to break out of loop after 3 bank tries bankchecking = 0 n_secs = 1 while True: if bankchecking == 5: break #open bank RS.open_cw_bank() #give time for window to open up time.sleep(1.2) #check if bank is open, if not end if not RS.isBankOpen(): bankchecking +=1 n_secs = n_secs * bankchecking time.sleep(n_secs) continue # resets bankchecking bankchecking = 0 #deposit all #if herb_object in inventory if not RS.isInvEmpty(): RS.depositAll() #loop makes sure herbs are withdrawn! while True: try: herbx,herby = findherb(herb_object) except Exception as e: print('No more herbs') print(e) return Mouse.moveClick(herbx,herby,3) # removes RS coords since added back in in findOptionClick herbx -= RSX herby -= RSY RS.findOptionClick(herbx,herby,'withdrawAll') time.sleep(.9) randTime(0,0,0,0,0,9) # breaks when items are taken out into inventory if not RS.isInvEmpty(): break else: # deposits all items from inventory x,y = Mouse.genCoords(RSX+13,RSY+60,RSX+500,RSY+352) Mouse.moveTo(x,y) #close bank RS.closeBank() find_grimmy_herbs_in_inventory(herb_object)
def makeBow(): """selects option to "make all" bows when bowstring and unstrung bow are clicked""" rsx, rsy = RS.position() x = random.randint(rsx+220, rsx+300) y = random.randint(rsy+408, rsy+467) Mouse.moveClick(x,y, 3) #Remvoing RS coords x -= rsx y -= rsy RS.findOptionClick(x,y,'makeAll')
def makeBow(): """selects option to "make all" bows when bowstring and unstrung bow are clicked""" rsx, rsy = RS.position() x = random.randint(rsx + 220, rsx + 300) y = random.randint(rsy + 408, rsy + 467) Mouse.moveClick(x, y, 3) #Remvoing RS coords x -= rsx y -= rsy RS.findOptionClick(x, y, 'makeAll')
def withdraw_from_bank(template_file, option): #pass template to function #option == to option in menu options when righ-clicked on item #checks to see wheater to add cur dir or not cwd = os.getcwd() if "/" not in template_file: template_file = cwd + "/imgs/" + template_file # print(template_file, "file in withraw_from_bank()") #creating bank window coords rsx, rsy = RS.position() #creates sceenshot object of bankwindow, bankWindow, x1, y1 = RS.getBankWindow() #SAVE for DEBUG #cv2.imwrite('debug_inBankLog.png',bankWindow) # This For loop runs through found matches and clicks or right-clicks #loc == coordinates found in match loc, w, h = Match.this(bankWindow, template_file) for pt in zip(*loc[::-1]): #goes through each found image #adds x1,y1 coords to pt to be relative to the window #pt = (x1+pt[0]+((w/2)/2), y1+pt[1]+((h/2)/2))# pt = (x1 + pt[0], y1 + pt[1]) # #Bottom-Right coords of found template btmX = pt[0] + w - ((w / 2) / 2) btmY = pt[1] + h - ((h / 2) / 2) # moving point inwards pt = (pt[0] + ((w / 2) / 2), pt[1] + ((h / 2) / 2)) #create random coords within the coords of the found template rx = random.randint(pt[0], btmX) ry = random.randint(pt[1], btmY) if option == 'click': Mouse.moveClick(rx, ry, 1) break else: #right clicks on given x,y coords Mouse.moveClick(rx, ry, 3) RandTime.randTime(0, 0, 0, 0, 0, 1) #Removing rsx,rsy coords from rx, ry #becuase RS.getOptions adds them in by default rx -= rsx ry -= rsy RS.findOptionClick(rx, ry, 'withdrawAll') break
def withdraw_from_bank(template_file, option):#pass template to function #option == to option in menu options when righ-clicked on item #checks to see wheater to add cur dir or not cwd = os.getcwd() if "/" not in template_file: template_file = cwd+"/imgs/"+template_file # print(template_file, "file in withraw_from_bank()") #creating bank window coords rsx,rsy = RS.position() #creates sceenshot object of bankwindow, bankWindow, x1, y1 = RS.getBankWindow() #SAVE for DEBUG #cv2.imwrite('debug_inBankLog.png',bankWindow) # This For loop runs through found matches and clicks or right-clicks #loc == coordinates found in match loc, w, h = Match.this(bankWindow, template_file) for pt in zip(*loc[::-1]):#goes through each found image #adds x1,y1 coords to pt to be relative to the window #pt = (x1+pt[0]+((w/2)/2), y1+pt[1]+((h/2)/2))# pt = (x1+pt[0], y1+pt[1])# #Bottom-Right coords of found template btmX = pt[0] + w - ((w/2)/2) btmY = pt[1] + h - ((h/2)/2) # moving point inwards pt = (pt[0]+((w/2)/2), pt[1]+((h/2)/2)) #create random coords within the coords of the found template rx = random.randint(pt[0],btmX) ry = random.randint(pt[1],btmY) if option == 'click': Mouse.moveClick(rx,ry,1) break else: #right clicks on given x,y coords Mouse.moveClick(rx,ry, 3) RandTime.randTime(0,0,0,0,0,1) #Removing rsx,rsy coords from rx, ry #becuase RS.getOptions adds them in by default rx -= rsx ry -= rsy RS.findOptionClick(rx,ry,'withdrawAll') break
def find_template(template_file, option=None): #pass template to function #option == to option in menu when righ-clicked on item #checks to see wheater to add cur dir or not if "/" not in template_file: template_file = cwd + "/imgs/" + template_file rs_bag, bagx, bagy = RS.get_bag( "bag, and it's coords") #Screenshot taken here, #loc is where the templates found are in loc, w, h = Match.this(rs_bag, template_file) #for loops iterates through every found template for pt in zip(*loc[::-1]): #goes through each found image #pt = ((pt[0]+bagx),(pt[1]+bagy)) #pt is the Top-left coord of the found template #create Bott-Right coord of found template btmX = pt[0] + w - ((w / 2) / 2) btmY = pt[1] + h - ((h / 2) / 2) #moving the pt coord of the template a bit to the right, so options menu get brought up pt = (pt[0] + ((w / 2) / 2), pt[1] + ((h / 2) / 2)) #gencoord adds RS position x, y = gen_coords( pt, btmX, btmY ) #gets random x, y coords relative to RSposition on where to click #x, y = Mouse.randCoord(pt, w, h) if option == 'click' or option == 1: Mouse.moveClick(x, y, 1) #left clicks on given x,y coords else: Mouse.moveClick(x, y, 3) #right clicks on given x,y coords #menu_x, menu_y, menu = RS.getOptionsMenu(x,y)#takes screenshot of options menu and returns the point at Top-left of the menu RandTime.randTime(0, 0, 0, 0, 0, 1) #RS.findOptionClick(x,y, menu_x, menu_y, menu, option) RS.findOptionClick(x, y, option) break
def withdrawFromBank(template_): rsx, rsy = RS.position() bankWindow, x1, y1 = RS.getBankWindow() loc, w, h = Match.this(bankWindow, template_) for pt in zip(*loc[::-1]): #unpackaged pt x, y = pt #make btm coords btmx = x + x1 + w - 5 btmy = y + y1 + h - 5 #add bankwindow+RS coords to pt x += x1 + 5 y += y1 + 5 #gen random coords x = random.randint(x, btmx) y = random.randint(y, btmy) Mouse.moveClick(x, y, 3) #removing RS coords since they are added findOptionClick x -= rsx y -= rsy RS.findOptionClick(x, y, 'withdraw14') break
def find_fairy_ring(self): run = 1 while run: play_screen = Screenshot.shoot(6, 59, 510, 355, 'hsv') # finding white on fairy ring inner circle low = np.array([107, 92, 93]) high = np.array([113, 255, 129]) mask = cv2.inRange(play_screen, low, high) kernel = np.ones((10, 10), np.uint8) dilation = cv2.dilate(mask, kernel, iterations=1) #closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) #_,contours,_ = cv2,findContours(closing.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) _, contours, _ = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for con in contours: print("Area: {}".format(cv2.contourArea(con))) if cv2.contourArea(con) > 1.0: (x, y, w, h) = cv2.boundingRect(con) x += self.rs_x y += self.rs_y x1 = x y1 = y x2 = x + w y2 = y + h print("x1:{} y1:{} x2:{} y2:{}".format(x1, y1, x2, y2)) #print(cv2.contourArea(con)) #M = cv2.moments(con) # finds centroid #x,y = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"])) Mouse.randMove(x1, y1, x2, y2, 3) time.sleep(5) if RS.findOptionClick(x1, y1, 'cis'): run = 0 time.sleep(2) break
def find_fairy_ring(self): run = 1 while run: play_screen = Screenshot.shoot(6,59,510,355,'hsv') # finding white on fairy ring inner circle low = np.array([107,92,93]) high = np.array([113,255,129]) mask = cv2.inRange(play_screen, low, high) kernel = np.ones((10,10), np.uint8) dilation = cv2.dilate(mask, kernel, iterations = 1) #closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) #_,contours,_ = cv2,findContours(closing.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) _,contours,_ = cv2.findContours(dilation, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) for con in contours: print("Area: {}".format(cv2.contourArea(con))) if cv2.contourArea(con) > 1.0: (x, y, w, h) = cv2.boundingRect(con) x += self.rs_x y += self.rs_y x1 = x y1 = y x2 = x + w y2 = y + h print("x1:{} y1:{} x2:{} y2:{}".format(x1,y1,x2,y2)) #print(cv2.contourArea(con)) #M = cv2.moments(con) # finds centroid #x,y = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"])) Mouse.randMove(x1,y1,x2,y2,3) time.sleep(5) if RS.findOptionClick(x1,y1,'cis'): run = 0 time.sleep(2) break
def dropJug(x,y): Mouse.moveClick(x,y, 3) RS.findOptionClick(x,y,'drop')
def tp_castle_wars(): RS.press_button('equipment') x,y = Mouse.genCoords(689,395,712,417) Mouse.moveClick(x,y,3) RS.findOptionClick(x,y,'castleWarsTeleport')