diff --git a/resource/tasks/Stages/base.json b/resource/tasks/Stages/base.json index bc40c64748..628ae21282 100644 --- a/resource/tasks/Stages/base.json +++ b/resource/tasks/Stages/base.json @@ -14,5 +14,64 @@ "action": "ClickSelf", "postDelay": 2000, "roi": [505, 57, 462, 628] + }, + "SS@Store@Begin": { + "doc": "当期活动商店", + "algorithm": "JustReturn", + "next": ["SS@Store@ClickItem", "SS@Store@Swipe"] + }, + "SS@Store@ClickItem": { + "action": "ClickSelf", + "doc": "匹配物品用的模板, 用roi排除最后一列", + "roi": [0, 200, 1200, 520], + "maskRange": [1, 255], + "next": ["SS@Store@ChooseMaxAmount", "SS@Store@Purchase"] + }, + "SS@Store@ChooseMaxAmount": { + "roi": [986, 352, 164, 139], + "next": ["SS@Store@UnderfundedOCR", "SS@Store@Purchase"] + }, + "SS@Store@UnderfundedOCR": { + "roi": [878, 397, 82, 48] + }, + "SS@Store@Purchase": { + "text": ["支付"], + "roi": [772, 476, 292, 144], + "next": ["SS@Store@PurchasedConfirm", "SS@Store@RecruitSkip", "SS@Store@Underfunded"] + }, + "SS@Store@Underfunded": { + "template": "ReceivedAllMail.png", + "roi": [909, 33, 166, 165], + "method": "HSVCount", + "colorScales": [[250, 255]], + "next": ["Stop"] + }, + "SS@Store@RecruitSkip": { + "roi": [1143, 0, 137, 150], + "next": ["SS@Store@RecruitSkipClick"] + }, + "SS@Store@RecruitSkipClick": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [1197, 23, 53, 45], + "next": ["SS@Store@RecruitSkipped", "SS@Store@RecruitSkipClick"] + }, + "SS@Store@RecruitSkipped": { + "algorithm": "OcrDetect", + "text": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], + "roi": [1160, 16, 97, 42], + "next": ["SS@Store@ClickItem", "SS@Store@Swipe"] + }, + "SS@Store@PurchasedConfirm": { + "baseTask": "CreditShop-Bought", + "template": "CreditShop-Bought.png", + "next": ["SS@Store@PurchasedConfirm", "SS@Store@ClickItem", "SS@Store@Swipe"] + }, + "SS@Store@Swipe": { + "baseTask": "SlowlySwipeToTheRight", + "postDelay": 1000, + "next": ["SS@Store@ClickItem", "#self"], + "maxTimes": 10, + "exceededNext": ["Stop"] } } diff --git a/resource/tasks/tasks.json b/resource/tasks/tasks.json index da5956b076..aa3f5beacb 100644 --- a/resource/tasks/tasks.json +++ b/resource/tasks/tasks.json @@ -2139,6 +2139,7 @@ "next": ["Mall@ReturnButtons#next", "Mall", "Mall@CloseAnnos#next"] }, "Mall": { + "doc": "请同步更新 Store@EnterStore 的 template", "template": [ "Mall.png", "MallDark.png", @@ -5013,5 +5014,142 @@ "Tank@UseSupportUnit-RoleSelected": {}, "Tank@UseSupportUnit-SelectRole": {}, "Warrior@UseSupportUnit-RoleSelected": {}, - "Warrior@UseSupportUnit-SelectRole": {} + "Warrior@UseSupportUnit-SelectRole": {}, + "Store@Begin": { + "doc": "绿票、黄票商店", + "algorithm": "JustReturn", + "next": ["Store@EnterStore", "Store@EnterTicketStore"] + }, + "Store@EnterStore": { + "baseTask": "Mall", + "template": [ + "Mall.png", + "MallDark.png", + "MallSami.png", + "MallMistCity.png", + "MallSiege.png", + "MallSarkaz.png", + "MallDelicious.png", + "MallGaming.png", + "MallDahuangCity.png" + ], + "next": ["Store@EnterTicketStore"] + }, + "Store@EnterTicketStore": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["凭证交易所"], + "roi": [730, 38, 215, 134], + "next": ["Store@ChooseTicketType"] + }, + "Store@ChooseTicketType": { + "algorithm": "JustReturn", + "doc": "base_task" + }, + "Store@ChooseMaxAmount": { + "algorithm": "OcrDetect", + "text": ["最多"], + "action": "ClickSelf" + }, + "Store@UnderfundedOCR": { + "algorithm": "OcrDetect", + "text": ["0", "o", "O"] + }, + "Store@Purchase": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["购买物品"], + "roi": [872, 556, 137, 48], + "postDelay": 1000 + }, + "GreenTicket@Store@ChooseTicketType": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["资质凭证区"], + "roi": [108, 163, 124, 56], + "next": ["GreenTicket@Store@ClickFirstFloor"] + }, + "GreenTicket@Store@ClickFirstFloor": { + "algorithm": "OcrDetect", + "text": ["1", "T", "I"], + "action": "ClickSelf", + "roi": [263, 196, 35, 73], + "sub": ["SlowlySwipeToTheLeft"], + "postDelay": 1000, + "next": ["GreenTicket@Store@ClickItem", "GreenTicket@Store@ClickSecondFloor"] + }, + "GreenTicket@Store@ClickItem": { + "template": [ + "GreenTicket@Store@ClickItem_Headhunting_Permit", + "GreenTicket@Store@ClickItem_Orundum", + "GreenTicket@Store@ClickItem_LMD", + "GreenTicket@Store@ClickItem_Furniture_Part", + "GreenTicket@Store@ClickItem_Recruitment_Permit", + "GreenTicket@Store@ClickItem_Tactical_Battle_Record", + "GreenTicket@Store@ClickItem_Pure_Gold" + ], + "action": "ClickSelf", + "roi": [318, 139, 956, 484], + "next": ["GreenTicket@Store@ChooseMaxAmount"] + }, + "GreenTicket@Store@ChooseMaxAmount": { + "roi": [1027, 405, 79, 53], + "next": ["GreenTicket@Store@UnderfundedOCR", "GreenTicket@Store@Purchase"] + }, + "GreenTicket@Store@UnderfundedOCR": { + "roi": [876, 405, 85, 51] + }, + "GreenTicket@Store@Purchase": { + "next": ["GreenTicket@Store@PurchasedConfirm"] + }, + "GreenTicket@Store@PurchasedConfirm": { + "baseTask": "CreditShop-Bought", + "template": "CreditShop-Bought.png", + "next": [ + "GreenTicket@Store@PurchasedConfirm", + "GreenTicket@Store@ClickItem", + "GreenTicket@Store@ClickSecondFloor", + "Stop" + ] + }, + "GreenTicket@Store@ClickSecondFloor": { + "algorithm": "OcrDetect", + "text": ["2"], + "action": "ClickSelf", + "roi": [262, 364, 38, 58], + "maxTimes": 1, + "sub": ["SlowlySwipeToTheLeft*3"], + "postDelay": 1000, + "next": ["GreenTicket@Store@ClickItem", "Stop"] + }, + "YellowTicket@Store@ChooseTicketType": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["高级凭证区"], + "roi": [108, 267, 124, 47], + "postDelay": 1000, + "next": ["YellowTicket@Store@ClickItem", "YellowTicket@Store@Swipe"] + }, + "YellowTicket@Store@Swipe": { + "algorithm": "JustReturn", + "sub": ["SlowlySwipeToTheLeft*6"], + "next": ["YellowTicket@Store@ClickItem", "Stop"] + }, + "YellowTicket@Store@ClickItem": { + "template": [ + "YellowTicket@Store@ClickItem_Headhunting_Permit", + "YellowTicket@Store@ClickItem_Ten-roll_Headhunting_Permit" + ], + "action": "ClickSelf", + "roi": [318, 139, 956, 484], + "next": ["YellowTicket@Store@Purchase"] + }, + "YellowTicket@Store@Purchase": { + "next": ["YellowTicket@Store@PurchasedConfirm"] + }, + "YellowTicket@Store@PurchasedConfirm": { + "baseTask": "CreditShop-Bought", + "template": "CreditShop-Bought.png", + "next": ["YellowTicket@Store@PurchasedConfirm", "YellowTicket@Store@ClickItem", "Stop"] + } } diff --git a/resource/template/GreenTicket@Store@ClickItem_Furniture_Part.png b/resource/template/GreenTicket@Store@ClickItem_Furniture_Part.png new file mode 100644 index 0000000000..089325b4ec Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Furniture_Part.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_Headhunting_Permit.png b/resource/template/GreenTicket@Store@ClickItem_Headhunting_Permit.png new file mode 100644 index 0000000000..50ac5c554e Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Headhunting_Permit.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_LMD.png b/resource/template/GreenTicket@Store@ClickItem_LMD.png new file mode 100644 index 0000000000..a58df10fab Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_LMD.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_Orundum.png b/resource/template/GreenTicket@Store@ClickItem_Orundum.png new file mode 100644 index 0000000000..0c0b613b92 Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Orundum.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_Pure_Gold.png b/resource/template/GreenTicket@Store@ClickItem_Pure_Gold.png new file mode 100644 index 0000000000..3ca5a89688 Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Pure_Gold.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_Recruitment_Permit.png b/resource/template/GreenTicket@Store@ClickItem_Recruitment_Permit.png new file mode 100644 index 0000000000..6bee78a188 Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Recruitment_Permit.png differ diff --git a/resource/template/GreenTicket@Store@ClickItem_Tactical_Battle_Record.png b/resource/template/GreenTicket@Store@ClickItem_Tactical_Battle_Record.png new file mode 100644 index 0000000000..d8d7e6b997 Binary files /dev/null and b/resource/template/GreenTicket@Store@ClickItem_Tactical_Battle_Record.png differ diff --git a/resource/template/SS@Store@ClickItem.png b/resource/template/SS@Store@ClickItem.png new file mode 100644 index 0000000000..7540589fb2 Binary files /dev/null and b/resource/template/SS@Store@ClickItem.png differ diff --git a/resource/template/SS@Store@RecruitSkip.png b/resource/template/SS@Store@RecruitSkip.png new file mode 100644 index 0000000000..09ab4cc54b Binary files /dev/null and b/resource/template/SS@Store@RecruitSkip.png differ diff --git a/resource/template/YellowTicket@Store@ClickItem_Headhunting_Permit.png b/resource/template/YellowTicket@Store@ClickItem_Headhunting_Permit.png new file mode 100644 index 0000000000..3014eb22db Binary files /dev/null and b/resource/template/YellowTicket@Store@ClickItem_Headhunting_Permit.png differ diff --git a/resource/template/YellowTicket@Store@ClickItem_Ten-roll_Headhunting_Permit.png b/resource/template/YellowTicket@Store@ClickItem_Ten-roll_Headhunting_Permit.png new file mode 100644 index 0000000000..afcaed4df1 Binary files /dev/null and b/resource/template/YellowTicket@Store@ClickItem_Ten-roll_Headhunting_Permit.png differ diff --git a/src/MaaCore/MaaCore.vcxproj b/src/MaaCore/MaaCore.vcxproj index d5373bc9fc..4768d90032 100644 --- a/src/MaaCore/MaaCore.vcxproj +++ b/src/MaaCore/MaaCore.vcxproj @@ -175,6 +175,7 @@ + @@ -205,7 +206,6 @@ - diff --git a/src/MaaCore/MaaCore.vcxproj.filters b/src/MaaCore/MaaCore.vcxproj.filters index 161c023228..754ee62d07 100644 --- a/src/MaaCore/MaaCore.vcxproj.filters +++ b/src/MaaCore/MaaCore.vcxproj.filters @@ -277,9 +277,6 @@ Resource\tasks\base\Stages - - Resource\tasks\base\Stages - Resource\tasks\base\Stages @@ -703,6 +700,9 @@ Resource\tasks\base\Stages + + Resource\tasks\base\Stages + diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index 709b94e848..919050c47c 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -693,6 +693,12 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla Mini Game Name Contest Channel: Green Grass City (Unofficial) Manually skip the tutorial dialogue, then you can exit directly. Start the task from the event screen (there is a 「Join Event」 button in the bottom right corner). Follow the Duck Lord's choice. + Green Ticket Store + Buy everything on the 1st floor. Buy Headhunting Permits and Recruitment Permits on the 2nd floor. + Yellow Ticket Store + 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. Identifying…… diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 10329d3649..9950ba2321 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -696,6 +696,12 @@ C:\\leidian\\LDPlayer9 ミニゲーム名 対決チャンネル:グリーングラスシティ(非公式) 手動でチュートリアルの会話をスキップし、直接退出することができます。 イベント画面(右下角に「イベントに参加」ボタンがあります)でタスクを開始します。 ダック卿の選択をフォローする。 + 緑チケット商店 + 1階は全部購入。 2階は訪問証と募集許可を購入。 + 黄チケット商店 + 少なくとも258枚の黄チケットを持っていることを確認してください。 + イベントショップ + イベントのショップページからのみ始めてください。 購入数量無制限のアイテムは購入しないでください。 認識中…… diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index c6dc2ce362..6cf1345b97 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -696,6 +696,12 @@ C:\\leidian\\LDPlayer9 미니 게임 이름 대결 채널: 그린그래스 시티 (비공식) 튜토리얼 대화를 수동으로 건너뛴 후, 바로 종료할 수 있습니다. 이벤트 메인 화면(오른쪽 아래에 「이벤트 참가」 표시 있음)에서 임무를 시작하세요. 덕로드만 믿고 따라가면 손해는 없을거에요. + 녹색 티켓 상점 + 1층은 전부 구매. 2층은 방문 증서와 모집 허가를 구매. + 황색 티켓 상점 + 최소한 258장의 노란색 티켓을 가지고 있는지 확인하세요. + 이벤트 상점 + 이벤트 상점 페이지에서만 시작하세요. 구매 수량이 무제한인 아이템은 구매하지 마세요. 인식 중…… diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 6284b685d8..ac991fd568 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -697,6 +697,12 @@ C:\\leidian\\LDPlayer9。\n 小游戏名称 争锋频道:青草城 手动跳过教程对话,然后可以直接退出。 在活动主界面(右下角有 「加入赛事」 处)开始任务。 跟着鸭总喝口汤。 + 绿票商店 + 1层全买。 2层买寻访凭证和招聘许可。 + 黄票商店 + 请确保自己至少有258张黄票。 + 活动商店 + 请在活动商店页面开始。 不买无限池。 正在识别…… diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 68c13581b0..9597ef0da2 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -694,6 +694,13 @@ C:\\leidian\\LDPlayer9。\n 小遊戲名稱 爭鋒頻道:青草城 + 手動跳過教程對話,然後可以直接退出。 在活動主界面(右下角有「加入賽事」處)開始任務。 跟著鴨總喝口湯。 + 綠票商店 + 1層全買。 2層買尋訪憑證和招聘許可。 + 黃票商店 + 請確保自己至少有258張黃票。 + 活動商店 + 請在活動商店頁面開始。 不購買無限量物品。 正在辨識…… diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index b8418f5039..3d3664bac0 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -1061,6 +1061,9 @@ namespace MaaWpfGui.ViewModels.UI [ new() { Display = LocalizationHelper.GetString("NotSelected"), Value = "Stop" }, new() { Display = LocalizationHelper.GetString("MiniGameNameGreenGrass"), Value = "GreenGrass@DuelChannel@Begin" }, + 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" }, ]; private string _miniGameTaskName = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.MiniGameTaskName, "Stop"); @@ -1093,6 +1096,9 @@ namespace MaaWpfGui.ViewModels.UI return name switch { "GreenGrass@DuelChannel@Begin" => LocalizationHelper.GetString("MiniGameNameGreenGrassTip"), + "GreenTicket@Store@Begin" => LocalizationHelper.GetString("MiniGameNameGreenTicketStoreTip"), + "YellowTicket@Store@Begin" => LocalizationHelper.GetString("MiniGameNameYellowTicketStoreTip"), + "SS@Store@Begin" => LocalizationHelper.GetString("MiniGameNameSsStoreTip"), _ => string.Empty, }; }