diff --git a/resource/global/YoStarEN/resource/tasks/RA/base.json b/resource/global/YoStarEN/resource/tasks/RA/base.json index 193bd95091..1d401ffc47 100644 --- a/resource/global/YoStarEN/resource/tasks/RA/base.json +++ b/resource/global/YoStarEN/resource/tasks/RA/base.json @@ -4,5 +4,8 @@ }, "RA@Navigation-EnterCurrentTheme": { "text": ["Reclamation", "Algorithm"] + }, + "RA@Store@Purchase": { + "text": ["Pay", "Total", "Cost"] } } diff --git a/resource/global/YoStarJP/resource/tasks/RA/base.json b/resource/global/YoStarJP/resource/tasks/RA/base.json index c28f49b2bf..0f2176e75b 100644 --- a/resource/global/YoStarJP/resource/tasks/RA/base.json +++ b/resource/global/YoStarJP/resource/tasks/RA/base.json @@ -4,5 +4,8 @@ }, "RA@Navigation-EnterCurrentTheme": { "text": ["生息演算"] + }, + "RA@Store@Purchase": { + "text": ["購入"] } } diff --git a/resource/global/YoStarKR/resource/tasks/RA/base.json b/resource/global/YoStarKR/resource/tasks/RA/base.json index 90b854fee6..c1194aa88a 100644 --- a/resource/global/YoStarKR/resource/tasks/RA/base.json +++ b/resource/global/YoStarKR/resource/tasks/RA/base.json @@ -4,5 +4,8 @@ }, "RA@Navigation-EnterCurrentTheme": { "text": ["생존", "연산"] + }, + "RA@Store@Purchase": { + "text": ["합계"] } } diff --git a/resource/global/txwy/resource/tasks/RA/base.json b/resource/global/txwy/resource/tasks/RA/base.json index bfb8f060d7..1372c7a11f 100644 --- a/resource/global/txwy/resource/tasks/RA/base.json +++ b/resource/global/txwy/resource/tasks/RA/base.json @@ -4,5 +4,8 @@ }, "RA@Navigation-EnterCurrentTheme": { "text": ["生息演算"] + }, + "RA@Store@Purchase": { + "text": ["支付"] } } diff --git a/resource/tasks/RA/Tales.json b/resource/tasks/RA/Tales.json index 716ddfeab5..d6241b2d7c 100644 --- a/resource/tasks/RA/Tales.json +++ b/resource/tasks/RA/Tales.json @@ -594,7 +594,8 @@ "doc": "生息点数达到上限, 点击右下角删除存档图标, 确认删除存档, 仍要删除存档", "baseTask": "Tales@RA@SwipeSave", "template": "Tales@RA@SwipeSave.png", - "sub": ["Tales@RA@DialogConfirmRed*2"] + "sub": ["Tales@RA@DialogConfirmRed*2"], + "next": ["RA@Store@WaitEnterStore"] }, "Tales@RA@PNS-RecogniseHeadquartersButton": { "doc": "识别到左下角驻扎地图标", diff --git a/resource/tasks/RA/base.json b/resource/tasks/RA/base.json index bd1ef4e2dc..606d61be1a 100644 --- a/resource/tasks/RA/base.json +++ b/resource/tasks/RA/base.json @@ -53,5 +53,81 @@ "roi": [908, 54, 372, 500], "maskRange": [1, 255], "next": ["RA@Navigation#next"] + }, + "RA@Store@WaitEnterStore": { + "algorithm": "JustReturn", + "doc": "等动画", + "postDelay": 5000, + "next": ["RA@Store@EnterStore", "Stop"] + }, + "RA@Store@EnterStore": { + "doc": "进入 <生息演算商店> 界面", + "action": "ClickSelf", + "roi": [3, 581, 132, 132], + "postDelay": 3000, + "next": ["RA@Store@Begin"] + }, + "RA@Store@Begin": { + "doc": "生息演算商店,小游戏入口", + "algorithm": "JustReturn", + "next": ["RA@Store@ClickItem", "RA@Store@Swipe"] + }, + "RA@Store@ClickItem": { + "action": "ClickSelf", + "method": "RGBCount", + "roi": [0, 336, 1280, 367], + "colorScales": [ + [ + [0, 0, 0], + [255, 255, 110] + ] + ], + "next": ["RA@Store@ChooseMaxAmount", "RA@Store@Purchase"] + }, + "RA@Store@ChooseMaxAmount": { + "roi": [986, 352, 164, 139], + "next": ["RA@Store@UnderfundedOCR", "RA@Store@Purchase"] + }, + "RA@Store@UnderfundedOCR": { + "roi": [878, 397, 82, 48] + }, + "RA@Store@Purchase": { + "text": ["支付"], + "roi": [640, 400, 424, 220], + "next": ["RA@Store@PurchasedConfirm", "RA@Store@RecruitSkip", "RA@Store@Underfunded"] + }, + "RA@Store@Underfunded": { + "template": "ReceivedAllMail.png", + "roi": [909, 33, 166, 165], + "method": "HSVCount", + "colorScales": [[250, 255]], + "next": ["Stop"] + }, + "RA@Store@RecruitSkip": { + "template": "SS@Store@RecruitSkip.png", + "roi": [1143, 0, 137, 150], + "next": ["RA@Store@RecruitSkipClick"] + }, + "RA@Store@RecruitSkipClick": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [1197, 23, 53, 45], + "next": ["RA@Store@RecruitSkipped", "RA@Store@RecruitSkipClick"] + }, + "RA@Store@RecruitSkipped": { + "algorithm": "OcrDetect", + "text": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], + "roi": [1160, 16, 97, 42], + "next": ["RA@Store@ClickItem", "RA@Store@Swipe"] + }, + "RA@Store@PurchasedConfirm": { + "baseTask": "CreditShop-Bought", + "template": "CreditShop-Bought.png", + "next": ["RA@Store@PurchasedConfirm", "RA@Store@ClickItem", "RA@Store@Swipe"] + }, + "RA@Store@Swipe": { + "baseTask": "SlowlySwipeToTheRight", + "postDelay": 1000, + "next": ["RA@Store@ClickItem", "Stop"] } } diff --git a/resource/template/RA/Store/RA@Store@ClickItem.png b/resource/template/RA/Store/RA@Store@ClickItem.png new file mode 100644 index 0000000000..d09f788d01 Binary files /dev/null and b/resource/template/RA/Store/RA@Store@ClickItem.png differ diff --git a/resource/template/RA/Store/RA@Store@EnterStore.png b/resource/template/RA/Store/RA@Store@EnterStore.png new file mode 100644 index 0000000000..71246fb620 Binary files /dev/null and b/resource/template/RA/Store/RA@Store@EnterStore.png differ diff --git a/src/MaaCore/Task/Interface/ReclamationTask.cpp b/src/MaaCore/Task/Interface/ReclamationTask.cpp index 63e99746f7..a036ee8f4d 100644 --- a/src/MaaCore/Task/Interface/ReclamationTask.cpp +++ b/src/MaaCore/Task/Interface/ReclamationTask.cpp @@ -43,6 +43,9 @@ bool asst::ReclamationTask::set_params(const json::value& params) switch (mode) { case ReclamationMode::ProsperityNoSave: m_reclamation_task_ptr->set_tasks({ theme + "@RA@ProsperityNoSave" }); + if (!params.get("clear_store", false)) { + m_reclamation_task_ptr->set_times_limit("RA@Store@EnterStore", 0); + } break; case ReclamationMode::ProsperityInSave: m_reclamation_task_ptr->set_tasks({ theme + "@RA@ProsperityInSave" }); diff --git a/src/MaaWpfGui/Constants/ConfigurationKeys.cs b/src/MaaWpfGui/Constants/ConfigurationKeys.cs index 020bd16132..5c3071965a 100644 --- a/src/MaaWpfGui/Constants/ConfigurationKeys.cs +++ b/src/MaaWpfGui/Constants/ConfigurationKeys.cs @@ -164,6 +164,7 @@ namespace MaaWpfGui.Constants public const string ReclamationToolToCraft = "Reclamation.ToolToCraft"; public const string ReclamationIncrementMode = "Reclamation.ReclamationIncrementMode"; public const string ReclamationMaxCraftCountPerRound = "Reclamation.ReclamationMaxCraftCountPerRound"; + public const string ReclamationClearStore = "Reclamation.ReclamationClearStore"; public const string RecruitMaxTimes = "AutoRecruit.MaxTimes"; public const string AutoRecruitFirstList = "AutoRecruit.AutoRecruitFirstList"; diff --git a/src/MaaWpfGui/Models/AsstTasks/AsstReclamationTask.cs b/src/MaaWpfGui/Models/AsstTasks/AsstReclamationTask.cs index 63d8d9e9d4..15a1e04daa 100644 --- a/src/MaaWpfGui/Models/AsstTasks/AsstReclamationTask.cs +++ b/src/MaaWpfGui/Models/AsstTasks/AsstReclamationTask.cs @@ -60,6 +60,11 @@ public class AsstReclamationTask : AsstBaseTask /// public List ToolToCraft { get; set; } = []; + /// + /// Gets or sets a value indicating whether 刷完点数后购买商店 + /// + public bool ClearStore { get; set; } = false; + public override (AsstTaskType TaskType, JObject Params) Serialize() { var data = new JObject @@ -69,6 +74,7 @@ public class AsstReclamationTask : AsstBaseTask ["increment_mode"] = IncrementMode, ["num_craft_batches"] = MaxCraftCountPerRound, ["tools_to_craft"] = new JArray(ToolToCraft), + ["clear_store"] = ClearStore, }; return (TaskType, data); diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index a134f1de9f..e78c04071e 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -524,6 +524,7 @@ The primary instance is 0, and other instances are the numbers after the version Click Hold Max Craft Count Per Round + Clear Store after finished Operator display language Follow MAA Follow game client @@ -700,6 +701,8 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla Please ensure you have at least 258 yellow tickets. Event Shop Please start from the event shop page. Won't buy items with unlimited purchase quantities. + Reclamation Algorithm Shop + Please start from the event shop page. Identifying…… diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 923f381fe5..066e899c40 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -526,6 +526,7 @@ C:\\leidian\\LDPlayer9 連打 長押し 1回の最大クラフト回数 + Clear Store after finished オペレーター名の表示言語 MAA をフォローする ゲームクライアントをフォローする @@ -704,6 +705,8 @@ C:\\leidian\\LDPlayer9 少なくとも258枚の黄チケットを持っていることを確認してください。 イベントショップ イベントのショップページからのみ始めてください。 購入数量無制限のアイテムは購入することはありません。 + 生息演算商店 + イベントのショップページからのみ始めてください。 認識中…… diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index 705f64f6b5..e6586310cd 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -525,6 +525,7 @@ C:\\leidian\\LDPlayer9 연타 길게 누르기 한 번의 최대 제작 횟수 + Clear Store after finished 오퍼레이터 이름 표시 언어 MAA 언어 따라가기 게임 클라이언트 따라가기 @@ -703,6 +704,8 @@ C:\\leidian\\LDPlayer9 최소한 258장의 노란색 티켓을 가지고 있는지 확인하세요. 이벤트 상점 이벤트 상점 페이지에서만 시작하세요. 구매 수량이 무제한인 아이템은 구매하지 마세요. + 생존연산 상점 + 이벤트 상점 페이지에서만 시작하세요. 인식 중…… diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 5d9c20b615..db85ce81bf 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -526,6 +526,7 @@ C:\\leidian\\LDPlayer9。\n 连点 长按 单次最大组装轮数 + 任务完成后购买商店 干员名称显示语言 跟随 MAA 跟随游戏客户端 @@ -704,6 +705,8 @@ C:\\leidian\\LDPlayer9。\n 请确保自己至少有258张黄票。 活动商店 请在活动商店页面开始。 不买无限池。 + 生息演算商店 + 请在活动商店页面开始。 正在识别…… diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index f27b95ea65..63008ff4c7 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -524,6 +524,7 @@ C:\\leidian\\LDPlayer9。\n 連點 長按 單次最大組裝輪數 + 任务完成后购买商店 幹員名稱顯示語言 跟隨 MAA 跟隨遊戲客戶端 @@ -702,6 +703,8 @@ C:\\leidian\\LDPlayer9。\n 請確保自己至少有258張黃票。 活動商店 請在活動商店頁面開始。 不購買無限量物品。 + 生息演算商店 + 請在活動商店頁面開始。 正在辨識…… diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index dc38476673..ab78bbde04 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -1136,6 +1136,7 @@ namespace MaaWpfGui.ViewModels.UI new() { Display = LocalizationHelper.GetString("MiniGameNameGreenTicketStore"), Value = "GreenTicket@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameYellowTicketStore"), Value = "YellowTicket@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameSsStore"), Value = "SS@Store@Begin" }, + new() { Display = LocalizationHelper.GetString("MiniGameNameRAStore"), Value = "RA@Store@Begin" }, ]; private string _miniGameTaskName = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.MiniGameTaskName, "Stop"); @@ -1171,6 +1172,7 @@ namespace MaaWpfGui.ViewModels.UI "GreenTicket@Store@Begin" => LocalizationHelper.GetString("MiniGameNameGreenTicketStoreTip"), "YellowTicket@Store@Begin" => LocalizationHelper.GetString("MiniGameNameYellowTicketStoreTip"), "SS@Store@Begin" => LocalizationHelper.GetString("MiniGameNameSsStoreTip"), + "RA@Store@Begin" => LocalizationHelper.GetString("MiniGameNameRAStoreTip"), _ => string.Empty, }; } diff --git a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs index 58c6469f4e..ec10fb5f29 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs @@ -136,6 +136,18 @@ public class ReclamationSettingsUserControlModel : TaskViewModel } } + private bool _reclamationClearStore = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.ReclamationClearStore, bool.FalseString)); + + public bool ReclamationClearStore + { + get => _reclamationClearStore; + set + { + SetAndNotify(ref _reclamationClearStore, value); + ConfigurationHelper.SetValue(ConfigurationKeys.ReclamationClearStore, value.ToString()); + } + } + /// /// 自动生息演算。 /// @@ -156,6 +168,7 @@ public class ReclamationSettingsUserControlModel : TaskViewModel /// 点击类型:0 连点;1 长按 /// 单次最大制造轮数 /// 要组装的支援道具。 + /// 刷完点数后是否清空商店。 /// 返回(Asst任务类型, 参数) public override (AsstTaskType Type, JObject Params) Serialize() { @@ -166,6 +179,7 @@ public class ReclamationSettingsUserControlModel : TaskViewModel IncrementMode = ReclamationIncrementMode, MaxCraftCountPerRound = ReclamationMaxCraftCountPerRound, ToolToCraft = ReclamationToolToCraft.Split(';').Select(s => s.Trim()).ToList(), + ClearStore = ReclamationClearStore, }.Serialize(); } } diff --git a/src/MaaWpfGui/Views/UserControl/TaskQueue/ReclamationSettingsUserControl.xaml b/src/MaaWpfGui/Views/UserControl/TaskQueue/ReclamationSettingsUserControl.xaml index b40d41321c..8b7fcb8128 100644 --- a/src/MaaWpfGui/Views/UserControl/TaskQueue/ReclamationSettingsUserControl.xaml +++ b/src/MaaWpfGui/Views/UserControl/TaskQueue/ReclamationSettingsUserControl.xaml @@ -63,6 +63,15 @@ IsEnabled="{c:Binding 'ReclamationMode == "1"'}" Minimum="0" Value="{Binding ReclamationMaxCraftCountPerRound}" /> + + +