diff --git a/README.md b/README.md index 72f5834a39..dd33da62ef 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,23 @@ # MeoAssistance +
+ C++ + VS +
+
+ platform +
+
+ license + commit + stars +
+
+ A game assistance for Arknights -一款明日方舟的游戏辅助,供PC端安卓模拟器使用,也勉强兼容安卓手机,龟速开发中…… +一款明日方舟的游戏辅助,供PC端安卓模拟器使用,也勉强兼容安卓手机,绝赞开发中…… +
![界面截图](images/gui.png) ![公招截图](images/openRecruit.png) @@ -15,8 +30,8 @@ A game assistance for Arknights ## 功能介绍 - 自动刷理智 - - **新功能:支持刷完自动上传[企鹅物流数据统计](https://penguin-stats.cn/)**(测试版) - - **新功能:界面支持统计掉落数量**(测试版) + - **新功能:支持刷完自动上传[企鹅物流数据统计](https://penguin-stats.cn/)** + - **新功能:界面支持统计掉落数量** - 可设置是否吃完理智药及数量 - 可设置是否吃石头及数量 - 可设置刷的次数(用来刷剿灭啥的) @@ -157,8 +172,8 @@ A game assistance for Arknights - [x] 支持所有主流模拟器 - [ ] 基建智能换班功能 - [ ] 图形化界面 - - [x] 干员及精英化识别 - - [ ] 干员识别准确率提高到100% + - [x] 干员技能识别 + - [x] 干员识别准确率提高到100% - [x] 宿舍心情识别及入驻 - [x] 制造站、贸易站智能换班 - [x] 发电站、办公室换班 diff --git a/images/gui.png b/images/gui.png index 8622a48885..8dd86e519e 100644 Binary files a/images/gui.png and b/images/gui.png differ diff --git a/src/MeoAssistance/Controller.cpp b/src/MeoAssistance/Controller.cpp index c5b98899f1..f9b7b680aa 100644 --- a/src/MeoAssistance/Controller.cpp +++ b/src/MeoAssistance/Controller.cpp @@ -197,6 +197,39 @@ bool Controller::try_capture(const EmulatorInfo& info, bool without_handle) m_emulator_info = info; adb_dir = '"' + utils::string_replace_all(m_emulator_info.adb.path, "[ExecDir]", utils::get_cur_dir()) + '"'; } + + // 针对雷电模拟器连接问题的专用补丁 + if (m_emulator_info.handle.class_name == "LDPlayerMainFrame") { + log.trace("LDPlayer Connection Patch Activated."); + std::string connect_cmd = utils::string_replace_all("[Adb] devices", "[Adb]", adb_dir); + auto devices_result = call_command(connect_cmd); + std::string devices_list( + std::make_move_iterator(devices_result.begin()), + std::make_move_iterator(devices_result.end())); + // 查找连接的所有设备 + std::string device = {}; + + if (devices_list.find("emulator") != devices_list.npos) { + device = devices_list.substr(devices_list.find("emulator"), 13); + m_emulator_info.adb.connect = ""; + } + else if (devices_list.find("127") != devices_list.npos) { + device = devices_list.substr(devices_list.find("127"), 14); + } + + if (device.empty()) { + log.trace("no device detected."); + return false; + } + + log.trace("device detected: ", device); + + m_emulator_info.adb.connect = utils::string_replace_all(m_emulator_info.adb.connect, "127.0.0.1:5555", device); + m_emulator_info.adb.click = utils::string_replace_all(m_emulator_info.adb.click, "-e", "-s " + device); + m_emulator_info.adb.swipe = utils::string_replace_all(m_emulator_info.adb.swipe, "-e", "-s " + device); + m_emulator_info.adb.display = utils::string_replace_all(m_emulator_info.adb.display, "-e", "-s " + device); + m_emulator_info.adb.screencap = utils::string_replace_all(m_emulator_info.adb.screencap, "-e", "-s " + device); + } std::string connect_cmd = utils::string_replace_all(m_emulator_info.adb.connect, "[Adb]", adb_dir); auto&& [connect_ret, connect_result] = call_command(connect_cmd); diff --git a/src/MeoAssistance/MatchImageAnalyzer.cpp b/src/MeoAssistance/MatchImageAnalyzer.cpp index 25b62fa908..9574dcf3bf 100644 --- a/src/MeoAssistance/MatchImageAnalyzer.cpp +++ b/src/MeoAssistance/MatchImageAnalyzer.cpp @@ -85,8 +85,8 @@ bool asst::MatchImageAnalyzer::match_templ(const cv::Mat& templ) bool asst::MatchImageAnalyzer::comp_hist(const cv::Mat& hist, const cv::Rect roi) { - cv::Mat roi_image = m_image(utils::make_rect(m_roi))(roi); - double score = 1.0 - cv::compareHist(to_hist(roi_image), hist, cv::HISTCMP_BHATTACHARYYA); + cv::Mat image_roi = m_image(utils::make_rect(m_roi))(roi); + double score = 1.0 - cv::compareHist(to_hist(image_roi), hist, cv::HISTCMP_BHATTACHARYYA); if (score > 0.7) { // 得分太低的肯定不对,没必要打印 log.trace("comp_hist |", m_templ_name, "score:", score); diff --git a/src/MeoAsstGui/Helper/ViewStatusStorage.cs b/src/MeoAsstGui/Helper/ViewStatusStorage.cs index f1f0f07ac3..403f46d5cd 100644 --- a/src/MeoAsstGui/Helper/ViewStatusStorage.cs +++ b/src/MeoAsstGui/Helper/ViewStatusStorage.cs @@ -9,7 +9,7 @@ namespace MeoAsstGui public class ViewStatusStorage { private static string _configFilename = System.Environment.CurrentDirectory + "\\gui.json"; - private static JObject _viewStatus; + private static JObject _viewStatus = new JObject(); public static string Get(string key, string defalut_value) { @@ -36,6 +36,11 @@ namespace MeoAsstGui { string jsonStr = sr.ReadToEnd(); _viewStatus = (JObject)JsonConvert.DeserializeObject(jsonStr); + // 文件存在但为空,会读出来一个null,感觉c#这库有bug + if (_viewStatus == null) + { + _viewStatus = new JObject(); + } } } catch (Exception)