diff --git a/.idea/lc-py.iml b/.idea/lc-py.iml index 74d515a..f5a3ccc 100644 --- a/.idea/lc-py.iml +++ b/.idea/lc-py.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3e281b9..f137e70 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/equip/book_1_32.jpg b/equip/book_1_32.jpg index cba3b6d..8bd382f 100644 Binary files a/equip/book_1_32.jpg and b/equip/book_1_32.jpg differ diff --git a/equip/book_2_32.jpg b/equip/book_2_32.jpg index ff9c107..3233bb7 100644 Binary files a/equip/book_2_32.jpg and b/equip/book_2_32.jpg differ diff --git a/equip/book_3_32.jpg b/equip/book_3_32.jpg index aa3a230..5fa35ba 100644 Binary files a/equip/book_3_32.jpg and b/equip/book_3_32.jpg differ diff --git a/equip/book_4_32.jpg b/equip/book_4_32.jpg index 60e57dc..d13a462 100644 Binary files a/equip/book_4_32.jpg and b/equip/book_4_32.jpg differ diff --git a/equip/book_5_32.jpg b/equip/book_5_32.jpg index 1fb9a10..24868a8 100644 Binary files a/equip/book_5_32.jpg and b/equip/book_5_32.jpg differ diff --git a/equip/book_6_32.jpg b/equip/book_6_32.jpg index 5d55bfd..e7bcd8f 100644 Binary files a/equip/book_6_32.jpg and b/equip/book_6_32.jpg differ diff --git a/equipment_main.py b/equipment_main.py index dd7fb51..3079af5 100644 --- a/equipment_main.py +++ b/equipment_main.py @@ -97,6 +97,8 @@ def run(): needles.append(cv.imread("equip/chest_2_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_1_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_5_32.jpg", cv.IMREAD_UNCHANGED)) #needles.append(cv.imread("equip/key_1_32.jpg", cv.IMREAD_UNCHANGED)) @@ -133,17 +135,17 @@ def run(): needles.append(cv.imread("equip/bag_6_32.jpg", cv.IMREAD_UNCHANGED)) # needles.append(cv.imread("equip/bag_7_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) - - needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) + #needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) + #needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) hsv = [] hsv.append(HsvFilter(14, 0, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(0, 128, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(49, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 0, 0, 179, 255, 196, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 156, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(0, 95, 137, 179, 255, 255, 0, 0, 0, 0)) + for op in range(1, 50, 1): hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) @@ -155,9 +157,9 @@ def run(): processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsv[rer]) rectangles = vision_stun.find(processed_screenshot, processed_needle, 0.8, 5) # draw the detection results onto the original image - #output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) - #cv.imshow("output_image", output_image) - #cv.waitKey(150) + output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) + cv.imshow("output_image", output_image) + cv.waitKey(150) if len(rectangles) is not 5: break diff --git a/equipment_main2.py b/equipment_main2.py new file mode 100644 index 0000000..4832265 --- /dev/null +++ b/equipment_main2.py @@ -0,0 +1,208 @@ +import random +from time import time +from window_capture import WindowCapture +from stun_vision import StunVision +import cv2 as cv +import pytesseract +from hsvfilter import HsvFilter +from config_file import UserConfigs +# import pyautogui +import pydirectinput +import keyboard +from tresh_util import super_tresh_main, super_tresh_needle + + +def run(): + # initialize the user-class + config = UserConfigs() + + # initialize the StunWindowCapture class + try: + capture_window = WindowCapture( + None, "stun", config) + video_mode = False + except: + # StunWindowCapture.list_window_names() + # print("Game not running, switching to video mode") + # capture_window = cv.VideoCapture("snip_slam.mp4") + video_mode = True + + # initialize the StunVision class + vision_stun = StunVision() + # initialize the StunOverlay class + hsv_filter = HsvFilter(0, 0, 124, 15, 255, 168, 0, 255, 0, 0) + + loop_time = time() + event_time = 0.0 + pointstore = [] + max_results = 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 + + if video_mode: + break + else: + 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_1 = vision_stun.find(screenshot, cv.imread("equip/amu_e2_32.jpg", cv.IMREAD_UNCHANGED), 0.4, 1) + if len(spawn_1) == 1: + spawn_button_active = True + points = vision_stun.get_click_points(spawn_1) + for i in range(0, 15, 1): + pydirectinput.moveTo(points[0][0], points[0][1]) + pydirectinput.mouseDown() + w = random.randint(1, 50) + cv.waitKey(30 + w) + pydirectinput.mouseUp() + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + else: + spawn_0 = vision_stun.find(screenshot, cv.imread("equip/amu_e_32.jpg", cv.IMREAD_UNCHANGED), 0.7, 1) + points = vision_stun.get_click_points(spawn_0) + for point in points: + pydirectinput.moveTo(point[0], point[1]) + pydirectinput.mouseDown() + cv.waitKey(500) + pydirectinput.mouseUp() + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + continue + + needles = [] + + + needles.append(cv.imread("equip/book_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_5_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/amu_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_5_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_6_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_7_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/bag_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_5_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_6_32.jpg", cv.IMREAD_UNCHANGED)) + # needles.append(cv.imread("equip/bag_7_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) + + hsv = [] + hsv.append(HsvFilter(0, 128, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(49, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 95, 137, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 40, 0, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 0, 255, 179, 255, 255, 0, 0, 103, 0)) + for op in range(1, 50, 1): + hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + + for rer in range(0, len(needles), 1): + while True: + # do object detection + screenshot = capture_window.get_screenshot() + processed_screenshot = vision_stun.apply_hsv_filter(screenshot, hsv[rer]) + processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsv[rer]) + rectangles = vision_stun.find(processed_screenshot, processed_needle, 0.8, 5) + # draw the detection results onto the original image + #output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) + #cv.imshow("output_image", output_image) + #cv.waitKey(150) + + if len(rectangles) is not 5: + break + + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + + points = vision_stun.get_click_points(rectangles) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer], + hsv[rer], + points[1], [points[0][0] + 70, points[0][1]]) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer], + hsv[rer], + points[2], [points[0][0], points[0][1] + 70]) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70], + needles[rer], hsv[rer], + points[3], [points[0][0] + 70, points[0][1] + 70]) + move(points[4], [points[0][0], points[0][1]]) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + # debug the loop rate + print('FPS {}'.format(1 / (time() - loop_time))) + loop_time = time() + cv.waitKey(150) + + +def move(point_source, point_dest): + pydirectinput.moveTo(point_source[0], point_source[1]) + pydirectinput.mouseDown() + w = random.randint(1, 100) + cv.waitKey(250 + w) + pydirectinput.moveTo(point_dest[0], point_dest[1]) + pydirectinput.mouseUp() + cv.waitKey(250 + w) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + + +def check_move(capture_win, visio, rect, needl, hsv, point_source, point_dest): + screenshot_pos = capture_win.get_screenshot_by_area(rect) + processed_screenshot = visio.apply_hsv_filter(screenshot_pos, hsv) + processed_needle = visio.apply_hsv_filter(needl, hsv) + rectangles2 = visio.find(processed_screenshot, processed_needle, 0.7, 1) + # output_by_area = vision_stun.draw_rectangles(screenshot_pos2, rectangles) + # cv.imshow("output_image_by_area", output_by_area) + # cv.waitKey(150) + if len(rectangles2) == 1: + # pos 2 filled + return + else: + # pos 2 vacant + pass + move(point_source, point_dest) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + + +if __name__ == "__main__": + run()