From a5dfc573dd8e8de55287651eafdfda2d72d86690 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Mon, 8 Dec 2025 19:48:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BC=9A=E5=AE=A2?= =?UTF-8?q?=E5=AE=A4=E5=BF=AB=E6=8D=B7=E7=BD=AE=E5=85=A5=E7=BA=BF=E7=B4=A2?= =?UTF-8?q?=E4=B8=8E=E4=B8=80=E9=94=AE=E8=B5=A0=E9=80=81=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E7=BA=BF=E7=B4=A2=20(#14966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 支持会客室快捷置入线索与一键赠送重复线索 * docs: 更新文档 * chore: Auto update by pre-commit hooks [skip changelog] * i18n: JP * chore: Auto update by pre-commit hooks [skip changelog] * i18n: sourcery ai suggestion Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> * i18n: KR * chore: 增加被注入的日志记录 --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Manicsteiner Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com> Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: HX3N --- .../manual/introduction/infrastructure.md | 2 +- .../manual/introduction/infrastructure.md | 10 +++++----- .../manual/introduction/infrastructure.md | 2 +- .../manual/introduction/infrastructure.md | 2 +- .../manual/introduction/infrastructure.md | 2 +- resource/tasks/tasks.json | 15 +++++++++++++-- .../Clue/InfrastClueQuickInsert.png | Bin 0 -> 1540 bytes .../Clue/InfrastClueQuickSendDuplicates.png | Bin 0 -> 5626 bytes .../template/InfrastPic/Clue/SendClues.png | Bin 1410 -> 1119 bytes .../Task/Infrast/InfrastReceptionTask.cpp | 15 ++++++++++++++- src/MaaWpfGui/Utilities/BadModules.cs | 3 +++ 11 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 resource/template/InfrastPic/Clue/InfrastClueQuickInsert.png create mode 100644 resource/template/InfrastPic/Clue/InfrastClueQuickSendDuplicates.png diff --git a/docs/en-us/manual/introduction/infrastructure.md b/docs/en-us/manual/introduction/infrastructure.md index 6b35c63e55..f761a2ae0e 100644 --- a/docs/en-us/manual/introduction/infrastructure.md +++ b/docs/en-us/manual/introduction/infrastructure.md @@ -21,7 +21,7 @@ icon: material-symbols:view-quilt-rounded - Unrecognizable examples: `Rosmontis System`, `Pinus Sylvestris Knights`. - When `Drone Usage` is set to `Trading Post - LMD`, the `Shamare Group` will be prioritized. - Reception Room selects operators with corresponding clue affinity when only one clue type is missing; otherwise selects generic operators. -- Reception Room only sends clues when your collection is full, and sends only three at a time. To customize the number sent, modify the `ClueSelected` - `maxTimes` field in `resource/tasks/tasks.json` in the MAA directory. +- The Reception Room will attempt to send clues on every rotation. The Official (and Bilibili) clients added a "One‑click Send Duplicate Clues" feature on 2025-12-05: when MAA detects this button, it will automatically click it to batch-send duplicate clues; EN/JP/KR are expected to support this feature in about 6 months, and TW in about 1 year (TW may get it earlier due to accelerated updates). - Enabling `Do not place stationed operators in dormitory` prevents operators like `Irene` and `Logos` from being assigned to dormitories when not training in the Training Room, but also prevents operators with low morale in the Processing Station from being moved to dormitories. - Control Center strategy is complex; currently only considers `Amiya`, `Swire`, `Kal'tsit`, `Team Rainbow`, and other operators with +0.05 morale bonus. This will be gradually optimized. - You can select which facility types MAA should manage (all are selected by default). diff --git a/docs/ja-jp/manual/introduction/infrastructure.md b/docs/ja-jp/manual/introduction/infrastructure.md index 4f81648716..76947bad57 100644 --- a/docs/ja-jp/manual/introduction/infrastructure.md +++ b/docs/ja-jp/manual/introduction/infrastructure.md @@ -21,14 +21,14 @@ icon: material-symbols:view-quilt-rounded - 非対応例:`ローズモンティス体系`、`レッドパイン騎士団` - `ドローン用途` で `貿易所-龍門幣` を選択している場合、`シャマレグループ` を優先して判別・使用します - 応接室で手がかりの不足が1種類のみの場合は、該当傾向のオペレーターを選択。それ以外は汎用オペレーターを選択します -- 自施設の手がかりが満杯の時のみ手がかりを送付します(最大3個)。個数は MAA フォルダ内 `resource/tasks/tasks.json` の `ClueSelected` - `maxTimes` を編集してください -- `配置済みオペレーターを寮に入れない` 設定により、`アイリーニ` や `ロゴス` などが訓練に未配置の際の寮入りを防止できます(ただし、加工施設でコンディション不足のオペレーターも移動しなくなります) -- 中枢システムの戦略は複雑なため、現時点では `アーミヤ`、`スワイヤー`、`ケルシー`、`レインボー小隊` およびコンディション +0.05 のオペレーターのみを考慮しています。順次最適化予定です +- 応接室は各シフト時に必ず手がかりの送付を試みます。公式(Official、およびBilibili)クライアントは2025-12-05に「重複手がかりをワンクリックで送る」機能を追加しました。該当ボタンを検出した場合、MAAは自動でクリックして重複手がかりをまとめて送信します。EN/JP/KRは約6か月後、TWは約1年後に対応予定です(TWは開発進捗により早まる可能性があります)。 +- `配置済みオペレーターを寮に入れない` 設定により、`アイリーニ` や `ロゴス` などが訓練に未配置の際の寮入りを防止できます(ただし、加工施設で体力不足のオペレーターも移動しなくなります) +- 制御中枢の戦略はあまりにも複雑で、現時点では `アーミヤ`、`スワイヤー`、`ケルシー`、`レインボー小隊` および体力 +0.05 回復のオペレーターのみを考慮しています。順次最適化予定です - MAA が処理する対象施設は選択可能です(デフォルトは全選択) -## キューのローテーション +## シフト交代 -- このモードは、まずゲーム内でプリセットキューを設定しておく必要があります。MAA が自動でローテーションを行います。 +- このモードは、まずゲーム内でプリセットシフトを設定しておく必要があります。MAA が自動で交代を行います。 ## 基地シフトのカスタマイズ diff --git a/docs/ko-kr/manual/introduction/infrastructure.md b/docs/ko-kr/manual/introduction/infrastructure.md index 023751d07c..4de96e8828 100644 --- a/docs/ko-kr/manual/introduction/infrastructure.md +++ b/docs/ko-kr/manual/introduction/infrastructure.md @@ -21,7 +21,7 @@ icon: material-symbols:view-quilt-rounded - 인식 불가 예시: `로즈몬티스 체계`, `피누스 실베스트리스` - `드론 사용처`가 `무역소-용문폐`로 지정되어 있을 경우, `샤마르`를 인식하고 드론을 아껴둘 것입니다. - 응접실에서 단 한 종류의 단서가 부족하다면 해당 진영의 오퍼레이터가 선택됩니다. 그렇지 않은 경우 일반적인 오퍼레이터가 선택됩니다. -- 응접실이 꽉 차 있을 때만 단서를 내보낼 것입니다. 최대 3개의 단서가 전달됩니다. `resource/tasks/tasks.json`에서 `ClueSelected`-`maxTimes` 필드를 수정해 단서의 전달 개수를 조절할 수 있습니다. +- 응접실은 매 작업마다 단서를 전달하려고 시도합니다. 공식(Official, Bilibili) 클라이언트는 2025-12-05에 '중복 단서를 한 번에 보내기' 기능을 추가했습니다. 해당 버튼이 감지되면 MAA가 자동으로 클릭하여 중복 단서를 일괄 전달합니다. EN/JP/KR은 약 6개월 내 지원될 예정이며, TW는 약 1년 후 지원될 예정입니다. (대만 서버는 진행 상황에 따라 더 빨리 지원될 수 있습니다) - `아이린`, `로고스`나 다른 오퍼레이터가 당장 업무 중이 아니라는 이유로 숙소로 보내지는 것을 원치 않는다면, `업무중인 오퍼레이터 숙소 배치 제한` 옵션을 활성화할 수 있습니다. 단, 컨디션이 0이 아닌 한 어떤 오퍼레이터도 숙소로 들어오지 못하게 되는 문제를 불러올 수도 있습니다. - 제어 센터의 복잡성으로 인해서, `아미야`, `스와이어`, `켈시`, `레인보우 팀`과 기타 시간당 컨디션 +0.05 오퍼레이터만이 고려됩니다. 향후 개선될 예정입니다. - 필요한 시설 유형만 선택해 MAA가 처리하도록 할 수 있습니다. 기본값은 모두 선택되어있습니다 diff --git a/docs/zh-cn/manual/introduction/infrastructure.md b/docs/zh-cn/manual/introduction/infrastructure.md index 02069ae366..6633a22c04 100644 --- a/docs/zh-cn/manual/introduction/infrastructure.md +++ b/docs/zh-cn/manual/introduction/infrastructure.md @@ -21,7 +21,7 @@ icon: material-symbols:view-quilt-rounded - 不可识别并使用的例子:`迷迭香体系`、`红松骑士团`。 - 若 `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。 - 会客室仅缺一个线索时,会选择对应线索倾向的干员,其余情况选择通用干员。 -- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks/tasks.json` 中的 `ClueSelected` - `maxTimes` 字段。 +- 会客室每次换班都会尝试赠送线索。国服(Official, BiliBili)在 2025-12-05 新增了 「一键赠送重复线索」 功能:当检测到该按钮时,MAA 会自动点击以批量赠送重复线索;EN/JP/KR 预计约 6 个月后会支持该功能,TW 预计约 1 年后支持(由于台服正在赶进度可能会更早支持)。 - 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮`、`逻各斯` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。 - 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 - 可自行选择需要 MAA 处理的设施类别,默认全选。 diff --git a/docs/zh-tw/manual/introduction/infrastructure.md b/docs/zh-tw/manual/introduction/infrastructure.md index bfc48c4104..1480b67837 100644 --- a/docs/zh-tw/manual/introduction/infrastructure.md +++ b/docs/zh-tw/manual/introduction/infrastructure.md @@ -21,7 +21,7 @@ icon: material-symbols:view-quilt-rounded - 不可識別並使用的例子:`迷迭香體系`、`紅松騎士團`。 - 若 `無人機用途` 選擇 `貿易站-龍門幣`,則會額外識別 `巫戀組` 並優先為其使用。 - 會客室僅缺一個線索時,會選擇對應線索傾向的幹員,其餘情況選擇通用幹員。 -- 會客室僅當自有線索滿時才會送出線索,並且只送三個。如需自訂單次送線索個數可修改 MAA 資料夾下 `resource/tasks/tasks.json` 中的 `ClueSelected` - `maxTimes` 欄位。 +- 會客室每次換班都會嘗試贈送線索。國服(Official、Bilibili)於 2025-12-05 新增「一鍵贈送重複線索」功能:偵測到該按鈕時,MAA 會自動點擊以批量贈送重複線索;EN/JP/KR 預計約 6 個月後支援,TW 預計約 1 年後支援(由於台服正在趕進度,可能會較早支援)。 - 開啟 `不將已進駐的幹員放入宿舍` 設定項可避免 `艾麗妮`、`邏各斯` 等幹員在訓練室未訓練時被進駐到宿舍,但同時也不會將加工站中心情不滿的幹員進駐宿舍。 - 控制中樞策略太過複雜,目前只考慮 `阿米婭`、`詩懷雅`、`凱爾希`、`彩虹小隊` 及其他心情 +0.05 的幹員,後續逐步優化。 - 可自行選擇需要 MAA 處理的設施類別,預設全選。 diff --git a/resource/tasks/tasks.json b/resource/tasks/tasks.json index 5bb9782cc5..d028e02dbd 100644 --- a/resource/tasks/tasks.json +++ b/resource/tasks/tasks.json @@ -3151,6 +3151,17 @@ "templThreshold": 0.9, "roi": [200, 600, 700, 120] }, + "InfrastClueQuickInsert": { + "Doc": "快速置入:官服新增的批量置入线索按钮模板占位", + "action": "ClickSelf", + "roi": [1058, 572, 148, 148] + }, + "InfrastClueQuickSendDuplicates": { + "Doc": "快速传递重复线索:批量传递重复线索按钮模板占位", + "action": "ClickSelf", + "roi": [34, 559, 154, 161], + "next": ["CloseSendClue"] + }, "ReceptionFlag": { "roi": [350, 0, 200, 100] }, @@ -3174,10 +3185,10 @@ }, "SendClues": { "action": "ClickSelf", - "roi": [1157, 346, 84, 81], + "roi": [1160, 320, 80, 90], "maskRange": [1, 255], "postDelay": 1000, - "next": ["SelectClue", "CloseSendClue"] + "next": ["InfrastClueQuickSendDuplicates", "SelectClue", "CloseSendClue"] }, "SelectClue": { "action": "ClickSelf", diff --git a/resource/template/InfrastPic/Clue/InfrastClueQuickInsert.png b/resource/template/InfrastPic/Clue/InfrastClueQuickInsert.png new file mode 100644 index 0000000000000000000000000000000000000000..9d213597d04561eb4abc7ca67b31b404b380bcc2 GIT binary patch literal 1540 zcmV+f2K)JmP)cMPpcB}H$ty(Ld;2bJ>AP@CUzEPvTXwXNGOV}1Qb@LpoAX!0{oN1e_dVx) zf4>MuOvJw`BBp_+fu^k=@;1pzztYrZ_0{DrC$oZe+NsPJM!+= z{+KEtJRwS2w8PMO)uzB4gxF$N6(rF#0d_49+r%pD+|5NtUPQaRcApUo2%~(AoVAx9zBR^i!?b6GQofW){ zm6HdwCqiEQxn0Bex}DUYCmm*p0KYq}HrXRd{)eOb3lB(99_P|4Q1YRCG15UjhFB#3#zzIB_7s@wc5iDY{||U6s77 zRajgkKYO*lt<38Qu*G&I&P`t)G7uC6tUDxZfm|cf3}SUe!$~u*S#o9zlQxT!wp>$_ z;WDY8-aBLWH3luhABaGz%4AS6A`R$9aC9w)zD#)~-Xd&ORU|QEX0nnONeZ@EWe=ay zzNNQlM`%E-{R^O65ot)PQU3F8j5Zto4OZfU-hz)z-PZ>i^MMbGe@>9Q9+Efi6^o=3 z+ZP!EkfMx+*l)ZpyQcOKo-hw+e1Y$KUT}1szO}@RHwaI>%Z!`F%YMD@w_~KuI_#Ka(#X0bbx+Zf-*b1GR88d_P&5L#oZ|sZu_HzG7p$1~p zmy#|U1q4XdDsBgHKpRxw$Y4C9j9Dp*q=nmIdJy#|2AT>;`#*Xn3_chsNI<=XA5&Ko zNL7%t4#c7QHPtHZhV8%-<^*O+oNrgLJr=zO_RH%XS8l@G4M;$m+eavXq$Qt$R6!XK zc=AH&g&k(jJ!4lTH*@^7!s4SKF%-#Gl*J$c=^p$-0rXfF#k+uJRKih$BWnyDBXIvp4PsbS?ttkpRWLIaWh_X^zl(vP*>BDM6D=`4Z0Ro7U#fAkP^|^_iajC-*yRR zxQ_`^rK(Ov0g{~i011e9cs2Dx4mG#u#Cwd`8SrgM;Wn`M(DcmgJHp)cKA_$Up9G}= zbHYxJMgn5)jdW@y6r)sD@&)!pH{i%%cf6$MN%cA4umPt4_+9s)G$@co*aGE=1O!3c zJ@ss#nvL(D2VaHmJS4d9D${SVz^Pp|a z4`i6U{+UHN4cTc+LjVGEqYu=t6_;auG|H-E>NHS4F#bS-p*cq0!4=~SsDlu353OXS zMyszMaGClhOk-DbS@gxIj?vFVn<2jx<0VPIdTt*UD30PaSyT zy#6uj)_0T-30g?U&~O-!>RKAOfQg^WSo9_O_A=jEAR16{I5horxo~F^?opck?aRcy zGsEFMq|2_ZNoS=jo}9}DHhqcwa*W%co)`@rlB5?th1^W$?FXJXSCI3Tw(-30IsyHJ zMBK>}9$Sa+jhccBE80x(|2-!+0+yp+NR0wV0BANnxf|FiFZf2p6abALaR7^#y;^j7 zv${G>+gxaRR6B^*Lm0ZNiKcuojXkF}akExIPY0ARZ_v;K$Yz5q*z{%KUpWU?K)_jy qMPG{VpAXRgr(4)*plP809?;(@W@<$Nd1ng%0000vP)000%iNkl6z8mc^1(C@0-?Qw9e>#4F*GS$7cLU$Z&4n0Yd;#3Nf zB$3j&vUSg%k{iZLJEI*pP-OYgge^<*m7TF0CAzAZs**}+no4ukf-Fnx1215IP2n!y zTT2b!WNG8PuQZ8|=0f+$5ej$Wu0Dwej~77`L}^5J1j! zXco-_bz6PnH+~OQRt7#8ny*+-F4Rkgc6n!fb!WWo1i%iJIjn4Icxq=HhG|-}^rMqy z+t7e)YZMOs2r&TBC``b#t*dG#J!U>QQQTX#5W4F|ju0^sMwPjwaS)H$J`?3Yy>NK4 z=tePS!Vs+CVi8^*_@VY6=i9m_TZ$4!$;Qy%S1VL4ZC|zE$MGnPCT#=9wMW6Z_KL>NR;U&9fftV0D^0m$al$U>3aDs10k>!9 z;b+=&L%vZrWZlAa&EbfE>jK?d+Y+$bKNw6AvE zje*ZrWnG!6m_P&v9lz00mHY_gl`?RNpeg7oFrBSfK`gxA_ae3;T6r@LV?N|pe&$eF zs9Bb(+!%OmH`pHg+>Wo=b{Gg#vW&fPqvnZ#R|#j{?06w(un0r4>QcwubOKvf8n)4O zLn0An5GLOXhhjXu10F7SMz{x&Swk=qZGKF|_@fXgtM~6Iky75@axU$-7!<`gMOP$* zCioB+SYv{PN`W`)L%%ihw^P!BI7>-o4QuVV(W}?H$OKM(DZ!!-OqZP?dVOW5=Z6g& zn}k_t@>7vyjMprgvt{!_XQbivm7dF9s4!PH2VM+xj<57VwwkDVl4yy- zSHJ>5u>h;$N=_xnPHzv;G?m5HwyM^PNFeQam{PV>b*^G^-sadp(;cBd$-$82nyKTH zYC$K+TH}DV`>MwNdg0Q}_;S}(RoT`QO_NY+97X*=4dX;U`Zqrs_%YfvOUC`vrHgHs za3;rMdJK%{m=?%|X@WgiMizKzwt|m9*l$0&@9<r|iBPfwniU_mBr)@Es}ifw?l6 zJ#ifs63dW@N6uT#9E81oez9RFv!6dOL5d~RsJiFdBRu9uaigF=&@4YbUn}d{=E&!Te;pyT2q}%j zPOSE`51EM@%DNGfOT`6CD`rsFj>_J&fPzEpxcoSyIsZ-7{ARH7MtfuiDhNN7+ zvpz(2*6}I39i1xangj;Wgr)Tig#h#P`heV_HgXp(y$oUQiU;Qj5Pn{f?`D37>7q8O;E@DUr?rUp$U zN4&Q=$O}Aqn<}iy>aB=Kv3_Queh)GrNkn_^M9(RXoo-y>;?uES6fCq;oclPU=l5z!#vShEZn z!Bj!$OPMIPLV&05Zw(O_@WH!EmVU5dV`DyK3vhXxB2rF3KN${i;mV4o?=4znIuZ!N zumBqi?p)Mm!WGIMBfJ8OOaKb?27H`c9d5fJu$wHJuu;+#m6TPv$FVi9+YvEJ&=z?T ztfh*qhsPlUG6!%7ak9T^w@1GAn-9-^Jph^6_y^DZ@lJW-sQo(b6DGSj*NTL{6f%qZRQ}dPc9T$Xs>ChyM{+p-Pd@n%^ zRTkL+{E9?_tSVSe3`IUNSp*vx`!+?~a(pU2a9^A#KsA;#h5_M6bTSd>bi9a^shwVT z4%e&$Wpm37VPz}BV4Q&r<3Bt{gQC81wTE3vWFW@Wv>>J}93ki5~G9!_+LHX7mtk^B6t3)<3&FEL$3#6INt5Fc!tBsCkmCvi0MC_xe{JoyTb> zHV9k6GT?%c2P_XgtD4%4z6bB1?qNKnJiSReijj>_Xhxiau@go=m|M}hieKC{+4>wOGB#-+^cu?^~t6Ga3fveKuc6{l!hqu`&>VO*;F-m(Kn7 z;P4@qzwe6jgH^w z%FVC7tm`tu1Ra5`*T9+I67S6J_X3y4&%pmE%&Tb9QZ8-qr zk=fcz)qHEMyE*g?)}=x>{)#M_ibBU5eoorv{%V1|M$%3t7KxyCvq9djxP%Dg_voG? zJ2SZy+cf|3W$6B5R)_$plug4(o0d-96l8?=d85tI$EINBh4ZZu=RLdF__cecr;1jT zC2jtsA09+m;zgE@vO(T1BJv4KJ_5jLjUrLAkkcWZ2bPHc8>v*O0-jiLYOOm%gJ%PX-Lsp(cVWU_sM~bPge|5*GLm+Ti{p4{dz5!3*w~_ZB}dGZE#mhY(85jdV zUg%C*#QZ0&B$1+9E-c5I6_n?^mzKA__S(g@eh5pZx2J*1hoX$50t;#IZ(xg05l3yPGAx zCp9{L2m-PZz)eIU8+xQQTcZ!UMG^mJrT5Ku*U=3}Q8OQ#DL=E=czCW(2H0H#4gH-* z_A>oGx9#MoD2iw@FSMBaW>Z@5jzEBKHy7}$l}*2MbnjkS2PE=R_z8}~2gC>MCP^M= zk!48{@Tga>wznOhBc9k-fBvC)Iu(&4KXE-WUj_PDkR$GEROJX#d8 z^o1=4IVmPA^}+3=-o4No!YZgwc~CP2P~O`d{u`qjFT%ylPpXD)Yq(PY)=+M83ZUhFqtCbt46{2mBWqsvcV`|W9Vvm)n2R@^YJTSf&i1Z5#?i; z14dA$#fhTE*LUJ#ob=kY?zhjZQ>bf(Mw9fJz12Zb1Sd37ISCSdAf42NsdF~f;(FiJ z0h|DqPQHX5-i$>a0zk#h+oZCT=2x%n{Nt%r?1xV`2`@KdRMYpvXCT-*)qlt{8>%re zCq}RPDpuExfE{@o$M&n*&&5 zkYs~k&ZYYG{rEfQTLyqrr0h|y^@YQYH&^=VXP^Irm7(WAvJ?ptKzj?{q|fTO0dv9U z4(-`JfX3x}7g}rxkEb>;O9l+0K>ftYNt(UL&tHFQ<qRk?SbKY|&q;Z1g9n!kL0jmQd9fE;?;b{Bm9oSB;oUW; zZl+0qc!wHA$T`HWZo$b5q=@;N#d9Ihf=`dH_Wt$E#_=0H_!|ivfv_bY<7|!~{MmuW zv81_teoSp7Ly@z{gFIWFr43-0xtd994VUIwbv`r3PQxJNdHG+wx=a?>bV4RPbgq~g z===weeWiJ1 zYw8Ef96!z<yI8nR)Pi}9$9LKMeuGg(V!c{&s7U^Rf{C=5Rxg(Ts)p(tDc9(0cYnA zY%8Y9gdMhr5-65W(y$qRgmtqO5M?DEU}lFvls9mKqwyG`qZ^Oef+QPrF8uOuk%YJd z%U|hwSdLvVJ@kU$;62F;*c0hA0PK}N$)Xj)5ZIO02gl(GEP=#yUNnW6Ft;CgM@n1- zBFVLQCbM5!HdF{a5(7{k3ve&$3cCV>qRA;h7ITP>pjuEr_rh0>O_pv9eAY4VsTwL- zBgnkmbz>*93Iqpw%zUlmhGbo~02O<=IXeUUkrwz6#psOC4JojF_J~O*(PCpFfalbM zARc2s5iTnCq8K-ZX+o^P8X;=vPd;W1+GZ$~S*=!{{W5{gcKlA1@jU;r*~-Q+Xl3p; zvWI?1NqCZIkR#24fUun@7dQ@&^I_2-q(m~HLbS&LUgIk^1h{+!B(NXmv^Di;ql7of zXz1o=ih*prSvGZk#Y~}Kjbd(tCj8318j%4&bE_gZT$dD0(nA>Ju3H8pj%$6FqKV%4 z3)Et4(gI)@VYbi}Va=Zmc>u=GqLbu^tcw#Rums~;>Wsi* z79Xrc^NdpEf?*kqNBa2OLjBanfQYVm8n~G&ThI+&J07ACeL@F@V_=1Y(T|()1*T&! ze9bGLjqt*8Q?{`qh1dWckQmAE0SX*n@3I@Bka)QeE1#d_7lZ-ppg*;Mz49;q56ZyQ UsAg73asU7T07*qoM6N<$f&hQctpET3 literal 0 HcmV?d00001 diff --git a/resource/template/InfrastPic/Clue/SendClues.png b/resource/template/InfrastPic/Clue/SendClues.png index 0b0e72f706b4132354ae5661fb774481e3907174..57921af6487cb355d0ae1dcf65301d02fa8b0eb6 100644 GIT binary patch literal 1119 zcmV-l1fctgP)Px#32;bRa{vGf5C8xR5CN?ty>$Qp0j*F>R7C&)0RR90{{H^`{r&v>{QLX+`uh6$ z`T6(v_xASo_4W1i^z`%d^YZfY@$vES@bK^N@9ysI?d|RC?Ck67>+0(2>FMd{=;-I? z=jP_-<>lq%$@($Ue;(9qD&&(F@z&dkir%gf8k%F4;f$;ima$H&LU#>U0P#l*zK!^6YD z!NI`5z`wu0zP`S_y}i7=yt})*y1Kf#xw*KwxVN{rwzjslwY9Xgw6n9bva+(Uu&}SM zudc4Ht*x!AtE;N2s;Q}|sHmu?r>CT(q@tptp`oFmprD_hpPrtcot>SWoSd7Ro0^)M znVFfGn3$H9mX(#2l$4Z{larE?l8}&)kB^Uzj*g6sjEjqlii(PfiHV1YhlYlRg@uKL zgoJ{Ef`EX4etv#^eSLgQWadB~QaBy#L zZ*FdGZEbC9Yinw1YH4X{XlQ6>XJ=++W@Tk%WMpJxV`E}sVqsxnU|?X~2H7D100K)% zL_t(|+Rf5yR}w)O!0~5x5q3dT5+p8Z6q=G|shLTI2IK_=DGLHNkV-Cr(#1%r@Diz6 zeCCE-wqRY5eUtrO%$zf4|L4qeX5k+@aU%g)OnMM_DlvGZas7}Kcqrw>uCxFt267UD z=T}Xp-qD@bgTq`ln@toz%#l+VkoL7V=~OE9I{g(y?9U(}dAnNOj&-@k20wP8h8}(w zouNr^C^48lpWx_0ab2#4Yj)j9EN!j4afI@Q!f9)ezMC+ zF<$d9_RqjkDOD<^B@W`=b?|}X8*osCAqou?Er`_<0%7oY?B)n(*fxw;n==Dg*ocs3 z@hw1IaFGGHuOxW{QCVd2X#gm>?yduNI=Dw6p~2c8ba(IUz`6xh%n*$)9%>X2EYc7F zR(__fjX+rEeBBIuAiFRyF*!DV$GgRTy1?-=9>Q)ptXRYy8GwTf|u5Z0T#{O znhu46K=m{h*Cy1WD4M2wBLKyX=gM(KZ3v-BomfGnM4=yBgh6Jv120R z@O7aVISRNGOC2U)et=F)BGIuZl&uyzF?g560>(s>f?Zr>vQNZ8eWJujmKd^&i_G^S zFyi7-_{e-;BJiZil;PisE4!Johmo{kD(AY7=5d~Tjh;j8ybgS34 z3bN|@!xL!Ox`Ww=I~#Q##)07;-k?7oIPbStSoDS9aY&Zhl z%IELjzqvIemD6G2x4^-fRDLjB!)_C&PMtb;u)_BT_0OJQR{33z@VcrqOJ>ZRHEY)V znFAVe{gEUv8%;H<{65FsJmm%X`2`+w4)x>vBgJ2HW|iONu-lZQ-3=X+@GAiPW@FWD z*%h3w8|LzecWtAbrq{Gkx?@a7H9BV$Ti3rvhXr+Q7mbBEyaU_&1I8338i z-SDfSbe9Gj^L_@5|EIc<*RAI+0$sZ?)22Ak(^YwVSej z{nl;Uw(Z`rjj>~^k6o)rH=%|+6teD={)b<`{_^$f*KgmxddMx*kbkI$F;9$w#1#Ei zH9dXB^3273)e)sZtM=_XcZV1WR4Dm#UAeJ*iZxKjL^rMYTGfyWgiHUL7!ysxi);Usw6#$(2jju3p?R zs$P9LdBnaCHBT(rgeVeWK1qlHl{loWZnw(kEJ-?}Ioa|LcaCgXGt*5UGn|u{+ab9s@H*r zD2HD6ITPc(@4jc}m6cUq<(Bi;Lf6VBCMo>?NyCoVfMq z#p`#UbMlMJtE$U$U)^8YKFKf9=rHJU_;nASJ$?41UZcNS(%ZjXrjbK5rTmDXB1;31!hbWVbH+& ztiA>47Jx-&x&%Z>q&iWNz>GK{QXLf`Bvv}i=`e)EX{EzD9RdsN6j^*n3Dg~hu(0}$ z;;Xwv2p5a*D2fV1Lg?=(k^&KeS>>~?;O7o%2h&kbCqQi>05v-B=pZzI0O!o^UdOd{ QQ2+n{07*qoM6N<$f^!SE{r~^~ diff --git a/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp b/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp index 269c5e1337..4a1936b252 100644 --- a/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp +++ b/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp @@ -37,6 +37,7 @@ bool asst::InfrastReceptionTask::_run() use_clue(); back_to_reception_main(); + send_clue(); if (need_exit()) { return false; @@ -145,6 +146,16 @@ bool asst::InfrastReceptionTask::proc_clue_vacancy() const static std::vector clue_suffix = { "No1", "No2", "No3", "No4", "No5", "No6", "No7" }; cv::Mat image = ctrler()->get_image(); + + // 优先检测官服新增的“快捷置入”按钮,如果存在则点击一次执行批量置入,跳过逐个置入流程 + const auto quick_insert_task = Task.get("InfrastClueQuickInsert"); + Matcher quick_insert_matcher(image); + quick_insert_matcher.set_task_info(quick_insert_task); + if (quick_insert_matcher.analyze()) { + ctrler()->click(quick_insert_matcher.get_result().rect); + return true; + } + for (const std::string& clue : clue_suffix) { if (need_exit()) { return false; @@ -190,11 +201,13 @@ bool asst::InfrastReceptionTask::unlock_clue_exchange() bool asst::InfrastReceptionTask::back_to_reception_main() { ProcessTask(*this, { "EndOfClueExchange" }).set_retry_times(0).run(); - return ProcessTask(*this, { "BackToReceptionMain" }).run(); + // 国服有快捷置入后不会进入线索放置页面,不需要返回,多点一次快捷置入也无所谓 + return ProcessTask(*this, { "InfrastClueQuickInsert", "BackToReceptionMain" }).run(); } bool asst::InfrastReceptionTask::send_clue() { + // 优先检测是否存在“快捷传递重复线索”按钮(官服特性),若存在则点击一次 ProcessTask task(*this, { "SendClues" }); return task.run(); } diff --git a/src/MaaWpfGui/Utilities/BadModules.cs b/src/MaaWpfGui/Utilities/BadModules.cs index 7041579763..740cf546db 100644 --- a/src/MaaWpfGui/Utilities/BadModules.cs +++ b/src/MaaWpfGui/Utilities/BadModules.cs @@ -17,12 +17,14 @@ using System.Collections.Generic; using System.Text; using System.Windows.Forms; using MaaWpfGui.Helper; +using Serilog; using Windows.Win32; namespace MaaWpfGui.Utilities; internal class BadModules { + private static readonly ILogger _logger = Log.ForContext(); private static readonly string[] _names = [ "NahimicOSD.dll", "AudioDevProps2.dll", @@ -97,6 +99,7 @@ internal class BadModules }; TaskDialog.ShowDialog(new WpfWin32Window(System.Windows.Application.Current.MainWindow), page); + _logger.Warning("Detected bad injected modules:\n{Modules}", sb.ToString()); static string BreakLongPath(string path, int maxLen) {