added multi run and energy limits to equip
This commit is contained in:
@@ -17,13 +17,15 @@ EMITTER_SWORD = "sword"
|
||||
EMITTER_STAFF = "staff"
|
||||
EMITTER_WAND = "wand"
|
||||
EMITTER_RING = "ring"
|
||||
EMITTER_ALL = "all"
|
||||
|
||||
HSV_DEFAULT = HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)
|
||||
|
||||
|
||||
def run():
|
||||
EMITTER_TO_USE = EMITTER_WAND
|
||||
EMITTER_TO_USE = EMITTER_ALL
|
||||
SPAWN_COUNT = 15
|
||||
ENERGY_TO_USE = 3000
|
||||
# initialize the user-class
|
||||
config = UserConfigs()
|
||||
|
||||
@@ -46,152 +48,168 @@ def run():
|
||||
hsvs = []
|
||||
tresholds = []
|
||||
masks = []
|
||||
emitters = []
|
||||
|
||||
if EMITTER_TO_USE == EMITTER_MUSH:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_mushs(needles, hsvs, tresholds, masks)
|
||||
include_pots(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_AMU:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_amus(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_MAIN:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_chests(needles, hsvs, tresholds, masks)
|
||||
include_keys(needles, hsvs, tresholds, masks)
|
||||
include_pots(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
include_coins(needles, hsvs, tresholds, masks)
|
||||
include_runes(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_SWORD:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_swords(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_STAFF:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_staffs(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_RING:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_rings(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif EMITTER_TO_USE == EMITTER_WAND:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_wands(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
if EMITTER_TO_USE == EMITTER_ALL:
|
||||
emitters.append(EMITTER_RING)
|
||||
emitters.append(EMITTER_WAND)
|
||||
emitters.append(EMITTER_SWORD)
|
||||
emitters.append(EMITTER_STAFF)
|
||||
emitters.append(EMITTER_AMU)
|
||||
else:
|
||||
emitters.append(EMITTER_TO_USE)
|
||||
|
||||
energy_counter = 0
|
||||
pause = True
|
||||
while True:
|
||||
if keyboard.is_pressed('p') == True:
|
||||
pause = True
|
||||
print('q pressed')
|
||||
elif keyboard.is_pressed('o') == True:
|
||||
pause = False
|
||||
print('o pressed')
|
||||
if pause:
|
||||
# cv.waitKey(500)
|
||||
print("pausing")
|
||||
continue
|
||||
for emitter in emitters:
|
||||
if emitter == EMITTER_MUSH:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_mushs(needles, hsvs, tresholds, masks)
|
||||
include_pots(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_AMU:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_amus(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_MAIN:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_chests(needles, hsvs, tresholds, masks)
|
||||
include_keys(needles, hsvs, tresholds, masks)
|
||||
include_pots(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
include_coins(needles, hsvs, tresholds, masks)
|
||||
include_runes(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_SWORD:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_swords(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_STAFF:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_staffs(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_RING:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_rings(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
elif emitter == EMITTER_WAND:
|
||||
include_books(needles, hsvs, tresholds, masks)
|
||||
include_wands(needles, hsvs, tresholds, masks)
|
||||
include_bags(needles, hsvs, tresholds, masks)
|
||||
|
||||
try:
|
||||
# get an updated image of the game
|
||||
screenshot = capture_window.get_screenshot()
|
||||
# screenshot = cv.imread("buffbar.jpg")
|
||||
except:
|
||||
capture_window.release()
|
||||
print("Game window not available - shutting down application")
|
||||
break
|
||||
# cv.imshow("screenshot", screenshot)
|
||||
# cv.waitKey(150)
|
||||
# continue
|
||||
|
||||
spawn_0_location = []
|
||||
spawn_1 = find_emitter(EMITTER_TO_USE, vision_stun, screenshot, 1)
|
||||
if len(spawn_1) == 1:
|
||||
spawn_button_active = True
|
||||
points = vision_stun.get_click_points(spawn_1)
|
||||
for i in range(0, SPAWN_COUNT, 1):
|
||||
click_point(config, points[0][0], points[0][1])
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
else:
|
||||
spawn_0 = find_emitter(EMITTER_TO_USE, vision_stun, screenshot, 0)
|
||||
points = vision_stun.get_click_points(spawn_0)
|
||||
for point in points:
|
||||
click_point(config, points[0][0], points[0][1])
|
||||
while True:
|
||||
if keyboard.is_pressed('p') == True:
|
||||
pause = True
|
||||
print('q pressed')
|
||||
elif keyboard.is_pressed('o') == True:
|
||||
pause = False
|
||||
print('o pressed')
|
||||
if pause:
|
||||
# cv.waitKey(500)
|
||||
print("pausing")
|
||||
continue
|
||||
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
continue
|
||||
|
||||
cv.waitKey(500)
|
||||
for rer in range(0, len(needles), 1):
|
||||
screenshot = capture_window.get_screenshot_by_area(config.returnOKWindowPos())
|
||||
rectangles = vision_stun.find(screenshot, cv.imread("dig/ok_button.jpg", cv.IMREAD_UNCHANGED), 0.5, 1)
|
||||
if len(rectangles) == 1:
|
||||
pointis = vision_stun.get_click_points(rectangles)
|
||||
for pointi in pointis:
|
||||
dig_point(pointi[0] + config.returnOKWindowPos()[2], pointi[1] + config.returnOKWindowPos()[3], 150)
|
||||
cv.waitKey(60000)
|
||||
continue
|
||||
while True:
|
||||
# do object detection
|
||||
try:
|
||||
# get an updated image of the game
|
||||
screenshot = capture_window.get_screenshot()
|
||||
# processed_screenshot = vision_stun.apply_hsv_filter(screenshot, hsvs[rer])
|
||||
# processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsvs[rer])
|
||||
# screenshot = cv.imread("buffbar.jpg")
|
||||
except:
|
||||
capture_window.release()
|
||||
print("Game window not available - shutting down application")
|
||||
break
|
||||
# cv.imshow("screenshot", screenshot)
|
||||
# cv.waitKey(150)
|
||||
# continue
|
||||
if energy_counter >= ENERGY_TO_USE:
|
||||
energy_counter = 0
|
||||
break
|
||||
|
||||
rectangles = vision_stun.find_by_mask_and_validate(screenshot, needles[rer], masks[rer], 5)
|
||||
# draw the detection results onto the original image
|
||||
# output_image = vision_stun.draw_rectangles(screenshot, rectangles)
|
||||
# cv.imshow("output_image", output_image)
|
||||
# cv.waitKey(150)
|
||||
spawn_1 = find_emitter(emitter, vision_stun, screenshot, 1)
|
||||
if len(spawn_1) == 1:
|
||||
spawn_button_active = True
|
||||
points = vision_stun.get_click_points(spawn_1)
|
||||
for i in range(0, SPAWN_COUNT, 1):
|
||||
click_point(config, points[0][0], points[0][1])
|
||||
energy_counter = energy_counter + 1
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
else:
|
||||
spawn_0 = find_emitter(emitter, vision_stun, screenshot, 0)
|
||||
points = vision_stun.get_click_points(spawn_0)
|
||||
for point in points:
|
||||
click_point(config, points[0][0], points[0][1])
|
||||
|
||||
if len(rectangles) is not 5:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
continue
|
||||
|
||||
# sort rectangles by top
|
||||
rectangles = sorted(rectangles, key=itemgetter(1))
|
||||
cv.waitKey(500)
|
||||
for rer in range(0, len(needles), 1):
|
||||
screenshot = capture_window.get_screenshot_by_area(config.returnOKWindowPos())
|
||||
rectangles = vision_stun.find(screenshot, cv.imread("dig/ok_button.jpg", cv.IMREAD_UNCHANGED), 0.5, 1)
|
||||
if len(rectangles) == 1:
|
||||
pointis = vision_stun.get_click_points(rectangles)
|
||||
for pointi in pointis:
|
||||
dig_point(pointi[0] + config.returnOKWindowPos()[2], pointi[1] + config.returnOKWindowPos()[3], 150)
|
||||
cv.waitKey(60000)
|
||||
continue
|
||||
while True:
|
||||
# do object detection
|
||||
screenshot = capture_window.get_screenshot()
|
||||
# processed_screenshot = vision_stun.apply_hsv_filter(screenshot, hsvs[rer])
|
||||
# processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsvs[rer])
|
||||
|
||||
points = vision_stun.get_click_points(rectangles)
|
||||
rectangles = vision_stun.find_by_mask_and_validate(screenshot, needles[rer], masks[rer], 5)
|
||||
# draw the detection results onto the original image
|
||||
# output_image = vision_stun.draw_rectangles(screenshot, rectangles)
|
||||
# cv.imshow("output_image", output_image)
|
||||
# cv.waitKey(150)
|
||||
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer],
|
||||
hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[1], [points[0][0] + 70, points[0][1]])
|
||||
if move_breaker:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer],
|
||||
hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[2], [points[0][0], points[0][1] + 70])
|
||||
if move_breaker:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70],
|
||||
needles[rer], hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[3], [points[0][0] + 70, points[0][1] + 70])
|
||||
if move_breaker:
|
||||
break
|
||||
move_tile(config, points[4], [points[0][0], points[0][1]])
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
# debug the loop rate
|
||||
print('FPS {}'.format(1 / (time() - loop_time)))
|
||||
loop_time = time()
|
||||
cv.waitKey(150)
|
||||
if len(rectangles) is not 5:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
|
||||
# sort rectangles by top
|
||||
rectangles = sorted(rectangles, key=itemgetter(1))
|
||||
|
||||
points = vision_stun.get_click_points(rectangles)
|
||||
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer],
|
||||
hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[1], [points[0][0] + 70, points[0][1]])
|
||||
if move_breaker:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer],
|
||||
hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[2], [points[0][0], points[0][1] + 70])
|
||||
if move_breaker:
|
||||
break
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70],
|
||||
needles[rer], hsvs[rer], tresholds[rer], masks[rer],
|
||||
points[3], [points[0][0] + 70, points[0][1] + 70])
|
||||
if move_breaker:
|
||||
break
|
||||
move_tile(config, points[4], [points[0][0], points[0][1]])
|
||||
if keyboard.is_pressed('p') == True or pause == True:
|
||||
pause = True
|
||||
break
|
||||
# debug the loop rate
|
||||
print('FPS {}'.format(1 / (time() - loop_time)))
|
||||
loop_time = time()
|
||||
cv.waitKey(150)
|
||||
|
||||
|
||||
def check_and_move_tile(capture_win, visio, conf, rect, needl, hsv, tresh, mask, point_source, point_dest):
|
||||
|
||||
Reference in New Issue
Block a user