Giter Site home page Giter Site logo

mba's Introduction

Important

由于开发者是个单线程生物,在 MaaFramework 的一些基础设施可用之前,此仓库中断维护(咕了)。

Since the developer is a single-threaded creature, this repository is in hiatus until some of the MaaFramework infrastructure is available.

LOGO

MBA

基于 MAA 全新架构的 BA 小助手

图像技术 + 模拟控制,解放双手,不再点点点!

MaaFramework 强力驱动!

下载地址

注意

  • 打不开 / 一闪而过可能是存在中文路径。
  • 想要开箱即用,请直接下载 MBA.Cli-single-cut 包。
  • runtime-relied 包在运行前需要预先安装 .NET 运行时 7.0
  • 其他系统、架构想要下载预构建好的 runtime-relied 包,欢迎 pr 或提 issue。

使用说明

基本说明

  1. 请根据 模拟器支持情况,进行对应的操作。
  2. 修改模拟器分辨率为 16:9 比例,最低 1280 * 720,更高不限。
  3. 开始使用吧!

开发相关

Join us

用户反馈 / 开发 QQ 群:205135027

How to build

  1. Clone 本仓库

  2. 编译环境准备

    下载 .NET 7.0 SDK 或 Visual Studio 2022

  3. Build

    • 使用 VS 生成

    • 使用命令行生成

    cd MBA/src/MBA.Cli
    dotnet build
    # 或专为安装了运行时的 winX64 用户打包
    dotnet build -r win-x64 -c Release -p:PublishSingleFile=true --self-contained false
    # 或者发布一个自包含应用
    dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true --self-contained true -p:PublishTrimmed=true
  4. 生成的二进制及相关资源文件在 MBA\src\MBA.Cli\bin 目录下

致谢

开源库

画大饼

v1.0

  • Daily

  • Home

    • Tasks
    • Mailbox
    • Cafe : TODO 需要缩放
    • Lesson : 需要判断颜色 + 遍历所有可选项
    • Club
    • Crafting : 需要判断颜色 + 遍历所有可选项
    • Shop
  • Campaign

    • Tactical Challenge
    • Scrimmage
    • Commissions
    • Bounty
  • Mission

    • Normal
    • Hard
    • Event
  • Weekly

  • Support SC / TC / EN / JP

v2.0

  • 关卡掉落识别
  • 仓库识别
  • 材料需求计算
  • 活动关卡导航

v3.0

  • 自动活动导航
  • 自动寻路 (只限无迷雾地图)
  • 自动战斗 (不凹极限比 Auto 打的好就行)

mba's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

mba's Issues

Mission/Commissions/Event idea & GUI

Hi there,

I've developed a Python script with a GUI for Blue Archive called BAAuto, but I must admit that I'm an inexperienced programmer and currently quite busy, so I won't work on it for long. However, I believe there are some valuable ideas within the script, in particularly Missions/Commissions/Event. These ideas could be challenging to manage without a GUI, but I hope you can consider them for future development.

You are welcome to reuse any part of the code. The code related to Missions/Commissions/Event is in BAAuto/modules/mission.py.

Mission/Commissions/Event

Description

This feature allows users to create templates, which are essentially lists of stages for the script to execute. Each stage is defined by a mode (Mission Normal, Hard, Event Quest, Base Defense, or Item Retrieval), a stage name (e.g., 1-1, 01), and the number of sweeps. Users can create multiple templates, but only the preferred template will be loaded into the queue and executed by the script.

Modifiers

  • Reset Daily: If enabled, and the current time is greater than or equal to the reset time, the queue will automatically clear and repopulate with the preferred template stages. This feature activates once a day.
  • Recharge AP: When enabled, the script will recharge AP when it's low using cafe earnings and task rewards.
  • Sweep Event Stages: When enabled, the script will sweep event stages; otherwise, it will ignore them.

GUI

