Compare commits
3 commits
20badca8e3
...
8b11e690fc
Author | SHA1 | Date | |
---|---|---|---|
8b11e690fc | |||
657a8a8c38 | |||
b500d02567 |
6 changed files with 61 additions and 28 deletions
BIN
arknights_mower/resources/reload_check.png
(Stored with Git LFS)
Normal file
BIN
arknights_mower/resources/reload_check.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
arknights_mower/resources/stone_fragment.png
(Stored with Git LFS)
Normal file
BIN
arknights_mower/resources/stone_fragment.png
(Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -23,6 +23,7 @@ from arknights_mower.solvers.navigation import NavigationSolver
|
|||
from arknights_mower.solvers.operation import OperationSolver
|
||||
from arknights_mower.solvers.reclamation_algorithm import ReclamationAlgorithm
|
||||
from arknights_mower.solvers.recruit import RecruitSolver
|
||||
from arknights_mower.solvers.reload_stone_fragment import ReloadStoneFragmentSolver
|
||||
from arknights_mower.solvers.report import ReportSolver
|
||||
from arknights_mower.solvers.secret_front import SecretFront
|
||||
from arknights_mower.solvers.shop import CreditShop
|
||||
|
@ -38,7 +39,7 @@ from arknights_mower.utils.email import send_message
|
|||
from arknights_mower.utils.graph import SceneGraphSolver
|
||||
from arknights_mower.utils.image import cropimg, loadres, thres2
|
||||
from arknights_mower.utils.log import logger
|
||||
from arknights_mower.utils.operators import Operators, Operator
|
||||
from arknights_mower.utils.operators import Operator, Operators
|
||||
from arknights_mower.utils.path import get_path
|
||||
from arknights_mower.utils.plan import PlanTriggerTiming
|
||||
from arknights_mower.utils.recognize import Scene
|
||||
|
@ -749,7 +750,6 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
)
|
||||
):
|
||||
self.reload()
|
||||
logger.info(f"记录本次补货时间为:{datetime.now()}")
|
||||
self.todo_task = True
|
||||
elif not self.collect_notification:
|
||||
if self.no_pending_task(1):
|
||||
|
@ -2996,32 +2996,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
return self.find_next_task(datetime.now() + timedelta(minutes=minute)) is None
|
||||
|
||||
def reload(self):
|
||||
error = False
|
||||
for room in self.reload_room:
|
||||
try:
|
||||
logger.info(f"开始搓玉补货:{room}")
|
||||
self.enter_room(room)
|
||||
self.tap((config.recog.w * 0.05, config.recog.h * 0.95), interval=0.25)
|
||||
self.tap((config.recog.w * 0.05, config.recog.h * 0.95), interval=0.25)
|
||||
self.tap((config.recog.w * 0.05, config.recog.h * 0.95), interval=0.25)
|
||||
# 补货
|
||||
self.tap((config.recog.w * 0.75, config.recog.h * 0.3), interval=0.5)
|
||||
self.tap((config.recog.w * 0.75, config.recog.h * 0.9), interval=0.5)
|
||||
self.scene_graph_step(Scene.INFRA_MAIN)
|
||||
except MowerExit:
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
error = True
|
||||
config.recog.update()
|
||||
back_count = 0
|
||||
while self.scene() != Scene.INFRA_MAIN:
|
||||
self.back()
|
||||
back_count += 1
|
||||
if back_count > 3:
|
||||
raise e
|
||||
if not error:
|
||||
self.reload_time = datetime.now()
|
||||
ReloadStoneFragmentSolver().run()
|
||||
|
||||
@CFUNCTYPE(None, c_int, c_char_p, c_void_p)
|
||||
def log_maa(msg, details, arg):
|
||||
|
|
48
arknights_mower/solvers/reload_stone_fragment.py
Normal file
48
arknights_mower/solvers/reload_stone_fragment.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from arknights_mower.solvers.enter_room import EnterRoomSolver
|
||||
from arknights_mower.utils import config
|
||||
from arknights_mower.utils.graph import SceneGraphSolver
|
||||
from arknights_mower.utils.log import logger
|
||||
from arknights_mower.utils.recognize import Scene
|
||||
|
||||
|
||||
class ReloadStoneFragmentSolver(SceneGraphSolver):
|
||||
def run(self) -> None:
|
||||
self.success = False
|
||||
reload_room = list(
|
||||
filter(None, config.conf.reload_room.replace(",", ",").split(","))
|
||||
)
|
||||
for self.room in reload_room:
|
||||
logger.info(f"开始搓玉补货:{self.room}")
|
||||
EnterRoomSolver().run(self.room, detail=False)
|
||||
self.wait_start()
|
||||
super().run()
|
||||
|
||||
def timeout(self) -> bool:
|
||||
return datetime.now() > self.start_time + timedelta(seconds=5)
|
||||
|
||||
def wait_start(self):
|
||||
self.start_time = datetime.now()
|
||||
|
||||
def transition(self) -> bool:
|
||||
if pos := self.find("stone_fragment", scope=(84, 872)):
|
||||
self.wait_start()
|
||||
self.ctap(pos, 1, config.screenshot_avg / 1000)
|
||||
elif self.scene() == Scene.FACTORY_ROOMS:
|
||||
if self.find("reload_check"):
|
||||
self.ctap((1400, 850), 1, config.screenshot_avg / 1000)
|
||||
self.success = True
|
||||
elif self.timeout():
|
||||
logger.info(f"货已满或土已用完:{self.room} 时间为:{datetime.now()}")
|
||||
return True
|
||||
elif not self.success:
|
||||
self.tap((1450, 300))
|
||||
else:
|
||||
logger.info(f"搓玉补货成功:{self.room} 时间为:{datetime.now()}")
|
||||
return True
|
||||
elif self.timeout():
|
||||
logger.info(f"搓玉补货失败:{self.room}")
|
||||
return True
|
||||
else:
|
||||
EnterRoomSolver().run(self.room, detail=False)
|
|
@ -162,11 +162,13 @@ template_matching = {
|
|||
"recruit/riic_res/WARRIOR": ((750, 730), (1920, 860)),
|
||||
"recruit/start_recruit": (1438, 849),
|
||||
"recruit/stone": ((900, 0), (1920, 120)),
|
||||
"reload_check": (1252, 772),
|
||||
"riic/assistants": ((1320, 400), (1600, 650)),
|
||||
"riic/iron": ((1570, 230), (1630, 340)),
|
||||
"riic/orundum": ((1500, 320), (1800, 550)),
|
||||
"riic/trade": ((1320, 250), (1600, 500)),
|
||||
"sign_in/moon_festival/banner": (704, 92),
|
||||
"stone_fragment": None,
|
||||
"terminal_regular": (1247, 980),
|
||||
"upgrade": (997, 501),
|
||||
}
|
||||
|
|
|
@ -327,6 +327,7 @@ Res = Literal[
|
|||
"recruit/ticket",
|
||||
"recruit/time",
|
||||
"recruiting_instructions",
|
||||
"reload_check",
|
||||
"riic/assistants",
|
||||
"riic/exp",
|
||||
"riic/iron",
|
||||
|
@ -398,6 +399,7 @@ Res = Literal[
|
|||
"sss/terminated",
|
||||
"start",
|
||||
"stone",
|
||||
"stone_fragment",
|
||||
"terminal_eliminate",
|
||||
"terminal_longterm",
|
||||
"terminal_longterm_reclamation_algorithm",
|
||||
|
|
Loading…
Reference in a new issue