OnmyojiAutoScript
OnmyojiAutoScript copied to clipboard
MuMu模拟器12上安装的vivo客户端重启功能失效
在提问之前...
- [x] 我已经搜索了现有的 issues
- [x] 我在提问题之前至少花费了 5 分钟来思考和准备
- [x] 我已经阅读了文档中的 常见问题(FAQ)
- [x] 这个问题出现了至少三次,不是偶发的
- [x] 我使用 OAS 的 dev 分支
描述你的问题
vivo版本的阴阳师每次遇到重启功能都会error,然后卡在登录界面,需要手动点击进入游戏并重启oas才行。 猜测可能的原因是,vivo版本阴阳师重启多了一个流程(如截图2-6):mumu模拟器横屏变竖屏,界面变白,阴阳师客户端尺寸缩小(貌似error产生原因),vivo游戏中心加载登录阴阳师,阴阳师客户端回归正常尺寸。这个流程结束后,卡在截图6,oas,会error。 截图1是由于vivo版本每次oas使用重启功能,mumu模拟器12都会在屏幕上变一个位置,我勾选了不改变位置和方向,实际以前不勾选也无法解决问题。我的另一个小米客户端可以正常重启,无此问题。
如何复现
用到重启功能就会出现
预期行为
希望正常识别,正常重启进入游戏
相关 Logs
════════════════════════════════════════════════════════════════════════════════
─────────────────────────────────── RESTART ────────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2025-02-05 16:54:35.759 | script.py:0351 | INFO | module_path:
F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Restart\script_task.py, module_name: script_task
2025-02-05 16:54:35.761 | logger.py:0276 | INFO | <<< APP RESTART >>>
2025-02-05 16:54:35.762 | app_control.py:0039 | INFO | App stop: com.netease.onmyoji.vivo
2025-02-05 16:54:35.800 | app_control.py:0029 | INFO | App start: com.netease.onmyoji.vivo
2025-02-05 16:54:35.883 | logger.py:0276 | INFO | <<< APP LOGIN >>>
2025-02-05 16:54:35.884 | device.py:0135 | INFO | Add stuck record: LOGIN_CHECK
2025-02-05 16:54:36.022 | logger.py:0284 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-02-05 16:54:36.258 | image.py:0077 | INFO | roi_front size changed to 40x23
2025-02-05 16:54:36.268 | image.py:0077 | INFO | roi_front size changed to 66x66
2025-02-05 16:54:36.271 | image.py:0077 | INFO | roi_front size changed to 46x50
2025-02-05 16:54:36.273 | image.py:0077 | INFO | roi_front size changed to 52x47
2025-02-05 16:54:46.128 | logger.py:0284 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-02-05 16:54:53.369 | logger.py:0284 | INFO | [LOGIN_ENTER_GAME 0.003s] [进入游戏]
2025-02-05 16:54:53.371 | control.py:0074 | INFO | Click ( 650, 599) @ LOGIN_ENTER_GAME
2025-02-05 16:54:53.774 | logger.py:0318 | ERROR | error: OpenCV(4.7.0)
D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:1175: error: (-215:Assertion failed) _img.size().height <= _templ.size().height &&
_img.size().width <= _templ.size().width in function 'cv::matchTemplate'
┌───────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────┐
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\script.py:353 in run │
│ │
│ 350 │ │ │ module_path = str(Path.cwd() / 'tasks' / command / (module_name+'.py')) │
│ 351 │ │ │ logger.info(f'module_path: {module_path}, module_name: {module_name}') │
│ 352 │ │ │ task_module = load_module(module_name, module_path) │
│ > 353 │ │ │ task_module.ScriptTask(config=self.config, device=self.device).run() │
│ 354 │ │ except TaskEnd: │
│ 355 │ │ │ return True │
│ 356 │ │ except GameNotRunningError as e: │
│ │
│ ┌───────────────────────────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────────────────────────┐ │
│ │ command = 'Restart' │ │
│ │ e = error("OpenCV(4.7.0) D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\imgproc\\src\\templmatch.cpp:1175: error: (-215:Assertion │ │
│ │ failed) _img.size().height <= _templ.size().height && _img.size().width <= _templ.size().width in function 'cv::matchTemplate'\n") │ │
│ │ module_name = 'script_task' │ │
│ │ module_path = 'F:\\yinyangshi\\OnmyojiScript\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-eas'+38 │ │
│ │ self = <script.Script object at 0x00000207C1FDFEE0> │ │
│ │ task_module = <module 'script_task' from │ │
│ │ 'F:\\yinyangshi\\OnmyojiScript\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-easy-install\\tasks\\Restart\\script_task.py'> │ │
│ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Restart\script_task.py:24 in run │
│ │
│ 21 │ │ :return: │
│ 22 │ │ """ │
│ 23 │ │ if not self.delay_pending_tasks(): │
│ > 24 │ │ │ self.app_restart() │
│ 25 │ │ raise TaskEnd('ScriptTask end') │
│ 26 │ │
│ 27 │ def app_stop(self): │
│ │
│ ┌─────────────────────────── locals ───────────────────────────┐ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Restart\script_task.py:41 in app_restart │
│ │
│ 38 │ │ logger.hr('App restart') │
│ 39 │ │ self.device.app_stop() │
│ 40 │ │ self.device.app_start() │
│ > 41 │ │ self.app_handle_login() │
│ 42 │ │ │
│ 43 │ │ # self.config.task_delay(server_update=True) │
│ 44 │ │ self.set_next_run(task='Restart', success=True, finish=True, server=True) │
│ │
│ ┌─────────────────────────── locals ───────────────────────────┐ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Restart\login.py:126 in app_handle_login │
│ │
│ 123 │ │ │ self.device.stuck_record_clear() │
│ 124 │ │ │ self.device.click_record_clear() │
│ 125 │ │ │ try: │
│ > 126 │ │ │ │ self._app_handle_login() │
│ 127 │ │ │ │ if self.config.restart.harvest_config.enable: │
│ 128 │ │ │ │ │ self.harvest() │
│ 129 │ │ │ │ return True │
│ │
│ ┌─────────────────────────── locals ───────────────────────────┐ │
│ │ _ = 0 │ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Restart\login.py:116 in _app_handle_login │
│ │
│ 113 │ │ │ │ # https://github.com/runhey/OnmyojiAutoScript/issues/585 │
│ 114 │ │ │ │ self.device.click(x=246, y=535) │
│ 115 │ │ │ if self.ocr_appear_click(self.O_LOGIN_ENTER_GAME, interval=3): │
│ > 116 │ │ │ │ self.wait_until_appear(self.I_LOGIN_SPECIFIC_SERVE, True, wait_time=5) │
│ 117 │ │ │ │ continue │
│ 118 │ │ │
│ 119 │ │ return login_success │
│ │
│ ┌──────────────────────────────────────── locals ────────────────────────────────────────┐ │
│ │ confirm_timer = Timer(limit=0.802/1.5, count=0/2) │ │
│ │ gia = <class 'tasks.Component.GeneralInvite.assets.GeneralInviteAssets'> │ │
│ │ login_success = False │ │
│ │ orientation_timer = Timer(limit=8.027/10, count=19/0) │ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:228 in wait_until_appear │
│ │
│ 225 │ │ │ if skip_first_screenshot: │
│ 226 │ │ │ │ skip_first_screenshot = False │
│ 227 │ │ │ else: │
│ > 228 │ │ │ │ self.screenshot() │
│ 229 │ │ │ if wait_timer and wait_timer.reached(): │
│ 230 │ │ │ │ logger.warning(f"Wait until appear {target.name} timeout") │
│ 231 │ │ │ │ return False │
│ │
│ ┌─────────────────────────────────── locals ────────────────────────────────────┐ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ │ skip_first_screenshot = False │ │
│ │ target = LOGIN_LOGIN_SPECIFIC_SERVE │ │
│ │ wait_time = 5 │ │
│ │ wait_timer = Timer(limit=0.734/5, count=1/0) │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:130 in screenshot │
│ │
│ 127 │ │ """ │
│ 128 │ │ self.device.screenshot() │
│ 129 │ │ # 判断勾协 │
│ > 130 │ │ self._burst() │
│ 131 │ │ │
│ 132 │ │ # # 判断网络异常 │
│ 133 │ │ # if self.appear(self.I_NETWORK_ABNORMAL): │
│ │
│ ┌─────────────────────────── locals ───────────────────────────┐ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:74 in _burst │
│ │
│ 71 │ │ :return: 没有出现返回False, 其他True │
│ 72 │ │ """ │
│ 73 │ │ image = self.device.image │
│ > 74 │ │ appear_invitation = self.appear(self.I_G_ACCEPT) │
│ 75 │ │ if not appear_invitation: │
│ 76 │ │ │ return False │
│ 77 │ │ logger.info('Invitation appearing') │
│ │
│ ┌─────────────────────────── locals ────────────────────────────┐ │
│ │ image = array([[[ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30]], │ │
│ │ │ │ │
│ │ │ [[ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30]], │ │
│ │ │ │ │
│ │ │ [[ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30]], │ │
│ │ │ │ │
│ │ │ ..., │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]], │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]], │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]]], dtype=uint8) │ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:167 in appear │
│ │
│ 164 │ │ │ if not self.interval_timer[target.name].reached(): │
│ 165 │ │ │ │ return False │
│ 166 │ │ │
│ > 167 │ │ appear = target.match(self.device.image, threshold=threshold) │
│ 168 │ │ │
│ 169 │ │ if appear and interval: │
│ 170 │ │ │ self.interval_timer[target.name].reset() │
│ │
│ ┌───────────────────────────── locals ──────────────────────────────┐ │
│ │ interval = None │ │
│ │ self = <script_task.ScriptTask object at 0x00000207DFB33130> │ │
│ │ target = GG_G_ACCEPT │ │
│ │ threshold = None │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ F:\yinyangshi\OnmyojiScript\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\module\atom\image.py:157 in match │
│ │
│ 154 │ │ │ logger.error(f"Template image is invalid: {mat.shape}") ┌─────────────────────── locals ────────────────────────┐ │
│ #检测模板尺寸,不合法则不进行匹配,避免两次截图画面完全相同造成模板不合法 │ image = array([[[ 25, 28, 30], │ │
│ 155 │ │ │ return True # 如果模板图像无效,直接返回 True │ │ │ [ 25, 28, 30], │ │
│ 156 │ │ │ │ │ [ 25, 28, 30], │ │
│ > 157 │ │ res = cv2.matchTemplate(source, mat, cv2.TM_CCOEFF_NORMED) │ │ │ ..., │ │
│ 158 │ │ min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # │ │ │ [ 25, 28, 30], │ │
│ 最小匹配度,最大匹配度,最小匹配度的坐标,最大匹配度的坐标 │ │ │ [ 25, 28, 30], │ │
│ 159 │ │ # logger.attr(self.name, max_val) │ │ │ [ 25, 28, 30]], │ │
│ 160 │ │ if max_val > threshold: │ │ │ │
│ │ │ [[ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30]], │ │
│ │ │ │ │
│ │ │ [[ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30], │ │
│ │ │ │ [ 25, 28, 30]], │ │
│ │ │ │ │
│ │ │ ..., │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]], │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]], │ │
│ │ │ │ │
│ │ │ [[255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ ..., │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255], │ │
│ │ │ │ [255, 255, 255]]], dtype=uint8) │ │
│ │ mat = array([[[152, 142, 107], │ │
│ │ │ │ [147, 129, 91], │ │
│ │ │ │ [156, 129, 86], │ │
│ │ │ │ ..., │ │
│ │ │ │ [111, 83, 61], │ │
│ │ │ │ [143, 111, 86], │ │
│ │ │ │ [157, 127, 99]], │ │
│ │ │ │ │
│ │ │ [[144, 128, 94], │ │
│ │ │ │ [149, 123, 86], │ │
│ │ │ │ [184, 149, 107], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 87, 61, 44], │ │
│ │ │ │ [112, 81, 60], │ │
│ │ │ │ [139, 109, 83]], │ │
│ │ │ │ │
│ │ │ [[146, 123, 89], │ │
│ │ │ │ [177, 144, 109], │ │
│ │ │ │ [189, 151, 114], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 68, 46, 33], │ │
│ │ │ │ [ 83, 57, 40], │ │
│ │ │ │ [115, 87, 65]], │ │
│ │ │ │ │
│ │ │ ..., │ │
│ │ │ │ │
│ │ │ [[180, 154, 117], │ │
│ │ │ │ [180, 151, 117], │ │
│ │ │ │ [137, 110, 80], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 44, 33, 27], │ │
│ │ │ │ [ 59, 42, 34], │ │
│ │ │ │ [ 77, 53, 41]], │ │
│ │ │ │ │
│ │ │ [[169, 147, 110], │ │
│ │ │ │ [190, 164, 127], │ │
│ │ │ │ [172, 142, 106], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 54, 42, 30], │ │
│ │ │ │ [ 71, 52, 37], │ │
│ │ │ │ [ 93, 66, 47]], │ │
│ │ │ │ │
│ │ │ [[143, 125, 89], │ │
│ │ │ │ [168, 142, 105], │ │
│ │ │ │ [190, 157, 116], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 73, 56, 38], │ │
│ │ │ │ [ 85, 61, 37], │ │
│ │ │ │ [115, 85, 59]]], dtype=uint8) │ │
│ │ self = GG_G_ACCEPT │ │
│ │ source = array([], shape=(110, 0, 3), dtype=uint8) │ │
│ │ threshold = 0.8 │ │
│ └───────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:1175: error: (-215:Assertion failed) _img.size().height <=
_templ.size().height && _img.size().width <= _templ.size().width in function 'cv::matchTemplate'
2025-02-05 16:54:54.315 | script.py:0097 | WARNING | Saving error: ./log/error/1738745694315
截图
还有别的吗?
No response
网页官方的不是全平台的吗,你可以不用vivo版的吗
最近出远门,用不了电脑,回头我试试吧,听说有的版本没有这个复杂的登录过程。这个yys账号已经好几年了,舍弃不掉