From 1691f828ff7712ff8d6834e5ec445dc734df5a9f Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:32:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=89=E9=94=8B=E9=A2=91=E9=81=93?= =?UTF-8?q?=EF=BC=9A=E8=9C=9C=E6=9E=9C=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MAA.sln.DotSettings | 4 +- resource/tasks/MiniGame/ALL.json | 73 ++++++++++++++++++ resource/tasks/tasks.json | 71 ----------------- ...iGame@ALL@GreenGrass@DuelChannel@duck.png} | Bin src/MaaWpfGui/Res/Localizations/en-us.xaml | 6 +- src/MaaWpfGui/Res/Localizations/ja-jp.xaml | 6 +- src/MaaWpfGui/Res/Localizations/ko-kr.xaml | 6 +- src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 6 +- src/MaaWpfGui/Res/Localizations/zh-tw.xaml | 6 +- .../ViewModels/UI/RecognizerViewModel.cs | 5 +- 10 files changed, 99 insertions(+), 84 deletions(-) create mode 100644 resource/tasks/MiniGame/ALL.json rename resource/template/{GreenGrass@DuelChannel@duck.png => MiniGame/ALL/MiniGame@ALL@GreenGrass@DuelChannel@duck.png} (100%) diff --git a/MAA.sln.DotSettings b/MAA.sln.DotSettings index 63857a4d9d..e0d1beac63 100644 --- a/MAA.sln.DotSettings +++ b/MAA.sln.DotSettings @@ -1,4 +1,4 @@ - + EN KR JP @@ -30,6 +30,8 @@ SSS WSA XYAZ + @ALL@ + @AT@ True True True diff --git a/resource/tasks/MiniGame/ALL.json b/resource/tasks/MiniGame/ALL.json new file mode 100644 index 0000000000..fdf1f9ab6e --- /dev/null +++ b/resource/tasks/MiniGame/ALL.json @@ -0,0 +1,73 @@ +{ + "MiniGame@ALL@GreenGrass@DuelChannel@Begin": { + "doc": "争锋频道:青草城", + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["加入赛事"], + "roi": [1072, 581, 201, 125], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@ChooseMode", "MiniGame@ALL@GreenGrass@DuelChannel@Begin"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseMode": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["自娱自乐"], + "roi": [228, 584, 864, 58], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Enter"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@Enter": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": ["开始", "游戏"], + "roi": [1107, 499, 157, 157], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Loading"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@Loading": { + "algorithm": "JustReturn", + "postDelay": 2000, + "next": [ + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseFlag", + "MiniGame@ALL@GreenGrass@DuelChannel@Enter", + "MiniGame@ALL@GreenGrass@DuelChannel@End", + "MiniGame@ALL@GreenGrass@DuelChannel@Loading" + ] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseFlag": { + "algorithm": "OcrDetect", + "text": ["剩余礼物"], + "roi": [562, 0, 184, 125], + "next": [ + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseLeft", + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseRight", + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseRandom" + ] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseLeft": { + "algorithm": "MatchTemplate", + "template": "MiniGame@ALL@GreenGrass@DuelChannel@duck.png", + "roi": [13, 118, 54, 394], + "action": "ClickRect", + "specificRect": [65, 608, 44, 63], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Loading"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseRight": { + "algorithm": "MatchTemplate", + "template": "MiniGame@ALL@GreenGrass@DuelChannel@duck.png", + "roi": [1201, 117, 58, 386], + "action": "ClickRect", + "specificRect": [1156, 596, 56, 84], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Loading"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@ChooseRandom": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [65, 608, 44, 63], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Loading"] + }, + "MiniGame@ALL@GreenGrass@DuelChannel@End": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "roi": [1010, 611, 212, 109], + "text": ["返回主页"], + "next": ["MiniGame@ALL@GreenGrass@DuelChannel@Begin", "MiniGame@ALL@GreenGrass@DuelChannel@End"] + } +} \ No newline at end of file diff --git a/resource/tasks/tasks.json b/resource/tasks/tasks.json index 31441c611d..562e1cf31e 100644 --- a/resource/tasks/tasks.json +++ b/resource/tasks/tasks.json @@ -5008,77 +5008,6 @@ "roi": [740, 565, 300, 65], "preDelay": 200 }, - "GreenGrass@DuelChannel@Begin": { - "doc": "争锋频道:青草城", - "algorithm": "OcrDetect", - "action": "ClickSelf", - "text": ["加入赛事"], - "roi": [1072, 581, 201, 125], - "next": ["GreenGrass@DuelChannel@ChooseMode", "GreenGrass@DuelChannel@Begin"] - }, - "GreenGrass@DuelChannel@ChooseMode": { - "algorithm": "OcrDetect", - "action": "ClickSelf", - "text": ["自娱自乐"], - "roi": [228, 584, 864, 58], - "next": ["GreenGrass@DuelChannel@Enter"] - }, - "GreenGrass@DuelChannel@Enter": { - "algorithm": "OcrDetect", - "action": "ClickSelf", - "text": ["开始", "游戏"], - "roi": [1107, 499, 157, 157], - "next": ["GreenGrass@DuelChannel@Loading"] - }, - "GreenGrass@DuelChannel@Loading": { - "algorithm": "JustReturn", - "postDelay": 2000, - "next": [ - "GreenGrass@DuelChannel@ChooseFlag", - "GreenGrass@DuelChannel@Enter", - "GreenGrass@DuelChannel@End", - "GreenGrass@DuelChannel@Loading" - ] - }, - "GreenGrass@DuelChannel@ChooseFlag": { - "algorithm": "OcrDetect", - "text": ["剩余礼物"], - "roi": [562, 0, 184, 125], - "next": [ - "GreenGrass@DuelChannel@ChooseLeft", - "GreenGrass@DuelChannel@ChooseRight", - "GreenGrass@DuelChannel@ChooseRandom" - ] - }, - "GreenGrass@DuelChannel@ChooseLeft": { - "algorithm": "MatchTemplate", - "template": "GreenGrass@DuelChannel@duck.png", - "roi": [13, 118, 54, 394], - "action": "ClickRect", - "specificRect": [65, 608, 44, 63], - "next": ["GreenGrass@DuelChannel@Loading"] - }, - "GreenGrass@DuelChannel@ChooseRight": { - "algorithm": "MatchTemplate", - "template": "GreenGrass@DuelChannel@duck.png", - "roi": [1201, 117, 58, 386], - "action": "ClickRect", - "specificRect": [1156, 596, 56, 84], - "next": ["GreenGrass@DuelChannel@Loading"] - }, - "GreenGrass@DuelChannel@ChooseRandom": { - "algorithm": "JustReturn", - "action": "ClickRect", - "specificRect": [65, 608, 44, 63], - "next": ["GreenGrass@DuelChannel@Loading"] - }, - "GreenGrass@DuelChannel@End": { - "algorithm": "OcrDetect", - "action": "ClickSelf", - "roi": [1010, 611, 212, 109], - "text": ["返回主页"], - "next": ["GreenGrass@DuelChannel@Begin", "GreenGrass@DuelChannel@End"] - }, "Store@Begin": { "doc": "绿票、黄票商店", "algorithm": "JustReturn", diff --git a/resource/template/GreenGrass@DuelChannel@duck.png b/resource/template/MiniGame/ALL/MiniGame@ALL@GreenGrass@DuelChannel@duck.png similarity index 100% rename from resource/template/GreenGrass@DuelChannel@duck.png rename to resource/template/MiniGame/ALL/MiniGame@ALL@GreenGrass@DuelChannel@duck.png diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index 1abbfc794d..b780ef1c58 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -772,8 +772,10 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla Mini Game Name AT - Mikage Consultation Office - Mini Game Start the task from the event screen (there is a 「Open for Business」 button in the bottom right corner). - 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. + 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. + Contest Channel:(Unofficial) + {key=MiniGame@ALL@GreenGrassTip} Green Ticket Store Buy everything on the 1st floor. Buy Headhunting Permits and Recruitment Permits on the 2nd floor. Yellow Ticket Store diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 43f10b8fc7..9b7fd7c243 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -772,8 +772,10 @@ C:\\leidian\\LDPlayer9 ミニゲーム名 AT - 相談室 イベント画面(右下角に 「営業開始」 ボタンがあります)でタスクを開始します。 - 対決チャンネル:グリーングラスシティ(非公式) - 手動でチュートリアルの会話をスキップし、直接退出することができます。 イベント画面(右下角に「イベントに参加」ボタンがあります)でタスクを開始します。 ダック卿の選択をフォローする。 + 対決チャンネル:グリーングラスシティ(非公式) + 手動でチュートリアルの会話をスキップし、直接退出することができます。 イベント画面(右下角に「イベントに参加」ボタンがあります)でタスクを開始します。 ダック卿の選択をフォローする。 + 対決チャンネル:(非公式) + {key=MiniGame@ALL@GreenGrassTip} 緑チケット商店 1階は全部購入。 2階はスカウト券と求人票を購入のみ。 黄チケット商店 diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index 736db17ecb..1980f492c4 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -772,8 +772,10 @@ C:\\leidian\\LDPlayer9 미니 게임 이름 AT (허) - 상담실 (비공식) 이벤트 메인 화면에서 임무를 시작하세요 (오른쪽 아래 「영업 시작」) - 대결 채널: 그린그래스 시티 (비공식) - 튜토리얼 대화를 수동으로 건너뛴 후, 바로 종료할 수 있어요 이벤트 메인 화면에서 임무를 시작하세요 (오른쪽 아래 「이벤트 참가」) 덕로드만 믿고 따라가면 손해는 없을거에요 + 대결 채널: 그린그래스 시티 (비공식) + 튜토리얼 대화를 수동으로 건너뛴 후, 바로 종료할 수 있어요 이벤트 메인 화면에서 임무를 시작하세요 (오른쪽 아래 「이벤트 참가」) 덕로드만 믿고 따라가면 손해는 없을거에요 + 대결 채널: (비공식) + {key=MiniGame@ALL@GreenGrassTip} 자격증명서 상점 1단계는 전부 구매하고 2단계는 헤드헌팅 허가증과 모집 허가증을 구매해요 고급증명서 상점 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 07854e6ae0..37e3042057 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -772,8 +772,10 @@ C:\\leidian\\LDPlayer9。\n 小游戏名称 AT-相谈室 在活动主界面(右下角有 「开始营业」 处)开始任务。 - 争锋频道:青草城 - 手动跳过教程对话,然后可以直接退出。 在活动主界面(右下角有 「加入赛事」 处)开始任务。 跟着鸭总喝口汤。 + 争锋频道:青草城 + 手动跳过教程对话,然后可以直接退出。 在活动主界面(右下角有 「加入赛事」 处)开始任务。 跟着鸭总喝口汤。 + 争锋频道:蜜果城 + {key=MiniGame@ALL@GreenGrassTip} 绿票商店 1层全买。 2层买寻访凭证和招聘许可。 黄票商店 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 1f115e5f72..dc9cd84b92 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -771,8 +771,10 @@ C:\\leidian\\LDPlayer9。\n 小遊戲名稱 AT-相談室 在活動主介面(右下角有「開始營業」處)開始任務。 - 爭鋒頻道:青草城 - 手動跳過教學對話,然後可以直接退出。 在活動主介面(右下角有「加入賽事」處)開始任務。 跟著鴨總喝口湯。 + 爭鋒頻道:青草城 + 手動跳過教學對話,然後可以直接退出。 在活動主介面(右下角有「加入賽事」處)開始任務。 跟著鴨總喝口湯。 + 爭鋒頻道:蜜果城 + {key=MiniGame@ALL@GreenGrassTip} 綠票商店 1 層全買。 2 層買尋訪憑證和招聘許可。 黃票商店 diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index ba821d5ba7..facfd8ac67 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -1180,12 +1180,13 @@ namespace MaaWpfGui.ViewModels.UI public static ObservableCollection MiniGameTaskList { get; } = [ + new() { Display = LocalizationHelper.GetString("MiniGame@ALL@HoneyFruit"), Value = "MiniGame@ALL@GreenGrass@DuelChannel@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameSsStore"), Value = "SS@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameGreenTicketStore"), Value = "GreenTicket@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameYellowTicketStore"), Value = "YellowTicket@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGameNameRAStore"), Value = "RA@Store@Begin" }, new() { Display = LocalizationHelper.GetString("MiniGame@AT@ConversationRoom"), Value = "MiniGame@AT@ConversationRoom" }, - new() { Display = LocalizationHelper.GetString("MiniGameNameGreenGrass"), Value = "GreenGrass@DuelChannel@Begin" }, + new() { Display = LocalizationHelper.GetString("MiniGame@ALL@GreenGrass"), Value = "MiniGame@ALL@GreenGrass@DuelChannel@Begin" }, ]; private string _miniGameTaskName = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.MiniGameTaskName, "SS@Store@Begin"); @@ -1222,7 +1223,7 @@ namespace MaaWpfGui.ViewModels.UI "YellowTicket@Store@Begin" => LocalizationHelper.GetString("MiniGameNameYellowTicketStoreTip"), "RA@Store@Begin" => LocalizationHelper.GetString("MiniGameNameRAStoreTip"), "MiniGame@AT@ConversationRoom" => LocalizationHelper.GetString("MiniGame@AT@ConversationRoomTip"), - "GreenGrass@DuelChannel@Begin" => LocalizationHelper.GetString("MiniGameNameGreenGrassTip"), + "MiniGame@ALL@GreenGrass@DuelChannel@Begin" => LocalizationHelper.GetString("MiniGame@ALL@GreenGrassTip"), _ => string.Empty, }; }