added multi run and energy limits to equip
This commit is contained in:
@@ -17,13 +17,15 @@ EMITTER_SWORD = "sword"
|
|||||||
EMITTER_STAFF = "staff"
|
EMITTER_STAFF = "staff"
|
||||||
EMITTER_WAND = "wand"
|
EMITTER_WAND = "wand"
|
||||||
EMITTER_RING = "ring"
|
EMITTER_RING = "ring"
|
||||||
|
EMITTER_ALL = "all"
|
||||||
|
|
||||||
HSV_DEFAULT = HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)
|
HSV_DEFAULT = HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
EMITTER_TO_USE = EMITTER_WAND
|
EMITTER_TO_USE = EMITTER_ALL
|
||||||
SPAWN_COUNT = 15
|
SPAWN_COUNT = 15
|
||||||
|
ENERGY_TO_USE = 3000
|
||||||
# initialize the user-class
|
# initialize the user-class
|
||||||
config = UserConfigs()
|
config = UserConfigs()
|
||||||
|
|
||||||
@@ -46,152 +48,168 @@ def run():
|
|||||||
hsvs = []
|
hsvs = []
|
||||||
tresholds = []
|
tresholds = []
|
||||||
masks = []
|
masks = []
|
||||||
|
emitters = []
|
||||||
|
|
||||||
if EMITTER_TO_USE == EMITTER_MUSH:
|
if EMITTER_TO_USE == EMITTER_ALL:
|
||||||
include_books(needles, hsvs, tresholds, masks)
|
emitters.append(EMITTER_RING)
|
||||||
include_mushs(needles, hsvs, tresholds, masks)
|
emitters.append(EMITTER_WAND)
|
||||||
include_pots(needles, hsvs, tresholds, masks)
|
emitters.append(EMITTER_SWORD)
|
||||||
include_bags(needles, hsvs, tresholds, masks)
|
emitters.append(EMITTER_STAFF)
|
||||||
elif EMITTER_TO_USE == EMITTER_AMU:
|
emitters.append(EMITTER_AMU)
|
||||||
include_books(needles, hsvs, tresholds, masks)
|
else:
|
||||||
include_amus(needles, hsvs, tresholds, masks)
|
emitters.append(EMITTER_TO_USE)
|
||||||
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)
|
|
||||||
|
|
||||||
|
energy_counter = 0
|
||||||
pause = True
|
pause = True
|
||||||
while True:
|
for emitter in emitters:
|
||||||
if keyboard.is_pressed('p') == True:
|
if emitter == EMITTER_MUSH:
|
||||||
pause = True
|
include_books(needles, hsvs, tresholds, masks)
|
||||||
print('q pressed')
|
include_mushs(needles, hsvs, tresholds, masks)
|
||||||
elif keyboard.is_pressed('o') == True:
|
include_pots(needles, hsvs, tresholds, masks)
|
||||||
pause = False
|
include_bags(needles, hsvs, tresholds, masks)
|
||||||
print('o pressed')
|
elif emitter == EMITTER_AMU:
|
||||||
if pause:
|
include_books(needles, hsvs, tresholds, masks)
|
||||||
# cv.waitKey(500)
|
include_amus(needles, hsvs, tresholds, masks)
|
||||||
print("pausing")
|
include_bags(needles, hsvs, tresholds, masks)
|
||||||
continue
|
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 = []
|
while True:
|
||||||
spawn_1 = find_emitter(EMITTER_TO_USE, vision_stun, screenshot, 1)
|
if keyboard.is_pressed('p') == True:
|
||||||
if len(spawn_1) == 1:
|
pause = True
|
||||||
spawn_button_active = True
|
print('q pressed')
|
||||||
points = vision_stun.get_click_points(spawn_1)
|
elif keyboard.is_pressed('o') == True:
|
||||||
for i in range(0, SPAWN_COUNT, 1):
|
pause = False
|
||||||
click_point(config, points[0][0], points[0][1])
|
print('o pressed')
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
if pause:
|
||||||
pause = True
|
# cv.waitKey(500)
|
||||||
break
|
print("pausing")
|
||||||
else:
|
continue
|
||||||
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])
|
|
||||||
|
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
try:
|
||||||
pause = True
|
# get an updated image of the game
|
||||||
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
|
|
||||||
screenshot = capture_window.get_screenshot()
|
screenshot = capture_window.get_screenshot()
|
||||||
# processed_screenshot = vision_stun.apply_hsv_filter(screenshot, hsvs[rer])
|
# screenshot = cv.imread("buffbar.jpg")
|
||||||
# processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsvs[rer])
|
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)
|
spawn_1 = find_emitter(emitter, vision_stun, screenshot, 1)
|
||||||
# draw the detection results onto the original image
|
if len(spawn_1) == 1:
|
||||||
# output_image = vision_stun.draw_rectangles(screenshot, rectangles)
|
spawn_button_active = True
|
||||||
# cv.imshow("output_image", output_image)
|
points = vision_stun.get_click_points(spawn_1)
|
||||||
# cv.waitKey(150)
|
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:
|
if keyboard.is_pressed('p') == True or pause == True:
|
||||||
break
|
pause = True
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
break
|
||||||
pause = True
|
continue
|
||||||
break
|
|
||||||
|
|
||||||
# sort rectangles by top
|
cv.waitKey(500)
|
||||||
rectangles = sorted(rectangles, key=itemgetter(1))
|
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,
|
if len(rectangles) is not 5:
|
||||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer],
|
break
|
||||||
hsvs[rer], tresholds[rer], masks[rer],
|
if keyboard.is_pressed('p') == True or pause == True:
|
||||||
points[1], [points[0][0] + 70, points[0][1]])
|
pause = True
|
||||||
if move_breaker:
|
break
|
||||||
break
|
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
# sort rectangles by top
|
||||||
pause = True
|
rectangles = sorted(rectangles, key=itemgetter(1))
|
||||||
break
|
|
||||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
points = vision_stun.get_click_points(rectangles)
|
||||||
[70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer],
|
|
||||||
hsvs[rer], tresholds[rer], masks[rer],
|
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||||
points[2], [points[0][0], points[0][1] + 70])
|
[70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer],
|
||||||
if move_breaker:
|
hsvs[rer], tresholds[rer], masks[rer],
|
||||||
break
|
points[1], [points[0][0] + 70, points[0][1]])
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
if move_breaker:
|
||||||
pause = True
|
break
|
||||||
break
|
if keyboard.is_pressed('p') == True or pause == True:
|
||||||
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
pause = True
|
||||||
[70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70],
|
break
|
||||||
needles[rer], hsvs[rer], tresholds[rer], masks[rer],
|
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||||
points[3], [points[0][0] + 70, points[0][1] + 70])
|
[70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer],
|
||||||
if move_breaker:
|
hsvs[rer], tresholds[rer], masks[rer],
|
||||||
break
|
points[2], [points[0][0], points[0][1] + 70])
|
||||||
move_tile(config, points[4], [points[0][0], points[0][1]])
|
if move_breaker:
|
||||||
if keyboard.is_pressed('p') == True or pause == True:
|
break
|
||||||
pause = True
|
if keyboard.is_pressed('p') == True or pause == True:
|
||||||
break
|
pause = True
|
||||||
# debug the loop rate
|
break
|
||||||
print('FPS {}'.format(1 / (time() - loop_time)))
|
move_breaker = check_and_move_tile(capture_window, vision_stun, config,
|
||||||
loop_time = time()
|
[70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70],
|
||||||
cv.waitKey(150)
|
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):
|
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