diff --git a/MeoAssistance/include/Configer.h b/MeoAssistance/include/Configer.h index fa84905e0a..ee1eb436fb 100644 --- a/MeoAssistance/include/Configer.h +++ b/MeoAssistance/include/Configer.h @@ -27,8 +27,8 @@ namespace asst { Configer& operator=(const Configer& rhs); Configer& operator=(Configer&& rhs) noexcept; - constexpr static int DefaultWindowWidth = 1271; - constexpr static int DefaultWindowHeight = 716; + constexpr static int DefaultWindowWidth = 1280; + constexpr static int DefaultWindowHeight = 720; constexpr static double DefaultThreshold = 0.9; constexpr static double DefaultCacheThreshold = 0.9; diff --git a/MeoAssistance/src/Assistance.cpp b/MeoAssistance/src/Assistance.cpp index cc5ecc13a7..44b34198a7 100644 --- a/MeoAssistance/src/Assistance.cpp +++ b/MeoAssistance/src/Assistance.cpp @@ -177,7 +177,7 @@ void Assistance::working_proc(Assistance* pThis) pThis->stop(false); continue; } - if (cur_image.rows < 100) { + if (cur_image.cols < 100) { DebugTraceInfo("Window Could not be minimized!!!"); pThis->m_pWindow->showWindow(); pThis->m_condvar.wait_for(lock, @@ -298,7 +298,7 @@ void Assistance::working_proc(Assistance* pThis) // 单纯为了打印日志。。感觉可以优化下 std::string nexts_str; for (auto&& name : pThis->m_next_tasks) { - nexts_str += name + ","; + nexts_str += name + " ,"; } if (nexts_str.back() == ',') { nexts_str.pop_back(); @@ -319,9 +319,9 @@ void Assistance::working_proc(Assistance* pThis) std::pair asst::Assistance::get_format_image() { auto && cur_image = m_pView->getImage(m_pView->getWindowRect()); - if (cur_image.empty() || cur_image.rows < 100) { + if (cur_image.empty() || cur_image.cols < m_configer.DefaultWindowWidth) { DebugTraceError("Window image error"); - return { 0, cur_image }; + return { 0, std::move(cur_image) }; } // 把模拟器边框的一圈裁剪掉 auto&& window_info = m_pView->getEmulatorInfo(); @@ -332,11 +332,22 @@ std::pair asst::Assistance::get_format_image() cv::Mat cropped(cur_image, cv::Rect(x_offset, y_offset, width, height)); - // 调整尺寸,与资源中截图的标准尺寸一致 - cv::Mat dst; - cv::resize(cropped, dst, cv::Size(m_configer.DefaultWindowWidth, m_configer.DefaultWindowHeight)); +#ifdef _DEBUG + cv::imwrite("test.bmp", cur_image); +#endif // _DEBUG - double scale = static_cast(width) / m_configer.DefaultWindowWidth; + + //// 调整尺寸,与资源中截图的标准尺寸一致 + //cv::Mat dst; + //cv::resize(cropped, dst, cv::Size(m_configer.DefaultWindowWidth, m_configer.DefaultWindowHeight)); + + double scale_width = static_cast(width) / m_configer.DefaultWindowWidth; + double scale_height = static_cast(height) / m_configer.DefaultWindowHeight; + // 有些模拟器有可收缩的侧边,会增加宽度。 + // config.json中设置的是侧边展开后的offset + // 如果用户把侧边收起来了,则有侧边的那头会额外裁剪掉一些,长度偏小 + // 所以按这里面长、宽里大的那个算,大的那边没侧边 + double scale = std::max(scale_width, scale_height); - return { scale, dst }; + return { scale, std::move(cropped) }; } diff --git a/MeoAssistance/src/WinMacro.cpp b/MeoAssistance/src/WinMacro.cpp index 376b0f42fe..5517868d60 100644 --- a/MeoAssistance/src/WinMacro.cpp +++ b/MeoAssistance/src/WinMacro.cpp @@ -313,7 +313,7 @@ bool WinMacro::click(const Rect& rect) void asst::WinMacro::setControlScale(double scale) { if (m_is_adb) { - m_control_scale = scale * scale * Configer::DefaultWindowWidth / m_emulator_info.adb.display_width; + m_control_scale = scale * scale * m_emulator_info.adb.display_width / Configer::DefaultWindowWidth; } else { m_control_scale = scale; diff --git a/README.md b/README.md index 7ea597dadd..2f5861f70e 100644 --- a/README.md +++ b/README.md @@ -31,30 +31,33 @@ A game assistance for Arknights 瀹岀編鍏煎锛屼綔鑰呯粷澶ч儴鍒嗘祴璇曞潎鍦ㄨ摑鍙犱笂杩涜锛岀ǔ瀹氭ф渶鑳戒繚闅 +#### MuMu妯℃嫙鍣 + +瀹岀編鍏煎锛屼笓闂ㄥ崟鐙仛浜嗕竴濂楀熀浜巃db鐨勬帶鍒堕昏緫 + +#### MuMu鎵嬫父鍔╂墜锛堟槦浜戝紩鎿庯級 + +涓嶅吋瀹癸紝MuMu涓嶅搷搴擲endMessage榧犳爣娑堟伅锛岃屼笖杩欎釜鐗堟湰涓嶆敮鎸乤db鎺у埗锛屾鍦ㄦ兂鍔炴硶鈥︹ + #### 閫嶉仴妯℃嫙鍣 -瀹岀編鍏煎 +鍏煎锛岄渶瑕佹敹璧峰彸渚т晶杈规爮鍚庝娇鐢紝鏈鍋氭祴璇 #### 闆风數妯℃嫙鍣 -瀹岀編鍏煎锛岄渶瑕佹敹璧峰彸渚т晶杈规爮鍚庝娇鐢 +鍏煎锛岄渶瑕佹敹璧峰彸渚т晶杈规爮鍚庝娇鐢紝鏈鍋氭祴璇 #### 澶滅妯℃嫙鍣 -鍏煎锛屼絾杈呭姪寮濮嬪悗涓嶅彲鎿嶄綔妯℃嫙鍣ㄧ獥鍙 +鍏煎锛屾晥鏋滀笉澶ソ锛屼笖杈呭姪寮濮嬪悗涓嶅彲绉诲姩妯℃嫙鍣ㄧ獥鍙o紝涓嶆帹鑽愪娇鐢 #### 鑵捐鎵嬫父鍔╂墜 -鐞嗚涓婂畬缇庡吋瀹癸紝鏈鍋氭祴璇 +涓嶅吋瀹癸紝鑵捐涓嶆敮鎸佸彞鏌勭殑绐楀彛灏哄璋冭妭 -#### MuMu妯℃嫙鍣 +#### 鍏朵粬 -MuMu鏄釜濂囪懇锛屽畠鐨勬墍鏈夌殑绐楀彛鍙ユ焺鍧囦笉鍝嶅簲SendMessage榧犳爣娑堟伅 - -- MuMu妯℃嫙鍣 -瀹岀編鍏煎锛屼笓闂ㄥ崟鐙仛浜嗕竴濂楀熀浜嶢db鐨勬帶鍒堕昏緫 -- MuMu鎵嬫父鍔╂墜锛堟槦浜戝紩鎿庯級 -涓嶅吋瀹癸紝姝e湪鎯冲姙娉曗︹ +鑻ラ渶瑕佷娇鐢ㄥ叾浠栨ā鎷熷櫒銆佹垨涓婅堪涓嶅吋瀹圭殑妯℃嫙鍣ㄣ傛杩庣粰鎴戞彁[ISSUE](https://github.com/MistEO/MeoAssistance/issues)锛屼細鏍规嵁鎯呭喌灏介噺閫傞厤~ ## 浣跨敤璇存槑 @@ -62,14 +65,14 @@ MuMu鏄釜濂囪懇锛屽畠鐨勬墍鏈夌殑绐楀彛鍙ユ焺鍧囦笉鍝嶅簲SendMessage榧犳爣娑 1. 浣跨敤鏀寔鐨勬ā鎷熷櫒鎵撳紑鏄庢棩鏂硅垷 2. 瑙e帇鍘嬬缉鍖咃紝**浣跨敤绠$悊鍛樻潈闄**锛屾墦寮"MeoAsstGui.exe" -3. 娉ㄦ剰锛氳繍琛屾湡闂达紝妯℃嫙鍣ㄧ獥鍙e彲浠ヨ閬尅锛屽叏灞忕帺娓告垙銆佺湅瑙嗛绛夛紝瀹屽叏涓嶅奖鍝嶏紝浣嗘槸锛侊紒妯℃嫙鍣ㄤ笉鑳芥渶灏忓寲锛侊紒锛 +3. 娉ㄦ剰锛氳繍琛屾湡闂达紝妯℃嫙鍣ㄧ獥鍙e彲浠ヨ閬尅锛屽叏灞忕帺娓告垙銆佺湅瑙嗛绛夛紝瀹屽叏涓嶅奖鍝嶏紝浣嗘槸妯℃嫙鍣ㄤ笉鑳芥渶灏忓寲 ### 鍒风悊鏅 1. 鏄庢棩鏂硅垷鎵撳紑**钃濊壊寮濮嬫寜閽**鐨勭晫闈 -1. 鏍规嵁浣犵殑闇瑕佸嬀閫"鍚冪悊鏅鸿嵂"鍜"鍚冪煶澶" -2. 鐐瑰嚮"寮濮嬪埛鐞嗘櫤" -3. 鍒峰畬浜嗕細鑷姩鍋滄鐨 +2. 鏍规嵁浣犵殑闇瑕佸嬀閫"鍚冪悊鏅鸿嵂"鍜"鍚冪煶澶" +3. 鐐瑰嚮"寮濮嬪埛鐞嗘櫤"锛屽紑濮嬪悗涓婇潰鐨勯夐」涔熷彲浠ラ殢鏃朵慨鏀 +4. 鍒峰畬浜嗕細鑷姩鍋滄鐨 ### 璁块棶濂藉弸鍩哄缓 diff --git a/resource/config.json b/resource/config.json index f7f880fae5..4094567721 100644 --- a/resource/config.json +++ b/resource/config.json @@ -44,8 +44,8 @@ "window": "BlueStacks Android PluginAndroid" } ], - "width": 1294, - "height": 773, + "width": 1302, + "height": 776, "xOffset": 11, "yOffset": 46, "rightOffset": 11, @@ -70,10 +70,13 @@ "window": "澶滅妯℃嫙鍣" } ], - "width": 1298, - "height": 754, - "xOffset": 0, - "yOffset": 32 + "width": 1321, + "height": 768, + "xOffset": 2, + "yOffset": 39, + "rightOffset": 39, + "bottomOffset": 9 + }, "LDPlayer": { "window": [ @@ -98,8 +101,8 @@ "window": "TheRender" } ], - "width": 1304, - "height": 756, + "width": 1280, + "height": 755, "xOffset": 0, "yOffset": 35 }, @@ -128,8 +131,10 @@ ], "width": 1282, "height": 769, - "xOffset": 0, - "yOffset": 47 + "xOffset": 1, + "yOffset": 48, + "rightOffset": 1, + "bottomOffset": 1 }, "Tencent": { "window": [ @@ -156,7 +161,7 @@ ], "width": 1282, "height": 769, - "xOffset": 0, + "xOffset": 1, "yOffset": 42 }, "MuMuAsst": { @@ -178,10 +183,12 @@ "window": "鏄庢棩鏂硅垷 - 鏄熶簯寮曟搸" } ], - "adbControl": { + "adb": { "path": "[EmulatorPath]..\\vmonitor\\bin\\adb_server.exe", "connect": " connect 127.0.0.1:7555", - "click": " shell input tap [x] [y]" + "click": " shell input tap [x] [y]", + "display": " shell dumpsys window displays | grep init= | awk ' { print $3 } '", + "displayRegex": "cur=%dx%d" }, "width": 1280, "height": 809, @@ -218,7 +225,7 @@ "height": 809, "xOffset": 0, "yOffset": 36, - "rightBottom": 0, + "rightOffset": 0, "bottomOffset": 53 } },