Fix: Obtain position & closed (#464)

* Fix: Obtain position & closed

* Add: find may_obtain to locate obtain_1

* Fix: stupid bug
This commit is contained in:
Yinhr 2024-05-20 01:49:50 +08:00 committed by GitHub
parent 2e05ff729c
commit 384c4302a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 34 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -33,6 +33,23 @@ ITEM_NAME = ButtonWrapper(
button=(495, 187, 855, 211), button=(495, 187, 855, 211),
), ),
) )
MAY_OBTAIN = ButtonWrapper(
name='MAY_OBTAIN',
cn=Button(
file='./assets/cn/combat/obtain/MAY_OBTAIN.png',
area=(813, 379, 893, 397),
search=(812, 373, 895, 468),
color=(63, 71, 87),
button=(813, 379, 893, 397),
),
en=Button(
file='./assets/en/combat/obtain/MAY_OBTAIN.png',
area=(813, 379, 922, 397),
search=(813, 373, 923, 468),
color=(53, 61, 78),
button=(813, 379, 922, 397),
),
)
OBTAIN_1 = ButtonWrapper( OBTAIN_1 = ButtonWrapper(
name='OBTAIN_1', name='OBTAIN_1',
share=Button( share=Button(

View File

@ -5,7 +5,7 @@ from module.exception import ScriptError
from module.logger import logger from module.logger import logger
from module.ocr.ocr import Digit from module.ocr.ocr import Digit
from tasks.combat.assets.assets_combat_obtain import * from tasks.combat.assets.assets_combat_obtain import *
from tasks.combat.assets.assets_combat_prepare import COMBAT_PREPARE, WAVE_MINUS, WAVE_PLUS from tasks.combat.assets.assets_combat_prepare import COMBAT_PREPARE
from tasks.dungeon.keywords import DungeonList from tasks.dungeon.keywords import DungeonList
from tasks.planner.keywords import ITEM_CLASSES from tasks.planner.keywords import ITEM_CLASSES
from tasks.planner.model import ObtainedAmmount, PlannerMixin from tasks.planner.model import ObtainedAmmount, PlannerMixin
@ -87,9 +87,7 @@ class CombatObtain(PlannerMixin):
else: else:
self.device.screenshot() self.device.screenshot()
if not self.appear(ITEM_CLOSE) and self.appear(COMBAT_PREPARE): if not self.appear(ITEM_CLOSE) and self.appear(COMBAT_PREPARE) and self.appear(MAY_OBTAIN):
if self.image_color_count(WAVE_MINUS, color=(246, 246, 246), threshold=221, count=100) \
or self.image_color_count(WAVE_PLUS, color=(246, 246, 246), threshold=221, count=100):
break break
if self.appear_then_click(ITEM_CLOSE, interval=2): if self.appear_then_click(ITEM_CLOSE, interval=2):
continue continue
@ -187,6 +185,9 @@ class CombatObtain(PlannerMixin):
index = 1 index = 1
prev = None prev = None
items = [] items = []
self._find_may_obtain()
for _ in range(5): for _ in range(5):
entry = self._obtain_get_entry(dungeon, index=index, prev=prev) entry = self._obtain_get_entry(dungeon, index=index, prev=prev)
if entry is None: if entry is None:
@ -243,6 +244,17 @@ class CombatObtain(PlannerMixin):
self.obtain_frequent_check = True self.obtain_frequent_check = True
return False return False
def _find_may_obtain(self, skip_first_screenshot=True):
logger.info('Find may obtain')
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if MAY_OBTAIN.match_template(self.device.image):
OBTAIN_1.load_offset(MAY_OBTAIN)
return True
if __name__ == '__main__': if __name__ == '__main__':
self = CombatObtain('src') self = CombatObtain('src')