From 702a2ebfca57af95fdbacbe1a014e7f5048bdf61 Mon Sep 17 00:00:00 2001 From: Matt Stiehm Date: Fri, 10 Dec 2021 02:53:58 -0600 Subject: [PATCH] Separate gold and item stashing (#250) * removed 1920_1080 support * Update ui_manager.py Fixed bug... * Update pather.py fixed scale factor * Update i_char.py * Update game.ini removed tp locations * Bump version to v0.4.3 * Bump version to v0.4.3 * implimented and tested seperation of gold and item stash counters * removing extra newline * not sure how this keeps creeping back... Co-authored-by: Matt --- assets/templates/inventory_full_gold.png | Bin 0 -> 2598 bytes src/ui_manager.py | 37 +++++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 assets/templates/inventory_full_gold.png diff --git a/assets/templates/inventory_full_gold.png b/assets/templates/inventory_full_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..266332aebc508ce9140357f7bcc779821890123e GIT binary patch literal 2598 zcmV+>3fc9EP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D3A;%|K~zXfO_$kk z8`l-a`CwTRwQ(Ji!y#uOXNKf(5lL$&#YJ+wJFrs8(P}MrTf|9Gpg`<2-qXge8{0`5 zyNLlOK!Q4biPM)>j@!Cu8n;G^1nol?^snjf4sD}jnHt{v-E+=8=R1o$x~^%eno6Z~ zRn;_IO{x(ol1wC6R20QD(`mZJi~;ckTC}8!Wr>7}m6mCW4dDeLBAre>!+31l9v>Uc<+AyF zzF2Syj#DV))2VbWo6TnI;o)K1vYec|p3j$f3dMZh!F1C!6**ok6cC!R>|&wF1}3s1 z9w(o%GuaGM5RV@IBC;G4 z2jy5O=$9oqnSf>q94utUl~5p{$Vx0C4-F0|aU~j&<58it<8`46P%N&ki$srq zJn?u^5p*EhpxBB@QT%POkxr*Y&|Ml69pXr^@MzY?S+=elv8YTCAS<3mF}$}-fP(%| zI+aQjHz<=%vt;7km=qxnIxB|AhfF4eeEgKp7u-_<&pFmn4c9r6%@7vTwopinEfE+_ zsT%Jb;b9f|#DO0VS%p3;ZQ7=VI1+Pdp>gxt=HrK#K6vN&#>$MDP7``!Dx{}Pl)0?d zuwIUamgWWcFTcA8_{92i!fMlU*^vbgt92a@7+lga)5}Mjx2|tJ{{6+<@0{3Jopl_{ z&fsbsJ#S?<#TA6uHabz=)NZvX7tn`^VSEdY7P!FuTDNvBNiCuo<;I+^qrpP&Bs z-+p@i^6Igr>2s%!{PV9@|M2TGl`=QCxiPtE8p5S~wM^}c&tC(41MqU=>{IZrN{-~i zZI0vMZ**Wv);8|nb0xpIa%`z_?(|#-JY2K{U(=R|wwtf`s9Gu9cg=YF%G$A>D3_0Fp|w4eB+AFE-y5=7U;gdK9@Y&)VTAXuisi< zZvNxXm)DmYxDYO}4pkQCrvb;J!GVDRs$MJ>Yu1Kca0~FpN(1M)v=(J*drRXoN1z)nQwIe?N?37yMTb&Tp-?pog8w zwA>pW+BeeO-3?n7=4ya(t>cJ3U>N#W4=!x23NW#nX;lHwJwJ(qD4>h;4Zs9V6my$$ z?sOz$9Ic~SFA1X$PjU^Yxj5eh?DGv#)Tx8mk<(Qjul(rj!r)d z3(0|Cu;Y$BGv)4`-PC`|4wCPF_%atJiRo^n-OXzPOo!jy7W6oLU`+TvnJkq{=U-d+ zX z_X%(>M!QAVeg?+b+*#L*l^2^r@)K|s#gRyqvTddfz$eych6V>2G-$F^m8WKm@p)*! zFq%#yD!HBd=1&5QWIDPBi*X^@FGnN4`RrBFc4?uuW5*7^&yR_^u6}&`GXws_7fyOIPdN4_ImrsOZty6&o;O33CZg#EsVx-(1C*2F=L?L8;wNh`5vkPc2iZ7 zN}^b>Q2>W7{&0S4ZT8BArN2LV^N-tSbu|jnDKc0rz|cjs3F8U)_4&=!*~;os#?dNgFZYh(1qsbGxWbWa;^HheqDLdhGGTi|@a^`Qi(c{e4LGilIbFShmG1 zW~D{lq#iQT9ueR*THyOPHjmDYd%Zn?DT_=Ilqrrtm2gms%LyEGu<-UMLjln3xgt`CTw(h_(#{1_ns=KC+x@MsMs}?;jrY&G2Fp8X=sKNj$#KM z1&AaQ3o-azKLP6~*L@LE=e4J~io1e6q|UbB-wQqFY!jx|w6aW_N1W zr7&~3K^&BL0)gQ8VL)YOxl_W%F@ literal 0 HcmV?d00001 diff --git a/src/ui_manager.py b/src/ui_manager.py index d8546af..38edbf0 100644 --- a/src/ui_manager.py +++ b/src/ui_manager.py @@ -22,7 +22,7 @@ class UiManager(): self._config = Config() self._template_finder = template_finder self._screen = screen - self._curr_stash = 0 # 0: personal, 1: shared1, 2: shared2, 3: shared3 + self._curr_stash = {"items": 0, "gold": 0} #0: personal, 1: shared1, 2: shared2, 3: shared3 def use_wp(self, act: int, idx: int): """ @@ -282,15 +282,15 @@ class UiManager(): # select the start stash personal_stash_pos = (self._config.ui_pos["stash_personal_btn_x"], self._config.ui_pos["stash_personal_btn_y"]) stash_btn_width = self._config.ui_pos["stash_btn_width"] - next_stash_pos = (personal_stash_pos[0] + stash_btn_width * self._curr_stash, personal_stash_pos[1]) - x_m, y_m = self._screen.convert_screen_to_monitor(next_stash_pos) + next_gold_stash_pos = (personal_stash_pos[0] + stash_btn_width * self._curr_stash["gold"], personal_stash_pos[1]) + x_m, y_m = self._screen.convert_screen_to_monitor(next_gold_stash_pos) mouse.move(x_m, y_m, randomize=[30, 7], delay_factor=[1.0, 1.5]) wait(0.2, 0.3) mouse.click(button="left") wait(0.3, 0.4) # stash gold if self._config.char["stash_gold"]: - inventory_no_gold = self._template_finder.search("INVENTORY_NO_GOLD", self._screen.grab(), roi=self._config.ui_roi["inventory_gold"], threshold=0.98) + inventory_no_gold = self._template_finder.search("INVENTORY_NO_GOLD", self._screen.grab(), roi=self._config.ui_roi["inventory_gold"], threshold=0.97) if inventory_no_gold.valid: Logger.debug("Skipping gold stashing") else: @@ -303,7 +303,32 @@ class UiManager(): mouse.release(button="left") wait(0.4, 0.6) keyboard.send("enter") #if stash already full of gold just nothing happens -> gold stays on char -> no popup window + wait(1.0, 1.2) + inventory_no_gold = self._template_finder.search("INVENTORY_NO_GOLD", self._screen.grab(), roi=self._config.ui_roi["inventory_gold"], threshold=0.97) + if not inventory_no_gold.valid: + Logger.info("Stash tab is full of gold, selecting next stash tab.") + self._curr_stash["gold"] += 1 + if self._curr_stash["gold"] > 3: + inventory_full_gold = self._template_finder.search("INVENTORY_FULL_GOLD", self._screen.grab(), roi=self._config.ui_roi["inventory_gold"], threshold=0.98) + if inventory_full_gold.valid: + Logger.error("All stash tabs and character are full of gold, quitting") + if self._config.general["custom_discord_hook"]: + send_discord(f"{self._config.general['name']} all stash is full of gold, quitting", self._config.general["custom_discord_hook"]) + os._exit(1) + else: + Logger.info("All tabs are full but character is not. Continuing.") + self._curr_stash["gold"] = 3 + else: + # move to next stash + wait(0.5, 0.6) + return self.stash_all_items(num_loot_columns, item_finder) # stash stuff + next_item_stash_pos = (personal_stash_pos[0] + stash_btn_width * self._curr_stash["items"], personal_stash_pos[1]) + x_m, y_m = self._screen.convert_screen_to_monitor(next_item_stash_pos) + mouse.move(x_m, y_m, randomize=[30, 7], delay_factor=[1.0, 1.5]) + wait(0.2, 0.3) + mouse.click(button="left") + wait(0.3, 0.4) center_m = self._screen.convert_abs_to_monitor((0, 0)) for column, row in itertools.product(range(num_loot_columns), range(4)): img = self._screen.grab() @@ -355,8 +380,8 @@ class UiManager(): Logger.info("Stash page is full, selecting next stash") if self._config.general["info_screenshots"]: cv2.imwrite("./info_screenshots/debug_info_inventory_not_empty_" + time.strftime("%Y%m%d_%H%M%S") + ".png", img) - self._curr_stash += 1 - if self._curr_stash > 3: + self._curr_stash["items"] += 1 + if self._curr_stash["items"] > 3: Logger.error("All stash is full, quitting") if self._config.general["custom_discord_hook"]: send_discord(f"{self._config.general['name']} all stash is full, quitting", self._config.general["custom_discord_hook"])