From 2efcd66d99eb4baa48de9ea26e3d17fed04b8f73 Mon Sep 17 00:00:00 2001 From: aeon0 Date: Wed, 8 Dec 2021 08:59:24 +0100 Subject: [PATCH] Fix/robustify a4 start (#232) --- README.md | 1 - assets/templates/a4_wp_2.png | Bin 0 -> 22234 bytes params.ini | 1 - src/char/i_char.py | 11 +++++++++-- src/config.py | 3 +-- src/template_finder.py | 6 ++---- src/town/a4.py | 3 ++- 7 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 assets/templates/a4_wp_2.png diff --git a/README.md b/README.md index 0edca74..9870568 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,6 @@ run_shenk=0 | [advanced_options] | Descriptions | | -------------------- | --------------------------------------------------------------------- | | pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays. | -| template_threshold | Threshold to find templates used during pathing. | | [items] | Descriptions | | --------- | ----------------------------------------------------------------------------------------------------------------------- | diff --git a/assets/templates/a4_wp_2.png b/assets/templates/a4_wp_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8054bef0b414452bb56a38805a68db3dfc2fcb GIT binary patch literal 22234 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 bool: + def select_by_template( + self, + template_type: Union[str, List[str]], + success_func: Callable = None, + time_out: float = 8, + threshold: float = 0.68 + ) -> bool: """ Finds any template from the template finder and interacts with it :param template_type: Strings or list of strings of the templates that should be searched for :param success_func: Function that will return True if the interaction is successful e.g. return True when loading screen is reached, defaults to None :param time_out: Timeout for the whole template selection, defaults to None + :param threshold: Threshold which determines if a template is found or not. None will use default form .ini files :return: True if success. False otherwise """ if type(template_type) == list and "A5_STASH" in template_type: @@ -55,7 +62,7 @@ class IChar: keyboard.send("esc") start = time.time() while time_out is None or (time.time() - start) < time_out: - template_match = self._template_finder.search(template_type, self._screen.grab()) + template_match = self._template_finder.search(template_type, self._screen.grab(), threshold=threshold) if template_match.valid: Logger.debug(f"Select {template_match.name} ({template_match.score*100:.1f}% confidence)") x_m, y_m = self._screen.convert_screen_to_monitor(template_match.position) diff --git a/src/config.py b/src/config.py index 73bb431..d86244f 100644 --- a/src/config.py +++ b/src/config.py @@ -99,8 +99,7 @@ class Config: self.char["static_path_eldritch"] = False self.advanced_options = { - "pathing_delay_factor": min(max(int(self._select_val("advanced_options", "pathing_delay_factor")),1),10), - "template_threshold": float(self._select_val("advanced_options", "template_threshold")), + "pathing_delay_factor": min(max(int(self._select_val("advanced_options", "pathing_delay_factor")), 1), 10), } self.items = {} diff --git a/src/template_finder.py b/src/template_finder.py index 00a3b9f..9c06c5c 100644 --- a/src/template_finder.py +++ b/src/template_finder.py @@ -51,7 +51,7 @@ class TemplateFinder: self, ref: Union[str, np.ndarray, List[str]], inp_img: np.ndarray, - threshold: float = None, + threshold: float = 0.68, roi: List[float] = None, normalize_monitor: bool = False, best_match: bool = False, @@ -68,7 +68,6 @@ class TemplateFinder: :param use_grayscale: Use grayscale template matching for speed up :return: Returns a TempalteMatch object with a valid flag """ - threshold = self._config.advanced_options["template_threshold"] if threshold is None else threshold if roi is None: # if no roi is provided roi = full inp_img roi = [0, 0, inp_img.shape[1], inp_img.shape[0]] @@ -148,7 +147,7 @@ class TemplateFinder: ref: Union[str, List[str]], roi: List[float] = None, time_out: float = None, - threshold: float = None, + threshold: float = 0.68, best_match: bool = False, take_ss: bool = True, use_grayscale: bool = False @@ -161,7 +160,6 @@ class TemplateFinder: """ if type(ref) is str: ref = [ref] - threshold = self._config.advanced_options["template_threshold"] if threshold is None else threshold Logger.debug(f"Waiting for Template {ref}") start = time.time() while 1: diff --git a/src/town/a4.py b/src/town/a4.py index 1eb0b62..d85022c 100644 --- a/src/town/a4.py +++ b/src/town/a4.py @@ -32,7 +32,8 @@ class A4(IAct): if not self._pather.traverse_nodes(curr_loc, Location.A4_WP, self._char): return False wait(0.5, 0.7) found_wp_func = lambda: self._template_finder.search("WAYPOINT_MENU", self._screen.grab()).valid - return self._char.select_by_template("A4_WP", found_wp_func) + # decreased threshold because we sometimes walk "over" it during pathing + return self._char.select_by_template(["A4_WP", "A4_WP_2"], found_wp_func, threshold=0.62) def wait_for_tp(self) -> Union[Location, bool]: success = self._template_finder.search_and_wait(["A4_TOWN_4", "A4_TOWN_5", "A4_TOWN_6"], time_out=20).valid