Compare commits
3 commits
e6d2398bb9
...
c5571899d3
Author | SHA1 | Date | |
---|---|---|---|
c5571899d3 | |||
3d0621c84b | |||
b42b052e29 |
2 changed files with 50 additions and 24 deletions
|
@ -1,12 +1,10 @@
|
|||
import cv2
|
||||
|
||||
from mower.solvers.fight.battle_choose.battle_fill_choose import BattleFillChooseSolver
|
||||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.utils import config
|
||||
from mower.utils.character_recognize import match_portrait
|
||||
from mower.utils.character_recognize import match_avatar
|
||||
from mower.utils.email import assistants_template, send_message
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import ss
|
||||
|
||||
from .enter_activity import EnterActivitySolver
|
||||
|
||||
|
@ -16,34 +14,38 @@ class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
|
|||
|
||||
def run(self):
|
||||
self.flag = True
|
||||
self.limit = config.conf.trust_limit # 设置的信赖值阈值
|
||||
self.assistants_before = [] # 记录切换前的干员
|
||||
self.assistants_after = [] # 记录切换后的干员
|
||||
self.black_list = []
|
||||
for i in range(1, 4):
|
||||
if not self.flag:
|
||||
break
|
||||
self.num = i
|
||||
if EnterActivitySolver().run(i):
|
||||
self.switched = False
|
||||
self.need_switch = False
|
||||
super().run()
|
||||
send_message(
|
||||
assistants_template.render(
|
||||
assistants_before=self.assistants_before,
|
||||
assistants_after=self.assistants_after,
|
||||
limit=str(self.limit) + "%",
|
||||
),
|
||||
"活动室信赖汇总通知",
|
||||
"INFO",
|
||||
)
|
||||
|
||||
def detect_oper(self) -> str:
|
||||
return match_portrait(
|
||||
cv2.resize(config.recog.gray, (int(1920 / 1.5), int(1080 / 1.5))),
|
||||
segment=[ss(2 / 3, 2 / 3, ((1450, 400), (1670, 530)))],
|
||||
return match_avatar(
|
||||
config.recog.gray,
|
||||
segment=[((20, 935), (135, 1015))],
|
||||
)[0][0]
|
||||
|
||||
def transition(self) -> bool:
|
||||
if (scene := self.scene()) == Scene.ACTIVITY_ROOM_DETAILS:
|
||||
if self.animation(ratio=0.2):
|
||||
return
|
||||
if (
|
||||
self.find("no_user")
|
||||
or config.recog.num.number_int(
|
||||
"riic_base", ((220, 920), (330, 970)), 23, 130, rect_ed=-3
|
||||
)
|
||||
>= config.conf.trust_limit
|
||||
):
|
||||
if self.switched:
|
||||
self.flag = False
|
||||
if self.need_switch and not self.switched:
|
||||
if not self.flag:
|
||||
return True
|
||||
if self.find("user_on"):
|
||||
self.ctap((1550, 480), 3)
|
||||
|
@ -51,7 +53,30 @@ class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
|
|||
return
|
||||
self.ctap("user", 3)
|
||||
return
|
||||
return True
|
||||
|
||||
if self.find("no_user"):
|
||||
self.assistants_before.append(["活动室" + str(self.num), None])
|
||||
self.need_switch = True
|
||||
else:
|
||||
oper = self.detect_oper()
|
||||
num = config.recog.num.number_int(
|
||||
"riic_base", ((220, 920), (330, 970)), 23, 130, rect_ed=-3
|
||||
)
|
||||
if self.switched:
|
||||
self.assistants_after.append(
|
||||
["活动室" + str(self.num), oper, str(num) + "%"]
|
||||
)
|
||||
if num >= self.limit:
|
||||
self.flag = False
|
||||
return True
|
||||
self.assistants_before.append(
|
||||
["活动室" + str(self.num), oper, str(num) + "%"]
|
||||
)
|
||||
if num >= self.limit:
|
||||
self.need_switch = True
|
||||
return
|
||||
return True
|
||||
|
||||
elif scene == Scene.OPERATOR_AGENT_SELECT:
|
||||
name = BattleFillChooseSolver().run("信赖值", 1, self.black_list)
|
||||
self.black_list.append(name[0])
|
||||
|
|
|
@ -67,9 +67,8 @@ class Shop(BaseSolver):
|
|||
name = crop2content(name)
|
||||
name = ocr_rec(name)
|
||||
if name not in config.conf.activity_shop_blacklist:
|
||||
self.product = name
|
||||
return va(top_left, (245, 110))
|
||||
return None
|
||||
return name, va(top_left, (245, 110))
|
||||
return None, None
|
||||
|
||||
def transition(self):
|
||||
if (scene := self.scene()) == Scene.TERMINAL_MAIN:
|
||||
|
@ -79,8 +78,10 @@ class Shop(BaseSolver):
|
|||
elif scene == Scene.ACTIVITY_SHOP:
|
||||
if self.animation():
|
||||
return
|
||||
if pos := self.next_product():
|
||||
self.tap(pos)
|
||||
name, pos = self.next_product()
|
||||
if pos is not None:
|
||||
if self.ctap(pos):
|
||||
self.product = name
|
||||
return
|
||||
self.swipe_ext([(1600, 340), (300, 340), (300, 150)], [0.2, 0.3], 0, 0.1)
|
||||
elif scene == Scene.ACTIVITY_SHOP_BUY:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue