runhey / OnmyojiAutoScript

Onmyoji Auto Script | 阴阳师脚本
https://runhey.github.io/OnmyojiAutoScript-website/
GNU General Public License v3.0
1.85k stars 182 forks source link

百鬼夜行两种截屏方案都用不了,导致百鬼报错 #544

Open kongdr418 opened 2 days ago

kongdr418 commented 2 days ago

在提问之前...

描述你的问题

大佬您好,我是 #359 的提问人。最近我看到百鬼更新了可以自选百鬼的截屏方案window_background和nemu_ipc,但这两个还是和之前一样砸不了百鬼。之后我试过把模拟器的截屏方案分别调成这两个,不出意外还是报错(模拟器截屏选择ADB)_nc是可以运行探索之类的副本)。我用我朋友电脑试过把模拟器和百鬼的截屏方案都选择window_background是可以正常砸豆子的,所以我猜测我电脑不能运行百鬼的原因可能在这。

如何复现

  1. 前往 '...'
  2. 点击 '....'
  3. 滑动到 '....'
  4. 出现问题

预期行为

No response

相关 Logs

以下是window_background的报错日志
════════════════════════════════════════════════════════════════════════════════
───────────────────────────────── HYAKKIYAKOU ──────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2024-11-20 19:20:24.862 |            logger.py:0284 |     INFO | [Screen_size] 1280x720                                                                         
2024-11-20 19:20:24.867 |            script.py:0350 |     INFO | module_path: D:\yys\OnmyojiAutoScript-easy-install\tasks\Hyakkiyakou\script_task.py,           
module_name: script_task                                                                                                                                        
2024-11-20 19:20:24.969 |           game_ui.py:0097 |     INFO | UI get current page                                                                            
2024-11-20 19:20:24.989 |             image.py:0077 |     INFO | roi_front size changed to 66x75                                                                
2024-11-20 19:20:25.013 |            logger.py:0284 |     INFO | [u2.Device] Device(atx_agent_url=http://127.0.0.1:57673)                                       
2024-11-20 19:20:25.069 |            logger.py:0284 |     INFO | [Package_name] com.netease.onmyoji.wyzymnqsd_cps                                               
2024-11-20 19:20:25.080 |            logger.py:0284 |     INFO | [Device Orientation] 1 (HOME key on the right)                                                 
2024-11-20 19:20:35.094 |           game_ui.py:0154 |  WARNING | Unknown ui page                                                                                
2024-11-20 19:20:35.098 |            logger.py:0284 |     INFO | [EMULATOR__SCREENSHOT_METHOD] ScreenshotMethod.WINDOW_BACKGROUND                               
2024-11-20 19:20:35.100 |            logger.py:0284 |     INFO | [EMULATOR__CONTROL_METHOD] ControlMethod.MINITOUCH                                             
2024-11-20 19:20:35.103 |           game_ui.py:0157 |  WARNING | Starting from current page is not supported                                                    
2024-11-20 19:20:35.106 |           game_ui.py:0158 |  WARNING | Supported page: ['page_main', 'page_summon', 'page_exploration', 'page_town',                  
'page_awake_zones', 'page_soul_zones', 'page_realm_raid', 'page_goryou_realm', 'page_delegation', 'page_secret_zones', 'page_area_boss', 'page_heian_kitan',    
'page_six_gates', 'page_bondling_fairyland', 'page_kekkai_toppa', 'page_duel', 'page_demon_encounter', 'page_hunt', 'page_draft_duel', 'page_hyakkisen',        
'page_shikigami_records', 'page_onmyodo', 'page_friends', 'page_daily', 'page_mall', 'page_guild', 'page_team', 'page_collection']                              
2024-11-20 19:20:35.113 |           game_ui.py:0159 |  WARNING | Supported page: Any page with a "HOME" button on the upper-right                               
2024-11-20 19:20:35.116 |           game_ui.py:0160 | CRITICAL | Please switch to a supported page before starting oas                                          
2024-11-20 19:20:35.118 |            script.py:0377 |     INFO | Game server may be under maintenance or network may be broken, check server status now         
2024-11-20 19:20:35.120 |            script.py:0379 | CRITICAL | Game page unknown                                                                              
2024-11-20 19:20:35.123 |            script.py:0096 |  WARNING | Saving error: ./log/error/1732101635123                                                        
————
以下是截屏方案为nemu_ipc的报错日志
════════════════════════════════════════════════════════════════════════════════
───────────────────────────────── HYAKKIYAKOU ──────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2024-11-20 17:39:24.930 |            logger.py:0318 |    ERROR | AttributeError: 'Device' object has no attribute 'emulator_instance'                           
╭───────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────╮
│ D:\yys\OnmyojiAutoScript-easy-install\script.py:347 in run                                                                                                   │
│                                                                                                                                                              │
│   344 │   │   │   logger.error(f'Invalid command `{command}`')                                                                                               │
│   345 │   │                                                                                                                                                  │
│   346 │   │   try:                                                                                                                                           │
│ ❱ 347 │   │   │   self.device.screenshot()                                                                                                                   │
│   348 │   │   │   module_name = 'script_task'                                                                                                                │
│   349 │   │   │   module_path = str(Path.cwd() / 'tasks' / command / (module_name+'.py'))                                                                    │
│   350 │   │   │   logger.info(f'module_path: {module_path}, module_name: {module_name}')                                                                     │
│                                                                                                                                                              │
│ ╭───────────────────────────────────── locals ─────────────────────────────────────╮                                                                         │
│ │ command = 'Hyakkiyakou'                                                          │                                                                         │
│ │       e = AttributeError("'Device' object has no attribute 'emulator_instance'") │                                                                         │
│ │    self = <script.Script object at 0x0000016AE54577F0>                           │                                                                         │
│ ╰──────────────────────────────────────────────────────────────────────────────────╯                                                                         │
│                                                                                                                                                              │
│ D:\yys\OnmyojiAutoScript-easy-install\module\device\device.py:87 in screenshot                                                                               │
│                                                                                                                                                              │
│    84 │   │   self.stuck_record_check()                                                                                                                      │
│    85 │   │                                                                                                                                                  │
│    86 │   │   try:                                                                                                                                           │
│ ❱  87 │   │   │   super().screenshot()                                                                                                                       │
│    88 │   │   except RequestHumanTakeover as e:                                                                                                              │
│    89 │   │   │   raise RequestHumanTakeover                                                                                                                 │
│    90                                                                                                                                                        │
│                                                                                                                                                              │
│ ╭───────────────────────────── locals ──────────────────────────────╮                                                                                        │
│ │ self = <module.device.device.Device object at 0x0000016A96747F40> │                                                                                        │
│ ╰───────────────────────────────────────────────────────────────────╯                                                                                        │
│                                                                                                                                                              │
│ D:\yys\OnmyojiAutoScript-easy-install\module\device\screenshot.py:63 in screenshot                                                                           │
│                                                                                                                                                              │
│    60 │   │   │   │   self.config.script.device.screenshot_method,                                                                                           │
│    61 │   │   │   │   self.screenshot_adb  # 第二个参数默认的是screenshot_adb                                                                                │
│    62 │   │   │   )                                                                                                                                          │
│ ❱  63 │   │   │   self.image = method()                                                                                                                      │
│    64 │   │   │                                                                                                                                              │
│    65 │   │   │   # if self.config.Emulator_ScreenshotDedithering:                                                                                           │
│    66 │   │   │   #     # This will take 40-60ms                                                                                                             │
│                                                                                                                                                              │
│ ╭───────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────╮                                        │
│ │      _ = 0                                                                                                        │                                        │
│ │ method = <bound method NemuIpc.screenshot_nemu_ipc of <module.device.device.Device object at 0x0000016A96747F40>> │                                        │
│ │   self = <module.device.device.Device object at 0x0000016A96747F40>                                               │                                        │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                                        │
│                                                                                                                                                              │
│ D:\yys\OnmyojiAutoScript-easy-install\module\device\method\nemu_ipc.py:496 in screenshot_nemu_ipc                                                            │
│                                                                                                                                                              │
│   493 │   │   logger.info('nemu_ipc released')                                                                                                               │
│   494 │                                                                                                                                                      │
│   495 │   def screenshot_nemu_ipc(self):                                                                                                                     │
│ ❱ 496 │   │   image = self.nemu_ipc.screenshot()                                                                                                             │
│   497 │   │                                                                                                                                                  │
│   498 │   │   image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)                                                                                                │
│   499 │   │   cv2.flip(image, 0, dst=image)                                                                                                                  │
│                                                                                                                                                              │
│ ╭───────────────────────────── locals ──────────────────────────────╮                                                                                        │
│ │ self = <module.device.device.Device object at 0x0000016A96747F40> │                                                                                        │
│ ╰───────────────────────────────────────────────────────────────────╯                                                                                        │
│                                                                                                                                                              │
│ D:\yys\OnmyojiAutoScript-easy-install\module\base\decorator.py:103 in __get__                                                                                │
│                                                                                                                                                              │
│   100 │   │   if obj is None:                                                                                                                                │
│   101 │   │   │   return self                                                                                                                                │
│   102 │   │                                                                                                                                                  │
│ ❱ 103 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                                                                      │
│   104 │   │   return value                                                                                                                                   │
│   105                                                                                                                                                        │
│   106 def del_cached_property(obj, name):                                                                                                                    │
│                                                                                                                                                              │
│ ╭────────────────────────────────── locals ───────────────────────────────────╮                                                                              │
│ │  cls = <class 'module.device.device.Device'>                                │                                                                              │
│ │  obj = <module.device.device.Device object at 0x0000016A96747F40>           │                                                                              │
│ │ self = <module.base.decorator.cached_property object at 0x0000016A966F3430> │                                                                              │
│ ╰─────────────────────────────────────────────────────────────────────────────╯                                                                              │
│                                                                                                                                                              │
│ D:\yys\OnmyojiAutoScript-easy-install\module\device\method\nemu_ipc.py:464 in nemu_ipc                                                                       │
│                                                                                                                                                              │
│   461 │   │   # Search emulator instance                                                                                                                     │
│   462 │   │   # with E:\ProgramFiles\MuMuPlayer-12.0\shell\MuMuPlayer.exe                                                                                    │
│   463 │   │   # installation path is E:\ProgramFiles\MuMuPlayer-12.0                                                                                         │
│ ❱ 464 │   │   if self.emulator_instance is None:                                                                                                             │
│   465 │   │   │   logger.error('Unable to use NemuIpc because emulator instance not found')                                                                  │
│   466 │   │   │   raise RequestHumanTakeover                                                                                                                 │
│   467 │   │   try:                                                                                                                                           │
│                                                                                                                                                              │
│ ╭──────────────────────────────────── locals ────────────────────────────────────╮                                                                           │
│ │ folder = 'D:\\yys\\OnmyojiAutoScript-easy-install\\"E:\\mumu\\MuMuPlayer-12.0' │                                                                           │
│ │  index = None                                                                  │                                                                           │
│ │   self = <module.device.device.Device object at 0x0000016A96747F40>            │                                                                           │
│ ╰────────────────────────────────────────────────────────────────────────────────╯                                                                           │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: 'Device' object has no attribute 'emulator_instance'                                                                                            
2024-11-20 17:39:31.887 |            script.py:0096 |  WARNING | Saving error: ./log/error/1732095571887

截图

以下是截屏方案为window_background的报错截图 2024-11-20_19-20-35-094679 这个截图和 #498 是一样的 ———— 截屏方案为nemu_ipc的没有报错截图 屏幕截图 2024-11-20 193309 屏幕截图 2024-11-20 193505 有可能是模拟器路径格式问题,但我是直接复制过去的。 屏幕截图 2024-11-20 193632

还有别的吗?

基础信息 UUID : f2de429e-564a-4455-9365-12f1250c57c5 模拟器版本 : 4.1.6.3488 模拟器磁盘(可用/总)空间 : 108.5GB/125GB 日志路径 : E:\mumu\MuMuPlayer-12.0\vms\MuMuPlayer-12.0-0\logs\

运行环境 VT : 开启 Hyper-V : 关闭 网络环境检测 : 正常 以管理员运行方式 : 否 DirectX 11是否安装 : 是 防火墙 : 开启(建议关闭)

电脑配置 主板型号 : Manufacturer: ASUSTeK COMPUTER INC. Product: G814JI CPU : 13th Gen Intel(R) Core(TM) i9-13980HX 系统版本 : Windows 11 64-bit Kernel 10.0.22631 显卡驱动 : 正常 显卡驱动型号 : 560.94 (20240814) 所有显卡 : NVIDIA GeForce RTX 4070 Laptop GPU | Intel(R) UHD Graphics | Microsoft Basic Render Driver 当前使用显卡 : NVIDIA GeForce RTX 4070 Laptop GPU 安装磁盘(可用/总)空间 : 296.9GB/953.9GB 可用内存/总内存 : 4.9GB/15.6GB

模拟器设置 Root : 关闭 显卡渲染模式 : Vulkan 模式(独家) 性能设置 : 4核/4GB 手机型号 : OPPO A97 分辨率 : 1280 * 720 高帧率 : 开启 后台保活 : 关闭

连接设备 音频输入 : 已连接 音频输出 : 已连接

网络信息 MuMu DNS : 114.114.114.114 电脑DNS : 192.168.17.12 Rom MAC地址 : 08:d3:0e:25:56:32

ADB调试端口 : 16384 MuMu出口IP地址 : 10.0.2.15 电脑出口IP地址 : 59.36.183.251

其它信息 其它版本信息 : vm: 120.1.90.003 hyperv: 6.3.35.0 renderer: 0.0.189.0 Vendor : NetEase OpenGL Renderer : MuMu GL (Vulkan 1.3.280 NVIDIA GeForce RTX 4070 Laptop GPU 560.94 A) OpenGL Version : OpenGL ES 3.2 V132 运行时间 : 0 : 35 : 4 mumu版本目前是最新版

runhey commented 2 days ago

QQ_1732112656186 QQ_1732112668245 正常的我打断点发现的

runhey commented 2 days ago

不知道为什么你跑的时候folder这个值不对,如果你可以改代码,我想你可以试试。 先关闭oas,然后才改,记得把自动更新关掉了。 QQ_1732113369454

