refactoring
bug fix equip multi
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (lc_py_b)" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (lc-py-b)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
9
crops.py
9
crops.py
@@ -126,7 +126,8 @@ class Crops(GameBase):
|
||||
color_list = [PURPLE, BLUE, RED, YELLOW, GREEN]
|
||||
random.shuffle(color_list)
|
||||
self.set_color_order(color_list)
|
||||
self.current_strategy = random.choice([RAINBOW_STRATEGY, BIGBOMB_STRATEGY, ROCKET_STRATEGY, BOMB_STRATEGY])
|
||||
self.current_strategy = random.choice([RAINBOW_STRATEGY, BIGBOMB_STRATEGY,
|
||||
ROCKET_STRATEGY, BOMB_STRATEGY])
|
||||
self.reset_counter = 0
|
||||
return
|
||||
else:
|
||||
@@ -256,7 +257,8 @@ class Crops(GameBase):
|
||||
self.execute_move(res_dic[key])
|
||||
break
|
||||
|
||||
def convert_moves_to_dic_by_color(self, reserve_moves):
|
||||
@staticmethod
|
||||
def convert_moves_to_dic_by_color(reserve_moves):
|
||||
dic = {}
|
||||
for color, move in reserve_moves:
|
||||
if color in dic:
|
||||
@@ -295,7 +297,8 @@ class Crops(GameBase):
|
||||
pydirectinput.mouseUp()
|
||||
cv.waitKey(50)
|
||||
|
||||
def get_directions_array(self, current_x, current_y):
|
||||
@staticmethod
|
||||
def get_directions_array(current_x, current_y):
|
||||
left_x = current_x
|
||||
left_y = current_y - 1
|
||||
|
||||
|
||||
103
equipment.py
103
equipment.py
@@ -21,16 +21,15 @@ HSV_DEFAULT = HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)
|
||||
|
||||
|
||||
class Equipment(GameBase):
|
||||
needles = []
|
||||
hsvs = []
|
||||
tresholds = []
|
||||
masks = []
|
||||
emitters = []
|
||||
|
||||
def __init__(self, overlay):
|
||||
super().__init__(overlay)
|
||||
|
||||
self.needles = []
|
||||
self.hsvs = []
|
||||
self.tresholds = []
|
||||
self.masks = []
|
||||
self.emitters = []
|
||||
|
||||
# initialize the StunWindowCapture class
|
||||
self.capture_window = WindowCapture(None, "equip", self.config)
|
||||
|
||||
@@ -38,49 +37,7 @@ class Equipment(GameBase):
|
||||
self.SPAWN_COUNT = int(overlay.spawn_use.get())
|
||||
self.ENERGY_TO_USE = int(overlay.energy_use.get())
|
||||
|
||||
if self.EMITTER_TO_USE == EMITTER_MULTI:
|
||||
self.emitters.append(EMITTER_RING)
|
||||
self.emitters.append(EMITTER_WAND)
|
||||
self.emitters.append(EMITTER_SWORD)
|
||||
self.emitters.append(EMITTER_AMU)
|
||||
self.emitters.append(EMITTER_STAFF)
|
||||
else:
|
||||
self.emitters.append(self.EMITTER_TO_USE)
|
||||
|
||||
for emitter in self.emitters:
|
||||
if emitter == EMITTER_MUSH:
|
||||
self.include_books()
|
||||
self.include_mushs()
|
||||
self.include_pots()
|
||||
self.include_bags()
|
||||
elif emitter == EMITTER_AMU:
|
||||
self.include_books()
|
||||
self.include_amus()
|
||||
self.include_bags()
|
||||
elif emitter == EMITTER_MAIN:
|
||||
self.include_books()
|
||||
self.include_chests()
|
||||
self.include_keys()
|
||||
self.include_pots()
|
||||
self.include_bags()
|
||||
self.include_coins()
|
||||
self.include_runes()
|
||||
elif emitter == EMITTER_SWORD:
|
||||
self.include_books()
|
||||
self.include_swords()
|
||||
self.include_bags()
|
||||
elif emitter == EMITTER_STAFF:
|
||||
self.include_books()
|
||||
self.include_staffs()
|
||||
self.include_bags()
|
||||
elif emitter == EMITTER_RING:
|
||||
self.include_books()
|
||||
self.include_rings()
|
||||
self.include_bags()
|
||||
elif emitter == EMITTER_WAND:
|
||||
self.include_books()
|
||||
self.include_wands()
|
||||
self.include_bags()
|
||||
self.init_emitters_to_use()
|
||||
|
||||
self.c_needle = cv.imread("equip/chests/chest_4_32.jpg", cv.IMREAD_UNCHANGED)
|
||||
self.c_mask = cv.imread("equip/chests/chest_4_32-mask.png", cv.IMREAD_COLOR)
|
||||
@@ -90,14 +47,55 @@ class Equipment(GameBase):
|
||||
|
||||
self.energy_counter = 0
|
||||
|
||||
def init_emitters_to_use(self):
|
||||
self.emitters.clear()
|
||||
if self.EMITTER_TO_USE == EMITTER_MULTI:
|
||||
self.emitters.append(EMITTER_RING)
|
||||
self.emitters.append(EMITTER_WAND)
|
||||
self.emitters.append(EMITTER_SWORD)
|
||||
self.emitters.append(EMITTER_AMU)
|
||||
self.emitters.append(EMITTER_STAFF)
|
||||
else:
|
||||
self.emitters.append(self.EMITTER_TO_USE)
|
||||
|
||||
def init_needles_for_emitter_to_use(self, emitter):
|
||||
self.needles.clear()
|
||||
self.hsvs.clear()
|
||||
self.tresholds.clear()
|
||||
self.masks.clear()
|
||||
|
||||
self.include_books()
|
||||
self.include_bags()
|
||||
|
||||
if emitter == EMITTER_MUSH:
|
||||
self.include_mushs()
|
||||
self.include_pots()
|
||||
elif emitter == EMITTER_AMU:
|
||||
self.include_amus()
|
||||
elif emitter == EMITTER_MAIN:
|
||||
self.include_chests()
|
||||
self.include_keys()
|
||||
self.include_pots()
|
||||
self.include_coins()
|
||||
self.include_runes()
|
||||
elif emitter == EMITTER_SWORD:
|
||||
self.include_swords()
|
||||
elif emitter == EMITTER_STAFF:
|
||||
self.include_staffs()
|
||||
elif emitter == EMITTER_RING:
|
||||
self.include_rings()
|
||||
elif emitter == EMITTER_WAND:
|
||||
self.include_wands()
|
||||
|
||||
def execute_main_loop(self):
|
||||
start_time = time()
|
||||
breaks = self.init_breaks()
|
||||
for emitter in self.emitters:
|
||||
self.init_needles_for_emitter_to_use(emitter)
|
||||
while True:
|
||||
self.check_breaks(start_time, breaks)
|
||||
if self.overlay.run_mode == 'paused':
|
||||
cv.waitKey(1)
|
||||
cv.waitKey(10)
|
||||
continue
|
||||
elif self.overlay.run_mode == 'stopped':
|
||||
break
|
||||
@@ -124,11 +122,8 @@ class Equipment(GameBase):
|
||||
else:
|
||||
spawn_0 = self.find_emitter(emitter, screenshot, 0)
|
||||
points = self.vision_stun.get_click_points(spawn_0)
|
||||
for point in points:
|
||||
if len(points) >= 1:
|
||||
self.click_point(points[0][0], points[0][1])
|
||||
|
||||
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
|
||||
break
|
||||
continue
|
||||
|
||||
cv.waitKey(500)
|
||||
|
||||
@@ -78,10 +78,12 @@ class GameBase:
|
||||
|
||||
def init_breaks(self):
|
||||
breaks = []
|
||||
if int(self.breaks) == 0:
|
||||
return breaks
|
||||
#breaks.append(7)
|
||||
for i in range(1, int(self.breaks) + 1, 1):
|
||||
avr_in_sec = int(self.stop_time) * 60 * 60 / int(self.breaks)
|
||||
breaks.append(random.randint(i * avr_in_sec * 0.60, i * avr_in_sec))
|
||||
breaks.append(random.randint(int(i * avr_in_sec * 0.60), int(i * avr_in_sec)))
|
||||
return breaks
|
||||
|
||||
def check_breaks(self, start_time, breaks):
|
||||
@@ -178,21 +180,24 @@ class GameBase:
|
||||
continue
|
||||
return False
|
||||
|
||||
def is_direction_in_bounce_and_same_color(self, state, loc, color):
|
||||
@staticmethod
|
||||
def is_direction_in_bounce_and_same_color(state, loc, color):
|
||||
x, y = loc
|
||||
if x <= 7 and x >= 0 and y <= 13 and y >= 0:
|
||||
if state[x, y] == color:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def local_pos_check(self, state, e, i, e_check, i_check, needle):
|
||||
@staticmethod
|
||||
def local_pos_check(state, e, i, e_check, i_check, needle):
|
||||
if e + e_check >= 0 and e + e_check <= 7 and i + i_check >= 0 and i + i_check <= 13:
|
||||
if state[e + e_check, i + i_check] == needle:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def local_pos_checks(self, state, e, i, e_check, i_check, needles):
|
||||
@staticmethod
|
||||
def local_pos_checks(state, e, i, e_check, i_check, needles):
|
||||
if e + e_check >= 0 and e + e_check <= 7 and i + i_check >= 0 and i + i_check <= 13:
|
||||
for needle in needles:
|
||||
if state[e + e_check, i + i_check] == needle:
|
||||
@@ -201,7 +206,8 @@ class GameBase:
|
||||
continue
|
||||
return False
|
||||
|
||||
def get_click_point(self, rectangle):
|
||||
@staticmethod
|
||||
def get_click_point(rectangle):
|
||||
# Loop over all the rectangles
|
||||
x, y, w, h = rectangle
|
||||
# Determine the center position
|
||||
@@ -237,7 +243,8 @@ class GameBase:
|
||||
for pointi in pointis:
|
||||
self.dig_point(pointi[0], pointi[1], 150)
|
||||
|
||||
def dig_point(self, point1, point2, dig_time):
|
||||
@staticmethod
|
||||
def dig_point(point1, point2, dig_time):
|
||||
pydirectinput.moveTo(point1, point2)
|
||||
cv.waitKey(dig_time)
|
||||
pydirectinput.mouseDown()
|
||||
@@ -245,7 +252,8 @@ class GameBase:
|
||||
cv.waitKey(w)
|
||||
pydirectinput.mouseUp()
|
||||
|
||||
def move_to(self, x, y):
|
||||
@staticmethod
|
||||
def move_to(x, y):
|
||||
point_src = (1113, 598)
|
||||
pydirectinput.moveTo(point_src[0], point_src[1])
|
||||
pydirectinput.mouseDown()
|
||||
|
||||
Reference in New Issue
Block a user