MAA 信用收支全解析:拜访好友、信用商店购物與借助戰賺信用的完整設定指南
【免费下载链接】MaaAssistantArknights《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights
本篇指南以 MaaAssistantArknights 的「信用收支」功能(Mall 任務)為核心,完整講解自動拜訪好友獲取信用點、借助戰通關OF-1賺取額外信用,以及在信用交易所按「優先購買/黑名單」規則自動購物的完整流程。讀者讀完後將能掌握 GUI 與接口層的全部設定參數、關鍵字比對規則的底層原理,以及任務鏈的真實執行順序。
功能總覽:信用收支的三個環節
在《明日方舟》中,信用點是每日從信用交易所換取養成資源的核心貨幣,而信用點的獲取與消耗分散在多個介面中。MAA 的「信用收支」(Credit Store / Mall)任務把這條鏈路串成一個全自動流程,共分三個環節:
- 自動拜訪好友:前往好友介面逐一拜訪,獲取每日拜訪獎勵的信用點。
- 借助戰賺信用:使用助戰幹員通關一次火藍之心
OF-1關卡,隔日結算時可獲得額外的信用獎勵。 - 信用交易所購物:前往信用交易所,依「優先購買」與「黑名單」規則自動購入商品。
三個環節由介面任務MallTask統一調度,任務鏈類型為"Mall"(見 MallTask.h),對應的任務說明文件位於 docs/zh-tw/manual/introduction/credit.md。
拜訪好友:信用點的穩定來源
拜訪好友是信用點最基礎的來源。在 MAA 中,這一步由MallTask內部的ProcessTask執行,起始任務為VisitBegin(見 MallTask.cpp),並註冊了ScreenshotTaskPlugin以在拜訪過程中截圖輔助狀態識別。
該環節可通過參數visit_friends控制開關,預設為true:
bool visit_friends = params.get("visit_friends", true); m_visit_task_ptr->set_enable(visit_friends);引用自 MallTask.cpp。也就是說,在不做任何設定的情況下,MAA 每次執行信用收支任務都會自動拜訪好友;若你希望關閉拜訪(例如好友已清空),將
visit_friends設為false即可。
從執行順序上,拜訪任務排在整個任務鏈的最前面,且set_ignore_error(true)(見 MallTask.cpp),即使拜訪過程出現異常也不會中斷後續的購物流程。
借助戰賺信用:OF-1 關卡自動挑戰
信用點除了每日拜訪外,還可通過「借助戰」的方式增加:在火藍之心活動的OF-1關卡中使用助戰幹員通關一次,翌日信用結算時即可獲得額外信用。MAA 將這個過程完全自動化。
觸發條件與注意事項
- 請確認
OF-1關卡已解鎖;若尚未解鎖,借助戰任務將無法正常執行。 - 關卡選擇為「目前/上次」時不會執行借助戰任務:因為 MAA 需要透過關卡導航(
StageNavigationTask)定位到指定的OF-1,若用戶將出戰介面的關卡模式設定為「目前/上次」,任務會被跳過。 - 借助戰功能預設為關閉,需透過
credit_fight參數開啟:
bool credit_fight = params.get("credit_fight", false); m_credit_fight_task_ptr->set_enable(credit_fight);引用自 MallTask.cpp。
底層執行鏈
借助戰功能由CreditFightTask實現(見 CreditFightTask.cpp),它是一個PackageTask,內部按順序組合了五個子任務:
StageBegin:進入出戰介面,並限制GoLastBattle(「上次作戰」)次數為 0,確保不會誤入上次關卡;StageNavigationTask:關卡導航,定位OF-1;NotUsePrts+Stop:關閉代理指揮(PRTS),確保以手動/助戰方式真實通關;CopilotTask:載入作業OF-1_credit_fight.json執行自動戰鬥;Copilot@WaitUntilEndOfAction-Bypass:等待戰鬥結束(重試上限 40 次)。
編隊選擇與舊參數遷移
借助戰必須選擇一支編隊,通過formation_index參數指定:
int formation_index = params.get("formation_index", 0); if (!params.contains("formation_index") && params.contains("select_formation")) { // `select_formation` has been deprecated since v5.23.3; Please use 'formation_index' formation_index = params.get("select_formation", 0); }引用自 MallTask.cpp。
請注意:舊版參數select_formation自 v5.23.3 起已廢棄,請改用formation_index。編隊索引從 0 開始,對應遊戲內編隊列表的順序。
在CreditFightTask::set_params中,會載入作業並設定support_unit_usage = 3(使用助戰幹員)與formation = true(使用編隊),作業檔路徑為資源目錄下的copilot/OF-1_credit_fight.json(見 CreditFightTask.cpp)。這意味著即使你沒有強力輸出幹員,也能藉助好友的助戰幹員穩定通關。
信用交易所購物:優先購買與黑名單
信用交易所的商品每天隨機刷新,MAA 支援「關鍵字比對」來自動決定買什麼、不買什麼。購物環節由CreditShoppingTask實現,並拆分成三個獨立的購物子任務(見 MallTask.cpp):
| 子任務 | 作用 | 參數來源 |
|---|---|---|
shopping_first | 優先購買(白名單) | buy_first |
shopping | 常規購物(黑名單過濾) | blacklist、only_buy_discount、reserve_max_credit |
shopping_force | 信用溢出時強制購物 | force_shopping_if_credit_full |
關鍵字比對規則
優先購買(buy_first)與黑名單(blacklist)都是關鍵字比對,而不是精確全名比對。例如填入碳,會比對到名稱中包含「碳」的所有商品,如碳與碳素。
這背後的實作原理是「子字串包含」匹配:CreditShopImageAnalyzer::match_required_index對 OCR 識別出的商品名與規則關鍵字逐個做find(子字串查找),只要關鍵字出現在商品名的任意位置即視為命中(見 CreditShopImageAnalyzer.cpp)。比對前還會經由OcrConfig::process_equivalence_class做「字符等價類」歸一化處理(見 OcrConfig.cpp),降低 OCR 識別差異(如全形/半形、易混淆字符)造成的誤判。
因此實務上:
- 想買所有「碳」系列材料,填
碳即可,無需逐一列出碳、碳素、碳素組等; - 想排除某類商品,把關鍵字填入黑名單即可;
- 關鍵字越短,命中的商品越多;請避免使用過於通用的單字(如
膠)以免誤買。
分隔符號規則
「優先購買」與「黑名單」的輸入在 GUI 中支援以分號分隔多個關鍵字,且英文半形;與中文全形;均可使用,MAA 會在解析時統一處理,不需要刻意切換輸入法。
低信用保護:低於 300 停止購買
遊戲內信用點上限為 300,溢出部分無法累積。MAA 提供「信用點數低於 300 時停止購買商品」選項(對應參數reserve_max_credit),開啟後購物邏輯會先識別當前信用點數,一旦低於或等於 300 就停止購買,避免把信用點花到見底。
但有一條例外規則:即使信用點數低於 300,優先購買(白名單)商品仍然會照常購買。從源碼可以清楚看到這條設計:reserve_max_credit只對非白名單(黑名單購物)分支生效(見 CreditShoppingTask.cpp),而優先購買任務本身則完全不啟用該限制(MallTask.cpp)。
預設值說明:
reserve_max_credit預設為false,即預設不會提前停止購物。
完整參數對照表
以下參數與 AsstMallTask.cs 中的 JSON 屬性一一對應,同時也適用於接口層(如 Python / C / C++ 接口)傳入的paramsJSON:
| JSON 參數 | 類型 | 預設值 | 說明 |
|---|---|---|---|
visit_friends | bool | true | 是否拜訪好友獲取信用點 |
shopping | bool | true | 是否執行信用商店購物(整體開關) |
buy_first | string[] | [] | 優先購買關鍵字(白名單) |
blacklist | string[] | [] | 黑名單關鍵字 |
only_buy_discount | bool | false | 只購買折扣商品;未打折的白名單商品仍會購買 |
reserve_max_credit | bool | false | 信用點低於 300 時停止購買(白名單除外) |
force_shopping_if_credit_full | bool | false | 信用溢出時強制購物、無視黑名單 |
credit_fight | bool | false | 是否借助戰打OF-1賺信用 |
formation_index | int | 0 | 借助戰使用的編隊索引(v5.23.3 起取代select_formation) |
需要特別區分兩組容易混淆的開關:
reserve_max_credit(低於 300 停止)與force_shopping_if_credit_full(溢出時強制買)看似相反,但可以同時開啟:前者防止信用點過低,後者防止信用點溢出浪費,兩者組合即「在 300 點附近維持動態平衡」。only_buy_discount開啟後,未打折商品一律不買,但白名單(優先購買)中的商品即使未打折仍會購買——這是刻意設計的例外,確保高價值商品不會因沒打折而錯過(見 CreditShoppingTask.h 的註釋說明)。
購物執行細節:從識別到結算
CreditShoppingTask::credit_shopping的完整執行流程(見 CreditShoppingTask.cpp)如下:
- 商品識別:
CreditShopImageAnalyzer先透過多目標模板匹配定位所有商品圖示,再以 OCR 讀取每個商品的品名與售價(見 CreditShopImageAnalyzer.cpp 的analyze()三段式分析:商品識別 → 是否購買 → 售罄判定)。 - 買前複核:點擊前會先對商品名再做一次 OCR 複核(
verify_commodity_name),避免動畫或列表偏移導致盲點錯商品。 - 容錯點擊:單一商品最多嘗試點擊 4 次(
clickCount <= 3),每次點擊後執行CreditShop-BuyIt流程確認是否成功進入購買。 - 金錢檢測:若點擊失敗數次判定為無法購買,直接跳過;接著執行
CreditShop-NoMoney檢測,偵測到「龍門幣不足」即停止購物。 - 信用結算:依設定讀取當前信用點數(
credit_ocr,見 CreditShoppingTask.cpp),決定是否觸發停止條件或繼續購物。
這套「識別 → 複核 → 點擊 → 驗證」的循環,正是 MAA 能在不同解析度、不同動畫狀態下穩定購物的關鍵。
常見問題與注意事項
- OF-1 未解鎖:借助戰任務需要
OF-1已解鎖才能執行;若活動復刻或關卡未開放,建議關閉credit_fight。 - 關卡選擇為「目前/上次」:此模式下 MAA 不會執行借助戰任務,請改回指定關卡模式。
- 誤買商品:檢查黑名單關鍵字是否過短,並注意關鍵字是「子字串包含」匹配——
碳會同時命中碳素。 - 信用點見底:開啟
reserve_max_credit後可保留至少 300 信用點;若連優先購買都不希望花費,需手動調整優先購買清單,因為低於 300 時白名單商品仍會照買。 - 編隊參數報廢:舊參數
select_formation自 v5.23.3 起被formation_index取代,請及時更新配置以免被忽略並觸發警告日誌。
總結
MAA 的「信用收支」功能將「拜訪好友 → 借助戰通關 → 商店購物」三個日常環節串成單一任務鏈(Mall),並透過buy_first/blacklist的關鍵字比對、reserve_max_credit的低信用保護、only_buy_discount與force_shopping_if_credit_full的溢出控制,實現了靈活可調的信用管理策略。理解其子字串匹配規則與各參數的預設值與例外邏輯,能幫助你在不同養成階段精準控制信用點的收支平衡,將這條「長草」鏈路徹底自動化。
【免费下载链接】MaaAssistantArknights《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考