diff --git a/README.md b/README.md index 2c20199..f39dce0 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ 为**学园偶像大师**的制作人们设计的自动化工具 +[English](./README_en.md) | [简体中文](./README.md) + ## 功能介绍 diff --git a/README_en.md b/README_en.md new file mode 100644 index 0000000..8cbb091 --- /dev/null +++ b/README_en.md @@ -0,0 +1,101 @@ +
+ +LOGO + +# MaaHatsuboshiTA + +Static Badge +platform +Static Badge +THE IDOLM@STER + +An automation tool designed for producers of **Gakuen Idolmaster** + +[English](./README_en.md) | [简体中文](./README.md) + +
+ +## Feature Introduction + +Features currently under testing: + +- Farm New Account: Loop 30 draws until you get the item, you can customize which pool to draw from, how many to draw, and what to draw (only supports cards). +- Foolish arena: Who to fight is not a loss? Automatically fight the first player until the number of times is exhausted. + +Features under development: + +* Register custom tasks to handle more complex logic +* Foolish P card (imitating arena AI) + * Tentative implementation order: Poison -> Sensibility -> Shield + +Pie in the sky: + +* Visual interface +* One-click long grass +* Intelligent arena +* Intelligent P card + +> [!NOTE] +> Since the ten consecutive draws event for the opening will end at the end of June, brushing the initial will become very cost-ineffective (compared to buying the initial number), so the initial brushing related features are temporarily not considered for further development, please understand. + +## Installation Instructions + +### Windows + +- For most users, please download `MaaHatsuboshiTA-win-x86_64-vXXX.zip` +- If you are sure that your computer is an arm architecture, please download `MaaHatsuboshiTA-win-aarch64-vXXX.zip` +- Run `MaaPiCli.exe` after extraction + +### macOS + +- If you are using an Intel processor, please download `MaaHatsuboshiTA-macos-x86_64-vXXX.zip` + +- If you are using an M1, M2 or other arm processors, please download `MaaHatsuboshiTA-macos-aarch64-vXXX.zip` + +- Usage: + + ```bash + chmod a+x MaaPiCli + ./MaaPiCli + ``` +### Linux + +Bro, who uses Linux to hang a simulator? + +## Usage Instructions + +Before using the tool, complete the following tasks: + +* Ensure that the game runs smoothly on the emulator without severe lag or delay. +* Adjust the emulator's display settings to portrait mode (mandatory) with a recommended resolution of 900*1600 and a recommended DPI of 320. +* Enable the ADB debugging option in the emulator. +* Complete the download of all game resources. +* Finish the mandatory tutorial within the game. + +For first-time users, follow the instructions displayed in the terminal: + +1. Select ADB, typically by choosing the auto-detection option (Auto detect) and then selecting the emulator you are using. If issues arise, you can manually input the absolute path and port for ADB. +2. Add tasks to the task list. +3. Choose task content options, such as the desired number of SSRs. +4. **[Important]** Operate the emulator according to the task prompts, for example, "Ensure the game is exited to the title screen before starting." +5. Select "Run Task" to begin the task. +6. Once all tasks are completed (such as obtaining an account that meets the requirements), the tool will automatically stop. + +> [!WARNING] +> It is strictly forbidden to **zoom** the emulator window during operation, as this will cause coordinate recognition to drift, potentially leading to task failure. + +If the operation encounters problems (such as the tool not responding), try clicking the buttons that should be interacted with, and then check if the process continues. If not, restart the tool and begin the process again. + +For subsequent uses of the tool, you can modify the task list according to your needs (Delete Task + Add Task), and then run the tasks again (Run Task). + +## Feedback on Issues + +- **Report issues using the issue feature as a priority.** +- Tencent QQ group: [971618596](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=2zMt_FrrG_qeW-NpJubuHsE7lRjz_UMJ&authKey=GUiDPRYCkfpxoLxhcAzbEXZCm9LnqQSJoJ6FqafpU%2BxTPGFLtD5seFrtns%2Fdwk2k&noverify=0&group_code=971618596) + +## Support the Author + + + + + diff --git a/assets/interface.json b/assets/interface.json index d65c426..0d0544e 100644 --- a/assets/interface.json +++ b/assets/interface.json @@ -1,7 +1,7 @@ { "controller": [ { - "name": "安卓端", + "name": "android", "type": "Adb" } ], @@ -15,27 +15,27 @@ ], "task": [ { - "name": "刷初始(开始前将游戏退出至最外层标题页)", + "name": "刷初始(开始前将游戏退至最外标题页)| Farm New Account (To Title Page First)", "entry": "Clear_Data", "option": [ - "抽什么池", - "不同SSR支援卡数量", - "第一张指定卡", - "第二张指定卡" + "抽什么池 | Which Pool", + "不同SSR支援卡数量 | S-SSR Number Needed", + "第一张指定卡 | First Specific", + "第二张指定卡 | Second Specific" ] }, { - "name": "弱智竞技场(开始前将游戏切换至主页/Home页)", + "name": "弱智竞技场(开始前将游戏切换至Home页)| Auto Contest (To Home Page First)", "entry": "Main_To_Contest" } ], "recognizer": {}, "action": {}, "option": { - "抽什么池": { + "抽什么池 | Which Pool": { "cases": [ { - "name": "UP池10连(保底不继承)+普池20连", + "name": "UP池10连+普池20连 | 10UP+20Normel", "param": { "Gacha_UP_Pool": { "enabled": true @@ -43,7 +43,7 @@ } }, { - "name": "全部抽普池30连", + "name": "全部抽普池30连 | 30Normel", "param": { "Gacha_Normel_Pool": { "enabled": true @@ -52,7 +52,7 @@ } ] }, - "不同SSR支援卡数量": { + "不同SSR支援卡数量 | S-SSR Number Needed": { "cases": [ { "name": "1张", @@ -96,10 +96,10 @@ } ] }, - "第一张指定卡": { + "第一张指定卡 | First Specific": { "cases": [ { - "name": "【~~~不指定~~~】", + "name": "【---不指定 No Specific---】", "param": {} }, { @@ -269,10 +269,10 @@ } ] }, - "第二张指定卡": { + "第二张指定卡 | Second Specific": { "cases": [ { - "name": "【~~~不指定~~~】", + "name": "【---不指定 No Specific---】", "param": {} }, { diff --git a/assets/resource/base/pipeline/my_task.json b/assets/resource/base/pipeline/my_task.json index 7cb3f33..9670f2a 100644 --- a/assets/resource/base/pipeline/my_task.json +++ b/assets/resource/base/pipeline/my_task.json @@ -3,6 +3,7 @@ "recognition": "TemplateMatch", "template": "icon_menu_green_mask.png", "action": "Click", + "timeout": 30000, "post_delay": 800, "roi": [ 575, @@ -163,6 +164,7 @@ "is_sub": true, "recognition": "TemplateMatch", "template": "icon_gacha_with_10_tickets.png", + "order_by": "Score", "action": "Click", "next": [ "Gacha_With_10_Tickets_Confirm" @@ -190,6 +192,7 @@ "Gacha_Normel_With_Diamonds_And_Leave": { "recognition": "TemplateMatch", "template": "icon_gacha_with_diamonds.png", + "order_by": "Score", "action": "Click", "next": [ "Gacha_Normel_With_Diamonds_Confirm" @@ -221,12 +224,14 @@ "is_sub": true, "recognition": "TemplateMatch", "template": "icon_change_pool.png", + "post_delay": 1500, "action": "Click" }, "Gacha_UP_Pool": { "enabled": false, "recognition": "TemplateMatch", "template": "icon_gacha_with_diamonds.png", + "order_by": "Score", "action": "Click", "next": [ "Gacha_UP_With_Diamonds_Confirm" @@ -257,6 +262,7 @@ "Change_Pool_And_Gacha_Normel": { "recognition": "TemplateMatch", "template": "icon_change_pool.png", + "post_delay": 1500, "action": "Click", "next": [ "Gacha_With_Tickets", @@ -304,77 +310,152 @@ "Check_SSR_5": { "enabled": false, "recognition": "TemplateMatch", - "template": "bar_ssr.png", + "template": [ + "card/card_ssr_a.png", + "card/card_ssr_b.png", + "card/card_ssr_c.png", + "card/card_ssr_d.png", + "card/card_ssr_e.png", + "card/card_ssr_f.png", + "card/card_ssr_g.png", + "card/card_ssr_h.png", + "card/card_ssr_i.png", + "card/card_ssr_j.png", + "card/card_ssr_k.png", + "card/card_ssr_l.png", + "card/card_ssr_m.png", + "card/card_ssr_n.png", + "card/card_ssr_o.png" + ], "roi": [ - 251, - 632, - 226, - 47 + 253, + 548, + 215, + 67 ], "next": [ "Check_Support_Specific_First" - ], - "threshold": 0.85 + ] }, "Check_SSR_4": { "enabled": false, "recognition": "TemplateMatch", - "template": "bar_ssr.png", + "template": [ + "card/card_ssr_a.png", + "card/card_ssr_b.png", + "card/card_ssr_c.png", + "card/card_ssr_d.png", + "card/card_ssr_e.png", + "card/card_ssr_f.png", + "card/card_ssr_g.png", + "card/card_ssr_h.png", + "card/card_ssr_i.png", + "card/card_ssr_j.png", + "card/card_ssr_k.png", + "card/card_ssr_l.png", + "card/card_ssr_m.png", + "card/card_ssr_n.png", + "card/card_ssr_o.png" + ], "roi": [ - 22, - 628, - 232, - 57 + 34, + 549, + 210, + 66 ], "next": [ "Check_Support_Specific_First" - ], - "threshold": 0.85 + ] }, "Check_SSR_3": { "enabled": false, "recognition": "TemplateMatch", - "template": "bar_ssr.png", + "template": [ + "card/card_ssr_a.png", + "card/card_ssr_b.png", + "card/card_ssr_c.png", + "card/card_ssr_d.png", + "card/card_ssr_e.png", + "card/card_ssr_f.png", + "card/card_ssr_g.png", + "card/card_ssr_h.png", + "card/card_ssr_i.png", + "card/card_ssr_j.png", + "card/card_ssr_k.png", + "card/card_ssr_l.png", + "card/card_ssr_m.png", + "card/card_ssr_n.png", + "card/card_ssr_o.png" + ], "roi": [ - 467, - 493, - 227, - 67 + 475, + 420, + 214, + 64 ], "next": [ "Check_Support_Specific_First" - ], - "threshold": 0.85 + ] }, "Check_SSR_2": { "enabled": false, "recognition": "TemplateMatch", - "template": "bar_ssr.png", + "template": [ + "card/card_ssr_a.png", + "card/card_ssr_b.png", + "card/card_ssr_c.png", + "card/card_ssr_d.png", + "card/card_ssr_e.png", + "card/card_ssr_f.png", + "card/card_ssr_g.png", + "card/card_ssr_h.png", + "card/card_ssr_i.png", + "card/card_ssr_j.png", + "card/card_ssr_k.png", + "card/card_ssr_l.png", + "card/card_ssr_m.png", + "card/card_ssr_n.png", + "card/card_ssr_o.png" + ], "roi": [ - 239, - 496, - 240, - 55 + 252, + 421, + 215, + 67 ], "next": [ "Check_Support_Specific_First" - ], - "threshold": 0.85 + ] }, "Check_SSR_1": { "enabled": false, "recognition": "TemplateMatch", - "template": "bar_ssr.png", + "template": [ + "card/card_ssr_a.png", + "card/card_ssr_b.png", + "card/card_ssr_c.png", + "card/card_ssr_d.png", + "card/card_ssr_e.png", + "card/card_ssr_f.png", + "card/card_ssr_g.png", + "card/card_ssr_h.png", + "card/card_ssr_i.png", + "card/card_ssr_j.png", + "card/card_ssr_k.png", + "card/card_ssr_l.png", + "card/card_ssr_m.png", + "card/card_ssr_n.png", + "card/card_ssr_o.png" + ], "roi": [ - 63, - 514, - 172, - 43 + 36, + 420, + 209, + 84 ], "next": [ "Check_Support_Specific_First" - ], - "threshold": 0.85 + ] }, "Check_Support_Specific_First": { "enabled": false,