I believe you could make good use of the GUI I've implemented. It's a simple interface for modifying config.json and the output of script.py. It was made using a python library called customtkinter, an enhanced and modern version of the standard tkinter library. While it may not have advanced features, I've included the essentials for a Blue Archive script. The code related to the GUI is in BAAuto/BAAuto.py.

Here's a brief overview of how it works:

  1. It loads the config.json file into a variable called config_data and creates a copy of it with all values set to None, storing them in a variable called widgets.
  2. Customtkinter widgets are defined with a command that calls the save_to_json function, and as they are created, they are added to the widgets variable.
  3. It loads config_data into widgets by accessing the same key in both dictionaries and setting the customtkinter widget to the respective value in config_data.
  4. It saves user input by doing the reverse of the previous step: extracting the value from the customtkinter widget, changing the respective value in config_data, and then saving config.json.

As for displaying script output, it uses a specific widget called CTkTextbox stored in a variable called self.log_textbox. You can define tags to set the color of the text. When you click the start button in the sidebar, it runs script.py as a separate process and starts another thread to analyze its standard output. If it finds specific words using a dictionary called self.log_level_colors (associating words with tags), it will display the line with the specified color; otherwise, it will ignore it.

To help you better understand, I've attached an image that illustrates the GUI with the Mission/Commissions/Event section.

I hope you find this script and GUI useful. While I lack knowledge in C# and Chinese, I'm open to answering any questions you may have regarding the script. If you have any inquiries, please feel free to reach out through this issue. Otherwise, you can close it.

P.S. Could you consider adding the "blue-archive" and "bluearchive" topics to the about section of your repository? I had some difficulty finding it initially, and adding these topics could improve visibility for others on GitHub.

Best regards,
RedDeadDepresso
example

国服一直重复业务区=>点击主界面=>再点击业务区循环

