From 9ac8c487d4e776a9b5ccbc962a7a44d73429ed13 Mon Sep 17 00:00:00 2001 From: status102 Date: Sat, 9 Sep 2023 14:01:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=BC=96=E9=98=9F=E6=97=B6=EF=BC=8C=E8=87=AA=E5=8A=A8=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=BD=8E=E4=BF=A1=E8=B5=96=E5=B9=B2=E5=91=98=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 32 +++++++++++ .../BattleQuickFormationFilter-Click2.png | Bin 0 -> 973 bytes .../BattleQuickFormationFilter-Trust.png | Bin 0 -> 797 bytes .../BattleQuickFormationTrustIcon.png | Bin 0 -> 2515 bytes src/MaaCore/Task/Interface/CopilotTask.cpp | 1 + .../Miscellaneous/BattleFormationTask.cpp | 53 +++++++++++++++++- .../Task/Miscellaneous/BattleFormationTask.h | 9 ++- src/MaaWpfGui/Main/AsstProxy.cs | 4 +- src/MaaWpfGui/Res/Localizations/en-us.xaml | 3 +- src/MaaWpfGui/Res/Localizations/ja-jp.xaml | 3 +- src/MaaWpfGui/Res/Localizations/ko-kr.xaml | 3 +- src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 3 +- src/MaaWpfGui/Res/Localizations/zh-tw.xaml | 3 +- .../ViewModels/UI/CopilotViewModel.cs | 13 ++++- src/MaaWpfGui/Views/UI/CopilotView.xaml | 33 ++++++++--- 15 files changed, 142 insertions(+), 18 deletions(-) create mode 100644 resource/template/BattleQuickFormationFilter-Click2.png create mode 100644 resource/template/BattleQuickFormationFilter-Trust.png create mode 100644 resource/template/BattleQuickFormationTrustIcon.png diff --git a/resource/tasks.json b/resource/tasks.json index f87b2ebd1f..238bc28075 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -6800,6 +6800,29 @@ ], "postDelay": 500 }, + "BattleQuickFormationFilter-Trust": { + "action": "ClickSelf", + "roi": [ + 1010, + 70, + 35, + 580 + ], + "postDelay": 500, + "next": [ + "BattleQuickFormationFilter-Click2" + ] + }, + "BattleQuickFormationFilter-Click2": { + "action": "ClickSelf", + "roi": [ + 1125, + 60, + 150, + 600 + ], + "postDelay": 500 + }, "BattleQuickFormationFilterClose": { "algorithm": "JustReturn", "action": "ClickRect", @@ -6811,6 +6834,15 @@ ], "postDelay": 500 }, + "BattleQuickFormationTrustIcon": { + "templThreshold": 0.9, + "roi": [ + 360, + 280, + 735, + 360 + ] + }, "BattleQuickFormationRole-All": { "baseTask": "BattleQuickFormationRole", "roi": [ diff --git a/resource/template/BattleQuickFormationFilter-Click2.png b/resource/template/BattleQuickFormationFilter-Click2.png new file mode 100644 index 0000000000000000000000000000000000000000..17756d6d6d48bf7532c0276603e9b0de4c86a6a0 GIT binary patch literal 973 zcmV;;12X)HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D17b-;K~!i%?U_qY z6Hyq3zv&IyQhI|3sDQKu1y@D^b)z*=FdCOGP5cKY{s0#yAi)a@;~(%RxOL+~!L2Cq z5+W27<3iq1KnU!o(*(@Aw*{w zLUe{9L}wU6bcP{BXVkTjn?XNKh68l2!$p#Ets2m$qs2xcpQEP!wP2?3y+_LHy5seo zA-X$wj0XG;TG-sBUpr~#PGunA@<|W99P6iWuaACi%M^)g_qUoPA|rmh9|Zyo|<^m*;%w_B;l z-AwHctGHGzb)As;^#sp2iAGq&DUV&u-mjdLRgI)z5O0OrXd)b>v+Yj$lg!Y}#|Yhj zv!Jv%2>JvR8Bice5_y}gl;g>e$`*K1?6*4#buA>G&eOuiE?G<_y3pkkQhNC@zn-ME zL`G@#9}MOVPR10=7%Gx6@qTH)K^Y(;$fA9UjAS-1t|J_^NU3WfU^|_oPk$3)v`0B9 zn8|}Y*x$EOye7y>D-57She4Z*J#^3dWKR3?LPMbyC zhm<_aNU^A+NU3`vU?-EO&zuU3+Qk!YQR72CJALEwwZaQEWZVwF3?o67QadyIRGf-N)r@l?6SU zi_rA!veNS)stj+lMZAy7oQ!CSGAu)-oD`HVIk%^|`)atK-#htS@nEEz9*%a4GLv9Y z7&t%giqvFODpN?2N0AXLBcm9X%`D_OEWEwoBrfv=SmU+nu=Wj;5ETf(?hCW<5+|j} zY$7|K8<32rbIY2^uyNaB8A!&Wh76G5T7^ZurKu<>T(>X@$|a@YgaB0v&L~(@R(KnX zGWCMfp~dMo2f2A*K~&DtVocVQp@Ma#R7$o`5WB!q8d3;=l*On_Td6F)i^M9*0J}V> zt|l}0$%&JDwu%Eru@p0xE~I0Vzq=IUFWf3|a(PQ}xk0*W0SUt?9;rmxD#iGP000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D00yOLfm#hz#EBv`2pWikh7B4;U%*NC137Y%1t~ZY9N0rqiXat4 zAwiI!ciy{}`{e1I6B*p@7dOiC3`nXYF z3!P2}gTcTu^rW#Cn(i7OABWfLh0o{1+uIvru^7_nH1{QF!@0RRY;A4v^Xlpf(P$L4 zS`F>?$1M$$las$hpBWk&!sg~CB9REcJU>5=g@py&-rk~ADhVlIW@ZLEJ39!4LYSJG zg45~5^z<|`nGEjl?}bzcl^;e&M|pEOX0w?$k-KAJVgh!%o#&)xGMQkr*@Q$Fl@cSbsZ;_2y$PbuG^zrP=Dw;TKW`v?RAuv)EXHk-J)xe*dwR7xm(DPqFm zFk56a8d)jj!r9rGkOG#LmiQpc%ga0-8yn+yDU=(H2G2>T?t}!D(M3_SwzkGmMvRP% zz~k{?b#;};5U)D2TIGjODbW%lDB~|KF4zJpGx2y_tbC113Au$zwR9?ZOD2;D27@>_IAEE9 zfq@U}^x+yD9ORE2HOaM_mQb;yT2w3+`SjE(m5Pw)KqZ7KKrWYiZzM;BRmp$wBk?!+ b2TFk7WcV_+i01xL00000NkvXXu0mjfhyiFL literal 0 HcmV?d00001 diff --git a/resource/template/BattleQuickFormationTrustIcon.png b/resource/template/BattleQuickFormationTrustIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..04804e131765d0cd8107813c4480d37ae8c0cc3b GIT binary patch literal 2515 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 literal 0 HcmV?d00001 diff --git a/src/MaaCore/Task/Interface/CopilotTask.cpp b/src/MaaCore/Task/Interface/CopilotTask.cpp index c2d133cc7c..e1a4ba1215 100644 --- a/src/MaaCore/Task/Interface/CopilotTask.cpp +++ b/src/MaaCore/Task/Interface/CopilotTask.cpp @@ -70,6 +70,7 @@ bool asst::CopilotTask::set_params(const json::value& params) bool with_formation = params.get("formation", false); m_formation_task_ptr->set_enable(with_formation); + m_formation_task_ptr->set_add_trust(params.get("add_trust", false)); std::string support_unit_name = params.get("support_unit_name", std::string()); m_formation_task_ptr->set_support_unit_name(std::move(support_unit_name)); diff --git a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp index 9ef91b048a..b7216c0734 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp @@ -10,6 +10,7 @@ #include "Task/ProcessTask.h" #include "Utils/ImageIo.hpp" #include "Utils/Logger.hpp" +#include "Vision/MultiMatcher.h" #include "Vision/TemplDetOCRer.h" void asst::BattleFormationTask::append_additional_formation(AdditionalFormation formation) @@ -22,6 +23,11 @@ void asst::BattleFormationTask::set_support_unit_name(std::string name) m_support_unit_name = std::move(name); } +void asst::BattleFormationTask::set_add_trust(bool add_trust) +{ + m_add_trust = add_trust; +} + void asst::BattleFormationTask::set_data_resource(DataResource resource) { m_data_resource = resource; @@ -70,7 +76,9 @@ bool asst::BattleFormationTask::_run() } add_additional(); - + if (m_add_trust) { + add_trust_operators(); + } confirm_selection(); // 借一个随机助战 @@ -85,6 +93,7 @@ bool asst::BattleFormationTask::_run() bool asst::BattleFormationTask::add_additional() { + // (但是干员名在除开获取时间的情况下都会被遮挡,so ? LogTraceFunction; if (m_additional.empty()) { @@ -128,6 +137,46 @@ bool asst::BattleFormationTask::add_additional() return true; } +bool asst::BattleFormationTask::add_trust_operators() +{ + LogTraceFunction; + + if (need_exit()) { + return false; + } + + ProcessTask(*this, { "BattleQuickFormationFilter" }).run(); + // 双击信赖 + ProcessTask(*this, { "BattleQuickFormationFilter-Trust" }).run(); + ProcessTask(*this, { "BattleQuickFormationFilterClose" }).run(); + + // 重置职能,保证处于最左 + click_role_table(battle::Role::Caster); + click_role_table(battle::Role::Unknown); + int append_count = 12 - m_operators_in_formation; + int failed_count = 0; + while (!need_exit() && append_count > 0 && failed_count < 3) { + MultiMatcher matcher(ctrler()->get_image()); + matcher.set_task_info("BattleQuickFormationTrustIcon"); + if (!matcher.analyze() || matcher.get_result().size() == 0) { + failed_count++; + } + else { + failed_count = 0; + for (const auto& trust_icon : matcher.get_result()) { + // 匹配完干员左下角信赖表,将roi偏移到整个干员标 + ctrler()->click(trust_icon.rect.move({ 20, -225, 110, 250 })); + if (--append_count <= 0 || need_exit()) { + break; + } + } + } + swipe_page(); + } + + return append_count == 0; +} + bool asst::BattleFormationTask::select_random_support_unit() { return ProcessTask(*this, { "BattleSupportUnitFormation" }).run(); @@ -289,6 +338,7 @@ bool asst::BattleFormationTask::parse_formation() groups = &SSSCopilot.get_data().groups; } + m_operators_in_formation = 0; for (const auto& [name, opers_vec] : *groups) { if (opers_vec.empty()) { continue; @@ -303,6 +353,7 @@ bool asst::BattleFormationTask::parse_formation() // for unknown, will use { "BattleQuickFormationRole-All", "BattleQuickFormationRole-All-OCR" } m_formation[same_role ? role : battle::Role::Unknown].emplace_back(opers_vec); + m_operators_in_formation++; } callback(AsstMsg::SubTaskExtraInfo, info); diff --git a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h index 0448cb43f1..1112b40026 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h +++ b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h @@ -25,6 +25,7 @@ namespace asst void append_additional_formation(AdditionalFormation formation); void set_support_unit_name(std::string name); + void set_add_trust(bool add_trust); enum class DataResource { @@ -37,8 +38,10 @@ namespace asst using OperGroup = std::vector; virtual bool _run() override; - + // 追加附加干员(按部署费用等小分类) bool add_additional(); + // 补充刷信赖的干员,从最小的开始 + bool add_trust_operators(); bool enter_selection_page(); bool select_opers_in_cur_page(std::vector& groups); @@ -53,6 +56,10 @@ namespace asst std::string m_stage_name; std::unordered_map> m_formation; + // 编队中干员个数 + int m_operators_in_formation = 0; + // 是否需要追加信赖干员 + bool m_add_trust = false; std::string m_support_unit_name; DataResource m_data_resource = DataResource::Copilot; std::vector m_additional; diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 1bc09d0ac9..a465231f7a 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -1792,15 +1792,17 @@ namespace MaaWpfGui.Main /// /// 作业 JSON 的文件路径,绝对、相对路径均可。 /// 是否进行 “快捷编队”。 + /// 是否追加信赖干员 /// 任务类型 /// 任务重复执行次数 /// 是否成功。 - public bool AsstStartCopilot(string filename, bool formation, string type, int loop_times) + public bool AsstStartCopilot(string filename, bool formation, bool add_trust, string type, int loop_times) { var task_params = new JObject { ["filename"] = filename, ["formation"] = formation, + ["add_trust"] = add_trust, ["loop_times"] = loop_times, }; AsstTaskId id = AsstAppendTaskWithEncoding(type, task_params); diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index 28cd5dffc0..5fb22f19a3 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -438,8 +438,9 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla An error occurred, the like failed. : < Thanks for the likes!\nThe comment section is already open on the web page, please feel free to leave your comment! Auto Squad - Loop Times 「Favourite」 marked operators cannot be recognized at this time + Add low-trust operators + Loop Times Start Video Link diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 48cc148b67..0b530d0563 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -429,8 +429,9 @@ エラーが発生しました、いいねに失敗しました。 : < 感謝と評価!\nウェブページには既にコメント欄が開放されており、あなたのコメントを心待ちにしています! 自動編成 - ループ回数 自動編成では、一時的に「戦術要員」オペレーターを認識できません + 信頼性の低いオペレーターを追加する + ループ回数 開始 映像へのハイパーリンク diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index 9da0827039..728849fe9d 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -441,8 +441,9 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요. 오류로 인해 평가에 실패했습니다 : < 감사합니다!\n웹사이트에 댓글을 남길 수도 있으니 의견을 남겨 주세요! 자동 편성 - 반복 횟수 자동 편성은 '선호' 오퍼레이터를 인식할 수 없습니다 + 신뢰도가 낮은 운영자 추가 + 반복 횟수 시작 영상 링크 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index efed7f68a5..095f85f5c0 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -442,8 +442,9 @@ 出现错误,评价失败 : < 感谢评价!\n网页已经开放评论区,欢迎前往留下你的评论! 自动编队 - 循环次数 自动编队暂时无法识别「特别关注」的干员 + 补充低信赖干员 + 循环次数 开始 视频链接 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 14d861340d..a0a4238abc 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -441,8 +441,9 @@ 出現錯誤,評價失敗 : < 感謝評價!\n網頁已經開放評論區,歡迎前往留下你的評論! 自動編隊 - 循環次數 自動編隊暫時無法辨識「特別關注」的幹員 + 補充低信賴幹員 + 循環次數 開始 影片連結 diff --git a/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs b/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs index eac117dbe7..857797c0f2 100644 --- a/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs @@ -462,6 +462,17 @@ namespace MaaWpfGui.ViewModels.UI set => SetAndNotify(ref _form, value); } + private bool _addTrust; + + /// + /// Gets or sets a value indicating whether to use auto-formation. + /// + public bool AddTrust + { + get => _addTrust; + set => SetAndNotify(ref _addTrust, value); + } + public bool Loop { get; set; } private int _loopTimes = int.Parse(ConfigurationHelper.GetValue(ConfigurationKeys.CopilotLoopTimes, "1")); @@ -517,7 +528,7 @@ namespace MaaWpfGui.ViewModels.UI AddLog(errMsg, UiLogColor.Error); } - bool ret = Instances.AsstProxy.AsstStartCopilot(IsDataFromWeb ? TempCopilotFile : Filename, Form, _taskType, + bool ret = Instances.AsstProxy.AsstStartCopilot(IsDataFromWeb ? TempCopilotFile : Filename, Form, AddTrust, _taskType, Loop ? LoopTimes : 1); if (ret) { diff --git a/src/MaaWpfGui/Views/UI/CopilotView.xaml b/src/MaaWpfGui/Views/UI/CopilotView.xaml index 12dc4e0c1f..de98422c54 100644 --- a/src/MaaWpfGui/Views/UI/CopilotView.xaml +++ b/src/MaaWpfGui/Views/UI/CopilotView.xaml @@ -70,15 +70,30 @@ Content="{DynamicResource SelectTheFile}" IsEnabled="{Binding Idle}" ToolTip="{DynamicResource SelectTheFileTip}" /> - + + + + + + + + + +