文件在 ./module/device/method/nemu_ipc.py 447行左右

            from pathlib import Path
            folder = str(Path(self.config.script.device.emulatorinfo_path).parent.parent)

QQ_1732113102318

runhey commented 2 days ago

如果不能改代码,我push一个版本给你看看

runhey commented 2 days ago

QQ_1732113601881 好了我给你复现了,你填这个路径的时候有E前面有一个空格

runhey commented 2 days ago

你把空格拿掉

kongdr418 commented 2 days ago

屏幕截图 2024-11-20 225122 是改成这样子吗,好像还是报错

kongdr418 commented 2 days ago

屏幕截图 2024-11-20 225630 我E这前面好像没有空格

kongdr418 commented 2 days ago

屏幕截图 2024-11-20 225829 我在oas1.json上看的也是没有空格的

kongdr418 commented 2 days ago

════════════════════════════════════════════════════════════════════════════════ ───────────────────────────────── HYAKKIYAKOU ────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════ 2024-11-20 22:53:07.559 | logger.py:0318 | ERROR | AttributeError: 'Device' object has no attribute 'emulator_instance'
┌───────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────┐ │ D:\yys\OnmyojiAutoScript-easy-install\script.py:347 in run │ │ │ │ 344 │ │ │ logger.error(f'Invalid command {command}') │ │ 345 │ │ │ │ 346 │ │ try: │ │ > 347 │ │ │ self.device.screenshot() │ │ 348 │ │ │ module_name = 'script_task' │ │ 349 │ │ │ module_path = str(Path.cwd() / 'tasks' / command / (module_name+'.py')) │ │ 350 │ │ │ logger.info(f'module_path: {module_path}, module_name: {module_name}') │ │ │ │ ┌───────────────────────────────────── locals ─────────────────────────────────────┐ │ │ │ command = 'Hyakkiyakou' │ │ │ │ e = AttributeError("'Device' object has no attribute 'emulator_instance'") │ │ │ │ self = <script.Script object at 0x000002076F4CB820> │ │ │ └──────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ D:\yys\OnmyojiAutoScript-easy-install\module\device\device.py:87 in screenshot │ │ │ │ 84 │ │ self.stuck_record_check() │ │ 85 │ │ │ │ 86 │ │ try: │ │ > 87 │ │ │ super().screenshot() │ │ 88 │ │ except RequestHumanTakeover as e: │ │ 89 │ │ │ raise RequestHumanTakeover │ │ 90 │ │ │ │ ┌───────────────────────────── locals ──────────────────────────────┐ │ │ │ self = <module.device.device.Device object at 0x000002072074BE50> │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ D:\yys\OnmyojiAutoScript-easy-install\module\device\screenshot.py:63 in screenshot │ │ │ │ 60 │ │ │ │ self.config.script.device.screenshot_method, │ │ 61 │ │ │ │ self.screenshot_adb # 第二个参数默认的是screenshot_adb │ │ 62 │ │ │ ) │ │ > 63 │ │ │ self.image = method() │ │ 64 │ │ │ │ │ 65 │ │ │ # if self.config.EmulatorScreenshotDedithering: │ │ 66 │ │ │ # # This will take 40-60ms │ │ │ │ ┌───────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────┐ │ │ │ = 0 │ │ │ │ method = <bound method NemuIpc.screenshot_nemu_ipc of <module.device.device.Device object at 0x000002072074BE50>> │ │ │ │ self = <module.device.device.Device object at 0x000002072074BE50> │ │ │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ D:\yys\OnmyojiAutoScript-easy-install\module\device\method\nemu_ipc.py:496 in screenshot_nemu_ipc │ │ │ │ 493 │ │ logger.info('nemu_ipc released') │ │ 494 │ │ │ 495 │ def screenshot_nemu_ipc(self): │ │ > 496 │ │ image = self.nemu_ipc.screenshot() │ │ 497 │ │ │ │ 498 │ │ image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR) │ │ 499 │ │ cv2.flip(image, 0, dst=image) │ │ │ │ ┌───────────────────────────── locals ──────────────────────────────┐ │ │ │ self = <module.device.device.Device object at 0x000002072074BE50> │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ D:\yys\OnmyojiAutoScript-easy-install\module\base\decorator.py:103 in get │ │ │ │ 100 │ │ if obj is None: │ │ 101 │ │ │ return self │ │ 102 │ │ │ │ > 103 │ │ value = obj.dict[self.func.name] = self.func(obj) │ │ 104 │ │ return value │ │ 105 │ │ 106 def del_cached_property(obj, name): │ │ │ │ ┌────────────────────────────────── locals ───────────────────────────────────┐ │ │ │ cls = <class 'module.device.device.Device'> │ │ │ │ obj = <module.device.device.Device object at 0x000002072074BE50> │ │ │ │ self = <module.base.decorator.cached_property object at 0x00000207206F7490> │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ D:\yys\OnmyojiAutoScript-easy-install\module\device\method\nemu_ipc.py:464 in nemu_ipc │ │ │ │ 461 │ │ # Search emulator instance │ │ 462 │ │ # with E:\ProgramFiles\MuMuPlayer-12.0\shell\MuMuPlayer.exe │ │ 463 │ │ # installation path is E:\ProgramFiles\MuMuPlayer-12.0 │ │ > 464 │ │ if self.emulator_instance is None: │ │ 465 │ │ │ logger.error('Unable to use NemuIpc because emulator instance not found') │ │ 466 │ │ │ raise RequestHumanTakeover │ │ 467 │ │ try: │ │ │ │ ┌────────────────────────────── locals ───────────────────────────────┐ │ │ │ folder = 'E:\mumu\MuMuPlayer-12.0' │ │ │ │ index = None │ │ │ │ self = <module.device.device.Device object at 0x000002072074BE50> │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ AttributeError: 'Device' object has no attribute 'emulator_instance'
2024-11-20 22:53:15.235 | script.py:0096 | WARNING | Saving error: ./log/error/1732114395235
folder的值变了

kongdr418 commented 2 days ago

我在oasx输入的是E:\mumu\MuMuPlayer-12.0\shell\MuMuPlayer.exe,folder给的是E:\mumu\MuMuPlayer-12.0

runhey commented 2 days ago

屏幕截图 2024-11-20 225829 我在oas1.json上看的也是没有空格的

serial 显式的填127那串,不要auto

kongdr418 commented 2 days ago

屏幕截图 2024-11-20 235226 可以了!感谢大佬!膜拜