{ "Tasks": [ "Bounty", "Cafe", "Club", "Commissions", "Mailbox", "Scrimmage" ], "TasksExcept": [], "UI": { "CurrentMBACoreVersion": "0.2.0", "FirstStartUp": false, "DebugMode": false, "Proxy": "" }, "Core": { "Adb": "D:\\game\\maa\\adb\\platform-tools\\adb.exe", "AdbAddress": "127.0.0.1:16384", "Touch": "InputPresetAdb", "ScreenCap": "ScreenCapRawWithGzip" }, "Game": { "Language": "SC", "Server": "Chinese", "PackageEntry": "" }, "Daily": { "TacticalChallengeTimes": 5, "CommissionsAllIn": "None", "CommissionsBaseDefenseTimes": 1, "CommissionsItemRetrievalTimes": 0, "BountyAllIn": "DesertRailroad", "BountyOverpassTimes": 2, "BountyDesertRailroadTimes": 2, "BountyClassroomTimes": 2, "ScrimmageAllIn": "Trinity", "ScrimmageTrinityTimes": 2, "ScrimmageGehennaTimes": 2, "ScrimmageMillenniumTimes": 2 }, "Weekly": {}, "Document": { "Tasks": "要执行的任务, 1.Bounty (悬赏通缉), 2.Cafe (咖啡厅), 3.Club (社团), 4.Commissions (特殊任务), TODO (制造), 6.Mailbox (信箱), 7.Scrimmage (学院交流会), TODO (商店), 9.TacticalChallenge (战术大赛), 10.Tasks (任务,日常周常奖励收菜), 100.StartUp (只启动游戏), 101.Daily (做日常), 102.Weekly (做周常)", "TasksExcept": "要排除的任务 (高优先), 以下任务不可被排除: 101.Daily, 102.Weekly, 100.StartUp", "FirstStartUp": "是否第一次启动", "DebugMode": "是否开启 Debug Mode (生成的文件会占用大量空间)", "Proxy": "代理地址,例如 http://127.0.0.1:7890", "Adb": "adb.exe 所在路径,相对绝对均可,例如 C:/adb.exe,不要有中文", "AdbAddress": "adb 连接地址,例如 127.0.0.1:5555", "Touch": "点击方式:InputPresetAdb, InputPresetMinitouch, InputPresetMaatouch", "ScreenCap": "截图方式:ScreenCapFastestWay, ScreenCapRawByNetcat, ScreenCapRawWithGzip, ScreenCapEncode, ScreenCapEncodeToFile, ScreenCapMinicapDirect, ScreenCapMinicapStream", "Language": "游戏内语言:EN (English), TC (Traditional Chinese), SC (Simplified Chinese)", "Server": "游戏服务器:Global, Korea, TaiwanHongKongMacao, NorthAmerica, Europe, Asia, Chinese, YoStarCN, Bilibili, OthersCN", "PackageEntry": "备用启动入口, 当 Language 和 Server 不匹配 或 Server 不支持时使用, 需要填入 activity, 例如 com.hypergryph.arknights/com.u8.sdk.U8UnityContext", "TacticalChallengeTimes": "日活打 JJC 的次数, 0 ~ 5, 0 为只领取信用点", "CommissionsAllIn": "日活剩余的体力要执行的特殊任务, 0.None (不执行), 1.BaseDefense (据点防御), 2.ItemRetrieval (信用回收)", "CommissionsBaseDefenseTimes": "日活特殊任务打据点防御的次数", "CommissionsItemRetrievalTimes": "日活特殊任务打信用回收的次数", "BountyAllIn": "(国服不可用) 日活剩余的票要执行的悬赏通缉, 0.None (不执行), 1.Overpass (高架公路), 2.DesertRailroad (沙漠铁道), 3.Classroom (教室)", "BountyOverpassTimes": "(国服不可用) 日活悬赏通缉打高架公路的次数", "BountyDesertRailroadTimes": "(国服不可用) 日活悬赏通缉打沙漠铁道的次数", "BountyClassroomTimes": "(国服不可用) 日活悬赏通缉打教室的次数", "ScrimmageAllIn": "(国服不可用) 日活剩余的票要执行的悬赏通缉, 0.None (不执行), 1.Trinity (三一), 2.Gehenna (格黑娜), 3.Millennium (千年)", "ScrimmageTrinityTimes": "(国服不可用) 日活学院交流会打三一的次数", "ScrimmageGehennaTimes": "(国服不可用) 日活学院交流会打格黑娜的次数", "ScrimmageMillenniumTimes": "(国服不可用) 日活学院交流会打千年的次数" } }

