├── .github └── workflows │ ├── check.yml │ ├── install.yml │ └── mirrorchyan.yml ├── .gitignore ├── .gitmodules ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── assets ├── interface.json └── resource │ ├── base │ ├── image │ │ ├── Combat │ │ │ ├── Combat_Auto.png │ │ │ ├── Combat_Combating.png │ │ │ ├── Combat_Doublespeed.png │ │ │ └── DailyExplore_LevelUp.png │ │ ├── InfrastructureS │ │ │ ├── Infr_Deal.png │ │ │ ├── Infr_Deal1.png │ │ │ ├── Infr_DealCard.png │ │ │ ├── Infr_DealNextFriends.png │ │ │ ├── Infr_DealNextFriends_VisitNext.png │ │ │ ├── Infr_Recourse.png │ │ │ └── Infr_Substitute1.png │ │ └── StartUp │ │ │ ├── BackButton.png │ │ │ ├── CloseAnnouncement.png │ │ │ ├── CloseOneYear.png │ │ │ ├── DailyTask.png │ │ │ ├── HomeButton.png │ │ │ ├── HomeButton1.png │ │ │ ├── HomeFlag1.png │ │ │ ├── NERI.png │ │ │ ├── NoBattlePass.png │ │ │ ├── NoDailyTask.png │ │ │ ├── NoForFree.png │ │ │ └── NoMail.png │ ├── model │ │ └── .gitignore │ └── pipeline │ │ ├── awards.json │ │ ├── combat.json │ │ ├── infrastructures.json │ │ ├── rehearsal.json │ │ ├── shopping.json │ │ ├── shutdown.json │ │ ├── startup.json │ │ ├── summer.json │ │ ├── utils.json │ │ └── weekinstance │ │ ├── ActivityExploration_fifth_ep.json │ │ ├── ActivityExploration_first_ep.json │ │ └── weekinstance.json │ └── bilibili │ └── pipeline │ ├── shutdown.json │ └── startup.json ├── check_resource.py ├── configure.py ├── deps └── .gitkeep ├── install.py └── package.json /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: check 2 | 3 | on: 4 | push: 5 | branches: 6 | - "**" 7 | paths: 8 | - ".github/workflows/check.yml" 9 | - "assets/**" 10 | - "**.py" 11 | pull_request: 12 | branches: 13 | - "**" 14 | paths: 15 | - ".github/workflows/check.yml" 16 | - "assets/**" 17 | - "**.py" 18 | workflow_dispatch: 19 | 20 | jobs: 21 | resource: 22 | runs-on: windows-latest 23 | steps: 24 | - uses: actions/checkout@v4 25 | with: 26 | fetch-depth: 0 27 | 28 | # pip install maafw 29 | - name: Install maafw 30 | run: | 31 | python -m pip install --upgrade pip 32 | python -m pip install --upgrade maafw --pre 33 | 34 | - name: Check Resource 35 | run: | 36 | python ./check_resource.py ./assets/resource/base/ ./assets/resource/bilibili/ 37 | -------------------------------------------------------------------------------- /.github/workflows/install.yml: -------------------------------------------------------------------------------- 1 | name: install 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v*" 7 | branches: 8 | - "**" 9 | paths: 10 | - ".github/workflows/install.yml" 11 | - "assets/**" 12 | - "**.py" 13 | pull_request: 14 | branches: 15 | - "**" 16 | paths: 17 | - ".github/workflows/install.yml" 18 | - "assets/**" 19 | - "**.py" 20 | workflow_dispatch: 21 | 22 | jobs: 23 | meta: 24 | runs-on: ubuntu-latest 25 | steps: 26 | - uses: actions/checkout@v3 27 | with: 28 | fetch-depth: 0 29 | - id: set_tag 30 | run: | 31 | is_release=${{ startsWith(github.ref, 'refs/tags/v') }} 32 | tag=$(git describe --tags --match "v*" ${{ github.ref }} || true) 33 | if [[ $tag != v* ]]; then 34 | tag=$(curl -sX GET "https://api.github.com/repos/${{ github.repository }}/releases/latest" --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' | awk '/tag_name/{print $4}' FS='["]') 35 | if [[ $tag != v* ]]; then 36 | tag="v0.0.0" 37 | fi 38 | tag=$(date "+$tag-%y%m%d-$(git rev-parse --short HEAD)") 39 | fi 40 | if ! $($is_release) ; then 41 | prefix=${tag%-*-*} 42 | suffix=${tag#$prefix-} 43 | tag="$prefix-ci.$suffix" 44 | fi 45 | 46 | echo tag=$tag | tee -a $GITHUB_OUTPUT 47 | echo is_release=$is_release | tee -a $GITHUB_OUTPUT 48 | outputs: 49 | tag: ${{ steps.set_tag.outputs.tag }} 50 | is_release: ${{ steps.set_tag.outputs.is_release }} 51 | 52 | windows: 53 | needs: meta 54 | runs-on: windows-latest 55 | strategy: 56 | matrix: 57 | arch: [aarch64, x86_64] 58 | fail-fast: false 59 | 60 | steps: 61 | - uses: actions/checkout@v3 62 | with: 63 | submodules: true 64 | 65 | - name: Download MaaFramework 66 | uses: robinraju/release-downloader@v1.8 67 | with: 68 | repository: MaaXYZ/MaaFramework 69 | fileName: "MAA-win-${{ matrix.arch }}*" 70 | latest: true 71 | out-file-path: "deps" 72 | extract: true 73 | 74 | - name: Download MFAWPF 75 | uses: robinraju/release-downloader@v1 76 | with: 77 | repository: SweetSmellFox/MFAWPF 78 | fileName: "MFAWPF*" 79 | latest: true 80 | out-file-path: "MFA" 81 | extract: true 82 | 83 | - name: Install 84 | shell: bash 85 | run: | 86 | python ./install.py ${{ needs.meta.outputs.tag }} 87 | cp MFA/MFAWPF.exe install 88 | 89 | - uses: actions/upload-artifact@v4 90 | with: 91 | name: MCCA-win-${{ matrix.arch }} 92 | path: "install" 93 | 94 | ubuntu: 95 | needs: meta 96 | runs-on: ubuntu-latest 97 | strategy: 98 | matrix: 99 | arch: [aarch64, x86_64] 100 | fail-fast: false 101 | 102 | steps: 103 | - uses: actions/checkout@v3 104 | with: 105 | submodules: true 106 | 107 | - name: Download MaaFramework 108 | uses: robinraju/release-downloader@v1.8 109 | with: 110 | repository: MaaXYZ/MaaFramework 111 | fileName: "MAA-linux-${{ matrix.arch }}*" 112 | latest: true 113 | out-file-path: "deps" 114 | extract: true 115 | 116 | - name: Install 117 | shell: bash 118 | run: | 119 | python ./install.py ${{ needs.meta.outputs.tag }} 120 | 121 | - uses: actions/upload-artifact@v4 122 | with: 123 | name: MCCA-linux-${{ matrix.arch }} 124 | path: "install" 125 | 126 | macos: 127 | needs: meta 128 | runs-on: macos-latest 129 | strategy: 130 | matrix: 131 | arch: [aarch64, x86_64] 132 | fail-fast: false 133 | 134 | steps: 135 | - uses: actions/checkout@v3 136 | with: 137 | submodules: true 138 | 139 | - name: Download MaaFramework 140 | uses: robinraju/release-downloader@v1.8 141 | with: 142 | repository: MaaXYZ/MaaFramework 143 | fileName: "MAA-macos-${{ matrix.arch }}*" 144 | latest: true 145 | out-file-path: "deps" 146 | extract: true 147 | 148 | - name: Install 149 | shell: bash 150 | run: | 151 | python ./install.py ${{ needs.meta.outputs.tag }} 152 | 153 | - uses: actions/upload-artifact@v4 154 | with: 155 | name: MCCA-macos-${{ matrix.arch }} 156 | path: "install" 157 | 158 | release: 159 | if: ${{ needs.meta.outputs.is_release == 'true' }} 160 | needs: [meta, windows, ubuntu, macos] 161 | runs-on: ubuntu-latest 162 | permissions: 163 | contents: write 164 | steps: 165 | - uses: actions/download-artifact@v3 166 | with: 167 | path: assets 168 | 169 | - run: | 170 | cd assets 171 | for f in *; do 172 | (cd $f && zip -r ../$f-${{ needs.meta.outputs.tag }}.zip .) 173 | done 174 | - uses: softprops/action-gh-release@v1 175 | with: 176 | files: assets/* 177 | tag_name: ${{ needs.meta.outputs.tag }} 178 | 179 | - name: Trigger MirrorChyanUploading 180 | run: | 181 | gh workflow run --repo $GITHUB_REPOSITORY mirrorchyan 182 | env: 183 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 184 | -------------------------------------------------------------------------------- /.github/workflows/mirrorchyan.yml: -------------------------------------------------------------------------------- 1 | name: mirrorchyan 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | mirrorchyan: 8 | runs-on: macos-latest 9 | steps: 10 | - id: uploading 11 | uses: MirrorChyan/uploading-action@v1 12 | with: 13 | filetype: latest-release 14 | filename: "MCCA-win-x86_64-*.zip" 15 | pick_files: '["resource", "interface.json"]' 16 | exclude_files: '["resource/base/model/ocr/**"]' 17 | mirrorchyan_rid: MCCA 18 | 19 | owner: MaaXYZ 20 | repo: MCCA 21 | github_token: ${{ secrets.GITHUB_TOKEN }} 22 | upload_token: ${{ secrets.MirrorChyanUploadToken }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # docs 2 | docs/node_modules 3 | docs/.vuepress/.temp 4 | # Prerequisites 5 | *.d 6 | 7 | # Compiled Object files 8 | build 9 | build-* 10 | *.slo 11 | *.lo 12 | *.o 13 | *.obj 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Compiled Dynamic libraries 20 | *.so 21 | *.dylib 22 | *.dll 23 | 24 | # Fortran module files 25 | *.mod 26 | *.smod 27 | !go.mod 28 | 29 | # Compiled Static libraries 30 | *.lai 31 | *.la 32 | *.a 33 | *.lib 34 | 35 | # Executables 36 | *.exe 37 | *.out 38 | *.app 39 | 40 | Debug 41 | Release 42 | .vs 43 | *.vcxproj.user 44 | *.swp 45 | 46 | ## Ignore Visual Studio temporary files, build results, and 47 | ## files generated by popular Visual Studio add-ons. 48 | ## 49 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 50 | 51 | # User-specific files 52 | *.rsuser 53 | *.suo 54 | *.user 55 | *.userosscache 56 | *.sln.docstates 57 | 58 | # User-specific files (MonoDevelop/Xamarin Studio) 59 | *.userprefs 60 | 61 | # Mono auto generated files 62 | mono_crash.* 63 | 64 | # Build results 65 | [Dd]ebug/ 66 | [Dd]ebugPublic/ 67 | [Rr]elease/ 68 | [Rr]eleases/ 69 | x64/ 70 | x86/ 71 | [Ww][Ii][Nn]32/ 72 | [Aa][Rr][Mm]/ 73 | [Aa][Rr][Mm]64/ 74 | bld/ 75 | [Bb]in/ 76 | [Oo]bj/ 77 | [Ll]og/ 78 | [Ll]ogs/ 79 | cmake-build-debug/ 80 | 81 | # Visual Studio 2015/2017 cache/options directory 82 | .vs/ 83 | # Uncomment if you have tasks that create the project's static files in wwwroot 84 | #wwwroot/ 85 | 86 | # Visual Studio 2017 auto generated files 87 | Generated\ Files/ 88 | 89 | # MSTest test Results 90 | [Tt]est[Rr]esult*/ 91 | [Bb]uild[Ll]og.* 92 | 93 | # NUnit 94 | *.VisualState.xml 95 | TestResult.xml 96 | nunit-*.xml 97 | 98 | # Build Results of an ATL Project 99 | [Dd]ebugPS/ 100 | [Rr]eleasePS/ 101 | dlldata.c 102 | 103 | # Benchmark Results 104 | BenchmarkDotNet.Artifacts/ 105 | 106 | # .NET Core 107 | project.lock.json 108 | project.fragment.lock.json 109 | artifacts/ 110 | 111 | # ASP.NET Scaffolding 112 | ScaffoldingReadMe.txt 113 | 114 | # StyleCop 115 | StyleCopReport.xml 116 | 117 | # Files built by Visual Studio 118 | *_i.c 119 | *_p.c 120 | *_h.h 121 | *.ilk 122 | *.meta 123 | *.obj 124 | *.iobj 125 | *.pch 126 | *.pdb 127 | *.ipdb 128 | *.pgc 129 | *.pgd 130 | *.rsp 131 | *.sbr 132 | *.tlb 133 | *.tli 134 | *.tlh 135 | *.tmp 136 | *.tmp_proj 137 | *_wpftmp.csproj 138 | *.log 139 | *.tlog 140 | *.vspscc 141 | *.vssscc 142 | .builds 143 | *.pidb 144 | *.svclog 145 | *.scc 146 | 147 | # Chutzpah Test files 148 | _Chutzpah* 149 | 150 | # Visual C++ cache files 151 | ipch/ 152 | *.aps 153 | *.ncb 154 | *.opendb 155 | *.opensdf 156 | *.sdf 157 | *.cachefile 158 | *.VC.db 159 | *.VC.VC.opendb 160 | 161 | # Visual Studio profiler 162 | *.psess 163 | *.vsp 164 | *.vspx 165 | *.sap 166 | 167 | # Visual Studio Trace Files 168 | *.e2e 169 | 170 | # TFS 2012 Local Workspace 171 | $tf/ 172 | 173 | # Guidance Automation Toolkit 174 | *.gpState 175 | 176 | # ReSharper is a .NET coding add-in 177 | _ReSharper*/ 178 | *.[Rr]e[Ss]harper 179 | *.DotSettings.user 180 | 181 | # TeamCity is a build add-in 182 | _TeamCity* 183 | 184 | # DotCover is a Code Coverage Tool 185 | *.dotCover 186 | 187 | # AxoCover is a Code Coverage Tool 188 | .axoCover/* 189 | !.axoCover/settings.json 190 | 191 | # Coverlet is a free, cross platform Code Coverage Tool 192 | coverage*.json 193 | coverage*.xml 194 | coverage*.info 195 | 196 | # Visual Studio code coverage results 197 | *.coverage 198 | *.coveragexml 199 | 200 | # NCrunch 201 | _NCrunch_* 202 | .*crunch*.local.xml 203 | nCrunchTemp_* 204 | 205 | # MightyMoose 206 | *.mm.* 207 | AutoTest.Net/ 208 | 209 | # Web workbench (sass) 210 | .sass-cache/ 211 | 212 | # Installshield output folder 213 | [Ee]xpress/ 214 | 215 | # DocProject is a documentation generator add-in 216 | DocProject/buildhelp/ 217 | DocProject/Help/*.HxT 218 | DocProject/Help/*.HxC 219 | DocProject/Help/*.hhc 220 | DocProject/Help/*.hhk 221 | DocProject/Help/*.hhp 222 | DocProject/Help/Html2 223 | DocProject/Help/html 224 | 225 | # Click-Once directory 226 | publish/ 227 | 228 | # Publish Web Output 229 | *.[Pp]ublish.xml 230 | *.azurePubxml 231 | # Note: Comment the next line if you want to checkin your web deploy settings, 232 | # but database connection strings (with potential passwords) will be unencrypted 233 | *.pubxml 234 | *.publishproj 235 | 236 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 237 | # checkin your Azure Web App publish settings, but sensitive information contained 238 | # in these scripts will be unencrypted 239 | PublishScripts/ 240 | 241 | # NuGet Packages 242 | *.nupkg 243 | # NuGet Symbol Packages 244 | *.snupkg 245 | # The packages folder can be ignored because of Package Restore 246 | **/[Pp]ackages/* 247 | # except build/, which is used as an MSBuild target. 248 | !**/[Pp]ackages/build/ 249 | # Uncomment if necessary however generally it will be regenerated when needed 250 | #!**/[Pp]ackages/repositories.config 251 | # NuGet v3's project.json files produces more ignorable files 252 | *.nuget.props 253 | *.nuget.targets 254 | 255 | # Nuget personal access tokens and Credentials 256 | nuget.config 257 | 258 | # Microsoft Azure Build Output 259 | csx/ 260 | *.build.csdef 261 | 262 | # Microsoft Azure Emulator 263 | ecf/ 264 | rcf/ 265 | 266 | # Windows Store app package directories and files 267 | AppPackages/ 268 | BundleArtifacts/ 269 | Package.StoreAssociation.xml 270 | _pkginfo.txt 271 | *.appx 272 | *.appxbundle 273 | *.appxupload 274 | 275 | # Visual Studio cache files 276 | # files ending in .cache can be ignored 277 | *.[Cc]ache 278 | # but keep track of directories ending in .cache 279 | !?*.[Cc]ache/ 280 | 281 | # Others 282 | ClientBin/ 283 | ~$* 284 | *~ 285 | *.dbmdl 286 | *.dbproj.schemaview 287 | *.jfm 288 | *.pfx 289 | *.publishsettings 290 | orleans.codegen.cs 291 | 292 | # Including strong name files can present a security risk 293 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 294 | #*.snk 295 | 296 | # Since there are multiple workflows, uncomment next line to ignore bower_components 297 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 298 | #bower_components/ 299 | 300 | # RIA/Silverlight projects 301 | Generated_Code/ 302 | 303 | # Backup & report files from converting an old project file 304 | # to a newer Visual Studio version. Backup files are not needed, 305 | # because we have git ;-) 306 | _UpgradeReport_Files/ 307 | Backup*/ 308 | UpgradeLog*.XML 309 | UpgradeLog*.htm 310 | ServiceFabricBackup/ 311 | *.rptproj.bak 312 | 313 | # SQL Server files 314 | *.mdf 315 | *.ldf 316 | *.ndf 317 | 318 | # Business Intelligence projects 319 | *.rdl.data 320 | *.bim.layout 321 | *.bim_*.settings 322 | *.rptproj.rsuser 323 | *- [Bb]ackup.rdl 324 | *- [Bb]ackup ([0-9]).rdl 325 | *- [Bb]ackup ([0-9][0-9]).rdl 326 | 327 | # Microsoft Fakes 328 | FakesAssemblies/ 329 | 330 | # GhostDoc plugin setting file 331 | *.GhostDoc.xml 332 | 333 | # Node.js Tools for Visual Studio 334 | .ntvs_analysis.dat 335 | node_modules/ 336 | 337 | # Visual Studio 6 build log 338 | *.plg 339 | 340 | # Visual Studio 6 workspace options file 341 | *.opt 342 | 343 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 344 | *.vbw 345 | 346 | # Visual Studio LightSwitch build output 347 | **/*.HTMLClient/GeneratedArtifacts 348 | **/*.DesktopClient/GeneratedArtifacts 349 | **/*.DesktopClient/ModelManifest.xml 350 | **/*.Server/GeneratedArtifacts 351 | **/*.Server/ModelManifest.xml 352 | _Pvt_Extensions 353 | 354 | # Paket dependency manager 355 | .paket/paket.exe 356 | paket-files/ 357 | 358 | # FAKE - F# Make 359 | .fake/ 360 | 361 | # CodeRush personal settings 362 | .cr/personal 363 | 364 | # Python Tools for Visual Studio (PTVS) 365 | __pycache__/ 366 | *.pyc 367 | 368 | # Cake - Uncomment if you are using it 369 | # tools/** 370 | # !tools/packages.config 371 | 372 | # Tabs Studio 373 | *.tss 374 | 375 | # Telerik's JustMock configuration file 376 | *.jmconfig 377 | 378 | # BizTalk build output 379 | *.btp.cs 380 | *.btm.cs 381 | *.odx.cs 382 | *.xsd.cs 383 | 384 | # OpenCover UI analysis results 385 | OpenCover/ 386 | 387 | # Azure Stream Analytics local run output 388 | ASALocalRun/ 389 | 390 | # MSBuild Binary and Structured Log 391 | *.binlog 392 | 393 | # NVidia Nsight GPU debugger configuration file 394 | *.nvuser 395 | 396 | # MFractors (Xamarin productivity tool) working folder 397 | .mfractor/ 398 | 399 | # Local History for Visual Studio 400 | .localhistory/ 401 | 402 | # BeatPulse healthcheck temp database 403 | healthchecksdb 404 | 405 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 406 | MigrationBackup/ 407 | 408 | # Ionide (cross platform F# VS Code tools) working folder 409 | .ionide/ 410 | 411 | # Fody - auto-generated XML schema 412 | FodyWeavers.xsd 413 | 414 | # VS Code files for those working on multiple tools 415 | **/.vscode/* 416 | .vscode/* 417 | !.vscode/settings.json 418 | # !.vscode/tasks.json 419 | # !.vscode/launch.json 420 | # !.vscode/extensions.json 421 | *.code-workspace 422 | 423 | # Local History for Visual Studio Code 424 | .history/ 425 | 426 | # Windows Installer files from build outputs 427 | *.cab 428 | *.msi 429 | *.msix 430 | *.msm 431 | *.msp 432 | 433 | # JetBrains Rider 434 | .idea/ 435 | *.sln.iml 436 | 437 | enc_temp_folder/* 438 | 439 | # Nuke 440 | .nuke/temp/* 441 | 442 | # Build 443 | deps 444 | build 445 | install 446 | 447 | # Tools 448 | tools/ImageCropper/**/*.png 449 | 450 | config 451 | 452 | lib -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "assets/MaaCommonAssets"] 2 | path = assets/MaaCommonAssets 3 | url = https://github.com/MaaXYZ/MaaCommonAssets 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "fileMatch": [ 5 | "/assets/resource/**/*.json", 6 | "/install/resource/**/*.json" 7 | ], 8 | "url": "/deps/tools/pipeline.schema.json" 9 | } 10 | ], 11 | "[json]": { 12 | "editor.formatOnSave": true, 13 | "editor.insertSpaces": true, 14 | "editor.tabSize": 4, 15 | "editor.indentSize": "tabSize" 16 | }, 17 | "[python]": { 18 | "editor.defaultFormatter": "ms-python.black-formatter" 19 | } 20 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 MaaXYZ 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MCCA(目前已停止适配更新,等一个大佬) 2 | 3 | 基于全新架构的 交错战线 CrossCore 小助手。图像技术 + 模拟控制,解放双手! 4 | 由 [MaaFramework](https://github.com/MaaXYZ/MaaFramework) 强力驱动! 5 | 6 | ## 功能介绍 7 | 8 | 目前已有的功能: 9 | 10 | 1. 启动游戏 11 | 2. 每日免费礼包 12 | 3. 每日探索(只使用自然回复的燃料) 13 | 4. 模拟军演(只打第一个,次数耗尽为止) 14 | 5. 基建(换班+好友换抽) 15 | 6. 周本(支持第一关(45微晶)、第五关(120微晶)。需提前配好一队) 16 | 7. 领取奖励(邮箱+每日+通行证) 17 | 8. 关闭游戏 18 | 19 | ## 使用说明 20 | 21 | 下载地址: 22 | 1. MuMu模拟器需要关闭模拟器设置中的“后台挂机时保活运行” 23 | 2. 运行过程MaaPiCli窗口出现红字是正常的 24 | 3. 模拟器不能有中文路径 25 | 4. 模拟器窗口大小要16:9,最好建议是使用720p分辨率 26 | 5. 运行卡住请将debug文件夹中的maa.log发出来,并附带出错时的游戏截图 27 | 28 | ### Windows 29 | 30 | - 对于绝大部分用户,请下载 `MCCA-win-x86_64-vXXX.zip` 31 | - 若确定自己的电脑是 arm 架构,请下载 `MCCA-win-aarch64-vXXX.zip` 32 | - 解压后运行 `MaaPiCli.exe` 即可 33 | 34 | 35 | ### macOS 36 | 37 | - 若使用 Intel 处理器,请下载 `MCCA-macos-x86_64-vXXX.zip` 38 | - 若使用 M1, M2 等 arm 处理器,请下载 `MCCA-macos-aarch64-vXXX.zip` 39 | - 使用方式: 40 | 41 | ```bash 42 | chmod a+x MaaPiCli 43 | ./MaaPiCli 44 | ``` 45 | 46 | ### Linux 47 | 48 | ~~用 Linux 的大佬应该不需要我教~~ 49 | 50 | ## 图形化界面 51 | 52 | - 如果需要使用图形化界面,请下载 `MCCA-win-x86_64-with-gui-vXXX.zip`,目前只支持Windows 53 | - 图形化界面需要.NET8运行库,请自行安装 54 | - 解压后运行`MFAWPF.exe`即可 55 | - 本GUI由社区大佬[SweetSmellFox](https://github.com/SweetSmellFox)编写,相关项目见[MFAWPF](https://github.com/SweetSmellFox/MFAWPF) 56 | 57 | ## 其他说明 58 | 59 | - 添加 `-d` 参数可跳过交互直接运行任务,如 `./MaaPiCli.exe -d` 60 | - 反馈问题请附上日志文件 `debug/maa.log`,谢谢! 61 | 62 | 63 | ## How to build 64 | 65 | **如果你要编译源码才看这节,否则直接 [下载](https://github.com/MaaXYZ/MCCA/releases) 即可** 66 | 67 | 0. 完整克隆本项目及子项目 68 | 69 | ```bash 70 | git clone --recursive https://github.com/MaaXYZ/MCCA.git 71 | ``` 72 | 73 | 1. 下载 MaaFramework 的 [Release 包](https://github.com/MaaXYZ/MaaFramework/releases),解压到 `deps` 文件夹中 74 | 2. 安装 75 | 76 | ```python 77 | python ./install.py 78 | ``` 79 | 80 | 生成的二进制及相关资源文件在 `install` 目录下 81 | 82 | ## 开发相关 83 | 84 | - [MaaFramework 快速开始](https://github.com/MaaXYZ/MaaFramework/blob/main/docs/zh_cn/1.1-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.md) 85 | 86 | ## Join us 87 | 88 | - MCCA 交流群:950540737 89 | - MaaFramework 开发交流 QQ 群: 595990173 90 | 91 | ## 鸣谢 92 | 93 | 本项目由 **[MaaFramework](https://github.com/MaaXYZ/MaaFramework)** 强力驱动! 94 | 95 | -------------------------------------------------------------------------------- /assets/interface.json: -------------------------------------------------------------------------------- 1 | { 2 | "mirrorchyan_rid": "MCCA", 3 | "controller": [ 4 | { 5 | "name": "ADB 默认方式", 6 | "type": "Adb" 7 | } 8 | ], 9 | "resource": [ 10 | { 11 | "name": "官服", 12 | "path": [ 13 | "{PROJECT_DIR}/resource/base" 14 | ] 15 | }, 16 | { 17 | "name": "B 服", 18 | "path": [ 19 | "{PROJECT_DIR}/resource/base", 20 | "{PROJECT_DIR}/resource/bilibili" 21 | ] 22 | } 23 | ], 24 | "task": [ 25 | { 26 | "name": "启动游戏", 27 | "entry": "进入首页" 28 | }, 29 | { 30 | "name": "每日免费礼包", 31 | "entry": "Shopping" 32 | }, 33 | { 34 | "name": "每日探索(只使用自然回复的燃料)", 35 | "entry": "DailyExplore", 36 | "option": [ 37 | "作战关卡" 38 | ] 39 | }, 40 | { 41 | "name": "模拟军演", 42 | "entry": "模拟军演", 43 | "option": [ 44 | "刷新战力阈值" 45 | ], 46 | "pipeline_override": { 47 | "首页_出击": { 48 | "next": "模拟军演_入口" 49 | } 50 | } 51 | }, 52 | { 53 | "name": "基建(换班+好友换抽)", 54 | "entry": "Infrastructures", 55 | "option": [ 56 | "是否访问每个好友换抽" 57 | ] 58 | }, 59 | { 60 | "name": "仅好友换抽(不换班,只换抽,上面的开了这里就不用开了)", 61 | "entry": "Infrastructures_Deal" 62 | }, 63 | { 64 | "name": "周本", 65 | "entry": "WeekInstance", 66 | "pipeline_override": { 67 | "首页_出击": { 68 | "next": "ActivityExploration_fifth_ep" 69 | } 70 | }, 71 | "option": [ 72 | "周本关卡选择" 73 | ] 74 | }, 75 | { 76 | "name": "领取奖励(邮箱+每日+通行证)", 77 | "entry": "Awards" 78 | }, 79 | { 80 | "name": "关闭游戏", 81 | "entry": "关闭游戏" 82 | } 83 | ], 84 | "recognizer": {}, 85 | "action": {}, 86 | "option": { 87 | "作战关卡": { 88 | "cases": [ 89 | { 90 | "name": "技能书", 91 | "pipeline_override": { 92 | "首页_出击": { 93 | "next": "DailyExplore_Entry" 94 | }, 95 | "DailyExplore_Entry": { 96 | "next": "DailyExplore_ReAc" 97 | }, 98 | "DailyExplore_ReAc": { 99 | "next": "DailyExplore_ReAc_Skill" 100 | }, 101 | "DailyExplore_LevelSelect": { 102 | "expected": "第4层" 103 | } 104 | } 105 | }, 106 | { 107 | "name": "星币", 108 | "pipeline_override": { 109 | "首页_出击": { 110 | "next": "DailyExplore_Entry" 111 | }, 112 | "DailyExplore_Entry": { 113 | "next": "DailyExplore_ReAc" 114 | }, 115 | "DailyExplore_ReAc": { 116 | "next": "DailyExplore_ReAc_Money" 117 | }, 118 | "DailyExplore_LevelSelect": { 119 | "expected": "第6层" 120 | } 121 | } 122 | }, 123 | { 124 | "name": "经验书", 125 | "pipeline_override": { 126 | "首页_出击": { 127 | "next": "DailyExplore_Entry" 128 | }, 129 | "DailyExplore_Entry": { 130 | "next": "DailyExplore_ReAc" 131 | }, 132 | "DailyExplore_ReAc": { 133 | "next": "DailyExplore_ReAc_Experience" 134 | }, 135 | "DailyExplore_LevelSelect": { 136 | "expected": "第6层" 137 | } 138 | } 139 | }, 140 | { 141 | "name": "遗余之谱(异星灰域商店币)", 142 | "pipeline_override": { 143 | "首页_出击": { 144 | "next": "DailyExplore_Entry" 145 | }, 146 | "DailyExplore_Entry": { 147 | "next": "DailyExplore_ReAc" 148 | }, 149 | "DailyExplore_ReAc": { 150 | "next": "DailyExplore_ReAc_Token" 151 | }, 152 | "DailyExplore_LevelSelect": { 153 | "expected": "第4层" 154 | } 155 | } 156 | }, 157 | { 158 | "name": "芯片_物攻振奋", 159 | "pipeline_override": { 160 | "首页_出击": { 161 | "next": "DailyExplore_Entry" 162 | }, 163 | "DailyExplore_Entry": { 164 | "next": "DailyExplore_ChEm" 165 | }, 166 | "DailyExplore_ChEm": { 167 | "next": "DailyExplore_ChEm_1" 168 | }, 169 | "DailyExplore_LevelSelect": { 170 | "expected": "第5层" 171 | } 172 | } 173 | }, 174 | { 175 | "name": "芯片_能量金刚", 176 | "pipeline_override": { 177 | "首页_出击": { 178 | "next": "DailyExplore_Entry" 179 | }, 180 | "DailyExplore_Entry": { 181 | "next": "DailyExplore_ChEm" 182 | }, 183 | "DailyExplore_ChEm": { 184 | "next": "DailyExplore_ChEm_2" 185 | }, 186 | "DailyExplore_LevelSelect": { 187 | "expected": "第5层" 188 | } 189 | } 190 | }, 191 | { 192 | "name": "芯片_切割集中", 193 | "pipeline_override": { 194 | "首页_出击": { 195 | "next": "DailyExplore_Entry" 196 | }, 197 | "DailyExplore_Entry": { 198 | "next": "DailyExplore_ChEm" 199 | }, 200 | "DailyExplore_ChEm": { 201 | "next": "DailyExplore_ChEm_3" 202 | }, 203 | "DailyExplore_LevelSelect": { 204 | "expected": "第5层" 205 | } 206 | } 207 | }, 208 | { 209 | "name": "模块_气象山脉", 210 | "pipeline_override": { 211 | "首页_出击": { 212 | "next": "DailyExplore_Entry" 213 | }, 214 | "DailyExplore_Entry": { 215 | "next": "DailyExplore_UpAc" 216 | }, 217 | "DailyExplore_UpAc": { 218 | "next": "DailyExplore_UpAc_1" 219 | }, 220 | "DailyExplore_LevelSelect": { 221 | "expected": "第2层" 222 | } 223 | } 224 | }, 225 | { 226 | "name": "模块_灭刃乐团", 227 | "pipeline_override": { 228 | "首页_出击": { 229 | "next": "DailyExplore_Entry" 230 | }, 231 | "DailyExplore_Entry": { 232 | "next": "DailyExplore_UpAc" 233 | }, 234 | "DailyExplore_UpAc": { 235 | "next": "DailyExplore_UpAc_2" 236 | }, 237 | "DailyExplore_LevelSelect": { 238 | "expected": "第2层" 239 | } 240 | } 241 | }, 242 | { 243 | "name": "模块_不朽虫洞", 244 | "pipeline_override": { 245 | "首页_出击": { 246 | "next": "DailyExplore_Entry" 247 | }, 248 | "DailyExplore_Entry": { 249 | "next": "DailyExplore_UpAc" 250 | }, 251 | "DailyExplore_UpAc": { 252 | "next": "DailyExplore_UpAc_3" 253 | }, 254 | "DailyExplore_LevelSelect": { 255 | "expected": "第2层" 256 | } 257 | } 258 | } 259 | ] 260 | }, 261 | "是否访问每个好友换抽": { 262 | "cases": [ 263 | { 264 | "name": "Yes", 265 | "pipeline_override": { 266 | "Infr_Deal": { 267 | "enabled": true 268 | } 269 | } 270 | }, 271 | { 272 | "name": "No", 273 | "pipeline_override": { 274 | "Infr_Deal": { 275 | "enabled": false 276 | } 277 | } 278 | } 279 | ] 280 | }, 281 | "周本关卡选择": { 282 | "cases": [ 283 | { 284 | "name": "第一关45微晶", 285 | "pipeline_override": { 286 | "首页_出击": { 287 | "next": "ActivityExploration_first_ep" 288 | } 289 | } 290 | }, 291 | { 292 | "name": "第五关120微晶", 293 | "pipeline_override": { 294 | "首页_出击": { 295 | "next": "ActivityExploration_fifth_ep" 296 | } 297 | } 298 | } 299 | ] 300 | }, 301 | "刷新战力阈值": { 302 | "cases": [ 303 | { 304 | "name": "5000", 305 | "pipeline_override": { 306 | "模拟军演_刷新对手": { 307 | "expected": "^([5-9]\\d{3}|[1-9]\\d{4})$" 308 | } 309 | } 310 | }, 311 | { 312 | "name": "10000", 313 | "pipeline_override": { 314 | "模拟军演_刷新对手": { 315 | "expected": "^[1-9]\\d{4}$" 316 | } 317 | } 318 | }, 319 | { 320 | "name": "20000", 321 | "pipeline_override": { 322 | "模拟军演_刷新对手": { 323 | "expected": "^([2-9]\\d{4})$" 324 | } 325 | } 326 | }, 327 | { 328 | "name": "30000", 329 | "pipeline_override": { 330 | "模拟军演_刷新对手": { 331 | "expected": "^([3-9]\\d{4})$" 332 | } 333 | } 334 | } 335 | ] 336 | } 337 | } 338 | } 339 | -------------------------------------------------------------------------------- /assets/resource/base/image/Combat/Combat_Auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/Combat/Combat_Auto.png -------------------------------------------------------------------------------- /assets/resource/base/image/Combat/Combat_Combating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/Combat/Combat_Combating.png -------------------------------------------------------------------------------- /assets/resource/base/image/Combat/Combat_Doublespeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/Combat/Combat_Doublespeed.png -------------------------------------------------------------------------------- /assets/resource/base/image/Combat/DailyExplore_LevelUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/Combat/DailyExplore_LevelUp.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_Deal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_Deal.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_Deal1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_Deal1.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_DealCard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_DealCard.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_DealNextFriends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_DealNextFriends.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_DealNextFriends_VisitNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_DealNextFriends_VisitNext.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_Recourse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_Recourse.png -------------------------------------------------------------------------------- /assets/resource/base/image/InfrastructureS/Infr_Substitute1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/InfrastructureS/Infr_Substitute1.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/BackButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/BackButton.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/CloseAnnouncement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/CloseAnnouncement.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/CloseOneYear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/CloseOneYear.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/DailyTask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/DailyTask.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/HomeButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/HomeButton.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/HomeButton1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/HomeButton1.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/HomeFlag1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/HomeFlag1.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/NERI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/NERI.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/NoBattlePass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/NoBattlePass.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/NoDailyTask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/NoDailyTask.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/NoForFree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/NoForFree.png -------------------------------------------------------------------------------- /assets/resource/base/image/StartUp/NoMail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaaXYZ/MCCA/4a49f8be2598780faaf8743cc3d13827076dac05/assets/resource/base/image/StartUp/NoMail.png -------------------------------------------------------------------------------- /assets/resource/base/model/.gitignore: -------------------------------------------------------------------------------- 1 | ocr -------------------------------------------------------------------------------- /assets/resource/base/pipeline/awards.json: -------------------------------------------------------------------------------- 1 | { 2 | "Awards": { 3 | "next": [ 4 | "子任务_点击取消", 5 | "子任务_关闭公告", 6 | "Mail", 7 | "NoMail", 8 | "子任务_进入首页" 9 | ] 10 | }, 11 | "Mail": { 12 | "recognition": "ColorMatch", 13 | "roi": [ 14 | 1058, 15 | 27, 16 | 34, 17 | 35 18 | ], 19 | "method": 4, 20 | "lower": [ 21 | 230, 22 | 178, 23 | 60 24 | ], 25 | "upper": [ 26 | 255, 27 | 210, 28 | 80 29 | ], 30 | "count": 7, 31 | "action": "Click", 32 | "next": [ 33 | "Mail_Receive", 34 | "Mail" 35 | ] 36 | }, 37 | "Mail_Receive": { 38 | "recognition": "ColorMatch", 39 | "roi": [ 40 | 230, 41 | 606, 42 | 160, 43 | 64 44 | ], 45 | "method": 4, 46 | "lower": [ 47 | 230, 48 | 190, 49 | 76 50 | ], 51 | "upper": [ 52 | 255, 53 | 210, 54 | 90 55 | ], 56 | "count": 7, 57 | "action": "Click", 58 | "next": [ 59 | "DailyTask", 60 | "NoDailyTask", 61 | "Mail_Receive", 62 | "子任务_进入首页" 63 | ] 64 | }, 65 | "NoMail": { 66 | "recognition": "TemplateMatch", 67 | "template": "StartUp/NoMail.png", 68 | "roi": [ 69 | 1060, 70 | 31, 71 | 30, 72 | 26 73 | ], 74 | "next": [ 75 | "DailyTask", 76 | "NoDailyTask" 77 | ] 78 | }, 79 | "DailyTask": { 80 | "recognition": "TemplateMatch", 81 | "template": "StartUp/DailyTask.png", 82 | "roi": [ 83 | 686, 84 | 609, 85 | 62, 86 | 83 87 | ], 88 | "action": "Click", 89 | "next": [ 90 | "DailyTask_Receive0", 91 | "DailyTask_Receive1", 92 | "DailyTask_Receive2", 93 | "DailyTask" 94 | ] 95 | }, 96 | "DailyTask_Receive0": { 97 | "recognition": "ColorMatch", 98 | "roi": [ 99 | 23, 100 | 233, 101 | 36, 102 | 43 103 | ], 104 | "method": 4, 105 | "lower": [ 106 | 120, 107 | 120, 108 | 120 109 | ], 110 | "upper": [ 111 | 160, 112 | 160, 113 | 160 114 | ], 115 | "count": 7, 116 | "action": "Click", 117 | "next": [ 118 | "DailyTask_Receive1", 119 | "DailyTask_Receive2" 120 | ] 121 | }, 122 | "DailyTask_Receive1": { 123 | "recognition": "ColorMatch", 124 | "roi": [ 125 | 1083, 126 | 102, 127 | 44, 128 | 30 129 | ], 130 | "method": 4, 131 | "lower": [ 132 | 230, 133 | 190, 134 | 76 135 | ], 136 | "upper": [ 137 | 255, 138 | 210, 139 | 90 140 | ], 141 | "count": 7, 142 | "action": "Click", 143 | "next": [ 144 | "子任务_获得物品", 145 | "DailyTask_Receive1", 146 | "DailyTask_Receive2" 147 | ] 148 | }, 149 | "DailyTask_Receive2": { 150 | "recognition": "ColorMatch", 151 | "roi": [ 152 | 23, 153 | 303, 154 | 36, 155 | 43 156 | ], 157 | "method": 4, 158 | "lower": [ 159 | 120, 160 | 120, 161 | 120 162 | ], 163 | "upper": [ 164 | 160, 165 | 160, 166 | 160 167 | ], 168 | "count": 7, 169 | "action": "Click", 170 | "next": [ 171 | "DailyTask_Receive3", 172 | "BattlePass", 173 | "NoBattlePass", 174 | "子任务_进入首页" 175 | ] 176 | }, 177 | "DailyTask_Receive3": { 178 | "recognition": "ColorMatch", 179 | "roi": [ 180 | 1083, 181 | 102, 182 | 44, 183 | 30 184 | ], 185 | "method": 4, 186 | "lower": [ 187 | 230, 188 | 190, 189 | 76 190 | ], 191 | "upper": [ 192 | 255, 193 | 210, 194 | 90 195 | ], 196 | "count": 7, 197 | "action": "Click", 198 | "next": [ 199 | "子任务_获得物品", 200 | "BattlePass", 201 | "NoBattlePass", 202 | "DailyTask_Receive3", 203 | "子任务_进入首页" 204 | ] 205 | }, 206 | "NoDailyTask": { 207 | "recognition": "TemplateMatch", 208 | "template": "StartUp/NoDailyTask.png", 209 | "roi": [ 210 | 1232, 211 | 405, 212 | 12, 213 | 12 214 | ], 215 | "next": [ 216 | "BattlePass", 217 | "NoBattlePass", 218 | "子任务_进入首页" 219 | ] 220 | }, 221 | "BattlePass": { 222 | "recognition": "TemplateMatch", 223 | "template": "StartUp/DailyTask.png", 224 | "roi": [ 225 | 328, 226 | 15, 227 | 36, 228 | 36 229 | ], 230 | "action": "Click", 231 | "next": [ 232 | "BattlePass_ReceiveMission", 233 | "BattlePass" 234 | ] 235 | }, 236 | "BattlePass_ReceiveMission": { 237 | "recognition": "OCR", 238 | "expected": [ 239 | "任务" 240 | ], 241 | "roi": [ 242 | 948, 243 | 274, 244 | 159, 245 | 76 246 | ], 247 | "action": "Click", 248 | "next": [ 249 | "BattlePass_ReceiveDailyMissionGet", 250 | "BattlePass_ReceiveWeeklyMission", 251 | "BattlePass_ReceiveMission" 252 | ] 253 | }, 254 | "BattlePass_ReceiveDailyMissionGet": { 255 | "recognition": "ColorMatch", 256 | "roi": [ 257 | 922, 258 | 211, 259 | 36, 260 | 26 261 | ], 262 | "method": 4, 263 | "lower": [ 264 | 220, 265 | 180, 266 | 70 267 | ], 268 | "upper": [ 269 | 255, 270 | 220, 271 | 100 272 | ], 273 | "count": 7, 274 | "action": "Click", 275 | "next": [ 276 | "子任务_获得物品", 277 | "BattlePass_ReceiveWeeklyMission", 278 | "BattlePass_ReceiveDailyMissionGet" 279 | ] 280 | }, 281 | "BattlePass_ReceiveWeeklyMission": { 282 | "recognition": "ColorMatch", 283 | "roi": [ 284 | 197, 285 | 218, 286 | 40, 287 | 37 288 | ], 289 | "method": 4, 290 | "lower": [ 291 | 110, 292 | 110, 293 | 110 294 | ], 295 | "upper": [ 296 | 160, 297 | 160, 298 | 160 299 | ], 300 | "count": 2, 301 | "action": "Click", 302 | "next": [ 303 | "子任务_获得物品", 304 | "BattlePass_ReceiveWeeklyMissionGet", 305 | "BattlePass_ReceiveMonthlyMission", 306 | "BattlePass_ReceiveWeeklyMission" 307 | ] 308 | }, 309 | "BattlePass_ReceiveWeeklyMissionGet": { 310 | "recognition": "ColorMatch", 311 | "roi": [ 312 | 922, 313 | 211, 314 | 36, 315 | 26 316 | ], 317 | "method": 4, 318 | "lower": [ 319 | 220, 320 | 180, 321 | 70 322 | ], 323 | "upper": [ 324 | 255, 325 | 220, 326 | 100 327 | ], 328 | "count": 7, 329 | "action": "Click", 330 | "next": [ 331 | "子任务_获得物品", 332 | "BattlePass_ReceiveMonthlyMission", 333 | "BattlePass_ReceiveWeeklyMissionGet" 334 | ] 335 | }, 336 | "BattlePass_ReceiveMonthlyMission": { 337 | "recognition": "ColorMatch", 338 | "roi": [ 339 | 195, 340 | 291, 341 | 40, 342 | 37 343 | ], 344 | "method": 4, 345 | "lower": [ 346 | 110, 347 | 110, 348 | 110 349 | ], 350 | "upper": [ 351 | 160, 352 | 160, 353 | 160 354 | ], 355 | "count": 2, 356 | "action": "Click", 357 | "next": [ 358 | "子任务_获得物品", 359 | "BattlePass_ReceiveMonthlyMissionGet", 360 | "BattlePass_MissionExist", 361 | "BattlePass_ReceiveMonthlyMission" 362 | ] 363 | }, 364 | "BattlePass_ReceiveMonthlyMissionGet": { 365 | "recognition": "ColorMatch", 366 | "roi": [ 367 | 922, 368 | 211, 369 | 36, 370 | 26 371 | ], 372 | "method": 4, 373 | "lower": [ 374 | 220, 375 | 180, 376 | 70 377 | ], 378 | "upper": [ 379 | 255, 380 | 220, 381 | 100 382 | ], 383 | "count": 7, 384 | "action": "Click", 385 | "next": [ 386 | "子任务_获得物品", 387 | "BattlePass_MissionExist", 388 | "BattlePass_ReceiveMonthlyMissionGet" 389 | ] 390 | }, 391 | "BattlePass_MissionExist": { 392 | "recognition": "OCR", 393 | "expected": [ 394 | "本期任务" 395 | ], 396 | "roi": [ 397 | 182, 398 | 260, 399 | 195, 400 | 85 401 | ], 402 | "action": "Click", 403 | "target": [ 404 | 1170, 405 | 328, 406 | 10, 407 | 10 408 | ], 409 | "next": [ 410 | "BattlePass_ReceiveAll", 411 | "进入首页" 412 | ] 413 | }, 414 | "BattlePass_ReceiveAll": { 415 | "recognition": "ColorMatch", 416 | "roi": [ 417 | 1218, 418 | 319, 419 | 36, 420 | 26 421 | ], 422 | "method": 4, 423 | "lower": [ 424 | 220, 425 | 180, 426 | 70 427 | ], 428 | "upper": [ 429 | 255, 430 | 220, 431 | 100 432 | ], 433 | "count": 7, 434 | "action": "Click", 435 | "next": [ 436 | "进入首页" 437 | ] 438 | }, 439 | "NoBattlePass": { 440 | "recognition": "TemplateMatch", 441 | "template": "StartUp/NoBattlePass.png", 442 | "roi": [ 443 | 332, 444 | 16, 445 | 30, 446 | 28 447 | ] 448 | } 449 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/combat.json: -------------------------------------------------------------------------------- 1 | { 2 | "DailyExplore": { 3 | "next": [ 4 | "首页_出击", 5 | "子任务_进入首页" 6 | ] 7 | }, 8 | "DailyExplore_Entry": { 9 | "recognition": "OCR", 10 | "expected": [ 11 | "每日探索" 12 | ], 13 | "roi": [ 14 | 874, 15 | 294, 16 | 218, 17 | 132 18 | ], 19 | "action": "Click", 20 | "post_delay": 2000, 21 | "next_doc": "Set in code." 22 | }, 23 | "DailyExplore_ReAc": { 24 | "recognition": "OCR", 25 | "expected": [ 26 | "资源采集" 27 | ], 28 | "roi": [ 29 | 259, 30 | 205, 31 | 243, 32 | 70 33 | ], 34 | "action": "Click", 35 | "post_delay": 2000, 36 | "next_doc": "Set in code." 37 | }, 38 | "DailyExplore_ReAc_Skill": { 39 | "recognition": "OCR", 40 | "expected": [ 41 | "技能磨砺" 42 | ], 43 | "roi": [ 44 | 830, 45 | 127, 46 | 190, 47 | 60 48 | ], 49 | "action": "Click", 50 | "post_delay": 2000, 51 | "next": [ 52 | "DailyExplore_LevelSelect" 53 | ] 54 | }, 55 | "DailyExplore_ReAc_Money": { 56 | "recognition": "OCR", 57 | "expected": [ 58 | "星币开采" 59 | ], 60 | "roi": [ 61 | 838, 62 | 237, 63 | 176, 64 | 60 65 | ], 66 | "action": "Click", 67 | "post_delay": 2000, 68 | "next": [ 69 | "DailyExplore_LevelSelect" 70 | ] 71 | }, 72 | "DailyExplore_ReAc_Experience": { 73 | "recognition": "OCR", 74 | "expected": [ 75 | "技术解析" 76 | ], 77 | "roi": [ 78 | 838, 79 | 347, 80 | 176, 81 | 60 82 | ], 83 | "action": "Click", 84 | "post_delay": 2000, 85 | "next": [ 86 | "DailyExplore_LevelSelect" 87 | ] 88 | }, 89 | "DailyExplore_ReAc_Token": { 90 | "recognition": "OCR", 91 | "expected": [ 92 | "荒墟拾遗" 93 | ], 94 | "roi": [ 95 | 838, 96 | 455, 97 | 176, 98 | 60 99 | ], 100 | "action": "Click", 101 | "post_delay": 2000, 102 | "next": [ 103 | "DailyExplore_LevelSelect" 104 | ] 105 | }, 106 | "DailyExplore_LevelSelect": { 107 | "recognition": "OCR", 108 | "text_doc": "Set in code.", 109 | "roi": [ 110 | 1147, 111 | 258, 112 | 93, 113 | 365 114 | ], 115 | "action": "Click", 116 | "post_delay": 2000, 117 | "next": [ 118 | "DailyExplore_MopUp" 119 | ] 120 | }, 121 | "DailyExplore_MopUp": { 122 | "recognition": "OCR", 123 | "expected": [ 124 | "扫荡" 125 | ], 126 | "roi": [ 127 | 843, 128 | 559, 129 | 115, 130 | 91 131 | ], 132 | "action": "Click", 133 | "post_delay": 2000, 134 | "next": [ 135 | "DailyExplore_MopUpStart", 136 | "DailyExplore_MopUp" 137 | ] 138 | }, 139 | "DailyExplore_MopUpStart": { 140 | "recognition": "OCR", 141 | "expected": [ 142 | "开始战斗" 143 | ], 144 | "roi": [ 145 | 943, 146 | 521, 147 | 159, 148 | 85 149 | ], 150 | "action": "Click", 151 | "post_delay": 2000, 152 | "next": [ 153 | "DailyExplore_MopUpDoubleMarkup", 154 | "DailyExplore_MopUpAwards", 155 | "DailyExplore_NoFuel", 156 | "DailyExplore_MopUpStart" 157 | ] 158 | }, 159 | "DailyExplore_NoFuel": { 160 | "recognition": "OCR", 161 | "expected": [ 162 | "燃料补给" 163 | ], 164 | "roi": [ 165 | 212, 166 | 139, 167 | 180, 168 | 60 169 | ], 170 | "action": "Click", 171 | "post_delay": 2000, 172 | "target": [ 173 | 584, 174 | 57, 175 | 10, 176 | 10 177 | ], 178 | "next": [ 179 | "进入首页" 180 | ] 181 | }, 182 | "DailyExplore_MopUpAwards": { 183 | "recognition": "OCR", 184 | "expected": [ 185 | "扫荡奖励" 186 | ], 187 | "roi": [ 188 | 569, 189 | 5, 190 | 181, 191 | 66 192 | ], 193 | "action": "Click", 194 | "post_delay": 2000, 195 | "next": [ 196 | "DailyExplore_LevelUp", 197 | "DailyExplore_MopUp", 198 | "DailyExplore_MopUpAwards" 199 | ] 200 | }, 201 | "DailyExplore_LevelUp": { 202 | "is_sub": true, 203 | "recognition": "TemplateMatch", 204 | "template": "Combat/DailyExplore_LevelUp.png", 205 | "roi": [ 206 | 540, 207 | 242, 208 | 207, 209 | 91 210 | ], 211 | "action": "Click" 212 | }, 213 | "DailyExplore_MopUpDoubleMarkup": { 214 | "is_sub": true, 215 | "recognition": "OCR", 216 | "expected": [ 217 | "开启" 218 | ], 219 | "roi": [ 220 | 702, 221 | 398, 222 | 252, 223 | 100 224 | ], 225 | "action": "Click", 226 | "post_delay": 2000, 227 | "next": [] 228 | }, 229 | "DailyExplore_ChEm": { 230 | "recognition": "OCR", 231 | "expected": [ 232 | "芯片嵌合" 233 | ], 234 | "roi": [ 235 | 287, 236 | 372, 237 | 205, 238 | 64 239 | ], 240 | "action": "Click", 241 | "post_delay": 2000, 242 | "next_doc": "Set in code." 243 | }, 244 | "DailyExplore_ChEm_1": { 245 | "recognition": "OCR", 246 | "expected": [ 247 | "鼓军嵌合" 248 | ], 249 | "roi": [ 250 | 830, 251 | 127, 252 | 190, 253 | 60 254 | ], 255 | "action": "Click", 256 | "post_delay": 2000, 257 | "next": [ 258 | "DailyExplore_LevelSelect" 259 | ] 260 | }, 261 | "DailyExplore_ChEm_2": { 262 | "recognition": "OCR", 263 | "expected": [ 264 | "光" 265 | ], 266 | "roi": [ 267 | 830, 268 | 241, 269 | 190, 270 | 60 271 | ], 272 | "action": "Click", 273 | "post_delay": 2000, 274 | "next": [ 275 | "DailyExplore_LevelSelect" 276 | ] 277 | }, 278 | "DailyExplore_ChEm_3": { 279 | "recognition": "OCR", 280 | "expected": [ 281 | "注" 282 | ], 283 | "roi": [ 284 | 830, 285 | 341, 286 | 190, 287 | 60 288 | ], 289 | "action": "Click", 290 | "post_delay": 2000, 291 | "next": [ 292 | "DailyExplore_LevelSelect" 293 | ] 294 | }, 295 | "DailyExplore_UpAc": { 296 | "recognition": "OCR", 297 | "expected": [ 298 | "跃升行动" 299 | ], 300 | "roi": [ 301 | 287, 302 | 534, 303 | 205, 304 | 64 305 | ], 306 | "action": "Click", 307 | "post_delay": 2000, 308 | "next_doc": "Set in code." 309 | }, 310 | "DailyExplore_UpAc_1": { 311 | "recognition": "OCR", 312 | "expected": [ 313 | "自然" 314 | ], 315 | "roi": [ 316 | 830, 317 | 127, 318 | 190, 319 | 60 320 | ], 321 | "action": "Click", 322 | "post_delay": 2000, 323 | "next": [ 324 | "DailyExplore_LevelSelect" 325 | ] 326 | }, 327 | "DailyExplore_UpAc_2": { 328 | "recognition": "OCR", 329 | "expected": [ 330 | "人造" 331 | ], 332 | "roi": [ 333 | 830, 334 | 241, 335 | 190, 336 | 60 337 | ], 338 | "action": "Click", 339 | "post_delay": 2000, 340 | "next": [ 341 | "DailyExplore_LevelSelect" 342 | ] 343 | }, 344 | "DailyExplore_UpAc_3": { 345 | "recognition": "OCR", 346 | "expected": [ 347 | "生命" 348 | ], 349 | "roi": [ 350 | 830, 351 | 341, 352 | 190, 353 | 60 354 | ], 355 | "action": "Click", 356 | "post_delay": 2000, 357 | "next": [ 358 | "DailyExplore_LevelSelect" 359 | ] 360 | } 361 | } 362 | -------------------------------------------------------------------------------- /assets/resource/base/pipeline/infrastructures.json: -------------------------------------------------------------------------------- 1 | { 2 | "Infrastructures": { 3 | "next": [ 4 | "Base", 5 | "Infr_收取资源", 6 | "子任务_进入首页" 7 | ] 8 | }, 9 | "Infrastructures_Deal": { 10 | "next": [ 11 | "Base_Deal", 12 | "Infr_DealDefaltYes", 13 | "子任务_进入首页" 14 | ] 15 | }, 16 | "Base_Deal": { 17 | "recognition": "OCR", 18 | "expected": [ 19 | "基地" 20 | ], 21 | "roi": [ 22 | 1020, 23 | 619, 24 | 167, 25 | 93 26 | ], 27 | "action": "Click", 28 | "post_delay": 2000, 29 | "next": [ 30 | "Infr_收取资源_不换班", 31 | "Infr_DealDefaltYes", 32 | "Base_Deal" 33 | ] 34 | }, 35 | "Base": { 36 | "recognition": "OCR", 37 | "expected": [ 38 | "基地" 39 | ], 40 | "roi": [ 41 | 606, 42 | 665, 43 | 42, 44 | 26 45 | ], 46 | "action": "Click", 47 | "post_delay": 3000, 48 | "next": [ 49 | "Infr_收取资源", 50 | "Infr_驻员状况", 51 | "Base" 52 | ] 53 | }, 54 | "Infr_收取资源": { 55 | "recognition": "TemplateMatch", 56 | "template": "Infrastructures/Infr_Recourse.png", 57 | "roi": [ 58 | 422, 59 | 423, 60 | 145, 61 | 140 62 | ], 63 | "action": "Click", 64 | "post_delay": 2000, 65 | "next": [ 66 | "子任务_获得物品", 67 | "Infr_驻员状况" 68 | ] 69 | }, 70 | "Infr_收取资源_不换班": { 71 | "recognition": "TemplateMatch", 72 | "template": "Infrastructures/Infr_Recourse.png", 73 | "roi": [ 74 | 412, 75 | 425, 76 | 331, 77 | 288 78 | ], 79 | "action": "Click", 80 | "post_delay": 2000, 81 | "next": [ 82 | "子任务_获得物品", 83 | "Infr_收取资源_不换班", 84 | "Infr_DealDefaltYes" 85 | ] 86 | }, 87 | "Infr_驻员状况": { 88 | "recognition": "OCR", 89 | "expected": [ 90 | "驻员", 91 | "状况" 92 | ], 93 | "roi": [ 94 | 54, 95 | 554, 96 | 176, 97 | 89 98 | ], 99 | "action": "Click", 100 | "post_delay": 1000, 101 | "next": [ 102 | "Infr_驻员预设1", 103 | "Infr_驻员状况" 104 | ] 105 | }, 106 | "Infr_驻员预设1": { 107 | "recognition": "OCR", 108 | "expected": [ 109 | "驻员", 110 | "预设" 111 | ], 112 | "roi": [ 113 | 960, 114 | 180, 115 | 120, 116 | 90 117 | ], 118 | "action": "Click", 119 | "post_delay": 2000, 120 | "next": [ 121 | "Infr_使用", 122 | "Infr_驻员预设2" 123 | ] 124 | }, 125 | "Infr_驻员预设2": { 126 | "recognition": "OCR", 127 | "expected": [ 128 | "驻员", 129 | "预设" 130 | ], 131 | "roi": [ 132 | 960, 133 | 320, 134 | 120, 135 | 90 136 | ], 137 | "action": "Click", 138 | "post_delay": 2000, 139 | "next": [ 140 | "Infr_使用", 141 | "Infr_驻员预设3" 142 | ] 143 | }, 144 | "Infr_驻员预设3": { 145 | "recognition": "OCR", 146 | "expected": [ 147 | "驻员", 148 | "预设" 149 | ], 150 | "roi": [ 151 | 960, 152 | 460, 153 | 120, 154 | 90 155 | ], 156 | "action": "Click", 157 | "post_delay": 2000, 158 | "next": [ 159 | "Infr_使用", 160 | "Infr_BackButton" 161 | ] 162 | }, 163 | "Infr_BackButton": { 164 | "recognition": "TemplateMatch", 165 | "template": "StartUp/BackButton.png", 166 | "roi": [ 167 | 14, 168 | 10, 169 | 126, 170 | 72 171 | ], 172 | "action": "Click", 173 | "post_delay": 2000, 174 | "next": [ 175 | "Infr_Deal", 176 | "Infr_Exit", 177 | "Infr_BackButton" 178 | ] 179 | }, 180 | "Infr_使用": { 181 | "is_sub": true, 182 | "recognition": "OCR", 183 | "expected": [ 184 | "使用" 185 | ], 186 | "roi": [ 187 | 847, 188 | 201, 189 | 215, 190 | 356 191 | ], 192 | "action": "Click", 193 | "post_delay": 2000 194 | }, 195 | "Infr_GetResources": { 196 | "recognition": "OCR", 197 | "expected": [ 198 | "收取资源" 199 | ], 200 | "roi": [ 201 | 342, 202 | 575, 203 | 227, 204 | 134 205 | ], 206 | "action": "Click", 207 | "post_delay": 1000, 208 | "next": [ 209 | "Infr_GetAll", 210 | "Infr_GetResources" 211 | ] 212 | }, 213 | "Infr_GetAll": { 214 | "recognition": "OCR", 215 | "expected": [ 216 | "全部收取" 217 | ], 218 | "roi": [ 219 | 498, 220 | 539, 221 | 329, 222 | 145 223 | ], 224 | "action": "Click", 225 | "post_delay": 2000, 226 | "next": [ 227 | "Infr_Occupancy", 228 | "子任务_获得物品", 229 | "子任务_点击返回" 230 | ] 231 | }, 232 | "Infr_Occupancy": { 233 | "recognition": "ColorMatch", 234 | "roi": [ 235 | 678, 236 | 629, 237 | 32, 238 | 36 239 | ], 240 | "method": 4, 241 | "lower": [ 242 | 230, 243 | 178, 244 | 60 245 | ], 246 | "upper": [ 247 | 255, 248 | 200, 249 | 80 250 | ], 251 | "count": 4, 252 | "action": "Click", 253 | "post_delay": 2000, 254 | "next": [ 255 | "Infr_Substitute1", 256 | "Infr_Occupancy" 257 | ] 258 | }, 259 | "Infr_Substitute1": { 260 | "recognition": "OCR", 261 | "expected": [ 262 | "设施详情" 263 | ], 264 | "roi": [ 265 | 240, 266 | 77, 267 | 188, 268 | 75 269 | ], 270 | "action": "Click", 271 | "target": [ 272 | 885, 273 | 189, 274 | 37, 275 | 27 276 | ], 277 | "next": [ 278 | "Infr_Substitute1_0", 279 | "Infr_Substitute1" 280 | ] 281 | }, 282 | "Infr_Substitute1_0": { 283 | "recognition": "TemplateMatch", 284 | "template": "Infrastructures/Infr_Substitute1.png", 285 | "roi": [ 286 | 418, 287 | 124, 288 | 811, 289 | 91 290 | ], 291 | "action": "Click", 292 | "next": [ 293 | "Infr_Substitute1_0", 294 | "Infr_Substitute1_1" 295 | ] 296 | }, 297 | "Infr_Substitute1_1": { 298 | "action": "Click", 299 | "target": [ 300 | 950, 301 | 237, 302 | 50, 303 | 50 304 | ], 305 | "next": [ 306 | "Infr_Substitute1_2" 307 | ] 308 | }, 309 | "Infr_Substitute1_2": { 310 | "action": "Click", 311 | "target": [ 312 | 1110, 313 | 240, 314 | 50, 315 | 50 316 | ], 317 | "next": [ 318 | "Infr_Substitute1_3" 319 | ] 320 | }, 321 | "Infr_Substitute1_3": { 322 | "action": "Click", 323 | "target": [ 324 | 473, 325 | 496, 326 | 50, 327 | 50 328 | ], 329 | "next": [ 330 | "Infr_Substitute1_4" 331 | ] 332 | }, 333 | "Infr_Substitute1_4": { 334 | "action": "Click", 335 | "target": [ 336 | 625, 337 | 496, 338 | 50, 339 | 50 340 | ], 341 | "next": [ 342 | "Infr_Substitute1_5" 343 | ] 344 | }, 345 | "Infr_Substitute1_5": { 346 | "action": "Click", 347 | "target": [ 348 | 780, 349 | 496, 350 | 50, 351 | 50 352 | ], 353 | "next": [ 354 | "Infr_Substitute2", 355 | "Infr_SubstituteComfirm", 356 | "子任务_点击返回" 357 | ] 358 | }, 359 | "Infr_SubstituteComfirm": { 360 | "is_sub": true, 361 | "recognition": "OCR", 362 | "expected": [ 363 | "确定" 364 | ], 365 | "roi": [ 366 | 889, 367 | 627, 368 | 218, 369 | 87 370 | ], 371 | "action": "Click" 372 | }, 373 | "Infr_Substitute2": { 374 | "recognition": "OCR", 375 | "expected": [ 376 | "设施详情" 377 | ], 378 | "roi": [ 379 | 240, 380 | 77, 381 | 188, 382 | 75 383 | ], 384 | "action": "Click", 385 | "target": [ 386 | 885, 387 | 328, 388 | 37, 389 | 27 390 | ], 391 | "next": [ 392 | "Infr_Substitute2_0", 393 | "Infr_Substitute2" 394 | ] 395 | }, 396 | "Infr_Substitute2_0": { 397 | "recognition": "TemplateMatch", 398 | "template": "Infrastructures/Infr_Substitute1.png", 399 | "roi": [ 400 | 418, 401 | 124, 402 | 811, 403 | 91 404 | ], 405 | "action": "Click", 406 | "next": [ 407 | "Infr_Substitute2_0", 408 | "Infr_Substitute2_1" 409 | ] 410 | }, 411 | "Infr_Substitute2_1": { 412 | "action": "Click", 413 | "target": [ 414 | 950, 415 | 237, 416 | 50, 417 | 50 418 | ], 419 | "next": [ 420 | "Infr_Substitute2_2" 421 | ] 422 | }, 423 | "Infr_Substitute2_2": { 424 | "action": "Click", 425 | "target": [ 426 | 1110, 427 | 240, 428 | 50, 429 | 50 430 | ], 431 | "next": [ 432 | "Infr_Substitute2_3" 433 | ] 434 | }, 435 | "Infr_Substitute2_3": { 436 | "action": "Click", 437 | "target": [ 438 | 473, 439 | 496, 440 | 50, 441 | 50 442 | ], 443 | "next": [ 444 | "Infr_Substitute2_4" 445 | ] 446 | }, 447 | "Infr_Substitute2_4": { 448 | "action": "Click", 449 | "target": [ 450 | 625, 451 | 496, 452 | 50, 453 | 50 454 | ], 455 | "next": [ 456 | "Infr_Substitute2_5" 457 | ] 458 | }, 459 | "Infr_Substitute2_5": { 460 | "action": "Click", 461 | "target": [ 462 | 780, 463 | 496, 464 | 50, 465 | 50 466 | ], 467 | "next": [ 468 | "Infr_Substitute3", 469 | "Infr_SubstituteComfirm", 470 | "子任务_点击返回" 471 | ] 472 | }, 473 | "Infr_Substitute3": { 474 | "recognition": "OCR", 475 | "expected": [ 476 | "设施详情" 477 | ], 478 | "roi": [ 479 | 240, 480 | 77, 481 | 188, 482 | 75 483 | ], 484 | "action": "Click", 485 | "target": [ 486 | 702, 487 | 468, 488 | 37, 489 | 27 490 | ], 491 | "next": [ 492 | "Infr_Substitute3_0", 493 | "Infr_Substitute3" 494 | ] 495 | }, 496 | "Infr_Substitute3_0": { 497 | "recognition": "TemplateMatch", 498 | "template": "Infrastructures/Infr_Substitute1.png", 499 | "roi": [ 500 | 418, 501 | 124, 502 | 811, 503 | 91 504 | ], 505 | "action": "Click", 506 | "next": [ 507 | "Infr_Substitute3_0", 508 | "Infr_Substitute3_1" 509 | ] 510 | }, 511 | "Infr_Substitute3_1": { 512 | "action": "Click", 513 | "target": [ 514 | 473, 515 | 496, 516 | 50, 517 | 50 518 | ], 519 | "next": [ 520 | "Infr_Substitute3_2" 521 | ] 522 | }, 523 | "Infr_Substitute3_2": { 524 | "action": "Click", 525 | "target": [ 526 | 625, 527 | 496, 528 | 50, 529 | 50 530 | ], 531 | "next": [ 532 | "Infr_Substitute3_3" 533 | ] 534 | }, 535 | "Infr_Substitute3_3": { 536 | "action": "Click", 537 | "target": [ 538 | 789, 539 | 496, 540 | 50, 541 | 50 542 | ], 543 | "next": [ 544 | "Infr_Substitute3_4" 545 | ] 546 | }, 547 | "Infr_Substitute3_4": { 548 | "action": "Click", 549 | "target": [ 550 | 950, 551 | 496, 552 | 50, 553 | 50 554 | ], 555 | "next": [ 556 | "Infr_Substitute3_5" 557 | ] 558 | }, 559 | "Infr_Substitute3_5": { 560 | "action": "Click", 561 | "target": [ 562 | 1100, 563 | 496, 564 | 50, 565 | 50 566 | ], 567 | "next": [ 568 | "Infr_Substitute4_0" 569 | ] 570 | }, 571 | "Infr_Substitute4_0": { 572 | "action": "Swipe", 573 | "begin": [ 574 | 890, 575 | 610, 576 | 4, 577 | 4 578 | ], 579 | "end": [ 580 | 890, 581 | 298, 582 | 4, 583 | 4 584 | ], 585 | "duration": 3000, 586 | "next": [ 587 | "Infr_Substitute4_1" 588 | ] 589 | }, 590 | "Infr_Substitute4_1": { 591 | "action": "Click", 592 | "target": [ 593 | 473, 594 | 496, 595 | 50, 596 | 50 597 | ], 598 | "next": [ 599 | "Infr_Substitute4_2" 600 | ] 601 | }, 602 | "Infr_Substitute4_2": { 603 | "action": "Click", 604 | "target": [ 605 | 625, 606 | 496, 607 | 50, 608 | 50 609 | ], 610 | "next": [ 611 | "Infr_Substitute4_3" 612 | ] 613 | }, 614 | "Infr_Substitute4_3": { 615 | "action": "Click", 616 | "target": [ 617 | 789, 618 | 496, 619 | 50, 620 | 50 621 | ], 622 | "next": [ 623 | "Infr_Substitute4_4" 624 | ] 625 | }, 626 | "Infr_Substitute4_4": { 627 | "action": "Click", 628 | "target": [ 629 | 950, 630 | 496, 631 | 50, 632 | 50 633 | ], 634 | "next": [ 635 | "Infr_Substitute4_5" 636 | ] 637 | }, 638 | "Infr_Substitute4_5": { 639 | "action": "Click", 640 | "target": [ 641 | 1100, 642 | 496, 643 | 50, 644 | 50 645 | ], 646 | "next": [ 647 | "Infr_SubstituteComfirm", 648 | "Infr_Deal", 649 | "Infr_Exit", 650 | "子任务_点击返回" 651 | ] 652 | }, 653 | "Infr_Exit": { 654 | "recognition": "OCR", 655 | "expected": [ 656 | "研发中心" 657 | ], 658 | "roi": [ 659 | 523, 660 | 282, 661 | 155, 662 | 51 663 | ], 664 | "post_delay": 2000, 665 | "next": [ 666 | "进入首页" 667 | ] 668 | }, 669 | "Infr_Deal": { 670 | "enabled": false, 671 | "recognition": "TemplateMatch", 672 | "template": "Infrastructures/Infr_Deal.png", 673 | "roi": [ 674 | 980, 675 | 225, 676 | 263, 677 | 235 678 | ], 679 | "action": "Click", 680 | "post_delay": 2000, 681 | "next": [ 682 | "Infr_Deal", 683 | "Infr_制作素材", 684 | "Infr_DealSelf" 685 | ] 686 | }, 687 | "Infr_DealDefaltYes": { 688 | "recognition": "TemplateMatch", 689 | "template": "Infrastructures/Infr_Deal.png", 690 | "roi": [ 691 | 980, 692 | 225, 693 | 263, 694 | 235 695 | ], 696 | "action": "Click", 697 | "post_delay": 2000, 698 | "next": [ 699 | "Infr_行星指挥部_返回", 700 | "Infr_DealDefaltYes", 701 | "Infr_制作素材" 702 | ] 703 | }, 704 | "Infr_Deal1": { 705 | "recognition": "TemplateMatch", 706 | "template": "Infrastructures/Infr_Deal1.png", 707 | "roi": [ 708 | 297, 709 | 84, 710 | 324, 711 | 233 712 | ], 713 | "action": "Click", 714 | "post_delay": 2000, 715 | "next": [ 716 | "Infr_Deal1", 717 | "Infr_DealSelf" 718 | ] 719 | }, 720 | "Infr_DealSelf": { 721 | "next": [ 722 | "Infr_DealSelf1", 723 | "Infr_DealSelf2", 724 | "Infr_DealSelf3", 725 | "Infr_DealSelf4", 726 | "Infr_DealSelf5", 727 | "Infr_DealSelf6", 728 | "Infr_DealSelf7", 729 | "Infr_DealSelf8", 730 | "Infr_DealSelf01", 731 | "Infr_DealSelf02", 732 | "Infr_DealSelf03", 733 | "Infr_DealSelf04", 734 | "Infr_DealSelf05", 735 | "Infr_DealSelf06", 736 | "Infr_DealSelf07", 737 | "Infr_DealSelf08", 738 | "Infr_DealNextFriends" 739 | ] 740 | }, 741 | "Infr_DealSelf1": { 742 | "recognition": "TemplateMatch", 743 | "template": "InfrastructureS/Infr_DealCard.png", 744 | "roi": [ 745 | 408, 746 | 129, 747 | 80, 748 | 80 749 | ], 750 | "action": "Click", 751 | "post_delay": 1000, 752 | "target_offset": [ 753 | -60, 754 | 55, 755 | 10, 756 | 10 757 | ], 758 | "next": [ 759 | "Infr_DealSelf1_Yes", 760 | "Infr_DealSelf1_No", 761 | "子任务_获得物品", 762 | "Infr_DealSelf2", 763 | "Infr_DealSelf3", 764 | "Infr_DealSelf4", 765 | "Infr_DealSelf5", 766 | "Infr_DealSelf6", 767 | "Infr_DealSelf7", 768 | "Infr_DealSelf8", 769 | "Infr_DealSelf01", 770 | "Infr_DealSelf02", 771 | "Infr_DealSelf03", 772 | "Infr_DealSelf04", 773 | "Infr_DealSelf05", 774 | "Infr_DealSelf06", 775 | "Infr_DealSelf07", 776 | "Infr_DealSelf08", 777 | "Infr_DealNextFriends" 778 | ] 779 | }, 780 | "Infr_DealSelf2": { 781 | "recognition": "TemplateMatch", 782 | "template": "InfrastructureS/Infr_DealCard.png", 783 | "roi": [ 784 | 634, 785 | 128, 786 | 80, 787 | 80 788 | ], 789 | "action": "Click", 790 | "post_delay": 1000, 791 | "target_offset": [ 792 | -60, 793 | 55, 794 | 10, 795 | 10 796 | ], 797 | "next": [ 798 | "Infr_DealSelf1_Yes", 799 | "Infr_DealSelf1_No", 800 | "子任务_获得物品", 801 | "Infr_DealSelf3", 802 | "Infr_DealSelf4", 803 | "Infr_DealSelf5", 804 | "Infr_DealSelf6", 805 | "Infr_DealSelf7", 806 | "Infr_DealSelf8", 807 | "Infr_DealSelf01", 808 | "Infr_DealSelf02", 809 | "Infr_DealSelf03", 810 | "Infr_DealSelf04", 811 | "Infr_DealSelf05", 812 | "Infr_DealSelf06", 813 | "Infr_DealSelf07", 814 | "Infr_DealSelf08", 815 | "Infr_DealNextFriends" 816 | ] 817 | }, 818 | "Infr_DealSelf3": { 819 | "recognition": "TemplateMatch", 820 | "template": "InfrastructureS/Infr_DealCard.png", 821 | "roi": [ 822 | 857, 823 | 128, 824 | 80, 825 | 80 826 | ], 827 | "action": "Click", 828 | "post_delay": 1000, 829 | "target_offset": [ 830 | -60, 831 | 55, 832 | 10, 833 | 10 834 | ], 835 | "next": [ 836 | "Infr_DealSelf1_Yes", 837 | "Infr_DealSelf1_No", 838 | "子任务_获得物品", 839 | "Infr_DealSelf4", 840 | "Infr_DealSelf5", 841 | "Infr_DealSelf6", 842 | "Infr_DealSelf7", 843 | "Infr_DealSelf8", 844 | "Infr_DealSelf01", 845 | "Infr_DealSelf02", 846 | "Infr_DealSelf03", 847 | "Infr_DealSelf04", 848 | "Infr_DealSelf05", 849 | "Infr_DealSelf06", 850 | "Infr_DealSelf07", 851 | "Infr_DealSelf08", 852 | "Infr_DealNextFriends" 853 | ] 854 | }, 855 | "Infr_DealSelf4": { 856 | "recognition": "TemplateMatch", 857 | "template": "InfrastructureS/Infr_DealCard.png", 858 | "roi": [ 859 | 1089, 860 | 128, 861 | 80, 862 | 80 863 | ], 864 | "action": "Click", 865 | "post_delay": 1000, 866 | "target_offset": [ 867 | -60, 868 | 55, 869 | 10, 870 | 10 871 | ], 872 | "next": [ 873 | "Infr_DealSelf1_Yes", 874 | "Infr_DealSelf1_No", 875 | "子任务_获得物品", 876 | "Infr_DealSelf5", 877 | "Infr_DealSelf6", 878 | "Infr_DealSelf7", 879 | "Infr_DealSelf8", 880 | "Infr_DealSelf01", 881 | "Infr_DealSelf02", 882 | "Infr_DealSelf03", 883 | "Infr_DealSelf04", 884 | "Infr_DealSelf05", 885 | "Infr_DealSelf06", 886 | "Infr_DealSelf07", 887 | "Infr_DealSelf08", 888 | "Infr_DealNextFriends" 889 | ] 890 | }, 891 | "Infr_DealSelf5": { 892 | "recognition": "TemplateMatch", 893 | "template": "InfrastructureS/Infr_DealCard.png", 894 | "roi": [ 895 | 402, 896 | 435, 897 | 80, 898 | 80 899 | ], 900 | "action": "Click", 901 | "post_delay": 1000, 902 | "target_offset": [ 903 | -60, 904 | 55, 905 | 10, 906 | 10 907 | ], 908 | "next": [ 909 | "Infr_DealSelf1_Yes", 910 | "Infr_DealSelf1_No", 911 | "子任务_获得物品", 912 | "Infr_DealSelf6", 913 | "Infr_DealSelf7", 914 | "Infr_DealSelf8", 915 | "Infr_DealSelf01", 916 | "Infr_DealSelf02", 917 | "Infr_DealSelf03", 918 | "Infr_DealSelf04", 919 | "Infr_DealSelf05", 920 | "Infr_DealSelf06", 921 | "Infr_DealSelf07", 922 | "Infr_DealSelf08", 923 | "Infr_DealNextFriends" 924 | ] 925 | }, 926 | "Infr_DealSelf6": { 927 | "recognition": "TemplateMatch", 928 | "template": "InfrastructureS/Infr_DealCard.png", 929 | "roi": [ 930 | 634, 931 | 435, 932 | 80, 933 | 80 934 | ], 935 | "action": "Click", 936 | "post_delay": 1000, 937 | "target_offset": [ 938 | -60, 939 | 55, 940 | 10, 941 | 10 942 | ], 943 | "next": [ 944 | "Infr_DealSelf1_Yes", 945 | "Infr_DealSelf1_No", 946 | "子任务_获得物品", 947 | "Infr_DealSelf7", 948 | "Infr_DealSelf8", 949 | "Infr_DealSelf01", 950 | "Infr_DealSelf02", 951 | "Infr_DealSelf03", 952 | "Infr_DealSelf04", 953 | "Infr_DealSelf05", 954 | "Infr_DealSelf06", 955 | "Infr_DealSelf07", 956 | "Infr_DealSelf08", 957 | "Infr_DealNextFriends" 958 | ] 959 | }, 960 | "Infr_DealSelf7": { 961 | "recognition": "TemplateMatch", 962 | "template": "InfrastructureS/Infr_DealCard.png", 963 | "roi": [ 964 | 857, 965 | 435, 966 | 80, 967 | 80 968 | ], 969 | "action": "Click", 970 | "post_delay": 1000, 971 | "target_offset": [ 972 | -60, 973 | 55, 974 | 10, 975 | 10 976 | ], 977 | "next": [ 978 | "Infr_DealSelf1_Yes", 979 | "Infr_DealSelf1_No", 980 | "子任务_获得物品", 981 | "Infr_DealSelf8", 982 | "Infr_DealSelf01", 983 | "Infr_DealSelf02", 984 | "Infr_DealSelf03", 985 | "Infr_DealSelf04", 986 | "Infr_DealSelf05", 987 | "Infr_DealSelf06", 988 | "Infr_DealSelf07", 989 | "Infr_DealSelf08", 990 | "Infr_DealNextFriends" 991 | ] 992 | }, 993 | "Infr_DealSelf8": { 994 | "recognition": "TemplateMatch", 995 | "template": "InfrastructureS/Infr_DealCard.png", 996 | "roi": [ 997 | 1089, 998 | 435, 999 | 80, 1000 | 80 1001 | ], 1002 | "action": "Click", 1003 | "post_delay": 1000, 1004 | "target_offset": [ 1005 | -60, 1006 | 55, 1007 | 10, 1008 | 10 1009 | ], 1010 | "next": [ 1011 | "Infr_DealSelf1_Yes", 1012 | "Infr_DealSelf1_No", 1013 | "子任务_获得物品", 1014 | "Infr_DealSelf01", 1015 | "Infr_DealSelf02", 1016 | "Infr_DealSelf03", 1017 | "Infr_DealSelf04", 1018 | "Infr_DealSelf05", 1019 | "Infr_DealSelf06", 1020 | "Infr_DealSelf07", 1021 | "Infr_DealSelf08", 1022 | "Infr_DealNextFriends" 1023 | ] 1024 | }, 1025 | "Infr_DealSelf01": { 1026 | "recognition": "OCR", 1027 | "expected": [ 1028 | "X120000" 1029 | ], 1030 | "roi": [ 1031 | 272, 1032 | 151, 1033 | 175, 1034 | 80 1035 | ], 1036 | "action": "Click", 1037 | "post_delay": 1000, 1038 | "next": [ 1039 | "Infr_DealSelf1_Yes", 1040 | "Infr_DealSelf1_No", 1041 | "子任务_获得物品", 1042 | "Infr_DealSelf02", 1043 | "Infr_DealSelf03", 1044 | "Infr_DealSelf04", 1045 | "Infr_DealSelf05", 1046 | "Infr_DealSelf06", 1047 | "Infr_DealSelf07", 1048 | "Infr_DealSelf08", 1049 | "Infr_DealNextFriends" 1050 | ] 1051 | }, 1052 | "Infr_DealSelf02": { 1053 | "recognition": "OCR", 1054 | "expected": [ 1055 | "X120000" 1056 | ], 1057 | "roi": [ 1058 | 522, 1059 | 160, 1060 | 136, 1061 | 80 1062 | ], 1063 | "action": "Click", 1064 | "post_delay": 1000, 1065 | "next": [ 1066 | "Infr_DealSelf1_Yes", 1067 | "Infr_DealSelf1_No", 1068 | "子任务_获得物品", 1069 | "Infr_DealSelf03", 1070 | "Infr_DealSelf04", 1071 | "Infr_DealSelf05", 1072 | "Infr_DealSelf06", 1073 | "Infr_DealSelf07", 1074 | "Infr_DealSelf08", 1075 | "Infr_DealNextFriends" 1076 | ] 1077 | }, 1078 | "Infr_DealSelf03": { 1079 | "recognition": "OCR", 1080 | "expected": [ 1081 | "X120000" 1082 | ], 1083 | "roi": [ 1084 | 740, 1085 | 167, 1086 | 154, 1087 | 77 1088 | ], 1089 | "action": "Click", 1090 | "post_delay": 1000, 1091 | "next": [ 1092 | "Infr_DealSelf1_Yes", 1093 | "Infr_DealSelf1_No", 1094 | "子任务_获得物品", 1095 | "Infr_DealSelf04", 1096 | "Infr_DealSelf05", 1097 | "Infr_DealSelf06", 1098 | "Infr_DealSelf07", 1099 | "Infr_DealSelf08", 1100 | "Infr_DealNextFriends" 1101 | ] 1102 | }, 1103 | "Infr_DealSelf04": { 1104 | "recognition": "OCR", 1105 | "expected": [ 1106 | "X120000" 1107 | ], 1108 | "roi": [ 1109 | 962, 1110 | 167, 1111 | 137, 1112 | 80 1113 | ], 1114 | "action": "Click", 1115 | "post_delay": 1000, 1116 | "next": [ 1117 | "Infr_DealSelf1_Yes", 1118 | "Infr_DealSelf1_No", 1119 | "子任务_获得物品", 1120 | "Infr_DealSelf05", 1121 | "Infr_DealSelf06", 1122 | "Infr_DealSelf07", 1123 | "Infr_DealSelf08", 1124 | "Infr_DealNextFriends" 1125 | ] 1126 | }, 1127 | "Infr_DealSelf05": { 1128 | "recognition": "OCR", 1129 | "expected": [ 1130 | "X120000" 1131 | ], 1132 | "roi": [ 1133 | 286, 1134 | 468, 1135 | 142, 1136 | 72 1137 | ], 1138 | "action": "Click", 1139 | "post_delay": 1000, 1140 | "next": [ 1141 | "Infr_DealSelf1_Yes", 1142 | "Infr_DealSelf1_No", 1143 | "子任务_获得物品", 1144 | "Infr_DealSelf06", 1145 | "Infr_DealSelf07", 1146 | "Infr_DealSelf08", 1147 | "Infr_DealNextFriends" 1148 | ] 1149 | }, 1150 | "Infr_DealSelf06": { 1151 | "recognition": "OCR", 1152 | "expected": [ 1153 | "X120000" 1154 | ], 1155 | "roi": [ 1156 | 515, 1157 | 471, 1158 | 161, 1159 | 80 1160 | ], 1161 | "action": "Click", 1162 | "post_delay": 1000, 1163 | "next": [ 1164 | "Infr_DealSelf1_Yes", 1165 | "Infr_DealSelf1_No", 1166 | "子任务_获得物品", 1167 | "Infr_DealSelf07", 1168 | "Infr_DealSelf08", 1169 | "Infr_DealNextFriends" 1170 | ] 1171 | }, 1172 | "Infr_DealSelf07": { 1173 | "recognition": "OCR", 1174 | "expected": [ 1175 | "X120000" 1176 | ], 1177 | "roi": [ 1178 | 729, 1179 | 471, 1180 | 74, 1181 | 593 1182 | ], 1183 | "action": "Click", 1184 | "post_delay": 1000, 1185 | "next": [ 1186 | "Infr_DealSelf1_Yes", 1187 | "Infr_DealSelf1_No", 1188 | "子任务_获得物品", 1189 | "Infr_DealSelf08", 1190 | "Infr_DealNextFriends" 1191 | ] 1192 | }, 1193 | "Infr_DealSelf08": { 1194 | "recognition": "OCR", 1195 | "expected": [ 1196 | "X120000" 1197 | ], 1198 | "roi": [ 1199 | 962, 1200 | 474, 1201 | 140, 1202 | 66 1203 | ], 1204 | "action": "Click", 1205 | "post_delay": 1000, 1206 | "next": [ 1207 | "Infr_DealSelf1_Yes", 1208 | "Infr_DealSelf1_No", 1209 | "子任务_获得物品", 1210 | "Infr_DealNextFriends" 1211 | ] 1212 | }, 1213 | "Infr_DealSelf1_Yes": { 1214 | "is_sub": true, 1215 | "recognition": "OCR", 1216 | "expected": [ 1217 | "是否确认提交订单" 1218 | ], 1219 | "roi": [ 1220 | 489, 1221 | 277, 1222 | 340, 1223 | 126 1224 | ], 1225 | "action": "Click", 1226 | "post_delay": 1000, 1227 | "target": [ 1228 | 767, 1229 | 428, 1230 | 70, 1231 | 36 1232 | ] 1233 | }, 1234 | "Infr_DealSelf1_No": { 1235 | "is_sub": true, 1236 | "recognition": "OCR", 1237 | "expected": [ 1238 | "订单兑换", 1239 | "是否进行合成" 1240 | ], 1241 | "roi": [ 1242 | 392, 1243 | 261, 1244 | 543, 1245 | 154 1246 | ], 1247 | "action": "Click", 1248 | "post_delay": 1000, 1249 | "target": [ 1250 | 447, 1251 | 431, 1252 | 65, 1253 | 36 1254 | ] 1255 | }, 1256 | "Infr_DealNextFriends": { 1257 | "recognition": "TemplateMatch", 1258 | "template": "InfrastructureS/Infr_DealNextFriends.png", 1259 | "roi": [ 1260 | 98, 1261 | 470, 1262 | 67, 1263 | 55 1264 | ], 1265 | "action": "Click", 1266 | "post_delay": 1000, 1267 | "target": [ 1268 | 118, 1269 | 605, 1270 | 20, 1271 | 26 1272 | ], 1273 | "next": [ 1274 | "Infr_DealSelf1_Yes", 1275 | "Infr_DealSelf1_No", 1276 | "子任务_获得物品", 1277 | "Infr_DealNextFriends1", 1278 | "Infr_DealNextFriends" 1279 | ] 1280 | }, 1281 | "Infr_DealNextFriends1": { 1282 | "recognition": "OCR", 1283 | "expected": [ 1284 | "好友列表" 1285 | ], 1286 | "roi": [ 1287 | 173, 1288 | 126, 1289 | 229, 1290 | 80 1291 | ], 1292 | "post_delay": 1000, 1293 | "next": [ 1294 | "Infr_DealNextFriends_VisitNext", 1295 | "Infr_DealNextFriends_End", 1296 | "Infr_DealNextFriends_Swipe", 1297 | "Infr_DealNextFriends_Visit0" 1298 | ] 1299 | }, 1300 | "Infr_DealNextFriends_Visit0": { 1301 | "recognition": "OCR", 1302 | "expected": [ 1303 | "拜访" 1304 | ], 1305 | "roi": [ 1306 | 235, 1307 | 479, 1308 | 800, 1309 | 71 1310 | ], 1311 | "action": "Click", 1312 | "post_delay": 2000, 1313 | "next": [ 1314 | "Infr_DealSelf" 1315 | ] 1316 | }, 1317 | "Infr_DealNextFriends_VisitNext": { 1318 | "recognition": "TemplateMatch", 1319 | "template": "InfrastructureS/Infr_DealNextFriends_VisitNext.png", 1320 | "roi": [ 1321 | 262, 1322 | 479, 1323 | 750, 1324 | 86 1325 | ], 1326 | "action": "Click", 1327 | "post_delay": 1000, 1328 | "target_offset": [ 1329 | 110, 1330 | 0, 1331 | 10, 1332 | 10 1333 | ], 1334 | "next": [ 1335 | "Infr_DealNextFriends_VisitNext", 1336 | "Infr_DealSelf" 1337 | ] 1338 | }, 1339 | "Infr_DealNextFriends_Swipe": { 1340 | "is_sub": true, 1341 | "recognition": "ColorMatch", 1342 | "roi": [ 1343 | 262, 1344 | 479, 1345 | 750, 1346 | 60 1347 | ], 1348 | "method": 4, 1349 | "lower": [ 1350 | 235, 1351 | 235, 1352 | 235 1353 | ], 1354 | "upper": [ 1355 | 255, 1356 | 255, 1357 | 255 1358 | ], 1359 | "count": 1000, 1360 | "action": "Swipe", 1361 | "begin": [ 1362 | 1010, 1363 | 400, 1364 | 4, 1365 | 4 1366 | ], 1367 | "end": [ 1368 | 724, 1369 | 385, 1370 | 4, 1371 | 4 1372 | ], 1373 | "duration": 1000, 1374 | "post_delay": 1000 1375 | }, 1376 | "Infr_DealNextFriends_End": { 1377 | "recognition": "ColorMatch", 1378 | "roi": [ 1379 | 1035, 1380 | 404, 1381 | 12, 1382 | 16 1383 | ], 1384 | "method": 4, 1385 | "lower": [ 1386 | 45, 1387 | 50, 1388 | 60 1389 | ], 1390 | "upper": [ 1391 | 65, 1392 | 70, 1393 | 75 1394 | ], 1395 | "count": 50, 1396 | "post_delay": 1000, 1397 | "next": [ 1398 | "进入首页" 1399 | ] 1400 | }, 1401 | "Infr_制作素材": { 1402 | "recognition": "OCR", 1403 | "expected": [ 1404 | "制作素材" 1405 | ], 1406 | "roi": [ 1407 | 42, 1408 | 99, 1409 | 108, 1410 | 34 1411 | ], 1412 | "action": "Click", 1413 | "post_delay": 1000, 1414 | "target": [ 1415 | 53, 1416 | 358, 1417 | 79, 1418 | 73 1419 | ], 1420 | "next": [ 1421 | "Infr_制作素材", 1422 | "Infr_制作素材_材料不足", 1423 | "Infr_制作素材_材料充足" 1424 | ] 1425 | }, 1426 | "Infr_制作素材_材料充足": { 1427 | "recognition": "ColorMatch", 1428 | "roi": [ 1429 | 461, 1430 | 520, 1431 | 85, 1432 | 28 1433 | ], 1434 | "lower": [ 1435 | 59, 1436 | 65, 1437 | 74 1438 | ], 1439 | "upper": [ 1440 | 99, 1441 | 97, 1442 | 107 1443 | ], 1444 | "action": "Click", 1445 | "post_delay": 2000, 1446 | "target": [ 1447 | 272, 1448 | 525, 1449 | 145, 1450 | 140 1451 | ], 1452 | "next": [ 1453 | "Infr_制作素材_材料充足_合成", 1454 | "Infr_制作素材_材料充足" 1455 | ] 1456 | }, 1457 | "Infr_制作素材_材料不足": { 1458 | "recognition": "ColorMatch", 1459 | "roi": [ 1460 | 461, 1461 | 520, 1462 | 85, 1463 | 28 1464 | ], 1465 | "lower": [ 1466 | 33, 1467 | 20, 1468 | 33 1469 | ], 1470 | "upper": [ 1471 | 57, 1472 | 32, 1473 | 49 1474 | ], 1475 | "post_delay": 1000, 1476 | "next": [ 1477 | "Infr_制作素材_返回" 1478 | ] 1479 | }, 1480 | "Infr_制作素材_材料充足_合成": { 1481 | "recognition": "OCR", 1482 | "expected": [ 1483 | "合成份数" 1484 | ], 1485 | "roi": [ 1486 | 901, 1487 | 95, 1488 | 106, 1489 | 33 1490 | ], 1491 | "action": "Click", 1492 | "post_delay": 1000, 1493 | "target": [ 1494 | 1159, 1495 | 342, 1496 | 67, 1497 | 33 1498 | ], 1499 | "next": [ 1500 | "Infr_制作素材_材料充足_最大", 1501 | "Infr_制作素材_材料充足_合成" 1502 | ] 1503 | }, 1504 | "Infr_制作素材_材料充足_最大": { 1505 | "recognition": "ColorMatch", 1506 | "roi": [ 1507 | 414, 1508 | 308, 1509 | 405, 1510 | 107 1511 | ], 1512 | "lower": [ 1513 | 33, 1514 | 20, 1515 | 33 1516 | ], 1517 | "upper": [ 1518 | 57, 1519 | 32, 1520 | 49 1521 | ], 1522 | "post_delay": 1000, 1523 | "next": [ 1524 | "Infr_制作素材_材料充足_确定" 1525 | ] 1526 | }, 1527 | "Infr_制作素材_材料充足_确定": { 1528 | "recognition": "OCR", 1529 | "expected": [ 1530 | "合成份数" 1531 | ], 1532 | "roi": [ 1533 | 896, 1534 | 94, 1535 | 111, 1536 | 35 1537 | ], 1538 | "action": "Click", 1539 | "post_delay": 1000, 1540 | "target": [ 1541 | 1020, 1542 | 603, 1543 | 90, 1544 | 39 1545 | ], 1546 | "next": [ 1547 | "子任务_获得物品", 1548 | "Infr_制作素材_合成_返回" 1549 | ] 1550 | }, 1551 | "Infr_制作素材_合成_返回": { 1552 | "action": "Click", 1553 | "recognition": "OCR", 1554 | "expected": [ 1555 | "概率" 1556 | ], 1557 | "roi": [ 1558 | 43, 1559 | 428, 1560 | 51, 1561 | 31 1562 | ], 1563 | "target": [ 1564 | 44, 1565 | 29, 1566 | 120, 1567 | 39 1568 | ], 1569 | "post_delay": 1000, 1570 | "next": [ 1571 | "子任务_获得物品", 1572 | "Infr_制作素材_返回", 1573 | "Infr_换取页面", 1574 | "Infr_制作素材_合成_返回" 1575 | ] 1576 | }, 1577 | "Infr_制作素材_返回": { 1578 | "action": "Click", 1579 | "recognition": "OCR", 1580 | "expected": [ 1581 | "基地素材" 1582 | ], 1583 | "roi": [ 1584 | 61, 1585 | 481, 1586 | 112, 1587 | 37 1588 | ], 1589 | "target": [ 1590 | 44, 1591 | 29, 1592 | 120, 1593 | 39 1594 | ], 1595 | "post_delay": 1000, 1596 | "next": [ 1597 | "Infr_制作素材_返回", 1598 | "Infr_换取页面" 1599 | ] 1600 | }, 1601 | "Infr_换取页面": { 1602 | "recognition": "OCR", 1603 | "expected": [ 1604 | "制作素材" 1605 | ], 1606 | "roi": [ 1607 | 44, 1608 | 96, 1609 | 100, 1610 | 40 1611 | ], 1612 | "post_delay": 1000, 1613 | "next": [ 1614 | "Infr_DealSelf" 1615 | ] 1616 | }, 1617 | "Infr_行星指挥部_返回": { 1618 | "recognition": "OCR", 1619 | "expected": [ 1620 | "行星指挥部" 1621 | ], 1622 | "roi": [ 1623 | 137, 1624 | 105, 1625 | 143, 1626 | 35 1627 | ], 1628 | "action": "Click", 1629 | "post_delay": 1000, 1630 | "target": [ 1631 | 52, 1632 | 24, 1633 | 102, 1634 | 43 1635 | ], 1636 | "next": [ 1637 | "Infr_DealDefaltYes", 1638 | "Infr_行星指挥部_返回" 1639 | ] 1640 | } 1641 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/rehearsal.json: -------------------------------------------------------------------------------- 1 | { 2 | "模拟军演": { 3 | "next": [ 4 | "首页_出击", 5 | "子任务_进入首页" 6 | ] 7 | }, 8 | "模拟军演_入口": { 9 | "recognition": "OCR", 10 | "expected": [ 11 | "模拟军演" 12 | ], 13 | "roi": [ 14 | 256, 15 | 338, 16 | 113, 17 | 40 18 | ], 19 | "action": "Click", 20 | "next": [ 21 | "模拟军演_二级入口", 22 | "模拟军演_入口" 23 | ] 24 | }, 25 | "模拟军演_二级入口": { 26 | "recognition": "OCR", 27 | "expected": [ 28 | "镜像竞技" 29 | ], 30 | "roi": [ 31 | 155, 32 | 405, 33 | 202, 34 | 56 35 | ], 36 | "action": "Click", 37 | "next": [ 38 | "模拟军演_刷新对手", 39 | "模拟军演_选择对手", 40 | "模拟军演_二级入口" 41 | ] 42 | }, 43 | "模拟军演_刷新对手": { 44 | "recognition": "OCR", 45 | "expected": "^[1-9]\\d{4}$", 46 | "roi": [ 47 | 330, 48 | 315, 49 | 92, 50 | 29 51 | ], 52 | "action": "Click", 53 | "target": [ 54 | 1070, 55 | 110, 56 | 165, 57 | 42 58 | ], 59 | "next": [ 60 | "模拟军演_刷新上线", 61 | "模拟军演_刷新对手", 62 | "模拟军演_选择对手", 63 | "模拟军演_开始挑战" 64 | ] 65 | }, 66 | "模拟军演_刷新上线": { 67 | "recognition": "OCR", 68 | "expected": [ 69 | "操作" 70 | ], 71 | "roi": [ 72 | 542, 73 | 342, 74 | 206, 75 | 35 76 | ], 77 | "next": [ 78 | "模拟军演_选择对手" 79 | ] 80 | }, 81 | "模拟军演_选择对手": { 82 | "recognition": "OCR", 83 | "expected": [ 84 | "积分" 85 | ], 86 | "roi": [ 87 | 683, 88 | 361, 89 | 157, 90 | 65 91 | ], 92 | "action": "Click", 93 | "post_delay": 2000, 94 | "target": [ 95 | 242, 96 | 260, 97 | 40, 98 | 40 99 | ], 100 | "next": [ 101 | "模拟军演_开始挑战", 102 | "模拟军演_无挑战次数", 103 | "模拟军演_刷新对手", 104 | "模拟军演_选择对手" 105 | ] 106 | }, 107 | "模拟军演_无挑战次数": { 108 | "recognition": "OCR", 109 | "expected": [ 110 | "模拟次数购买" 111 | ], 112 | "roi": [ 113 | 207, 114 | 146, 115 | 233, 116 | 92 117 | ], 118 | "action": "Click", 119 | "next": [ 120 | "进入首页" 121 | ] 122 | }, 123 | "模拟军演_开始挑战": { 124 | "recognition": "OCR", 125 | "expected": [ 126 | "挑战" 127 | ], 128 | "roi": [ 129 | 629, 130 | 573, 131 | 256, 132 | 120 133 | ], 134 | "action": "Click", 135 | "next": [ 136 | "模拟军演_战斗中", 137 | "模拟军演_开始挑战" 138 | ] 139 | }, 140 | "模拟军演_战斗中": { 141 | "recognition": "TemplateMatch", 142 | "template": "Combat/Combat_Combating.png", 143 | "roi": [ 144 | 1169, 145 | 27, 146 | 105, 147 | 59 148 | ], 149 | "next": [ 150 | "战斗_自动战斗", 151 | "战斗_启用二倍速", 152 | "模拟军演_战斗中_战斗结束", 153 | "模拟军演_战斗中" 154 | ] 155 | }, 156 | "模拟军演_战斗中_战斗结束": { 157 | "recognition": "OCR", 158 | "expected": [ 159 | "等级" 160 | ], 161 | "roi": [ 162 | 210, 163 | 481, 164 | 97, 165 | 82 166 | ], 167 | "action": "Click", 168 | "next": [ 169 | "子任务_获得物品", 170 | "模拟军演_阶段提升", 171 | "模拟军演_刷新对手", 172 | "模拟军演_选择对手", 173 | "模拟军演_战斗中_战斗结束" 174 | ] 175 | }, 176 | "模拟军演_阶段提升": { 177 | "is_sub": true, 178 | "recognition": "OCR", 179 | "expected": [ 180 | "提升", 181 | "新的", 182 | "阶段" 183 | ], 184 | "roi": [ 185 | 404, 186 | 110, 187 | 525, 188 | 124 189 | ], 190 | "action": "Click" 191 | } 192 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/shopping.json: -------------------------------------------------------------------------------- 1 | { 2 | "Shopping": { 3 | "next": [ 4 | "子任务_关闭公告", 5 | "NoForFree", 6 | "ForFree", 7 | "DailyGift", 8 | "Shop", 9 | "子任务_进入首页" 10 | ] 11 | }, 12 | "Shop": { 13 | "recognition": "OCR", 14 | "expected": [ 15 | "补给站" 16 | ], 17 | "roi": [ 18 | 885, 19 | 451, 20 | 240, 21 | 139 22 | ], 23 | "action": "Click", 24 | "next": [ 25 | "DailyGift", 26 | "Shop" 27 | ] 28 | }, 29 | "DailyGift": { 30 | "recognition": "OCR", 31 | "expected": [ 32 | "礼包" 33 | ], 34 | "roi": [ 35 | 362, 36 | 57, 37 | 166, 38 | 89 39 | ], 40 | "action": "Click", 41 | "next": [ 42 | "DailyGiftYes", 43 | "DailyGift" 44 | ] 45 | }, 46 | "DailyGiftYes": { 47 | "recognition": "TemplateMatch", 48 | "template": "StartUp/NoForFree.png", 49 | "roi": [ 50 | 39, 51 | 540, 52 | 1198, 53 | 74 54 | ], 55 | "next": [ 56 | "ForFree", 57 | "NoForFree" 58 | ] 59 | }, 60 | "ForFree": { 61 | "recognition": "OCR", 62 | "expected": [ 63 | "免费" 64 | ], 65 | "roi": [ 66 | 380, 67 | 528, 68 | 1190, 69 | 91 70 | ], 71 | "action": "Click", 72 | "next": [ 73 | "Purchase", 74 | "ForFree" 75 | ] 76 | }, 77 | "NoForFree": { 78 | "recognition": "TemplateMatch", 79 | "template": "StartUp/NoForFree.png", 80 | "roi": [ 81 | 39, 82 | 540, 83 | 1198, 84 | 74 85 | ], 86 | "next": [ 87 | "进入首页" 88 | ] 89 | }, 90 | "Purchase": { 91 | "recognition": "OCR", 92 | "expected": [ 93 | "购买" 94 | ], 95 | "roi": [ 96 | 758, 97 | 513, 98 | 191, 99 | 75 100 | ], 101 | "action": "Click", 102 | "post_delay": 1000, 103 | "next": [ 104 | "子任务_获得物品", 105 | "Purchase", 106 | "ForFree", 107 | "NoForFree" 108 | ] 109 | } 110 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/shutdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "关闭游戏": { 3 | "action": "StopApp", 4 | "package": "com.megagame.crosscore" 5 | } 6 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/startup.json: -------------------------------------------------------------------------------- 1 | { 2 | "进入首页": { 3 | "next": [ 4 | "首页标志2", 5 | "子任务_点击首页按钮", 6 | "子任务_点击返回", 7 | "子任务_获得物品", 8 | "子任务_点击取消", 9 | "子任务_点击确认", 10 | "子任务_关闭公告", 11 | "关闭周年弹窗", 12 | "签到", 13 | "首页标志1", 14 | "开始游戏", 15 | "NERI", 16 | "启动游戏" 17 | ] 18 | }, 19 | "NERI": { 20 | "recognition": "TemplateMatch", 21 | "template": "StartUp/NERI.png", 22 | "roi": [ 23 | 325, 24 | 214, 25 | 662, 26 | 354 27 | ], 28 | "next": [ 29 | "下载资源", 30 | "开始游戏", 31 | "NERI" 32 | ] 33 | }, 34 | "下载资源": { 35 | "recognition": "OCR", 36 | "expected": [ 37 | "下载" 38 | ], 39 | "roi": [ 40 | 859, 41 | 645, 42 | 78, 43 | 54 44 | ], 45 | "next": [ 46 | "开始游戏", 47 | "下载资源" 48 | ] 49 | }, 50 | "开始游戏": { 51 | "recognition": "OCR", 52 | "expected": [ 53 | "开始游戏" 54 | ], 55 | "roi": [ 56 | 580, 57 | 462, 58 | 121, 59 | 40 60 | ], 61 | "action": "Click", 62 | "next": [ 63 | "首页标志1", 64 | "子任务_关闭公告", 65 | "关闭周年弹窗", 66 | "签到", 67 | "开始游戏" 68 | ] 69 | }, 70 | "签到": { 71 | "recognition": "OCR", 72 | "expected": [ 73 | "签到" 74 | ], 75 | "roi": [ 76 | 1053, 77 | 554, 78 | 211, 79 | 105 80 | ], 81 | "action": "Click", 82 | "next": [ 83 | "首页标志1", 84 | "子任务_点击首页按钮", 85 | "子任务_点击返回", 86 | "子任务_获得物品", 87 | "子任务_点击取消", 88 | "子任务_关闭公告", 89 | "签到" 90 | ] 91 | }, 92 | "首页标志1": { 93 | "recognition": "OCR", 94 | "expected": [ 95 | "补给站" 96 | ], 97 | "roi": [ 98 | 885, 99 | 451, 100 | 240, 101 | 139 102 | ], 103 | "post_delay": 1000, 104 | "next": [ 105 | "子任务_点击首页按钮", 106 | "子任务_点击返回", 107 | "子任务_获得物品", 108 | "子任务_点击取消", 109 | "子任务_关闭公告", 110 | "签到", 111 | "首页标志2", 112 | "首页标志1" 113 | ] 114 | }, 115 | "首页标志2": { 116 | "recognition": "TemplateMatch", 117 | "template": "StartUp/HomeFlag1.png", 118 | "roi": [ 119 | 327, 120 | 409, 121 | 55, 122 | 200 123 | ], 124 | "action": "Click", 125 | "target": [ 126 | 620, 127 | 350, 128 | 20, 129 | 20 130 | ] 131 | }, 132 | "启动游戏": { 133 | "is_sub": true, 134 | "action": "StartApp", 135 | "package": "com.megagame.crosscore/com.megagame.crosscore.extend.PhoneUtilActivity" 136 | }, 137 | "关闭周年弹窗": { 138 | "recognition": "TemplateMatch", 139 | "template": "StartUp/CloseOneYear.png", 140 | "roi": [ 141 | 1143, 142 | 118, 143 | 36, 144 | 41 145 | ], 146 | "action": "Click", 147 | "green_mask": true 148 | } 149 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/summer.json: -------------------------------------------------------------------------------- 1 | { 2 | "夏活": { 3 | "next": [ 4 | "夏活_入口", 5 | "子任务_进入首页" 6 | ] 7 | }, 8 | "夏活_入口": { 9 | "recognition": "OCR", 10 | "action": "Click", 11 | "expected": "夏日", 12 | "roi": [ 13 | 848, 14 | 145, 15 | 66, 16 | 123 17 | ], 18 | "next": [ 19 | "夏活_任务奖励入口", 20 | "夏活_入口" 21 | ] 22 | }, 23 | "夏活_任务奖励入口": { 24 | "recognition": "OCR", 25 | "action": "Click", 26 | "expected": "海", 27 | "roi": [ 28 | 883, 29 | 129, 30 | 241, 31 | 117 32 | ], 33 | "next": "夏活_任务奖励_点击领取" 34 | }, 35 | "夏活_任务奖励_点击领取": { 36 | "recognition": "OCR", 37 | "action": "Click", 38 | "expected": "领取", 39 | "roi": [ 40 | 1029, 41 | 93, 42 | 145, 43 | 44 44 | ], 45 | "next": [ 46 | "夏活_任务奖励_奖励弹框", 47 | "夏活_任务奖励_领取完成", 48 | "夏活_任务奖励_点击领取" 49 | ] 50 | }, 51 | "夏活_任务奖励_奖励弹框": { 52 | "recognition": "OCR", 53 | "action": "Click", 54 | "expected": "获得物品", 55 | "roi": [ 56 | 527, 57 | 160, 58 | 214, 59 | 68 60 | ], 61 | "next": [ 62 | "夏活_任务奖励_领取完成", 63 | "夏活_任务奖励_奖励弹框" 64 | ] 65 | }, 66 | "夏活_任务奖励_领取完成": { 67 | "recognition": "OCR", 68 | "expected": "已完成", 69 | "roi": [ 70 | 1051, 71 | 210, 72 | 105, 73 | 41 74 | ], 75 | "next": "夏活_任务奖励_返回" 76 | }, 77 | "夏活_任务奖励_返回": { 78 | "recognition": "OCR", 79 | "expected": "任务奖励", 80 | "roi": [ 81 | 132, 82 | 90, 83 | 151, 84 | 52 85 | ], 86 | "action": "Click", 87 | "target": [ 88 | 44, 89 | 34, 90 | 120, 91 | 32 92 | ], 93 | "next": [ 94 | "夏活_进入关卡", 95 | "夏活_任务奖励_返回" 96 | ] 97 | }, 98 | "夏活_进入关卡": { 99 | "recognition": "OCR", 100 | "expected": "夏日", 101 | "roi": [ 102 | 268, 103 | 191, 104 | 199, 105 | 65 106 | ], 107 | "action": "Click", 108 | "target": [ 109 | 905, 110 | 504, 111 | 198, 112 | 104 113 | ], 114 | "next": [ 115 | "夏活_关卡_难度选择", 116 | "夏活_进入关卡" 117 | ] 118 | }, 119 | "夏活_关卡_难度选择": { 120 | "recognition": "OCR", 121 | "action": "Click", 122 | "expected": "困难", 123 | "roi": [ 124 | 12, 125 | 193, 126 | 144, 127 | 34 128 | ], 129 | "next": [ 130 | "夏活_关卡_选择关卡", 131 | "夏活_关卡_难度选择" 132 | ] 133 | }, 134 | "夏活_关卡_选择关卡": { 135 | "recognition": "OCR", 136 | "action": "Click", 137 | "expected": "海", 138 | "roi": [ 139 | 106, 140 | 599, 141 | 119, 142 | 33 143 | ], 144 | "next": [ 145 | "夏活_扫荡", 146 | "夏活_关卡_选择关卡" 147 | ] 148 | }, 149 | "夏活_扫荡": { 150 | "recognition": "OCR", 151 | "expected": [ 152 | "扫荡" 153 | ], 154 | "roi": [ 155 | 843, 156 | 559, 157 | 115, 158 | 91 159 | ], 160 | "action": "Click", 161 | "next": [ 162 | "夏活_扫荡开始", 163 | "夏活_扫荡" 164 | ] 165 | }, 166 | "夏活_扫荡奖励": { 167 | "recognition": "OCR", 168 | "expected": [ 169 | "扫荡奖励" 170 | ], 171 | "roi": [ 172 | 569, 173 | 5, 174 | 181, 175 | 66 176 | ], 177 | "action": "Click", 178 | "next": [ 179 | "夏活_扫荡升级", 180 | "夏活_扫荡", 181 | "夏活_扫荡奖励" 182 | ] 183 | }, 184 | "夏活_扫荡升级": { 185 | "is_sub": true, 186 | "recognition": "TemplateMatch", 187 | "template": "Combat/DailyExplore_LevelUp.png", 188 | "roi": [ 189 | 540, 190 | 242, 191 | 207, 192 | 91 193 | ], 194 | "action": "Click" 195 | }, 196 | "夏活_扫荡开始": { 197 | "recognition": "OCR", 198 | "expected": [ 199 | "开始战斗" 200 | ], 201 | "roi": [ 202 | 943, 203 | 521, 204 | 159, 205 | 85 206 | ], 207 | "action": "Click", 208 | "next": [ 209 | "夏活_扫荡双倍标记", 210 | "夏活_扫荡", 211 | "夏活_扫荡奖励", 212 | "夏活_无票券", 213 | "夏活_扫荡开始" 214 | ] 215 | }, 216 | "夏活_扫荡双倍标记": { 217 | "is_sub": true, 218 | "recognition": "OCR", 219 | "expected": [ 220 | "开启" 221 | ], 222 | "roi": [ 223 | 702, 224 | 398, 225 | 252, 226 | 100 227 | ], 228 | "action": "Click" 229 | }, 230 | "夏活_无票券": { 231 | "recognition": "OCR", 232 | "expected": [ 233 | "取消" 234 | ], 235 | "roi": [ 236 | 422, 237 | 431, 238 | 107, 239 | 35 240 | ], 241 | "action": "Click", 242 | "next": [ 243 | "夏活_返回首页", 244 | "夏活_无票券" 245 | ] 246 | }, 247 | "夏活_首页标识": { 248 | "recognition": "OCR", 249 | "expected": [ 250 | "夏日" 251 | ], 252 | "roi": [ 253 | 272, 254 | 186, 255 | 189, 256 | 68 257 | ], 258 | "next": [ 259 | "夏活_活动奖励", 260 | "夏活_首页标识" 261 | ] 262 | }, 263 | "夏活_返回首页": { 264 | "next": [ 265 | "夏活_首页标识", 266 | "子任务_点击返回", 267 | "夏活_返回首页" 268 | ] 269 | }, 270 | "夏活_活动奖励": { 271 | "recognition": "OCR", 272 | "expected": [ 273 | "夏日" 274 | ], 275 | "roi": [ 276 | 272, 277 | 186, 278 | 189, 279 | 68 280 | ], 281 | "target": [ 282 | 952, 283 | 303, 284 | 260, 285 | 92 286 | ], 287 | "action": "Click", 288 | "next": [ 289 | "夏活_活动奖励_点击领取", 290 | "夏活_活动奖励_领取完成", 291 | "夏活_活动奖励" 292 | ] 293 | }, 294 | "夏活_活动奖励_点击领取": { 295 | "recognition": "OCR", 296 | "expected": [ 297 | "领取" 298 | ], 299 | "roi": [ 300 | 1090, 301 | 280, 302 | 115, 303 | 33 304 | ], 305 | "action": "Click", 306 | "next": [ 307 | "子任务_获得物品", 308 | "夏活_活动奖励_领取完成", 309 | "夏活_活动奖励_点击领取" 310 | ] 311 | }, 312 | "夏活_活动奖励_领取完成": { 313 | "recognition": "OCR", 314 | "expected": [ 315 | "获取" 316 | ], 317 | "roi": [ 318 | 1094, 319 | 282, 320 | 105, 321 | 32 322 | ] 323 | } 324 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/utils.json: -------------------------------------------------------------------------------- 1 | { 2 | "战斗_自动战斗": { 3 | "is_sub": true, 4 | "recognition": "TemplateMatch", 5 | "template": "Combat/Combat_Auto.png", 6 | "roi": [ 7 | 1069, 8 | 27, 9 | 105, 10 | 59 11 | ], 12 | "action": "Click" 13 | }, 14 | "战斗_启用二倍速": { 15 | "is_sub": true, 16 | "recognition": "TemplateMatch", 17 | "template": "Combat/Combat_Doublespeed.png", 18 | "roi": [ 19 | 973, 20 | 30, 21 | 95, 22 | 57 23 | ], 24 | "threshold": 0.9, 25 | "action": "Click", 26 | "target": [ 27 | 1012, 28 | 52, 29 | 10, 30 | 10 31 | ] 32 | }, 33 | "首页_出击": { 34 | "recognition": "OCR", 35 | "expected": [ 36 | "出击" 37 | ], 38 | "roi": [ 39 | 1134, 40 | 603, 41 | 97, 42 | 51 43 | ], 44 | "action": "Click", 45 | "next_doc": "Set in code." 46 | }, 47 | "子任务_进入首页": { 48 | "is_sub": true, 49 | "next": [ 50 | "首页标志2", 51 | "子任务_点击首页按钮", 52 | "子任务_点击返回", 53 | "子任务_获得物品", 54 | "子任务_点击取消", 55 | "子任务_点击确认", 56 | "子任务_关闭公告", 57 | "签到", 58 | "首页标志1", 59 | "开始游戏", 60 | "NERI" 61 | ] 62 | }, 63 | "子任务_点击确认": { 64 | "is_sub": true, 65 | "recognition": "OCR", 66 | "expected": [ 67 | "确认" 68 | ], 69 | "roi": [ 70 | 665, 71 | 364, 72 | 331, 73 | 152 74 | ], 75 | "action": "Click" 76 | }, 77 | "子任务_点击取消": { 78 | "is_sub": true, 79 | "recognition": "OCR", 80 | "expected": [ 81 | "取消" 82 | ], 83 | "roi": [ 84 | 330, 85 | 346, 86 | 313, 87 | 150 88 | ], 89 | "action": "Click" 90 | }, 91 | "子任务_获得物品": { 92 | "is_sub": true, 93 | "recognition": "OCR", 94 | "expected": [ 95 | "获得物品", 96 | "合成成功" 97 | ], 98 | "roi": [ 99 | 447, 100 | 117, 101 | 405, 102 | 117 103 | ], 104 | "action": "Click", 105 | "post_delay": 1000 106 | }, 107 | "子任务_点击返回": { 108 | "is_sub": true, 109 | "recognition": "TemplateMatch", 110 | "template": "StartUp/BackButton.png", 111 | "roi": [ 112 | 14, 113 | 10, 114 | 126, 115 | 72 116 | ], 117 | "action": "Click" 118 | }, 119 | "子任务_点击首页按钮": { 120 | "is_sub": true, 121 | "recognition": "TemplateMatch", 122 | "template": [ 123 | "StartUp/HomeButton.png", 124 | "StartUp/HomeButton1.png" 125 | ], 126 | "roi": [ 127 | 180, 128 | 10, 129 | 100, 130 | 70 131 | ], 132 | "action": "Click" 133 | }, 134 | "子任务_关闭公告": { 135 | "is_sub": true, 136 | "recognition": "TemplateMatch", 137 | "template": "StartUp/CloseAnnouncement.png", 138 | "roi": [ 139 | 900, 140 | 55, 141 | 362, 142 | 200 143 | ], 144 | "action": "Click" 145 | } 146 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/weekinstance/ActivityExploration_fifth_ep.json: -------------------------------------------------------------------------------- 1 | { 2 | "ActivityExploration_fifth_ep": { 3 | "recognition": "OCR", 4 | "expected": [ 5 | "活动探索" 6 | ], 7 | "roi": [ 8 | 540, 9 | 98, 10 | 215, 11 | 95 12 | ], 13 | "action": "Click", 14 | "post_delay": 2000, 15 | "next": [ 16 | "ActivityExploration_碎星虚影", 17 | "ActivityExploration_fifth_ep" 18 | ] 19 | }, 20 | "ActivityExploration_碎星虚影": { 21 | "recognition": "OCR", 22 | "expected": [ 23 | "碎星虚影" 24 | ], 25 | "roi": [ 26 | 450, 27 | 443, 28 | 302, 29 | 98 30 | ], 31 | "action": "Click", 32 | "post_delay": 3000, 33 | "next": [ 34 | "ActivityExploration_已获取资源", 35 | "ActivityExploration_戈里刻虚影", 36 | "ActivityExploration_碎星虚影" 37 | ] 38 | }, 39 | "ActivityExploration_戈里刻虚影": { 40 | "recognition": "OCR", 41 | "expected": [ 42 | "戈里刻虚影" 43 | ], 44 | "roi": [ 45 | 100, 46 | 333, 47 | 500, 48 | 154 49 | ], 50 | "action": "Click", 51 | "post_delay": 2000, 52 | "next": [ 53 | "ActivityExploration_第五关", 54 | "ActivityExploration_SwipeDown", 55 | "ActivityExploration_戈里刻虚影" 56 | ] 57 | }, 58 | "ActivityExploration_第五关": { 59 | "recognition": "OCR", 60 | "expected": [ 61 | "虚影宙斯" 62 | ], 63 | "roi": [ 64 | 682, 65 | 456, 66 | 180, 67 | 180 68 | ], 69 | "action": "Click", 70 | "next": [ 71 | "ActivityExploration_已获取资源", 72 | "ActivityExploration_第五关Start" 73 | ] 74 | }, 75 | "ActivityExploration_第五关Start": { 76 | "recognition": "OCR", 77 | "expected": [ 78 | "开始战斗" 79 | ], 80 | "roi": [ 81 | 1057, 82 | 615, 83 | 200, 84 | 89 85 | ], 86 | "action": "Click", 87 | "post_delay": 2000, 88 | "next": [ 89 | "ActivityExploration_Comfirm", 90 | "ActivityExploration_关闭第二队", 91 | "ActivityExploration_第五关Start_1", 92 | "ActivityExploration_第五关Start", 93 | "ActivityExploration_第五关Step_1" 94 | ] 95 | }, 96 | "ActivityExploration_第五关Start_1": { 97 | "recognition": "OCR", 98 | "expected": [ 99 | "开始行动" 100 | ], 101 | "roi": [ 102 | 1057, 103 | 615, 104 | 200, 105 | 89 106 | ], 107 | "action": "Click", 108 | "post_delay": 2000, 109 | "next": [ 110 | "ActivityExploration_第五关Step_1", 111 | "ActivityExploration_第五关Start_1" 112 | ] 113 | }, 114 | "ActivityExploration_第五关Step_1": { 115 | "recognition": "OCR", 116 | "expected": [ 117 | "行动" 118 | ], 119 | "roi": [ 120 | 1052, 121 | 11, 122 | 130, 123 | 64 124 | ], 125 | "pre_delay": 2000, 126 | "action": "Click", 127 | "target": [ 128 | 538, 129 | 564, 130 | 20, 131 | 20 132 | ], 133 | "post_delay": 3000, 134 | "next": [ 135 | "ActivityExploration_第五关Step_2" 136 | ] 137 | }, 138 | "ActivityExploration_第五关Step_2": { 139 | "recognition": "OCR", 140 | "expected": [ 141 | "行动" 142 | ], 143 | "roi": [ 144 | 1052, 145 | 11, 146 | 130, 147 | 64 148 | ], 149 | "pre_delay": 2000, 150 | "action": "Click", 151 | "target": [ 152 | 415, 153 | 384, 154 | 20, 155 | 20 156 | ], 157 | "post_delay": 3000, 158 | "next": [ 159 | "ActivityExploration_第五关Step_3" 160 | ] 161 | }, 162 | "ActivityExploration_第五关Step_3": { 163 | "recognition": "ColorMatch", 164 | "roi": [ 165 | 375, 166 | 415, 167 | 40, 168 | 40 169 | ], 170 | "method": 4, 171 | "lower": [ 172 | 80, 173 | 135, 174 | 55 175 | ], 176 | "upper": [ 177 | 120, 178 | 180, 179 | 120 180 | ], 181 | "count": 1, 182 | "pre_delay": 2000, 183 | "action": "Click", 184 | "target": [ 185 | 332, 186 | 260, 187 | 20, 188 | 20 189 | ], 190 | "post_delay": 3000, 191 | "next": [ 192 | "ActivityExploration_第五关Step_4" 193 | ] 194 | }, 195 | "ActivityExploration_第五关Step_4": { 196 | "recognition": "ColorMatch", 197 | "roi": [ 198 | 377, 199 | 419, 200 | 40, 201 | 40 202 | ], 203 | "method": 4, 204 | "lower": [ 205 | 80, 206 | 135, 207 | 55 208 | ], 209 | "upper": [ 210 | 120, 211 | 180, 212 | 120 213 | ], 214 | "count": 1, 215 | "pre_delay": 2000, 216 | "action": "Click", 217 | "target": [ 218 | 503, 219 | 295, 220 | 20, 221 | 20 222 | ], 223 | "post_delay": 3000, 224 | "next": [ 225 | "ActivityExploration_第五关Step_5" 226 | ] 227 | }, 228 | "ActivityExploration_第五关Step_5": { 229 | "recognition": "ColorMatch", 230 | "roi": [ 231 | 808, 232 | 291, 233 | 40, 234 | 40 235 | ], 236 | "method": 4, 237 | "lower": [ 238 | 80, 239 | 135, 240 | 55 241 | ], 242 | "upper": [ 243 | 120, 244 | 180, 245 | 120 246 | ], 247 | "count": 1, 248 | "pre_delay": 2000, 249 | "action": "Click", 250 | "target": [ 251 | 680, 252 | 224, 253 | 20, 254 | 20 255 | ], 256 | "timeout": 40000, 257 | "next": [ 258 | "ActivityExploration_第五关战斗中", 259 | "ActivityExploration_第五关Step_5" 260 | ] 261 | }, 262 | "ActivityExploration_第五关战斗中": { 263 | "recognition": "TemplateMatch", 264 | "template": "Combat/Combat_Combating.png", 265 | "roi": [ 266 | 1169, 267 | 27, 268 | 105, 269 | 59 270 | ], 271 | "next": [ 272 | "子任务_获得物品", 273 | "战斗_自动战斗", 274 | "战斗_启用二倍速", 275 | "ActivityExploration_第五关周报酬进度", 276 | "ActivityExploration_第五关战斗结束", 277 | "ActivityExploration_第五关战斗中" 278 | ] 279 | }, 280 | "ActivityExploration_第五关战斗结束": { 281 | "recognition": "OCR", 282 | "expected": [ 283 | "等级" 284 | ], 285 | "roi": [ 286 | 210, 287 | 410, 288 | 97, 289 | 152 290 | ], 291 | "action": "Click", 292 | "next": [ 293 | "子任务_获得物品", 294 | "ActivityExploration_第五关", 295 | "ActivityExploration_第五关战斗结束" 296 | ], 297 | "todo_doc": "这个结束可能还是在局内,不是打玩宙斯的情况,有可能还要做其他检测" 298 | }, 299 | "ActivityExploration_第五关周报酬进度": { 300 | "recognition": "OCR", 301 | "expected": [ 302 | "周报酬进度" 303 | ], 304 | "roi": [ 305 | 578, 306 | 269, 307 | 125, 308 | 28 309 | ], 310 | "action": "Click", 311 | "next": [ 312 | "ActivityExploration_第五关战斗结束", 313 | "ActivityExploration_第五关周报酬进度" 314 | ] 315 | } 316 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/weekinstance/ActivityExploration_first_ep.json: -------------------------------------------------------------------------------- 1 | { 2 | "ActivityExploration_first_ep": { 3 | "recognition": "OCR", 4 | "expected": [ 5 | "活动探索" 6 | ], 7 | "roi": [ 8 | 540, 9 | 98, 10 | 215, 11 | 95 12 | ], 13 | "action": "Click", 14 | "post_delay": 2000, 15 | "next": [ 16 | "ActivityExploration_碎星虚影_第一关", 17 | "ActivityExploration_first_ep" 18 | ] 19 | }, 20 | "ActivityExploration_碎星虚影_第一关": { 21 | "recognition": "OCR", 22 | "expected": [ 23 | "碎星虚影" 24 | ], 25 | "roi": [ 26 | 450, 27 | 443, 28 | 302, 29 | 98 30 | ], 31 | "action": "Click", 32 | "post_delay": 3000, 33 | "next": [ 34 | "ActivityExploration_已获取资源", 35 | "ActivityExploration_戈里刻虚影_第一关", 36 | "ActivityExploration_碎星虚影_第一关" 37 | ] 38 | }, 39 | "ActivityExploration_戈里刻虚影_第一关": { 40 | "recognition": "OCR", 41 | "expected": [ 42 | "戈里刻虚影" 43 | ], 44 | "roi": [ 45 | 100, 46 | 333, 47 | 500, 48 | 154 49 | ], 50 | "action": "Click", 51 | "post_delay": 2000, 52 | "next": [ 53 | "ActivityExploration_第一关_step1", 54 | "ActivityExploration_SwipeUp", 55 | "ActivityExploration_戈里刻虚影_第一关" 56 | ] 57 | }, 58 | "ActivityExploration_第一关_step1": { 59 | "recognition": "OCR", 60 | "expected": [ 61 | "虚影赫尔墨斯" 62 | ], 63 | "roi": [ 64 | 667, 65 | 337, 66 | 143, 67 | 29 68 | ], 69 | "action": "Click", 70 | "post_delay": 2000, 71 | "next": [ 72 | "ActivityExploration_已获取资源", 73 | "ActivityExploration_第一关_step2", 74 | "ActivityExploration_第一关_step1" 75 | ] 76 | }, 77 | "ActivityExploration_第一关_step2": { 78 | "recognition": "OCR", 79 | "expected": [ 80 | "虚影阿瑞斯" 81 | ], 82 | "roi": [ 83 | 653, 84 | 204, 85 | 180, 86 | 55 87 | ], 88 | "action": "Click", 89 | "post_delay": 2000, 90 | "next": [ 91 | "ActivityExploration_已获取资源", 92 | "ActivityExploration_第一关Start", 93 | "ActivityExploration_第一关_step2" 94 | ] 95 | }, 96 | "ActivityExploration_第一关Start": { 97 | "recognition": "OCR", 98 | "expected": [ 99 | "开始战斗" 100 | ], 101 | "roi": [ 102 | 1057, 103 | 615, 104 | 200, 105 | 89 106 | ], 107 | "action": "Click", 108 | "post_delay": 2000, 109 | "next": [ 110 | "ActivityExploration_Comfirm", 111 | "ActivityExploration_关闭第二队", 112 | "ActivityExploration_Start_1", 113 | "ActivityExploration_第一关Start", 114 | "ActivityExploration_Step_1" 115 | ] 116 | }, 117 | "ActivityExploration_Start_1": { 118 | "recognition": "OCR", 119 | "expected": [ 120 | "开始行动" 121 | ], 122 | "roi": [ 123 | 1057, 124 | 615, 125 | 200, 126 | 89 127 | ], 128 | "action": "Click", 129 | "post_delay": 2000, 130 | "next": [ 131 | "ActivityExploration_Step_1", 132 | "ActivityExploration_Start_1" 133 | ] 134 | }, 135 | "ActivityExploration_Step_1": { 136 | "recognition": "OCR", 137 | "expected": [ 138 | "行动" 139 | ], 140 | "roi": [ 141 | 1052, 142 | 11, 143 | 130, 144 | 64 145 | ], 146 | "pre_delay": 2000, 147 | "action": "Click", 148 | "target": [ 149 | 705, 150 | 284, 151 | 20, 152 | 20 153 | ], 154 | "post_delay": 3000, 155 | "next": [ 156 | "ActivityExploration_Step_2" 157 | ] 158 | }, 159 | "ActivityExploration_Step_2": { 160 | "recognition": "OCR", 161 | "expected": [ 162 | "行动" 163 | ], 164 | "roi": [ 165 | 1052, 166 | 11, 167 | 130, 168 | 64 169 | ], 170 | "pre_delay": 2000, 171 | "action": "Click", 172 | "target": [ 173 | 588, 174 | 221, 175 | 20, 176 | 20 177 | ], 178 | "post_delay": 3000, 179 | "next": [ 180 | "ActivityExploration_第一关战斗中", 181 | "ActivityExploration_Step_2" 182 | ] 183 | }, 184 | "ActivityExploration_Step_3": { 185 | "recognition": "OCR", 186 | "expected": [ 187 | "行动" 188 | ], 189 | "roi": [ 190 | 1052, 191 | 11, 192 | 130, 193 | 64 194 | ], 195 | "pre_delay": 2000, 196 | "action": "Click", 197 | "target": [ 198 | 777, 199 | 331, 200 | 20, 201 | 20 202 | ], 203 | "post_delay": 3000, 204 | "next": [ 205 | "ActivityExploration_Combating2", 206 | "ActivityExploration_Step_3" 207 | ] 208 | }, 209 | "ActivityExploration_Step_4": { 210 | "recognition": "OCR", 211 | "expected": [ 212 | "行动" 213 | ], 214 | "roi": [ 215 | 1052, 216 | 11, 217 | 130, 218 | 64 219 | ], 220 | "pre_delay": 2000, 221 | "action": "Click", 222 | "target": [ 223 | 592, 224 | 186, 225 | 20, 226 | 20 227 | ], 228 | "post_delay": 3000, 229 | "next": [ 230 | "ActivityExploration_Step_5" 231 | ] 232 | }, 233 | "ActivityExploration_Step_5": { 234 | "recognition": "OCR", 235 | "expected": [ 236 | "行动" 237 | ], 238 | "roi": [ 239 | 1052, 240 | 11, 241 | 130, 242 | 64 243 | ], 244 | "pre_delay": 2000, 245 | "action": "Click", 246 | "target": [ 247 | 592, 248 | 186, 249 | 20, 250 | 20 251 | ], 252 | "timeout": 40000, 253 | "next": [ 254 | "ActivityExploration_第一关战斗中", 255 | "ActivityExploration_第一关boss跳过", 256 | "ActivityExploration_Step_5" 257 | ] 258 | }, 259 | "ActivityExploration_第一关战斗中": { 260 | "recognition": "TemplateMatch", 261 | "template": "Combat/Combat_Combating.png", 262 | "roi": [ 263 | 1169, 264 | 27, 265 | 105, 266 | 59 267 | ], 268 | "next": [ 269 | "战斗_自动战斗", 270 | "战斗_启用二倍速", 271 | "ActivityExploration_第一关战斗结束", 272 | "ActivityExploration_第一关周报酬进度", 273 | "ActivityExploration_第一关战斗中" 274 | ] 275 | }, 276 | "ActivityExploration_第一关战斗结束": { 277 | "recognition": "OCR", 278 | "expected": [ 279 | "等级" 280 | ], 281 | "roi": [ 282 | 210, 283 | 410, 284 | 97, 285 | 152 286 | ], 287 | "action": "Click", 288 | "next": [ 289 | "子任务_获得物品", 290 | "ActivityExploration_第一关_step1", 291 | "ActivityExploration_Step_3", 292 | "ActivityExploration_第一关战斗结束" 293 | ] 294 | }, 295 | "ActivityExploration_Combating2": { 296 | "recognition": "TemplateMatch", 297 | "template": "Combat/Combat_Combating.png", 298 | "roi": [ 299 | 1169, 300 | 27, 301 | 105, 302 | 59 303 | ], 304 | "next": [ 305 | "战斗_自动战斗", 306 | "战斗_启用二倍速", 307 | "ActivityExploration_CombatEnd2", 308 | "ActivityExploration_Combating2" 309 | ] 310 | }, 311 | "ActivityExploration_CombatEnd2": { 312 | "recognition": "OCR", 313 | "expected": [ 314 | "等级" 315 | ], 316 | "roi": [ 317 | 210, 318 | 410, 319 | 97, 320 | 152 321 | ], 322 | "action": "Click", 323 | "next": [ 324 | "子任务_获得物品", 325 | "ActivityExploration_Step_4", 326 | "ActivityExploration_CombatEnd2" 327 | ] 328 | }, 329 | "ActivityExploration_第一关周报酬进度": { 330 | "recognition": "OCR", 331 | "expected": [ 332 | "周报酬进度" 333 | ], 334 | "roi": [ 335 | 578, 336 | 269, 337 | 125, 338 | 28 339 | ], 340 | "action": "Click", 341 | "next": [ 342 | "ActivityExploration_第一关战斗结束", 343 | "ActivityExploration_第一关周报酬进度" 344 | ] 345 | }, 346 | "ActivityExploration_第一关boss跳过": { 347 | "recognition": "OCR", 348 | "expected": [ 349 | "跳过" 350 | ], 351 | "roi": [ 352 | 1132, 353 | 39, 354 | 45, 355 | 25 356 | ], 357 | "action": "Click", 358 | "next": [ 359 | "ActivityExploration_第一关战斗中", 360 | "ActivityExploration_Step_5", 361 | "ActivityExploration_第一关boss跳过" 362 | ] 363 | } 364 | } -------------------------------------------------------------------------------- /assets/resource/base/pipeline/weekinstance/weekinstance.json: -------------------------------------------------------------------------------- 1 | { 2 | "WeekInstance": { 3 | "next": [ 4 | "首页_出击", 5 | "子任务_进入首页" 6 | ] 7 | }, 8 | "ActivityExploration_已获取资源": { 9 | "recognition": "OCR", 10 | "expected": [ 11 | "600/600", 12 | "6007600", 13 | "6001600", 14 | "500/500", 15 | "5007500", 16 | "5001500" 17 | ], 18 | "roi": [ 19 | 86, 20 | 623, 21 | 152, 22 | 40 23 | ], 24 | "action": "Click", 25 | "target": [ 26 | 208, 27 | 37, 28 | 20, 29 | 20 30 | ] 31 | }, 32 | "ActivityExploration_Comfirm": { 33 | "is_sub": true, 34 | "recognition": "OCR", 35 | "expected": [ 36 | "开启" 37 | ], 38 | "roi": [ 39 | 722, 40 | 405, 41 | 190, 42 | 94 43 | ], 44 | "action": "Click", 45 | "post_delay": 2000 46 | }, 47 | "ActivityExploration_关闭第二队": { 48 | "is_sub": true, 49 | "recognition": "ColorMatch", 50 | "roi": [ 51 | 1153, 52 | 380, 53 | 21, 54 | 14 55 | ], 56 | "method": 4, 57 | "lower": [ 58 | 220, 59 | 180, 60 | 60 61 | ], 62 | "upper": [ 63 | 255, 64 | 220, 65 | 100 66 | ], 67 | "count": 1, 68 | "action": "Click" 69 | }, 70 | "ActivityExploration_SwipeUp": { 71 | "is_sub": true, 72 | "action": "Swipe", 73 | "begin": [ 74 | 617, 75 | 196, 76 | 40, 77 | 40 78 | ], 79 | "end": [ 80 | 617, 81 | 385, 82 | 40, 83 | 40 84 | ] 85 | }, 86 | "ActivityExploration_SwipeDown": { 87 | "is_sub": true, 88 | "action": "Swipe", 89 | "begin": [ 90 | 617, 91 | 385, 92 | 40, 93 | 40 94 | ], 95 | "end": [ 96 | 617, 97 | 196, 98 | 40, 99 | 40 100 | ] 101 | } 102 | } -------------------------------------------------------------------------------- /assets/resource/bilibili/pipeline/shutdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "关闭游戏": { 3 | "action": "StopApp", 4 | "package": "com.megagame.crosscore.bilibili" 5 | } 6 | } -------------------------------------------------------------------------------- /assets/resource/bilibili/pipeline/startup.json: -------------------------------------------------------------------------------- 1 | { 2 | "启动游戏": { 3 | "is_sub": true, 4 | "action": "StartApp", 5 | "package": "com.megagame.crosscore.bilibili/com.megagame.crosscore.bilibili.GSCPlayerActivity" 6 | } 7 | } -------------------------------------------------------------------------------- /check_resource.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from typing import List 4 | from pathlib import Path 5 | 6 | from maa.resource import Resource 7 | from maa.tasker import Tasker, LoggingLevelEnum 8 | 9 | 10 | def check(dirs: List[Path]) -> bool: 11 | resource = Resource() 12 | 13 | print(f"Checking {len(dirs)} directories...") 14 | 15 | for dir in dirs: 16 | print(f"Checking {dir}...") 17 | status = resource.post_bundle(dir).wait().status 18 | if not status.succeeded: 19 | print(f"Failed to check {dir}.") 20 | return False 21 | 22 | print("All directories checked.") 23 | return True 24 | 25 | 26 | def main(): 27 | if len(sys.argv) < 2: 28 | print("Usage: python configure.py ") 29 | sys.exit(1) 30 | 31 | Tasker.set_stdout_level(LoggingLevelEnum.All) 32 | 33 | dirs = [Path(arg) for arg in sys.argv[1:]] 34 | if not check(dirs): 35 | sys.exit(1) 36 | 37 | 38 | if __name__ == "__main__": 39 | main() 40 | -------------------------------------------------------------------------------- /configure.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import shutil 4 | 5 | assets_dir = Path(__file__).parent / "assets" 6 | 7 | 8 | def configure_ocr_model(): 9 | if not (assets_dir / "MaaCommonAssets" / "OCR").exists(): 10 | print("Please clone this repository completely, don’t miss \"--recursive\", and don’t download the zip package!") 11 | print("请完整克隆本仓库,不要漏掉 \"--recursive\",也不要下载 zip 包!") 12 | exit(1) 13 | 14 | shutil.copytree( 15 | assets_dir / "MaaCommonAssets" / "OCR" / "ppocr_v4" / "zh_cn", 16 | assets_dir / "resource" / "base" / "model" / "ocr", 17 | dirs_exist_ok=True, 18 | ) 19 | 20 | 21 | if __name__ == "__main__": 22 | configure_ocr_model() 23 | 24 | print("OCR model configured.") -------------------------------------------------------------------------------- /deps/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /install.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import shutil 4 | import sys 5 | import json 6 | 7 | from configure import configure_ocr_model 8 | 9 | 10 | working_dir = Path(__file__).parent 11 | install_path = working_dir / Path("install") 12 | version = len(sys.argv) > 1 and sys.argv[1] or "v0.0.1" 13 | 14 | 15 | def install_deps(): 16 | if not (working_dir / "deps" / "bin").exists(): 17 | print("Please download the MaaFramework to \"deps\" first.") 18 | print("请先下载 MaaFramework 到 \"deps\"。") 19 | sys.exit(1) 20 | 21 | shutil.copytree( 22 | working_dir / "deps" / "bin", 23 | install_path, 24 | ignore=shutil.ignore_patterns( 25 | "*MaaDbgControlUnit*", 26 | "*MaaThriftControlUnit*", 27 | "*MaaRpc*", 28 | "*MaaHttp*", 29 | ), 30 | dirs_exist_ok=True, 31 | ) 32 | shutil.copytree( 33 | working_dir / "deps" / "share" / "MaaAgentBinary", 34 | install_path / "MaaAgentBinary", 35 | dirs_exist_ok=True, 36 | ) 37 | 38 | 39 | def install_resource(): 40 | 41 | configure_ocr_model() 42 | 43 | shutil.copytree( 44 | working_dir / "assets" / "resource", 45 | install_path / "resource", 46 | dirs_exist_ok=True, 47 | ) 48 | shutil.copy2( 49 | working_dir / "assets" / "interface.json", 50 | install_path, 51 | ) 52 | 53 | with open(install_path / "interface.json", "r", encoding="utf-8") as f: 54 | interface = json.load(f) 55 | 56 | interface["version"] = version 57 | 58 | with open(install_path / "interface.json", "w", encoding="utf-8") as f: 59 | json.dump(interface, f, ensure_ascii=False, indent=4) 60 | 61 | 62 | def install_chores(): 63 | shutil.copy2( 64 | working_dir / "README.md", 65 | install_path, 66 | ) 67 | shutil.copy2( 68 | working_dir / "LICENSE", 69 | install_path, 70 | ) 71 | 72 | 73 | if __name__ == "__main__": 74 | install_deps() 75 | install_resource() 76 | install_chores() 77 | 78 | print(f"Install to {install_path} successfully.") -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mcca", 3 | "version": "1.0.0", 4 | "description": "基于全新架构的 交错战线 CrossCore 小助手。图像技术 + 模拟控制,解放双手! \r 由 [MaaFramework](https://github.com/MaaXYZ/MaaFramework) 强力驱动!", 5 | "main": "index.js", 6 | "scripts": { 7 | "start:mad": "cd ./lib/MaaDebugger && python -m MaaDebugger --port 8080", 8 | "start:ic": "cd ./deps/tools/ImageCropper && python main.py", 9 | "build": "python ./install.py" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/Htgs/MCCA.git" 14 | }, 15 | "author": "", 16 | "license": "ISC", 17 | "bugs": { 18 | "url": "https://github.com/Htgs/MCCA/issues" 19 | }, 20 | "homepage": "https://github.com/Htgs/MCCA#readme" 21 | } --------------------------------------------------------------------------------