[Bug] Cafe 卡在 Click_ComfortButton_Partial

 [2023-10-04 23:13:34.189][DBG][Px18020][Tx41103][UnitBase.cpp][L76][MaaNS::ControllerNS::UnitNs::UnitBase::command] [scmd=["adb","-s","192.168.1.110:33445","exec-out","screencap | gzip -1"]] [ret=0] [pipe_data.size()=679233] [sock_data.size()=0] [duration=400ms] 
 [2023-10-04 23:13:34.206][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Click_TouchButton_Partial 
 [2023-10-04 23:13:34.280][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Click_TouchButton_Partial_2023.10.04-23.13.34.2503234.png 
 [2023-10-04 23:13:34.281][DBG][Px18020][Tx60852][OCRer.cpp][L25][MaaNS::VisionNS::OCRer::analyze] Click_TouchButton_Partial Raw: [results=[{"box":[585,616,112,30],"score":0.919474,"text":"点击继续"}]] [param_.model=] [costs=74ms] 
 [2023-10-04 23:13:34.281][DBG][Px18020][Tx60852][OCRer.cpp][L31][MaaNS::VisionNS::OCRer::analyze] Click_TouchButton_Partial Proc: [results=[{"box":[585,616,112,30],"score":0.919474,"text":"点击继续"}]] [expected=[
    "点击继续",
    "点击",
    "继续"
]] [param_.model=] [costs=75ms] 
 [2023-10-04 23:13:34.281][DBG][Px18020][Tx60852][PipelineTask.cpp][L165][MaaNS::TaskNS::PipelineTask::find_first] | leave, 493ms 
 [2023-10-04 23:13:34.281][INF][Px18020][Tx60852][PipelineTask.cpp][L109][MaaNS::TaskNS::PipelineTask::find_first_and_run] Task hit: Click_TouchButton_Partial [result.rec_result.box=[112 x 30 from (585, 616)]] 
 [2023-10-04 23:13:34.282][DBG][Px18020][Tx60852][Actuator.cpp][L16][MaaNS::TaskNS::Actuator::run] [task_data.name=Click_TouchButton_Partial] | enter 
 [2023-10-04 23:13:34.282][DBG][Px18020][Tx60852][Actuator.cpp][L230][MaaNS::TaskNS::Actuator::sleep] ready to sleep 200ms [interval=200ms] 
 [2023-10-04 23:13:34.493][DBG][Px18020][Tx60852][Actuator.cpp][L239][MaaNS::TaskNS::Actuator::sleep] end of sleep 200ms [interval=200ms] 
 [2023-10-04 23:13:34.493][DBG][Px18020][Tx60852][Actuator.cpp][L230][MaaNS::TaskNS::Actuator::sleep] ready to sleep 500ms [interval=500ms] 
 [2023-10-04 23:13:34.493][DBG][Px18020][Tx41103][Base/MessageNotifier.hpp][L18][MaaNS::MessageNotifier<void (__cdecl*)(char const *,char const *,void *),void *>::notify] [callback_=00007FF947A43324] [callback_arg_=0000000000000000] [msg=Controller.Action.Started] [details={
    "id": 354,
    "uuid": "aac5b0494acca252"
}] | enter 
 [2023-10-04 23:13:34.493][DBG][Px18020][Tx41103][Base/MessageNotifier.hpp][L18][MaaNS::MessageNotifier<void (__cdecl*)(char const *,char const *,void *),void *>::notify] | leave, 0ms 
 [2023-10-04 23:13:34.493][INF][Px18020][Tx41103][TapInput.cpp][L29][MaaNS::ControllerNS::UnitNs::TapTouchInput::click] [x=649] [y=629] 
 [2023-10-04 23:13:34.493][DBG][Px18020][Tx41103][TapInput.cpp][L33][MaaNS::ControllerNS::UnitNs::TapTouchInput::click] [x=649] [y=629] 
 [2023-10-04 23:13:34.623][DBG][Px18020][Tx41103][UnitBase.cpp][L76][MaaNS::ControllerNS::UnitNs::UnitBase::command] [scmd=["adb","-s","192.168.1.110:33445","shell","input tap 649 629"]] [ret=0] [pipe_data.size()=0] [sock_data.size()=0] [duration=129ms] 
 [2023-10-04 23:13:34.624][DBG][Px18020][Tx41103][Base/MessageNotifier.hpp][L18][MaaNS::MessageNotifier<void (__cdecl*)(char const *,char const *,void *),void *>::notify] [callback_=00007FF947A43324] [callback_arg_=0000000000000000] [msg=Controller.Action.Completed] [details={
    "id": 354,
    "uuid": "aac5b0494acca252"
}] | enter 
 [2023-10-04 23:13:34.624][DBG][Px18020][Tx41103][Base/MessageNotifier.hpp][L18][MaaNS::MessageNotifier<void (__cdecl*)(char const *,char const *,void *),void *>::notify] | leave, 0ms 
 [2023-10-04 23:13:35.001][DBG][Px18020][Tx60852][Actuator.cpp][L239][MaaNS::TaskNS::Actuator::sleep] end of sleep 500ms [interval=500ms] 
 [2023-10-04 23:13:35.003][DBG][Px18020][Tx60852][Actuator.cpp][L16][MaaNS::TaskNS::Actuator::run] | leave, 721ms 
 [2023-10-04 23:13:35.003][INF][Px18020][Tx60852][PipelineTask.cpp][L65][MaaNS::TaskNS::PipelineTask::run] breakpoints pop [top_bp=End_Cafe] [next_list=[
    "Sub_Click_CloseButton",
    "Sub_Click_StudentAffection",
    "Sub_Click_InvitationButton_Partial",
    "Sub_Click_CafeEarningsButton_Partial",
    "Click_ComfortButton_Partial",
    "Stop"
]] 
 [2023-10-04 23:13:35.003][DBG][Px18020][Tx60852][PipelineTask.cpp][L165][MaaNS::TaskNS::PipelineTask::find_first] [cur_task_name_=Click_TouchButton_Partial] [list=[
    "Sub_Click_CloseButton",
    "Sub_Click_StudentAffection",
    "Sub_Click_InvitationButton_Partial",
    "Sub_Click_CafeEarningsButton_Partial",
    "Click_ComfortButton_Partial",
    "Stop"
]] | enter 
 [2023-10-04 23:13:35.580][DBG][Px18020][Tx41103][UnitBase.cpp][L76][MaaNS::ControllerNS::UnitNs::UnitBase::command] [scmd=["adb","-s","192.168.1.110:33445","exec-out","screencap | gzip -1"]] [ret=0] [pipe_data.size()=854951] [sock_data.size()=0] [duration=575ms] 
 [2023-10-04 23:13:35.598][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Sub_Click_CloseButton 
 [2023-10-04 23:13:35.641][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CloseButton_2023.10.04-23.13.35.6108375.png 
 [2023-10-04 23:13:35.684][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CloseButton_2023.10.04-23.13.35.6528191.png 
 [2023-10-04 23:13:35.727][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CloseButton_2023.10.04-23.13.35.6964249.png 
 [2023-10-04 23:13:35.761][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CloseButton_2023.10.04-23.13.35.7316436.png 
 [2023-10-04 23:13:35.795][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CloseButton_2023.10.04-23.13.35.7666216.png 
 [2023-10-04 23:13:35.796][DBG][Px18020][Tx60852][Matcher.cpp][L38][MaaNS::VisionNS::Matcher::analyze] Sub_Click_CloseButton Raw: [results=[{"box":[1200,88,33,33],"score":0.403183},{"box":[857,146,33,33],"score":0.000000},{"box":[852,146,33,33],"score":0.000000},{"box":[892,145,33,33],"score":0.303049},{"box":[975,58,33,33],"score":0.225712}]] [path=../../Base/image/Buttons/Close.png] [costs=198ms] 
 [2023-10-04 23:13:35.797][DBG][Px18020][Tx60852][Matcher.cpp][L44][MaaNS::VisionNS::Matcher::analyze] Sub_Click_CloseButton Filter: [results=[]] [path=../../Base/image/Buttons/Close.png] [threshold=0.7] [costs=198ms] 
 [2023-10-04 23:13:35.797][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Sub_Click_StudentAffection 
 [2023-10-04 23:13:36.442][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_StudentAffection_2023.10.04-23.13.36.4129352.png 
 [2023-10-04 23:13:36.443][DBG][Px18020][Tx60852][Matcher.cpp][L38][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Raw: [results=[{"box":[856,207,50,60],"score":0.000000}]] [path=../../Base/image/Cafe/StudentAffection.png] [costs=645ms] 
 [2023-10-04 23:13:36.443][DBG][Px18020][Tx60852][Matcher.cpp][L44][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Filter: [results=[]] [path=../../Base/image/Cafe/StudentAffection.png] [threshold=0.55] [costs=645ms] 
 [2023-10-04 23:13:37.082][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_StudentAffection_2023.10.04-23.13.37.0525310.png 
 [2023-10-04 23:13:37.083][DBG][Px18020][Tx60852][Matcher.cpp][L38][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Raw: [results=[{"box":[411,207,50,60],"score":0.000000}]] [path=../../Base/image/Cafe/StudentAffection1.png] [costs=639ms] 
 [2023-10-04 23:13:37.083][DBG][Px18020][Tx60852][Matcher.cpp][L44][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Filter: [results=[]] [path=../../Base/image/Cafe/StudentAffection1.png] [threshold=0.55] [costs=640ms] 
 [2023-10-04 23:13:37.735][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_StudentAffection_2023.10.04-23.13.37.7059910.png 
 [2023-10-04 23:13:37.736][DBG][Px18020][Tx60852][Matcher.cpp][L38][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Raw: [results=[{"box":[586,207,50,60],"score":0.000000}]] [path=../../Base/image/Cafe/StudentAffection2.png] [costs=652ms] 
 [2023-10-04 23:13:37.736][DBG][Px18020][Tx60852][Matcher.cpp][L44][MaaNS::VisionNS::Matcher::analyze] Sub_Click_StudentAffection Filter: [results=[]] [path=../../Base/image/Cafe/StudentAffection2.png] [threshold=0.55] [costs=652ms] 
 [2023-10-04 23:13:37.736][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Sub_Click_InvitationButton_Partial 
 [2023-10-04 23:13:37.773][ERR][Px18020][Tx60852][OCRer.cpp][L74][MaaNS::VisionNS::OCRer::predict_det_and_rec] wrong ocr_result size [ocr_result.boxes=null] [ocr_result.boxes.size()=0] [ocr_result.text=[
    "哈"
]] [ocr_result.text.size()=1] [ocr_result.rec_scores=[
    0.253384
]] [ocr_result.rec_scores.size()=1] 
 [2023-10-04 23:13:37.773][DBG][Px18020][Tx60852][OCRer.cpp][L25][MaaNS::VisionNS::OCRer::analyze] Sub_Click_InvitationButton_Partial Raw: [results=[]] [param_.model=] [costs=36ms] 
 [2023-10-04 23:13:37.773][DBG][Px18020][Tx60852][OCRer.cpp][L31][MaaNS::VisionNS::OCRer::analyze] Sub_Click_InvitationButton_Partial Proc: [results=[]] [expected=[
    "可以使用"
]] [param_.model=] [costs=37ms] 
 [2023-10-04 23:13:37.773][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Sub_Click_CafeEarningsButton_Partial 
 [2023-10-04 23:13:37.830][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Sub_Click_CafeEarningsButton_Partial_2023.10.04-23.13.37.7976111.png 
 [2023-10-04 23:13:37.830][DBG][Px18020][Tx60852][OCRer.cpp][L25][MaaNS::VisionNS::OCRer::analyze] Sub_Click_CafeEarningsButton_Partial Raw: [results=[{"box":[1143,623,44,9],"score":0.193430,"text":"T边"}]] [param_.model=] [costs=57ms] 
 [2023-10-04 23:13:37.830][DBG][Px18020][Tx60852][OCRer.cpp][L31][MaaNS::VisionNS::OCRer::analyze] Sub_Click_CafeEarningsButton_Partial Proc: [results=[]] [expected=[
    "可获得",
    "已满",
    "可获."
]] [param_.model=] [costs=57ms] 
 [2023-10-04 23:13:37.830][DBG][Px18020][Tx60852][PipelineTask.cpp][L170][MaaNS::TaskNS::PipelineTask::find_first] recognize: Click_ComfortButton_Partial 
 [2023-10-04 23:13:37.907][INF][Px18020][Tx60852][VisionBase.cpp][L55][MaaNS::VisionNS::VisionBase::save_image] save image to D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Click_ComfortButton_Partial_2023.10.04-23.13.37.8738963.png 
 [2023-10-04 23:13:37.908][DBG][Px18020][Tx60852][OCRer.cpp][L25][MaaNS::VisionNS::OCRer::analyze] Click_ComfortButton_Partial Raw: [results=[{"box":[943,616,77,23],"score":0.944163,"text":"舒适度?"},{"box":[943,642,66,28],"score":0.967940,"text":"3000"}]] [param_.model=] [costs=77ms] 
 [2023-10-04 23:13:37.908][DBG][Px18020][Tx60852][OCRer.cpp][L31][MaaNS::VisionNS::OCRer::analyze] Click_ComfortButton_Partial Proc: [results=[{"box":[943,616,77,23],"score":0.944163,"text":"舒适度?"}]] [expected=[
    "舒适度"
]] [param_.model=] [costs=77ms] 
 [2023-10-04 23:13:37.908][DBG][Px18020][Tx60852][PipelineTask.cpp][L165][MaaNS::TaskNS::PipelineTask::find_first] | leave, 2904ms 
 [2023-10-04 23:13:37.908][INF][Px18020][Tx60852][PipelineTask.cpp][L109][MaaNS::TaskNS::PipelineTask::find_first_and_run] Task hit: Click_ComfortButton_Partial [result.rec_result.box=[77 x 23 from (943, 616)]] 

D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Click_TouchButton_Partial_2023.10.04-23.13.34.2503234.png

D:\Code\Dissectum\MBA\src\MBA.Cli\bin\Debug\net7.0\debug\Vision\Click_ComfortButton_Partial_2023.10.04-23.13.37.8738963.png

TODO List

TODO List

  • feat: 国服次数选择适配(等悬赏通缉出来后)
  • fix: Task 异常退出,却返回 Success 的问题
  • fix: 咖啡厅感叹号是个动画
  • fix: 咖啡厅好感识别改成颜色识别或其他识别方式,原因:模版匹配遇到纯色傻掉
  • feat: 添加 ResourceReviewer Test Action
  • fix: 连接实体机

v0.2.1

  • fix: 反复进入问题,修改后 Goto 的 next 顺序:[ "Flag"(是否在页面), "Sub_Goto"(是否在父页面), "Check"(确认票数啥的), "Click"(在父页面中点击) ],Click 的 next: [ "Notify", "Wait", "Flag"(是否在页面) ]

v0.2.0

  • fix: StartUp 退太多
  • chore: 升级 MaaToolkit
  • chore: 调整更新提醒
  • fix: TOUCH
  • fix: 退出按两次
  • fix: Startup 先直接 StartApp
  • fix: 语言和服务器相同的问题(原因为解析成 None)
  • fix: 咖啡厅收起左下角
  • fix: Sweep 完成后点击Close(复现失败,可能无意间修了)
  • fix: 国服BaseDefense ItemRetrieval 都执行了一次
  • fix: 繁中悬赏通缉和学园交流会精细识别

v0.1.1

  • fix: 从可执行文件运行完成后未暂停的问题
  • fix: PublishTrimmed 的可执行文件,不能读取配置文件的问题
  • chore: 日志去除 User Dir 记录(因为 fw 已经记录了)
  • chore: 去除 Config Doc 中现在不可用的任务
  • feat: 添加没有自包含的 win-x64 Release
  • feat: 添加更新提示
  • feat: 添加 ChangeLog 提示(因为随时可能对 Config 破坏性更新)

Won't fix List

  • 异形屏:UI 有过拉伸

提议增加新功能以防止触发国际服反作弊检测机制

建议在操作中加入一些随机时间间隔,例如在识别图像后和点击之间增加随机的时间延迟,以模拟真实人类操作。另外,可以考虑添加一些无意义以及随机的点击,以提高国际服反作弊系统对脚本的识别难度。
国际服对违规操作的打击力度还是比较大的,不清楚这种自动化脚本是否被视为作弊行为(只是为了安全起见)。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.