Compare commits

...

230 Commits

Author SHA1 Message Date
github-actions[bot]
54e9bc97b9 chore: Auto Update Game Resources - 2026-05-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25456822699

[skip changelog]
2026-05-06 19:36:55 +00:00
uye
112b242020 feat: 优先使用更新包中的 updater 2026-05-06 21:51:15 +08:00
uye
792214af34 feat: 添加因为缺少 MAA.Updater.exe 导致更新失败的弹窗提示 2026-05-06 21:33:58 +08:00
github-actions[bot]
5295f63a27 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25402988047
[skip changelog]
2026-05-05 21:23:27 +00:00
status102
728f9ca077 fix: 自动战斗进入等待过长
#16391
2026-05-06 03:16:23 +08:00
status102
22f3175b42 fix: OF-1战斗后等待过长导致部分后续流程失败
#16444
2026-05-06 02:15:22 +08:00
status102
4bc96d57da perf: 自动战斗结束增加LoadingIcon等待项 2026-05-06 02:15:22 +08:00
uye
1d60c2363b chore: 调整 global.json 文件创建时机
[skip changelog]
2026-05-06 00:37:18 +08:00
uye
be568fbc1e perf: 优化进度显示
[skip changelog]
2026-05-06 00:28:24 +08:00
uye
505c8e9d10 fix: 修复部分成就判断条件错误 2026-05-06 00:04:17 +08:00
uye
26972c2769 chore: local-install 使用 ci 同款处理方法 2026-05-05 23:55:24 +08:00
Manicsteiner
3c88f16dde docs: update JP preview image (#16485) 2026-05-05 23:46:22 +08:00
uye
70235d7fd5 feat: fake update
[skip changelog]
2026-05-05 23:34:59 +08:00
github-actions[bot]
b38e1b46ba chore: Auto Templates Optimization
Triggered by 4083e21521

[skip changelog]
2026-05-05 12:58:42 +00:00
uye
4083e21521 docs: 更新 README 预览图片 2026-05-05 20:57:45 +08:00
uye
1d909ea38a feat: 更新 153-4 基建作业 2026-05-05 18:37:35 +08:00
Status102
e5365c1447 Release v6.9.2 (#16473)
## Summary by Sourcery

为 v6.9.2 版本发布做准备,更新文档、CI 中的 .NET SDK 配置,并修复运行时任务行为。

增强功能:
- 调整启动和阶段导航任务流程,包括处理特定的“annihilation”(歼灭/剿灭)场景,并改进账号切换日志记录。
- 整理 AutoRecruitTask 中 `recruit_result` 枚举的格式,使其更加一致。

CI:
- 配置 CI 工作流使用生成的 `global.json` 来锁定 .NET SDK 版本,而不是在配置中硬编码版本。

文档:
- 在中文手册中新增 FAQ 条目,描述 DLL 注入问题及其缓解步骤。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Prepare v6.9.2 release by updating documentation, CI .NET SDK
configuration, and fixing runtime task behaviors.

Enhancements:
- Adjust startup and stage navigation task flows, including handling
specific annihilation scenarios and improving account switch logging.
- Tidy AutoRecruitTask recruit_result enumeration formatting for
consistency.

CI:
- Configure CI workflows to use a generated global.json to pin the .NET
SDK version instead of hardcoding it.

Documentation:
- Add FAQ entry describing DLL injection issues and mitigation steps in
the Chinese manual.

</details>
2026-05-05 14:47:10 +08:00
github-actions[bot]
4e35863be0 docs: Auto Update Changelogs of v6.9.2 (#16474)
* docs: Auto Generate Changelog of Release v6.9.2

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2026-05-05 14:46:59 +08:00
ocsin1
9d5ab6d7c5 docs: 添加 DLL 注入问题解决方案并优化 FAQ 描述 (#16404)
* docs: 添加 DLL 注入问题解决方案并优化 FAQ 描述

* docs: 大小写和 pangu

修正了 MAA 启动时 DLL 注入问题的描述,更新了链接格式。

^以上 Commit Message 是 Copilot 帮我写的

---------

Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
2026-05-05 09:52:39 +08:00
github-actions[bot]
469c1e670c chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25344285069
[skip changelog]
2026-05-04 21:25:03 +00:00
status102
c4c15ef103 rft: 剿灭入口检测支持代理卡耗尽情况 2026-05-05 05:01:59 +08:00
status102
3c20e21182 ci: 限定.Net SDK为10.0.203 2026-05-05 04:03:08 +08:00
status102
9a2d43ca7e fix: 开始唤醒流程 2026-05-05 03:27:45 +08:00
uye
f831d19c57 Release v6.9.1 (#16433)
## Summary by Sourcery

强化安装/更新安全检查,改进更新包处理和确认流程,优化自动公招、药剂使用、肉鸽以及副驾驶行为,并更新构建工具链与集成文档。

New Features:
- 为完整更新包新增手动确认流程,包括显示计划执行路径,并可复用用于本地丢弃包的检查结果。
- 为需要基于包名执行 ADB 命令的连接引入按实例配置的客户端类型选项。

Bug Fixes:
- 防止从不受支持的安装位置运行或更新,例如磁盘根目录、临时文件夹、Windows 和常见程序目录。
- 修复自动公招循环逻辑,不再统计或重试被跳过的槽位,并区分已确认、已跳过和失败的招募尝试。
- 修正药剂计数日志记录、理智 OCR 处理,以及对不过期药剂的优先级逻辑。
- 修复肉鸽支援干员计时器解析和投资上限比较逻辑。
- 确保精英等级分析在检测失败时回退到精英 0,并在视野矩形校正中防范空 ROI。
- 调整启动任务顺序,使账号切换只在启动成功后执行。
- 在使用附加的 PC 客户端窗口时跳过外部报告上传,并通过连接配置对某些依赖客户端类型的命令加以限制。
- 修复 Foldartal 获取中对 foldartal 类型过滤条件的问题,以及像素分析器灰度上限设置器。

Enhancements:
- 允许通过可复用的检查结果对本地完整更新包进行检查和注册,并在完整更新过程中保留额外的资源目录。
- 改进 WPF GUI 中与战斗相关的日志与命名一致性(理智/战斗报告、即将过期药剂日志、客户端类型处理)。
- 提高副驾驶与多副驾驶导航和停止任务的稳定性,加入新的“等待动作结束”行为,并增加重试次数。

Build:
- 增强本地安装脚本,支持并行构建、.NET 发布选项、通过 nbeauty2 进行资源补丁处理以及更好的错误处理。

CI:
- 更新资源更新工作流,以使用最新版本的 wait-for-jobs action。

Documentation:
- 在所有支持的语言的集成协议文档中记录新的 ClientType 实例选项。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Harden installation/update safety checks, improve update package
handling and confirmations, refine auto-recruit, medicine usage,
roguelike, and copilot behaviors, and update build tooling and
integration docs.

New Features:
- Add manual confirmation flow for full update packages, including
planned path display and reuse for dropped local packages.
- Introduce per-instance client type option for connections that need
package-name-aware ADB commands.

Bug Fixes:
- Prevent running or updating from unsupported install locations such as
drive roots, temp folders, Windows and common program directories.
- Fix auto-recruit loop to not count or retry skipped slots and
distinguish confirmed, skipped, and failed recruit attempts.
- Correct medicine counter logging, sanity OCR handling, and
non-expiring medicine prioritization logic.
- Fix roguelike support recruit timer parsing and investment limit
comparison logic.
- Ensure elite level analysis falls back to elite 0 when detection
fails, and guard against empty ROIs in vision rect correction.
- Adjust startup task sequencing so account switching runs only after
startup succeeds.
- Skip external report uploads when using attached PC client windows,
and gate certain client-type-dependent commands by connection config.
- Fix Foldartal gain foldartal-type filtering condition and pixel
analyzer gray upper bound setter.

Enhancements:
- Allow local full update packages to be inspected and registered via a
reusable inspection result, and preserve additional asset directories
during full updates.
- Improve fight-related logging and naming consistency in the WPF GUI
(sanity/fight reports, expiring medicine logs, client type handling).
- Increase robustness of copilot and multi-copilot navigation and stop
tasks with new wait-until-end-of-action behavior and higher retry
counts.

Build:
- Enhance local-install script with parallel builds, .NET publish
options, resource patching via nbeauty2, and better error handling.

CI:
- Update resource update workflow to use the latest version of the
wait-for-jobs action.

Documentation:
- Document the new ClientType instance option in integration protocol
docs for all supported languages.

</details>

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

强化安装/更新安全检查,改进更新包处理和确认流程,优化自动公招、药剂使用、肉鸽以及副驾驶行为,并更新构建工具链与集成文档。

New Features:
- 为完整更新包新增手动确认流程,包括显示计划执行路径,并可复用用于本地丢弃包的检查结果。
- 为需要基于包名执行 ADB 命令的连接引入按实例配置的客户端类型选项。

Bug Fixes:
- 防止从不受支持的安装位置运行或更新,例如磁盘根目录、临时文件夹、Windows 和常见程序目录。
- 修复自动公招循环逻辑,不再统计或重试被跳过的槽位,并区分已确认、已跳过和失败的招募尝试。
- 修正药剂计数日志记录、理智 OCR 处理,以及对不过期药剂的优先级逻辑。
- 修复肉鸽支援干员计时器解析和投资上限比较逻辑。
- 确保精英等级分析在检测失败时回退到精英 0,并在视野矩形校正中防范空 ROI。
- 调整启动任务顺序,使账号切换只在启动成功后执行。
- 在使用附加的 PC 客户端窗口时跳过外部报告上传,并通过连接配置对某些依赖客户端类型的命令加以限制。
- 修复 Foldartal 获取中对 foldartal 类型过滤条件的问题,以及像素分析器灰度上限设置器。

Enhancements:
- 允许通过可复用的检查结果对本地完整更新包进行检查和注册,并在完整更新过程中保留额外的资源目录。
- 改进 WPF GUI 中与战斗相关的日志与命名一致性(理智/战斗报告、即将过期药剂日志、客户端类型处理)。
- 提高副驾驶与多副驾驶导航和停止任务的稳定性,加入新的“等待动作结束”行为,并增加重试次数。

Build:
- 增强本地安装脚本,支持并行构建、.NET 发布选项、通过 nbeauty2 进行资源补丁处理以及更好的错误处理。

CI:
- 更新资源更新工作流,以使用最新版本的 wait-for-jobs action。

Documentation:
- 在所有支持的语言的集成协议文档中记录新的 ClientType 实例选项。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Harden installation/update safety checks, improve update package
handling and confirmations, refine auto-recruit, medicine usage,
roguelike, and copilot behaviors, and update build tooling and
integration docs.

New Features:
- Add manual confirmation flow for full update packages, including
planned path display and reuse for dropped local packages.
- Introduce per-instance client type option for connections that need
package-name-aware ADB commands.

Bug Fixes:
- Prevent running or updating from unsupported install locations such as
drive roots, temp folders, Windows and common program directories.
- Fix auto-recruit loop to not count or retry skipped slots and
distinguish confirmed, skipped, and failed recruit attempts.
- Correct medicine counter logging, sanity OCR handling, and
non-expiring medicine prioritization logic.
- Fix roguelike support recruit timer parsing and investment limit
comparison logic.
- Ensure elite level analysis falls back to elite 0 when detection
fails, and guard against empty ROIs in vision rect correction.
- Adjust startup task sequencing so account switching runs only after
startup succeeds.
- Skip external report uploads when using attached PC client windows,
and gate certain client-type-dependent commands by connection config.
- Fix Foldartal gain foldartal-type filtering condition and pixel
analyzer gray upper bound setter.

Enhancements:
- Allow local full update packages to be inspected and registered via a
reusable inspection result, and preserve additional asset directories
during full updates.
- Improve fight-related logging and naming consistency in the WPF GUI
(sanity/fight reports, expiring medicine logs, client type handling).
- Increase robustness of copilot and multi-copilot navigation and stop
tasks with new wait-until-end-of-action behavior and higher retry
counts.

Build:
- Enhance local-install script with parallel builds, .NET publish
options, resource patching via nbeauty2, and better error handling.

CI:
- Update resource update workflow to use the latest version of the
wait-for-jobs action.

Documentation:
- Document the new ClientType instance option in integration protocol
docs for all supported languages.

</details>

</details>
2026-05-05 02:16:43 +08:00
github-actions[bot]
d345466992 docs: Auto Update Changelogs of v6.9.1 (#16434)
* docs: Auto Generate Changelog of Release v6.9.1

* docs: Update CHANGELOG for versions 6.9.0 and 6.9.1

Add detailed highlights and improvements for version 6.9.1 and 6.9.0, including new features, fixes, and documentation updates.

* docs: Remove version 6.9.0 entry from CHANGELOG

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-05-05 02:15:26 +08:00
status102
4dc9a4ed27 chore: rename 2026-05-05 01:52:13 +08:00
Status102
736bab5427 rft: 重构战斗失败识别, 顺带支持沙盘战斗结束 (#16449) 2026-05-05 01:51:02 +08:00
status102
a8ceb64f16 fix: 理智药识别支持3位数库存 2026-05-05 01:49:52 +08:00
github-actions[bot]
3d4a3eb578 chore: Auto Update Game Resources - 2026-05-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25333746690

[skip changelog]
2026-05-04 17:40:48 +00:00
status102
38494fa461 perf: 给WSA也加个 2026-05-05 01:31:16 +08:00
status102
e3570d17e8 fix(wpf): 仅在应用宝连接时额外指定InstanceOption级的ClientType 2026-05-05 01:27:40 +08:00
uye
4c9c1d12ce feat: 增加使用完整包更新时的强制提示,安装在根目录时禁止启动与更新 (#16435)
* feat: 增加使用完整包更新时的强制提示

* feat: 安装在根目录时阻止启动与更新

* feat: 更新检测排除 achievement 与 background

* perf: 优化日志记录,优化根目录判断逻辑

* feat: 禁止在部分特殊目录的根目录启动

* chore: warning

* perf: 优化本地安装脚本

* perf: 优化 temp 文件夹检测
2026-05-05 01:03:33 +08:00
Roland125
a0588e7da6 fix: 绿票商店稳定性提升 (#16369)
fix: 添加1层ocr识别失败时备用逻辑
fix:2层只购买公招券和单抽券
2026-05-05 01:01:56 +08:00
uye
0404959bd1 fix: 调整信用商店识别区域,修复 4 位数信用识别问题
close #16395

Co-authored-by: ZiyinLin <xuanbing1464129430@gmail.com>
2026-05-05 00:55:52 +08:00
status102
a387d5f8a4 perf: 自动编队Elite 图标匹配失败时认为elite = 0 2026-05-04 23:25:09 +08:00
uye
d913335886 fix: 编队时无精英化的干员练度会被当成 <-1, -1>
fix: #16464
2026-05-04 23:07:38 +08:00
Roland125
08f71fcfc0 fix: 修改recruit_one的返回值,适配更精细的招募计数(#16355) (#16371) 2026-05-04 22:53:04 +08:00
uye
cac4c27bbc feat: pc 跳过数据上报 2026-05-04 20:40:02 +08:00
status102
3ef75d587c chore: remove debug code 2026-05-04 20:19:20 +08:00
Roland125
4a14245283 fix: 修复剿灭结算时,识别不到合成玉基线 (#16460)
<img width="508" height="175" alt="FABI(C}_VIB}7@N5KI51H R"
src="https://github.com/user-attachments/assets/1bb987c5-d0cc-41cd-92da-d31045490028"
/>
这是报告者的掉落图

<img width="630" height="166" alt="628X1BM7GI6$8 4(T%2}Q$0"
src="https://github.com/user-attachments/assets/8ecc8d6d-f44b-4540-93bd-8b73ef18f854"
/>
这是我本机的掉落图

明显看得出我本机的图,报酬二字上方那根线亮一些。

由于在我本机无法复现识别BUG,所以我只能用理论计算值来推断一个阈值。

根据反馈者的图提取出来的RGB值,算法计算出来的灰度是38.7(左)/44(右)。

均低于45的阈值,所以不可能有100像素长的线,于是合成玉基线被过滤掉了。

识别不到基线就不会识别对应的掉落物,就会触发无合成玉掉落导致的退出。

## Summary by Sourcery

将针对湮灭阶段的可选掉落识别处理置于仅调试用的宏之后进行控制,并在启用时将其接入自定义任务。

Enhancements:
- 当启用调试宏时,允许 `StageDropsTaskPlugin` 响应通用的动作结束任务。
- 在 `CustomTask` 中启用可选的 `StageDropsTaskPlugin` 注册,用于调试掉落识别问题。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Gate optional drop-recognition handling for annihilation stages behind a
debug-only macro and wire it into custom tasks when enabled.

Enhancements:
- Allow StageDropsTaskPlugin to respond to generic end-of-action tasks
when a debug macro is enabled.
- Enable optional registration of StageDropsTaskPlugin in CustomTask for
debugging drop recognition issues.

</details>
2026-05-04 19:35:35 +08:00
status102
b3122fbd94 fix: 肉鸽投资存款检测校验数据 2026-05-04 19:15:20 +08:00
uye
5445962a7b docs: 补全连接阶段的 ClientType 参数说明 2026-05-04 19:13:52 +08:00
Roland125
20d257f6f4 fix: 更新剿灭入口的图片资源 (#16458)
* fix:更新剿灭入口的图片资源

* fix: 重新截

---------

Co-authored-by: Saratoga-Official <1819530756@qq.com>
2026-05-04 13:43:38 +08:00
Saratoga-Official
7cc6cbf5ce fix: 凯尔希识别
fix #16455
2026-05-04 10:05:17 +08:00
github-actions[bot]
8f425bebf1 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25290991448
[skip changelog]
2026-05-03 21:16:07 +00:00
uye
aaa0818c45 fix: 修复设置指引-连接设置-每次重新检测的提示块隐藏错误 2026-05-04 03:26:50 +08:00
status102
2cb0be8630 fix: typo 2026-05-04 01:52:44 +08:00
status102
4ff7c5f01d fix: 自动战斗多作业模式导航retry_time 2026-05-04 00:59:13 +08:00
status102
0a5b8e66a7 perf: 理智药到期时间OCR高度增加 2026-05-04 00:58:35 +08:00
fireflysentinel
e644e10d80 fix: PixelAnalyzer::set_gray_ub 复制粘贴笔误写到了 m_ub (cv::Scalar) 而非 m_gray_ub
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: fireflysentinel <phoenix1203@uchicago.edu>
2026-05-03 12:45:53 +08:00
fireflysentinel
c75eeb93bc fix: RoguelikeRecruitSupportAnalyzer::analyze HH:MM:SS substr 偏移导致 hour 永为 0、sec 严重低估
```cpp
boost::regex_search(result.text, match_results, boost::regex("[0-9]{2}:[0-9]{2}:[0-9]{2}"))
const auto& match_str = match_results[0].str();              // 8 字节 "HH:MM:SS"
const auto& hour = std::atoi(match_str.substr(2).c_str());   // ":34:56" → 0
const auto& min  = std::atoi(match_str.substr(3, 2).c_str());// "34" ✓(碰巧)
const auto& sec  = std::atoi(match_str.substr(7, 2).c_str());// "6"   → 个位
```

`"12:34:56"` 字节索引 `0=1, 1=2, 2=:, 3=3, 4=4, 5=:, 6=5, 7=6`:
- `substr(2)` 从冒号开始,atoi 立即停 → `hour = 0`
- `substr(3, 2)` 偶然命中 `"34"` → `min = 34` ✓
- `substr(7, 2)` 只有最后 1 字节 `"6"` → `sec` 是个位数字而非两位

正确偏移应为 `(0,2)`、`(3,2)`、`(6,2)`。

不是游戏机制:regex 用的就是 `[0-9]{2}:[0-9]{2}:[0-9]{2}`(ASCII 半角冒号),
匹配成功时 `match_str` 必然是严格 8 字节 `HH:MM:SS` 格式;如果游戏改成
`12时34分56秒` 这种本地化格式,regex 根本不会匹配,函数会在 line 142 提前
`return false`,根本走不到这段 substr 代码。所以 substr 的偏移只看 8 字节
ASCII 格式本身。

实际场景:招募刷新 CD 比如 `01:23:45`,当前算 `0*3600 + 23*60 + 5 = 1385`
秒,正确应是 `5025` 秒——少算近 1 小时。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: fireflysentinel <phoenix1203@uchicago.edu>
2026-05-03 12:44:56 +08:00
fireflysentinel
ef0e4958bf fix: RoguelikeFoldartalGainTaskPlugin::gain_stage_award || 链恒为 true 导致装备误入密文板列表; correct_rect计算顺序
```cpp
if (foldartal != "雷达" || "留声机" || "景观" || "LUD" || "踢脚" || "自走车")
```

C++ 把这串解析成 `(foldartal != "雷达") || ("留声机") || ("景观") || ...`,
后面 5 个字符串字面量是 `const char*`,非空指针视为 `true`,整个表达式恒真。
注释 `// 深入调查调查装备也使用同一个入口,先分类` 已经说明意图是排除这 6
个装备名,不让它们被 `gain_foldartal` 当密文板存入 `foldartal_list`。

不是游戏机制:这 6 个名字是萨米肉鸽"深入调查"事件的装备奖励(不是密文板),
跟密文板使用流程不应该混在一起;注释自陈"先分类"明确意图是过滤,
不是有意把所有 OCR 文字都收进来。

改成 `&&` 链做逐项排除。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: fireflysentinel <phoenix1203@uchicago.edu>
2026-05-03 11:37:04 +08:00
status102
cfa3fedb0c fix: correct_rect在rect负方向完全越界时依旧输出非0宽度结果 2026-05-03 11:13:21 +08:00
status102
3b909f3959 chore: log迁移
[skip changelog]
2026-05-03 03:31:40 +08:00
Saratoga-Official
6d18eaa47c fix: GALLUS²识别 2026-05-03 02:31:23 +08:00
dependabot[bot]
0518c61e87 ci: bump yogeshlonkar/wait-for-jobs from 0 to 1 in /.github/workflows in the github-actions group (#16431)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-02 22:48:32 +08:00
status102
925ff331a1 fix: 临期理智药使用输出遗漏时间 2026-05-02 20:40:55 +08:00
status102
65a5566c9e fix: 理智药剩余日期识别前缀非数字字符移除 2026-05-02 19:41:53 +08:00
status102
a4e2b12e06 perf: 使用临期药品时, 如果存在时效识别失败的药品则取消本次吃药 2026-05-02 18:58:23 +08:00
status102
a7548d7612 fix: 移除不再生效的日服理智药roi覆盖 2026-05-02 15:02:57 +08:00
status102
a5d95e5fbe fix: 开始唤醒过早开始切换账号 2026-05-02 15:02:57 +08:00
1b2c
e83e49f61b fix: 部分场景下无法自动启动游戏 (#16422)
943a798b38 在 AdbConnectionContext::replace_cmd 的统一替换表中加入了 [PackageName],
导致 m_adb.start / m_adb.stop 在 connect 阶段就被提前替换。当调用方未通过
AsstSetInstanceOption(ClientType, ...) 设置 client_type 时(如 maa-cli 等不感知该
新选项的第三方调用方),m_conn_ctx.package_name 为空字符串,m_adb.start 中的
[PackageName] 被替换为空,后续 start_game(client_type) 内的运行时替换沦为 no-op,
最终启动命令缺失包名导致启动游戏失败。

将 [PackageName] 从统一替换表移除,恢复其作为运行时参数的语义;connect 阶段唯一
需要 [PackageName] 的位置(Androws 的 displayId 查询)改为就地显式替换。

Close #16392

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 13:24:54 +08:00
uye
bdffc8cd1a Release v6.9.0 (#16400)
## Summary by Sourcery

为 v6.9.0 版本发布准备 UI 样式和设置 XAML 文件。

增强内容:
- 更新 `CheckComboBox` 共享样式资源。
- 调整外部通知设置用户控件的布局或绑定。
- 调整 Roguelike 任务队列设置用户控件的布局或绑定。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Prepare UI styles and settings XAML files for the v6.9.0 release.

Enhancements:
- Update CheckComboBox shared style resources.
- Adjust external notification settings user control layout or bindings.
- Adjust roguelike task queue settings user control layout or bindings.

</details>
2026-05-02 12:14:58 +08:00
uye
9227357ea7 docs: Highlight 2026-05-02 12:13:46 +08:00
uye
540c8acbf5 perf: 优化伤害遮挡下的技能图标识别 2026-05-02 11:33:42 +08:00
status102
1c05ff9bc8 Revert "perf: 自动编队预编队后检查选中情况"
This reverts commit 2a5cdf24e7.
2026-05-02 02:49:49 +08:00
status102
6c6117ddb2 feat: 进入快捷编队页后校验清空状态 2026-05-02 02:49:49 +08:00
uye
013c899d34 perf: 优化 DEBUG_skill_ready 判断 2026-05-02 00:40:06 +08:00
uye
0df451b7d9 chore: 技能得分低也需要最小截图间隔 2026-05-01 23:47:11 +08:00
github-actions[bot]
0fab39caff chore: Auto Update Game Resources - 2026-05-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25220762971

[skip changelog]
2026-05-01 15:40:16 +00:00
uye
73f8ebb8f1 docs: changelog 2026-05-01 23:29:40 +08:00
uye
a99294ef90 fix: 生息演算 5.1 更新后无法使用无存档刷分 (#16402)
还没测过,不知道好不好使

## Summary by Sourcery

错误修复:
- 在 5.1 更新之后,恢复对在生息演算中进行无存档刷分运行的支持。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Bug Fixes:
- Restore support for running no-save score farming in 生息演算 after the
5.1 update.

</details>
2026-05-01 23:03:55 +08:00
Constrat
e884491a93 perf: optimize templates yostarkr SPA 2026-05-01 13:28:59 +02:00
Constrat
df0e271611 chore: YostarEN SPA 2026-05-01 13:28:46 +02:00
github-actions[bot]
edd564088b chore: Auto Update Game Resources - 2026-05-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25208910288

[skip changelog]
2026-05-01 09:02:14 +00:00
github-actions[bot]
2182951ed0 chore: Auto Update Game Resources - 2026-05-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25205158187

[skip changelog]
2026-05-01 06:33:13 +00:00
uye
cc0163edd9 ci: 调整资源更新环境 2026-05-01 14:31:27 +08:00
uye
a6523b01d5 ci: 任务排序支持 jsonc 2026-05-01 14:26:20 +08:00
uye
a8245441a3 chore: 统一 CheckComboBox 样式 2026-05-01 13:35:10 +08:00
uye
a34da437d0 fix: CheckComboBox 不显示标题 2026-05-01 13:24:22 +08:00
uye
094ff47873 fix: 3 星 tag 标题显示异常 2026-05-01 13:24:21 +08:00
uye
ffd98e800e Release v6.9.0-beta.3 (#16397)
## Summary by Sourcery

改进战场技能就绪状态分类流水线与调试图像处理逻辑,并在无法获取主模块信息时,使 BlueStacks 模拟器的终止流程更加健壮。

Bug 修复:
- 修复技能就绪状态分类中的 ONNX 输入张量形状错误问题,该问题将宽度和高度的顺序颠倒使用。
- 确保对技能就绪调试保存状态的并发访问是同步的,以避免在运行多个分类器时出现数据竞争。
- 允许在无法获取进程主模块或其文件路径时,仍可通过基于端口的逻辑继续关闭 BlueStacks 模拟器。

增强改进:
- 调整战场技能就绪分类器中的图像缩放与归一化逻辑,使其更好地匹配通道布局和模型预期。
- 扩展技能就绪调试捕获能力,使低置信度预测和长时间运行的会话能够更可靠地被捕获。
- 为技能就绪引入集中式调试图像保存机制,对每个目录使用队列,并自动清理较旧文件,以限制保留图像的数量上限。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Improve battlefield skill readiness classification pipeline and debug
image handling, and make BlueStacks emulator termination more robust
when main module information is unavailable.

Bug Fixes:
- Fix incorrect ONNX input tensor shape for skill readiness
classification that used width/height in reversed order.
- Ensure concurrent access to skill readiness debug saving state is
synchronized to avoid data races when running multiple classifiers.
- Allow BlueStacks emulator shutdown to proceed via port-based logic
even when the process main module or its file path cannot be retrieved.

Enhancements:
- Adjust image resizing and normalization logic in the battlefield skill
readiness classifier to better match channel layout and model
expectations.
- Extend skill readiness debug capture so that low-confidence
predictions and long‑running sessions are captured more reliably.
- Introduce centralized debug image saving for skill readiness with
per-directory queues and automatic cleanup of older files to cap
retained images.

</details>
2026-05-01 13:01:22 +08:00
uye
d504e074ce docs: Update CHANGELOG for v6.9.0-beta.3 release 2026-05-01 12:58:05 +08:00
uye
c7d1fe686d fix: 修复小游戏列表中下拉框偶现无法展开的问题 2026-05-01 12:57:42 +08:00
Shawn Sun
cf30d71067 fix: 修复蓝叠模拟器关闭失败的问题 (#16388)
fix: 修复模拟器关闭失败的问题

优化 EmulatorHelper 逻辑并升级 MailKit 依赖

优化了 EmulatorHelper 的异常处理和分支逻辑,提升对不同 BlueStacks 版本的识别与日志记录。将 MailKit 包从 4.15.1 升级至 4.16.0。
2026-05-01 12:43:30 +08:00
Copilot
2216175e5c feat: 适配七周年许愿墙 2026-05-01 12:24:29 +08:00
uye
a91286f41d perf: 大幅提升技能就绪识别准确率,优化技能截图保存策略 (#16393)
* feat: 技能截图默认保存 50 张,如存在 DEBUG_skill_ready.txt 时无限存储

* feat: maa 迎来大变

* fix: 修复技能截图保存的目录处理与并发安全

* perf: 写文件在锁外执行,init 在锁内执行
2026-05-01 12:14:12 +08:00
HX3N
2061050857 chore: YostarKR MiniGame SPA (#16364)
* i18n: kr

* chore: placeholder

* chore: template

* chore: remove GiveUp.png
2026-04-30 13:40:16 +02:00
Rememorio
a20351fcf1 fix: lower YoStarJP office mini threshold (#16390)
Made-with: Cursor
2026-04-30 16:25:04 +08:00
github-actions[bot]
84152a88f3 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25134605560
[skip changelog]
2026-04-29 21:24:20 +00:00
uye
9adf423aa4 Release v6.9.0-beta.2 (#16378)
## Summary by Sourcery

没有任何实际的代码或配置更改;此发布提交仅触及 `tasks.json` 资源文件,但未更改其内容。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

No effective code or configuration changes; this release commit only
touches the tasks.json resource file without altering its contents.

</details>
2026-04-30 00:30:15 +08:00
uye
426c964e59 docs: Add v6.9.0-beta.2 to CHANGELOG 2026-04-30 00:29:26 +08:00
uye
b1659e0a70 fix: 升级结算时闪退 2026-04-30 00:22:12 +08:00
uye
ef614156d0 Release v6.9.0-beta.1 (#16373)
## Summary by Sourcery

为更新程序提供更丰富的用户体验,改进连接与控制器行为,支持更多模拟器和客户端配置,并进行多项稳定性与文档更新。

New Features:
- 为外部更新程序新增 Windows 进度 UI,支持深色模式,包含双语状态文本和失败提示。
- 为更新程序新增可选的控制台输出,以及一个面向用户的设置,用于在委托更新时显示更新器控制台。
- 允许二次启动 MAA 时,通过命名事件激活已有实例窗口,而不是启动重复进程。
- 通过新的客户端类型实例选项支持解析客户端特定的 Android 包名,并从 WPF 前端一路接入核心控制器。
- 新增对腾讯安桌(Tencent Androws)模拟器的检测与配置支持,包括 ADB 路径自动发现以及所有支持语言的文档更新。
- 在关卡掉落识别与 UI 日志中暴露剿灭(Annihilation)每周进度和基于合成玉(orundum)的停止条件。

Bug Fixes:
- 修复 OCR 包标签路径比较问题,确保在加载模型时可以正确拾取已有的识别标签文件。
- 通过检查选项值而非选项数量,修正肉鸽遭遇回调校验逻辑。
- 通过以干员名称而非格子位置作为键,防止错误复用上一次技能时间戳。
- 确保 Minitouch 使用当前连接上下文(包括事件 ID 和显示 ID),而不是在本地重建 ADB 状态。
- 正确处理理智上限提升至新最大值的情况,避免将合法数值误判为超出范围。
- 避免在 C API 封装中在销毁阶段对同一个 AsstHandle 指针进行二次销毁。
- 通过使用解析后的坐标而不是逻辑点对象,修复 PlayTools 的滑动起点。
- 确保在识别标签路径更新时,只在标签文件真正变化时才重置 OCR 识别器。
- 仅在找到匹配任务时才更新最后任务名,保持进程任务状态一致性。

Enhancements:
- 改进更新程序日志,可选镜像输出到控制台,提供更结构化的消息以及双语控制台提示。
- 新增无模式、跟随主题的更新进度窗口,支持逐文件进度和高层状态阶段,并集成到更新流程中。
- 收紧多实例处理逻辑,引入哈希化的单实例键,并在退出时清理激活监听资源。
- 扩展 ADB 连接上下文,缓存配置、显示 ID、输入事件 ID 以及 netcat 地址/端口,以便在各控制器中复用。
- 为 Win32Controller 实现优雅的 stop_game:先发送 WM_CLOSE,如有需要再回退到进程终止。
- 优化后置动作行为,使 AttachWindow 模式在禁用不支持的 Android 端动作的同时保持 PC 端选项一致。
- 改进剿灭奖励处理逻辑,要求必定掉落合成玉后才继续,并在回调中暴露每周进度。
- 调整 copilot schema 文档和 minimum_required 版本说明,明确动作类型的语言支持情况。
- 更新多项任务与资源定义,包括 UI 主题任务布局、战斗数据、格子位置以及小游戏任务。
- 改进调试工具,将生成的 UI 主题图片重定向到正确的模板子目录中。

Build:
- 将更新程序链接到额外的 Windows 库(`comctl32`、`advapi32`、`dwmapi`),以支持新的进度 UI
和主题检测。

CI:
- 将 macOS 签名与配置相关的 GitHub Actions 升级到较新的主版本,用于发布构建。

Documentation:
- 在所有支持语言中补充腾讯应用商店 / 安桌模拟器的支持说明、连接细节与 ADB 配置文档。
- 明确 copilot schema JSON 的使用方式、版本策略以及动作类型的语言限制。
- 整理 GitHub issue 模板,移除过时占位内容,并明确日志上传说明。

Chores:
- 更新物品、任务、版本和格子位置等资源 JSON 文件,以匹配最新的游戏内容和 UI 主题。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Add richer updater UX, improved connection and controller behavior,
support for additional emulator and client configurations, and various
stability and documentation updates.

New Features:
- Introduce a Windows progress UI with dark mode support for the
external updater, including bilingual status text and failure prompts.
- Add optional console output for the updater and a user-facing setting
to show the updater console during delegated updates.
- Allow secondary MAA launches to activate the existing instance window
instead of starting a duplicate process via a named event.
- Support resolving client-specific Android package names via a new
client type instance option wired from the WPF front-end into the core
controller.
- Add detection and configuration support for Tencent Androws emulator,
including ADB path discovery and documentation updates for all supported
languages.
- Expose annihilation weekly progress and orundum-based stop conditions
in stage drop recognition and UI logging.

Bug Fixes:
- Fix OCR pack label path comparison so that existing recognition label
files are correctly picked up when loading models.
- Correct roguelike encounter callback validation by checking the choice
value instead of the option count.
- Prevent incorrect reuse of last-skill timestamps by keying battlefield
cooldowns by operator name rather than tile location.
- Ensure Minitouch uses the current connection context (including event
and display IDs) instead of a locally reconstructed ADB state.
- Handle sanity cap increases up to the new maximum to avoid
misclassifying valid values as out-of-range.
- Avoid destroying an AsstHandle pointer twice on teardown in the C API
wrapper.
- Fix PlayTools swipe starting point by using the resolved coordinates
instead of the logical point object.
- Ensure recognition label path updates only reset the OCR recognizer
when the label file actually changes.
- Keep process task state consistent by only updating last task names
when a match is found.

Enhancements:
- Improve updater logging to optionally mirror to the console with
better structured messages and bilingual console prompts.
- Add a modeless, theme-aware updater progress window with per-file
progress and high-level status phases, integrated into the update flow.
- Tighten multiple-instance handling by introducing a hashed
single-instance key and cleaning up activation listener resources on
exit.
- Extend ADB connection context to cache configuration, display ID,
input event ID, and netcat address/port for reuse across controllers.
- Implement graceful stop_game for Win32Controller by sending WM_CLOSE
and falling back to process termination if needed.
- Refine post-action behavior so AttachWindow mode disables unsupported
Android-side actions while keeping PC-side options consistent.
- Improve annihilation reward handling by requiring orundum drops before
continuing and exposing weekly process in callbacks.
- Adjust copilot schema docs and minimum_required version guidance,
clarifying language support for action types.
- Update various task and resource definitions, including UI theme task
layouts, battle data, tile positions, and mini-game tasks.
- Improve debug tooling by redirecting generated UI theme images into
the correct template subdirectory.

Build:
- Link the updater against additional Windows libraries (comctl32,
advapi32, dwmapi) required for the new progress UI and theme detection.

CI:
- Bump macOS signing and provisioning GitHub Actions to newer major
versions for release builds.

Documentation:
- Document Tencent App Store/Androws emulator support, connection
details, and ADB configuration across all supported languages.
- Clarify copilot schema JSON usage, versioning, and language
constraints for action types.
- Tidy GitHub issue templates by removing outdated placeholders and
clarifying log upload instructions.

Chores:
- Update resource JSON files for items, tasks, versions, and tile
positions to match the latest game content and UI themes.

</details>
2026-04-29 22:03:25 +08:00
github-actions[bot]
d56ecf73b9 docs: Auto Update Changelogs of v6.9.0-beta.1 (#16374)
* docs: Auto Generate Changelog of Release v6.9.0-beta.1

* docs: Update CHANGELOG for v6.9.0-beta.1

Updated changelog for version 6.9.0-beta.1 with new features, improvements, fixes, and documentation updates.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-04-29 21:58:01 +08:00
uye
b4429c4b6f feat: 重复启动时通过跨进程事件激活主窗口而非弹窗警告 (#16363)
* feat: 重复启动时通过跨进程事件激活主窗口而非弹窗警告

* perf: GetSingleInstanceKey 改用路径哈希
2026-04-29 21:33:08 +08:00
github-actions[bot]
719d04f53d chore: Auto Templates Optimization
Triggered by 5f2d547998

[skip changelog]
2026-04-29 13:22:47 +00:00
Manicsteiner
5f2d547998 chore: YostarJP MiniGame SPA (#16372) 2026-04-29 21:22:22 +08:00
Roland125
e9d8f6a844 fix: 修复剿灭后出现升级界面,导致无法继续任务的问题(#16255) (#16370) 2026-04-29 21:20:35 +08:00
status102
4215a05371 perf: 合并简化任务状态 2026-04-29 19:44:22 +08:00
github-actions[bot]
dd7ec5cd20 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25078413821
[skip changelog]
2026-04-28 21:24:51 +00:00
uye
a62258f74e feat: 在关卡没解锁代理/剿灭没使用全权代理时报错停止 (#16357)
* feat: 在关卡没解锁代理/剿灭没使用全权代理时报错停止

* chore: 添加最大循环次数
2026-04-28 23:45:24 +08:00
github-actions[bot]
de4476b545 chore: Auto Templates Optimization
Triggered by e6b3223e29

[skip changelog]
2026-04-28 12:13:55 +00:00
Roland125
e6b3223e29 feat: 增加 保存代理指挥记录 支持; 新增合成玉掉落检查, 0掉落结束 (#16356)
* fix: 增加在剿灭代理记录更新界面,点击确认按钮的任务和图片资源
fix: 增加剿灭模式下,对合成玉的掉落检测。不掉落合成玉时,结束战斗任务

* perf: 使用代理卡时不会更新记录

Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>

---------

Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2026-04-28 20:12:41 +08:00
github-actions[bot]
be77d7b1bc chore: Auto Update Game Resources - 2026-04-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25046601559

[skip changelog]
2026-04-28 10:04:06 +00:00
status102
34d1f8413a feat(wpf): 掉落物识别额外输出剿灭进度 2026-04-28 14:05:15 +08:00
status102
04a793e6ce rft: ProcessTask匹配命中状态更新统一化 2026-04-28 13:35:50 +08:00
status102
5619aefa10 fix: 干员使用技能间隔未能生效 2026-04-28 13:22:12 +08:00
github-actions[bot]
d2ee76d2f6 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/25020210469
[skip changelog]
2026-04-27 21:23:04 +00:00
uye
8f1b7fd087 feat: 新增 get_last_matched_task_name 方法;成功命中新节点时与 get_last_task_name 一致,在进入下一轮匹配后若未再命中新节点时,仍保留最近一次成功命中的任务名,避免误取空值 2026-04-28 00:49:06 +08:00
uye
ea22cbab4a chore: 支持打包日志文件后 GitHub 上传日志不再需要先关闭 MAA 2026-04-27 22:37:34 +08:00
dependabot[bot]
f733530b67 ci: bump the github-actions group in /.github/workflows with 2 updates (#16344)
Bumps the github-actions group in /.github/workflows with 2 updates: [apple-actions/import-codesign-certs](https://github.com/apple-actions/import-codesign-certs) and [apple-actions/download-provisioning-profiles](https://github.com/apple-actions/download-provisioning-profiles).


Updates `apple-actions/import-codesign-certs` from 6 to 7
- [Release notes](https://github.com/apple-actions/import-codesign-certs/releases)
- [Commits](https://github.com/apple-actions/import-codesign-certs/compare/v6...v7)

Updates `apple-actions/download-provisioning-profiles` from 5 to 6
- [Release notes](https://github.com/apple-actions/download-provisioning-profiles/releases)
- [Commits](https://github.com/apple-actions/download-provisioning-profiles/compare/v5...v6)

---
updated-dependencies:
- dependency-name: apple-actions/import-codesign-certs
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: apple-actions/download-provisioning-profiles
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-27 15:12:47 +08:00
github-actions[bot]
33885b1294 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24967148430
[skip changelog]
2026-04-26 21:12:26 +00:00
uye
893793efff chore: 调整完整后 无其他 MAA 选项绑定逻辑,不再强制勾选退出模拟器 2026-04-27 02:02:13 +08:00
status102
8161976869 fix: 干员仓储识别手动指定术兔
临时修复
2026-04-27 01:37:56 +08:00
Jin Zhaonian
60cbc68e59 fear: PC 端支持 完成后退出明日方舟 (#16351)
* fix: 修复pc端任务完成后勾选自动关闭游戏但无法关闭的问题

* fix: IsWindow检查与WM_CLOSE关闭

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-27 01:36:19 +08:00
uye
b65b37fba8 chore: 调整选项 IsEnabled 2026-04-27 01:35:10 +08:00
Alex Gu
7d3f8bfa2d fix: 若干正确性问题修正(null check / race / clamp / retry 等 9 处) (#16332)
## 概述

代码 review 发现的一批正确性问题批量修正,都是 `src/MaaCore` 下单行 / 局部 logic 级别的
bug,彼此独立,按严重度从高到低逐条 commit。没有功能改动、没有 API 变化、没有 breaking behavior。

每个 commit 单独对应一条 bug,便于逐条 review 或按需
revert。下表也按严重度从高到低排序,附上「原问题」与「修法理由」。

### 发现来源

使用 Claude Code 新版 `/ultrareview` 多 agent review 扫了 `src/MaaCore` 源码(~58k
行),人工逐条核对后提 PR。另有 2 条(AvatarCacheManager 并发保护 / CopilotConfig
默认值语义)涉及设计决策或 breaking change,已单独提 issue 讨论,不在本 PR 内。

---

## Fix 列表(按严重度排序)

### 1. `Controller::back_to_home` 空指针解引用崩溃 — HIGH

**位置**:`src/MaaCore/Controller/Controller.cpp:137`

**原问题**:
```cpp
bool asst::Controller::back_to_home()
{
    m_controller->back_to_home();   // 无 null 检查
    return true;
}
```
未连接设备时 `m_controller == nullptr`,此处直接 segfault。同文件 `sync_params` /
`start_game` / `stop_game` / `click` 等所有公开方法都有 null 保护(前者用 `if
(!m_controller) return`,后者用 `CHECK_EXIST(m_controller, false)` 宏),**只有
`back_to_home` 漏了**。

**触发路径**:任务运行中 ADB 断连使 `m_controller` 被 reset 成 null → 调度走到"回主页"分支 → 崩溃。

**修法**:函数开头加 `CHECK_EXIST(m_controller,
false);`,与同文件其他方法保持一致。最小改动,零行为变化(未连接时 `back_to_home` 返回 `false` 而不是崩溃)。

---

### 2. `MumuExtras::screencap` reload 之后没有真正重试 — MEDIUM-HIGH

**位置**:`src/MaaCore/Controller/MumuExtras.cpp:54-83`

**原问题**:
```cpp
int ret = capture_display_func_(...);       // 第一次 capture
if (ret) {
    // Try reloading once before giving up.
    if (!reload()) { ... return std::nullopt; }
    if (ret) {                              // ← 检查的是同一个 ret,不是重试之后的
        LogError << "Failed to capture display, but reload before retrying capture was successful." ...;
        return std::nullopt;
    }
}
```
注释承诺"失败时 reload 后重试 capture",但第二个 `if (ret)` 检查的还是第一次调用写入的
`ret`,`capture_display_func_` **从未被重新调用过**。reload 成功或失败都必然返回
`std::nullopt`,注释里的"reload before retrying capture was
successful"日志其实**只是字面,retry 压根没发生**。

**后果**:MuMu 模拟器短暂 capture 失败(内存抖动 / 显示切换)时,原本 reload
应能恢复,但代码从不真正重试,上层看到的永远是「截图失败」。

**修法**:在两个 `if (ret)` 之间加上**真正的**重试:重新调用 `capture_display_func_` 并更新
`ret`。reload 可能改变设备状态,所以 `display_id` 也重新 `get_display_id()`
取一次。失败信息相应改为"Failed to capture display even after reload",语义准确。

---

### 3. `Controller` 中 `d_size` 被 `const static` 固化,分辨率变化后缩放错误 — MEDIUM

**位置**:`src/MaaCore/Controller/Controller.cpp:146` 和 `:438`(两处)

**原问题**:
```cpp
const static cv::Size d_size(m_scale_size.first, m_scale_size.second);
```
C++ 函数内 `static` 局部变量的初始化表达式**仅在第一次进入该函数时执行一次**。首次调用时 `m_scale_size`
的值被固化到 `d_size`,之后用户切换模拟器、改分辨率预设、连接新设备等导致 `m_scale_size` 变化时,**`d_size`
不会更新**。

**后果**:
- `cv::resize(..., d_size, ...)` 把图缩到错误的目标尺寸 → OCR / 模板匹配的坐标/尺寸都错
- 截图失败兜底路径 `m_cache_image = cv::Mat(d_size, CV_8UC3)` 也分配错误尺寸的空图
- 用户看到各种"识别不到 / 坐标偏移"但不崩溃,**只能通过重启 MaaCore 恢复**

**修法**:去掉 `static`,每次调用重新构造。`cv::Size` 就是两个
`int`,栈上构造基本无开销,不存在性能回归。两处都修。

---

### 4. `PlayToolsController::swipe` 起点钳制没有应用到 `toucher_down` —
MEDIUM-LOW

**位置**:`src/MaaCore/Controller/PlayToolsController.cpp:230`

**原问题**:
```cpp
int x1 = p1.x, y1 = p1.y;                          // 拷贝到局部变量
// ...
if (x1 < 0 || x1 >= width || y1 < 0 || y1 >= height) {
    x1 = std::clamp(x1, 0, width - 1);             // 只钳制了局部 x1/y1
    y1 = std::clamp(y1, 0, height - 1);
}
// ...
toucher_down(p1);                                  // ← 仍用原始的 const Point& p1
```
注释"起点不能在屏幕外,但是终点可以"已经说明了钳制意图,但钳制结果只存在局部 `x1/y1`,`toucher_down(p1)`
使用的还是未钳制的原始 `p1`。后续 `progressive_move` 用 `x1/y1` 所以中段 swipe 在屏幕内,**但首个
touch-down 事件发到屏幕外坐标**,iOS PlayTools 侧多半会被丢弃或忽略 → 整个手势无效。

**修法**:`toucher_down(p1)` → `toucher_down({ x1, y1 })`,用已钳制的坐标构造临时
`Point`。与同文件下方 `toucher_move({ x, y })` 的风格一致。

---

### 5. `Assistant::m_task_id` 非原子 static 导致跨实例数据竞争 — MEDIUM-LOW

**位置**:`src/MaaCore/Assistant.h:214`(声明)+
`src/MaaCore/Assistant.cpp:295-296`(使用)

**原问题**:
```cpp
// Assistant.h
inline static TaskId m_task_id = 0;                     // 进程级 static,非 atomic
mutable std::mutex m_mutex;                             // 实例级 mutex
inline static std::atomic<AsyncCallId> m_call_id = 0;   // 旁证:同文件另一个 static 是 atomic

// Assistant.cpp:295
std::unique_lock<std::mutex> lock(m_mutex);             // 锁的是当前实例的 mutex
int task_id = ++m_task_id;                              // 改的是进程共享的 static
```
`m_task_id` 是 static(**所有 Assistant 实例共享一个内存地址**),但 `m_mutex`
是每个实例各自的锁。两个不同实例并发 `++m_task_id` 时,各自 lock 各自的 mutex,彼此不互斥 ——
**数据竞争**,`++` 对非原子 `int` 是 RMW 三步,可能让两个实例拿到同一个 `task_id`。

单实例客户端(MaaWpfGui、MaaMacGui)触发不了;多实例 + 并发下任务的客户端(命令行批处理 / 自动化测试)会偶现任务 id
冲突,后续 `AsstSetTaskParams` / `AsstStop` 可能误中另一个实例的任务。

旁证:同文件 line 227 的另一个同类 static `m_call_id` 已经声明成
`std::atomic<AsyncCallId>`,一致性也对不上,显然是作者漏改。

**修法**:`TaskId m_task_id` → `std::atomic<TaskId>
m_task_id`。`++m_task_id` 靠 `std::atomic::operator++` 原子化,语法不变。`m_mutex`
原先是为紧跟的 `m_tasks_list.emplace_back` 服务的,继续保留。

---

### 6. `OcrPack::load` 复制粘贴导致 `rec_label` 变化检测用错字段 — LOW-MEDIUM

**位置**:`src/MaaCore/Config/Miscellaneous/OcrPack.cpp:61`

**原问题**:
```cpp
// 前两块都正确:当前保存路径 != 新路径 时才更新
if (exists(det_model_file) && m_det_model_path != det_model_file) { ... }
if (exists(rec_model_file) && m_rec_model_path != rec_model_file) { ... }
// 第三块:应该检查 m_rec_label_path,却写成了 m_rec_model_path
if (exists(rec_label_file) && m_rec_model_path != rec_label_file) {
    m_rec_label_path = rec_label_file;
    m_rec = nullptr;
}
```
模型路径以 `.onnx` 结尾,标签路径以 `.txt` 结尾,`m_rec_model_path != rec_label_file`
**恒为真**(只要标签文件存在)。结果每次调用 `load()` 都会:
- 无效地重新给 `m_rec_label_path` 赋同样的值
- 把 `m_rec` 置空 → 触发下一次 OCR 时 lazy 重载

不会导致正确性崩塌(`check_and_load` 路径会 lazy 重建
`m_rec`),但"路径没变则保留缓存"的设计目的完全失败,且多次 `load()` 会产生不必要的模型重载开销。

**修法**:`m_rec_model_path != rec_label_file` → `m_rec_label_path !=
rec_label_file`,与上面 `det` / `rec_model` 两块的模式对齐。

---

### 7. `RoguelikeStageEncounterConfig` `fallback_choices` 校验写错变量 — LOW


**位置**:`src/MaaCore/Config/Roguelike/RoguelikeStageEncounterConfig.cpp:77`

**原问题**:
```cpp
int option_num = pair_arr[0].as_integer();
if (option_num < 0) { ... return false; }               // 校验 option_num,OK
int choice = pair_arr[1].as_integer();
if (option_num < 0) {                                   // ← 重复检查 option_num
    Log.error(
        std::format(
            "RoguelikeEncounterConfig | callback choice for event {} with {} option(s) is less than zero",
            ...));
    return false;
}
```
错误信息本身已经说明是在校验 `choice`("callback choice ... is less than
zero"),但实际比较的是上面已经保证过非负的 `option_num`,这个 `if` 永远进不去。

**后果**:坏 JSON 中 `[3, -5]` 这类负数 `choice` 能被静默接受,后续
`static_cast<size_t>(-5)` 产生巨大无符号数,作为索引使用时 UB。正常配置不触发,但这条防御校验已名存实亡。

**修法**:第二个 `if` 判断变量改为 `choice`。错误消息中 `option_num` 作为上下文保留(用于打印 option
数量,语义正确)。

---

### 8. `AsstDestroy` 对值传入的形参赋 `nullptr` 是死代码 — TRIVIAL

**位置**:`src/MaaCore/AsstCaller.cpp:98`

**原问题**:
```cpp
void AsstDestroy(AsstHandle handle)
{
    if (handle == nullptr) return;
    delete handle;
    handle = nullptr;       // ← 改的是局部拷贝,对调用方的变量无影响
}
```
`AsstHandle` 按值传入,`handle = nullptr` 只修改本函数作用域的局部拷贝。`delete handle`
已正确销毁对象,这行既没有替调用方置空(要做到需接受 `AsstHandle*`),也不会影响 delete 行为,纯死代码。

**修法**:删掉这行,保持 `delete` 行为不变,避免给读者错误印象。

---

### 9. `AvatarCacheManager.h` 开头两行重复的 `#pragma once` — TRIVIAL

**位置**:`src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h:1-3`

**原问题**:
```cpp
#pragma once

#pragma once        // ← 重复
#include "Config/AbstractResource.h"
```
pragma once 幂等,没有功能影响,但看起来是编辑时的残留。清理即可。

---

## Test plan

- [x] `git diff dev-v2..HEAD --stat`:8 文件 / +18/-11,只有目标修改,无无关改动
- [x] 每条 fix 都有对应的单独 commit,便于逐条 review 或按需 revert
- [x] **本地 macOS arm64 build 通过**:`cmake --preset macos-arm64 && cmake
--build build --config Release` → 203/203 targets 编译链接成功,0 error,修改的 8
个文件 0 warning(全局唯一 1 条 warning 是 `MaaUtils/Logger.cpp` 的 `#pragma
message` 版本信息打印,与本 PR 无关)
- [ ] 单元测试:macOS preset 默认没有编译 test target(`unit_test/MaaCore/` 下仅 1 个
`AlgorithmTest.cpp`,与本 PR 改动的函数无交集),本地 `ctest` 返回 "No tests were
found"。依赖上游 CI 完整矩阵(Linux / Windows / macOS + 各自测试)验证。

## Notes for reviewers

- 每条 fix 的 commit message 都附了原理说明,结合 PR 正文对应条目阅读
- **没有功能性增加**,也**不动任何 public API / ABI**
- 不涉及 resource / JSON 数据文件
- 合并之后建议开一个跟进 issue 讨论 ultrareview 的另外两条 finding(AvatarCacheManager
并发保护、CopilotConfig 默认值语义)—— 这两条需要设计决策,不适合塞进本 PR

---

_PR 发现来源:Claude Code `/ultrareview` 多 agent 扫描后人工复核。_

## Summary by Sourcery

在不改变公共 API 或行为的前提下,修复了控制器、OCR、肉鸽配置以及工具组件中的多处正确性问题。

Bug 修复:
- 在 `Controller::back_to_home` 中增加空指针检查,以防在底层控制器不可用时发生崩溃。
- 确保 `MumuExtras::screencap` 在成功重新加载后确实会重试屏幕捕获,并且能准确记录失败日志。
- 在 Controller 中为缩放后的图像尺寸使用非静态的 `cv::Size`,以便在无需重启的情况下正确响应分辨率变化。
- 对传递给 `PlayTools toucher_down` 的滑动起始点进行限制,确保初始触控事件始终在屏幕范围内。
- 将 Assistant 的进程级任务 ID 计数器改为原子类型,避免在多实例场景下产生数据竞争。
- 修正 `OcrPack` 标签路径变更检测逻辑,使 OCR 模型只在标签文件实际变更时才会重新加载。
- 修复 `RoguelikeStageEncounterConfig` 的回退选项校验逻辑,按预期拒绝负数选项。
- 移除 `AsstDestroy` 中无效的句柄重置代码,该代码试图将值传递参数置空但实际上无效。
- 移除 `AvatarCacheManager.h` 中多余的 `#pragma once`,以清理头文件。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Fix multiple correctness issues across controller, OCR, roguelike
config, and utility components without changing public APIs or
behaviors.

Bug Fixes:
- Add a null check in Controller::back_to_home to prevent crashes when
the underlying controller is unavailable.
- Ensure MumuExtras::screencap actually retries display capture after a
successful reload and logs failures accurately.
- Use a non-static cv::Size for scaled image dimensions in Controller so
resolution changes are respected without restart.
- Clamp the swipe starting point passed to PlayTools toucher_down to
keep initial touch events within screen bounds.
- Make Assistant's process-wide task ID counter atomic to avoid data
races across instances.
- Correct OcrPack label path change detection so OCR models are only
reloaded when the label file actually changes.
- Fix RoguelikeStageEncounterConfig fallback choice validation to reject
negative choices as intended.
- Remove ineffective handle reset code in AsstDestroy that tried to null
a by-value parameter.
- Remove a redundant #pragma once in AvatarCacheManager.h to clean up
the header.

</details>
2026-04-27 00:46:12 +08:00
SherkeyXD
4a77baba13 feat: 适配界面主题「重构」 (#16349)
* feat: 界面主题「重构」预载

* fix: 修复小工具 updater 路径错误
2026-04-27 00:45:09 +08:00
uye
b9fca6f03d chore: 连接方式使用 PC 端时禁用不支持的完成后操作 2026-04-27 00:32:13 +08:00
srdr0p
1b1bc15aca feat: 支持腾讯应用宝 5.10.56.xx (#16292)
* feat(connection): 新增腾讯应用宝模拟器支持

在 WinAdapter 和 config.json 中添加应用宝(Androws)模拟器入口。
本次仅支持 ADB Input 方式和官方渠道。

同步更新各语言连接文档(zh/en/ja/ko/tw)及 UI 本地化字符串。

* feat(controller): 为腾讯应用宝新增多渠道与 Minitouch 支持

应用宝的应用与 DisplayId 绑定,需在 connect() 前确定包名。
新增 InstanceOptionKey::ClientType (= 6),经由
AsstSetInstanceOption -> Assistant::set_instance_option
-> Controller::set_client_type 传递渠道信息;
AdbController::connect 在建立连接时通过 ctrler()->get_client_type()
读取并写入 AdbConnectionContext,用于替换命令模板中的 [PackageName]。

引入 AdbConnectionContext 保存 ADB 连接信息供 Minitouch 使用,
并通过 eventId 标识所绑定的输入设备。
2026-04-26 23:48:24 +08:00
status102
54f07fc3ad perf(wpf): 优化1星词条选项操作描述 2026-04-26 12:59:09 +08:00
github-actions[bot]
ce9fc40ef5 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24940764290
[skip changelog]
2026-04-25 21:12:38 +00:00
晓丶梦丶仁
fa5929a5f5 feat: 争锋频道 绿藤城 (#16345)
* feat: 争锋频道 绿藤城

* i18n: jp kr

* fix: key
2026-04-25 23:53:09 +08:00
status102
adcf581ab3 fix: 干员仓储识别未跳过数据查找失败的干员 2026-04-25 23:17:06 +08:00
SherkeyXD
7567ca7950 chore: 周年月卡文本更新 2026-04-25 23:12:09 +08:00
github-actions[bot]
83ce081ac5 chore: Auto Update Game Resources - 2026-04-25
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24932890662

[skip changelog]
2026-04-25 14:18:43 +00:00
Constrat
d6cdfc6c77 fix: EN IS6 trail regex 2026-04-25 15:27:15 +02:00
status102
b0f46de1e6 perf: 理智上限增加到210 2026-04-25 20:47:49 +08:00
SherkeyXD
a1064f7c21 fix: 月度小队不再隐藏分队选择 2026-04-25 18:10:04 +08:00
uye
ac3b986d7a feat: updater 支持暗色模式 2026-04-25 05:51:09 +08:00
uye
f08793369e feat: updater 支持显示进度条或控制台输出 2026-04-25 05:51:09 +08:00
Goat Boring(山羊博宁88)
8da0b89e6e docs: 修改部分注释 (#16215)
* docs: 修改部分注释

* docs: Fix typo in JSON file usage note

* docs: 改改改

* style: format

Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>

* docs: 换地址

* docs: 作业最低支持版本

---------

Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2026-04-25 01:57:35 +08:00
uye
0913148a69 Release v6.8.0 (#16335)
## 由 Sourcery 生成的摘要

为 v6.8.0 版本更新了更新程序行为、GUI 日志记录、资源以及 CI/发布工作流。

新功能:
- 在原生更新程序中添加对待处理更新计划条目的详细日志记录。
- 新增 copilot 配置 JSON 资源。

漏洞修复:
- 防止非完整更新包删除或替换目录,在这些情况下强制仅对文件进行操作。
- 从 WPF 待处理更新清单的删除列表中过滤目录条目,避免意外删除目录。
- 从 OTAPacker 的 zip 列表输出中排除目录条目。
- 当在 VisionHelper 中请求的 ROI 超出范围时,返回安全的空矩形,以避免无效图像访问。
- 通过仅记录最新公告正文来避免公告日志被覆盖。

改进:
- 为原生更新程序日志文件引入基于最大大小阈值的日志轮换。
- 在完整包更新期间保留缓存目录。
- 在 CI 中从发布制品中移除备份文件,以保持发布包干净。

构建:
- 调整本地安装脚本,将 WPF GUI 发布为 win-x64、自包含且针对特定运行时的构建。

CI:
- 在多个工作流中将 github-script action 升级到 v9。
- 在 Avalonia CI 工作流中将 upload-artifact 的使用升级到 v7。
- 更新发布工作流以使用最新的 softprops/action-gh-release v3。
- 将 COS 上传步骤切换为使用较新的 tencent-cos-action,并采用基于 sync 的参数进行发布分发。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Update updater behavior, GUI logging, resources, and CI/release
workflows for the v6.8.0 release.

New Features:
- Add detailed logging of pending update plan entries in the native
updater.
- Add new copilot configuration JSON resources.

Bug Fixes:
- Prevent non-full update packages from deleting or replacing
directories, enforcing file-only operations in these cases.
- Filter directory entries from the WPF pending update manifest remove
list to avoid unintended directory removals.
- Exclude directory entries from OTAPacker zip listing output.
- Return a safe empty rectangle when a requested ROI is out of range in
VisionHelper to avoid invalid image access.
- Avoid overwriting announcement logs by logging only the latest
announcement body.

Enhancements:
- Introduce log rotation for the native updater log file based on a
maximum size threshold.
- Preserve the cache directory during full-package updates.
- Remove backup files from release artifacts in CI to keep distributions
clean.

Build:
- Adjust local-install script to publish the WPF GUI as a win-x64
self-contained runtime-specific build.

CI:
- Bump github-script actions to v9 in multiple workflows.
- Upgrade upload-artifact usage to v7 in Avalonia CI workflows.
- Update release workflow to use the latest softprops/action-gh-release
v3.
- Switch COS upload step to use the newer tencent-cos-action with
sync-based arguments for release distribution.

</details>
2026-04-25 00:49:14 +08:00
github-actions[bot]
5eb161a390 docs: Auto Update Changelogs of v6.8.0 (#16336)
* docs: Auto Generate Changelog of Release v6.8.0

* docs: changelog

* feat(changelog): 更新 v6.8.0 版本日志,优化更新流程与功能介绍

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
2026-04-25 00:46:20 +08:00
uye
0c4bcf6aae fix: 使用本地注册的更新包会导致从 API 获取的更新信息被置空 2026-04-24 23:19:16 +08:00
MistEO
f90cc11100 ci: disable MAA cos 2026-04-24 22:21:04 +08:00
github-actions[bot]
f1be7f5711 chore: Auto Update Game Resources - 2026-04-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24893433596

[skip changelog]
2026-04-24 14:00:14 +00:00
Roland125
e6fad34468 修复截图延迟极低时,可能会随机出现,更换产物/订单失败的问题 (#16330)
fix: 给更换产物/订单的一环任务步骤加延时,避免在极低截图延迟下(5ms)出现更换不成功的情况。
fix: 给ConfirmProductChange任务添加一个stop出口,避免在单独测试更换产物任务时,可能会出现的一个意外报错。

点击更换订单和点击更换产物的时候(见下方两图)会有一个动画时间。

以前cpp代码里,任务执行默认有个500ms延时,可能是现在没有了吧,导致mumu extra模式下,有随机概率卡动画,点击产物会不生效,而且。

大概今年1月份就在我的基建里发现换班出问题了,但是再手动link start一次通常又能换好。

观察一段时间之后,发现能不能换成功都是随机的感觉。

同时,不管换没换对,在基建换班任务执行中,都是返回产物已切换,没有报错的。这个没搞懂怎么回事。

<img width="921" height="517" alt="image"
src="https://github.com/user-attachments/assets/5a45910d-8a87-47b8-8695-4e0f4242df8a"
/>
<img width="918" height="518" alt="image"
src="https://github.com/user-attachments/assets/c4132171-4978-4dbd-afbd-a9aaad13b6b0"
/>


额外加的stop入口是因为在执行自定任务测试的时候发现,如果切换到的产物和当前产物一致,会报错。

正常来说如果产物一致是不会进换产物流程的,所以不影响正常的换班逻辑。

## Summary by Sourcery

为产品/订单变更任务添加时序和控制流调整,以在截图延迟极低的情况下提升可靠性。

Bug Fixes:
- 在产品/订单变更步骤中引入延迟,以防止在截图延迟极低时出现随机失败。
- 为 `ConfirmProductChange` 任务添加停止退出逻辑,以避免在隔离任务测试期间,当目标产品与当前产品相同时出现错误。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Add timing and control-flow adjustments to product/order change tasks to
improve reliability under very low screenshot latency.

Bug Fixes:
- Introduce a delay in the product/order change step to prevent random
failures when screenshots are taken with extremely low latency.
- Add a stop exit to the ConfirmProductChange task to avoid errors when
the target product is the same as the current one during isolated task
testing.

</details>
2026-04-24 21:25:13 +08:00
github-actions[bot]
4a3780528a chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24803125569
[skip changelog]
2026-04-22 21:18:18 +00:00
uye
c45b476a30 chore: 简化公告日志记录 2026-04-23 00:43:39 +08:00
uye
3214aa96e7 fix: local-install 找不到 Artifact 2026-04-22 22:30:38 +08:00
uye
9c1ac90446 chore: tool 更新 2026-04-22 22:19:46 +08:00
uye
a1fb539856 fix: 内测版与其他类型版本对比时 removelist 会错误添加所有目录 2026-04-22 22:04:25 +08:00
uye
31fdcf191f chore: updater 额外保留 cache 文件夹 2026-04-22 20:32:03 +08:00
uye
f888adb99a feat: updater 增加移除和移动文件列表打印 2026-04-22 20:30:21 +08:00
uye
2976930308 feat: updater 日志增加大小上限 2026-04-22 20:18:54 +08:00
github-actions[bot]
4fb1570f91 chore: Auto Update Game Resources - 2026-04-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24769128852

[skip changelog]
2026-04-22 08:48:02 +00:00
status102
beedbd37cc fix: 临时修复rect完全超限时的超限返回值 2026-04-22 16:23:21 +08:00
Rbqwow
3d29fcb8ed ci: 发版打包时移除 *.bak 文件 2026-04-22 14:27:20 +08:00
dependabot[bot]
3e5691fe1b ci: bump the github-actions group across 1 directory with 4 updates (#16301)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lucien Shaw <myxlc55@outlook.com>
2026-04-22 13:13:56 +08:00
萨拉托加
3a050d301a chore: 更新保全作业 2026-04-22 09:16:47 +08:00
uye
5788be68d3 Release v6.8.0-beta.2 (#16318) 2026-04-22 06:49:01 +08:00
github-actions[bot]
0487ff3288 docs: Auto Update Changelogs of v6.8.0-beta.2 (#16324)
* docs: Auto Generate Changelog of Release v6.8.0-beta.2

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-04-22 06:47:56 +08:00
uye
478de0cccb fix: updater utf8 解析 2026-04-22 05:06:48 +08:00
uye
b7598d8f66 ci: ci 和 nightly 打出来的包不带 updater 2026-04-22 03:40:12 +08:00
uye
4ce5e9bf97 rft: 外部更新使用分离的 updater (#16326)
* rft: 外部更新使用分离的 updater

* fix: review

* chore: 调整注释

* chore: 调整提示文本
2026-04-22 02:50:13 +08:00
uye
e68a07feff fix: warnings 2026-04-21 10:36:53 +08:00
uye
9b7624da39 rft: 外部更新不再读配置 2026-04-21 10:20:12 +08:00
status102
7df2736fbc chore(wpf): 注释推错了 2026-04-21 10:09:14 +08:00
uye
92192d969b rft: 简化更新代码 2026-04-21 10:04:44 +08:00
status102
3645360869 fix(wpf): 描述误导 2026-04-21 09:44:19 +08:00
uye
f607149e4c rft: 涉及 dll 的更新使用外部更新 2026-04-21 09:21:27 +08:00
github-actions[bot]
a3fd3055c0 chore: Auto Update Game Resources - 2026-04-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24696524499

[skip changelog]
2026-04-20 23:56:57 +00:00
github-actions[bot]
d9991239b7 chore: Auto Templates Optimization
Triggered by af783dd558

[skip changelog]
2026-04-20 23:37:10 +00:00
travellerse
af783dd558 feat: 线索交流时先移除所有放置的线索 (#16054)
* feat: 线索交流时先移除所有放置的线索

* feat: 线索过多时向下滑动线索列表

* feat: 优化重试机制以处理线索过多情况

* perf: 优化移除线索逻辑

* fix: 线索板为空时移除线索视为成功
2026-04-21 07:36:43 +08:00
uye
df92aa2716 chore: 调整手动更新方法描述 2026-04-21 07:30:58 +08:00
uye
0336b45de8 feat: 启动时判断版本是否一致 2026-04-21 07:09:13 +08:00
uye
7bd54ce7e9 fix: 基建开启设施无法保存 2026-04-21 06:13:19 +08:00
uye
b355c6cbc5 ci: 单引号 2026-04-21 05:43:03 +08:00
uye
42473f1ede rft: 重构更新逻辑,允许拖入指定名称的压缩包进行更新 (#16308)
* rft: 重构更新

* feat: 允许拖入指定名称的压缩包进行更新

* chore: 添加日志

* chore: 更改完整包更新逻辑

* chore: 简化代码,调整注释
2026-04-21 05:33:24 +08:00
github-actions[bot]
b3f9ecc259 chore: Auto Update Game Resources - 2026-04-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24688942932

[skip changelog]
2026-04-20 20:34:27 +00:00
status102
e0564099b2 fix: index越界 2026-04-20 10:12:25 +08:00
github-actions[bot]
5b6dfc3d50 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24639205418
[skip changelog]
2026-04-19 21:11:48 +00:00
Alex Gu
d8df4e753e fix: macOS PlayTools/SCK 几处小修正 (#16276)
fix: macOS 相关几处小修正

- PlayToolsController: screencap_rgba/screencap_bgr/toucher_commit 调用
  open() 时未检查返回值,连接失败时继续操作会写坏的 socket
- PlayToolsController: start_game() 日志写成了 InputText,应该是 StartGame
- OcrPack: macOS 分支日志里残留了多余的 "rec" 字样
- MacSCKHelper: 析构时 stopCapture 是异步的,没等回调完成就释放了
  stream/output/queue,可能踩到野指针;改用信号量等停完再释放
2026-04-19 23:18:27 +08:00
status102
8b287f36c7 fix: 干员库存识别返回错误id 2026-04-19 21:09:19 +08:00
HX3N
39960ed8ef i18n: KR UseExpireMedicineForActivity 2026-04-19 16:45:46 +09:00
soundofautumn
1e0d04fe48 feat: 新增吃指定天数过期的理智药 (#13849)
* chore: 格式化

i18n: 日志本地化

# Conflicts:
#	src/MaaWpfGui/Main/AsstProxy.cs
#	src/MaaWpfGui/Res/Localizations/en-us.xaml
#	src/MaaWpfGui/Res/Localizations/ko-kr.xaml
#	src/MaaWpfGui/Res/Localizations/zh-tw.xaml

feat: 删除48小时选项

# Conflicts:
#	src/MaaWpfGui/Constants/ConfigurationKeys.cs
#	src/MaaWpfGui/Res/Localizations/en-us.xaml
#	src/MaaWpfGui/Res/Localizations/ja-jp.xaml
#	src/MaaWpfGui/Res/Localizations/ko-kr.xaml
#	src/MaaWpfGui/Res/Localizations/zh-cn.xaml
#	src/MaaWpfGui/Res/Localizations/zh-tw.xaml
#	src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs
#	src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml

feat: wpf添加吃N天理智药的选项

# Conflicts:
#	src/MaaWpfGui/Constants/ConfigurationKeys.cs
#	src/MaaWpfGui/Res/Localizations/zh-cn.xaml
#	src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs
#	src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml

feat: api兼容

chore: 添加注释

feat: deprecated提示

feat: 每次执行任务时修改expiring_task

feat: 支持i18n

feat: 修改expiring_task

feat: 新增吃几天之内的过期药的接口

# Conflicts:
#	src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs

* fix: ocr require

* rft: 参数迁移

* rft: core结构完善

* feat: Wpf支持

* fix: 还原 StageManager中的天书, 刷理智中使用 n+标识鹰历天书

* perf: 下拉选小时

* i18n: 占位

* i18n: wpf

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2026-04-19 10:59:30 +08:00
lhhxxxxx
1a689cbf0b feat: 添加单元测试框架和验证角色分配算法的测试用例 (#16245) 2026-04-18 20:48:29 +08:00
github-actions[bot]
110db7ab85 chore: Auto Templates Optimization
Triggered by d88d4ad484

[skip changelog]
2026-04-18 08:39:50 +00:00
HY
d88d4ad484 chore: 繁中服宿舍截圖 & 部分 OCR 內容 (#16298)
close #16272

## Summary by Sourcery

更新 Roguelike 任务资源,为 JieGarden 和基础任务添加新的繁体中文内容和截图。

增强内容:
- 刷新 Roguelike JieGarden 任务配置,以纳入更新后的资源和文本。
- 调整通用的 Roguelike 基础任务定义,使其与新的繁体中文本地化数据保持一致。
- 更新整体 Roguelike 任务列表元数据,以引用新增和已更新的任务资源。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Update Roguelike task resources for JieGarden and base tasks with new
Traditional Chinese content and screenshots.

Enhancements:
- Refresh Roguelike JieGarden task configuration to incorporate updated
assets and text.
- Adjust shared Roguelike base task definitions to align with new
Traditional Chinese localization data.
- Update overall Roguelike task list metadata to reference the new and
updated task resources.

</details>
2026-04-18 10:39:26 +02:00
Leo91314
8e4e4c16ee docs: add FAQ guidance for Windows Defender false positives (#16145) 2026-04-18 10:48:33 +08:00
github-actions[bot]
d9c793cfd3 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24587013396
[skip changelog]
2026-04-17 21:16:33 +00:00
Yi Zhang
733ce5bd81 fix: baseList 无法编译的问题 (#16293)
fix: baseList无法编译的问题
2026-04-17 22:51:42 +08:00
Frog Chen
50000b988a feat: AVD截图增强的售后(文档、CI变更等) (#16031)
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2026-04-17 22:38:56 +08:00
Halo
98dd6f7ba1 feat(Avalonia): V0.2 新构建跨平台前端界面MAAUnified,合并代码请求 (#16048)
* feat(MaaUnified): MaaUnified构建完成,作为submodule加入

* fix(MaaUnified): 修复自动构建时 submodule拉取错误问题

* feat(MaaUnified): MaaUnified submodule更换为组织仓库

* ci: do not fetch useless module

---------

Co-authored-by: MistEO <mistereo@hotmail.com>
2026-04-17 22:33:33 +08:00
Status102
9fd6602f11 feat(wpf): 配置存储支持条件优化 (#15850) 2026-04-17 13:48:54 +08:00
SherkeyXD
4e45915f37 feat: 界园肉鸽月度小队和深入调查 (#16271)
* feat: 界园肉鸽月度小队和深入调查

* feat: 月度小队和深入调查ui隐藏不需要的选项
2026-04-17 11:04:24 +08:00
Constrat
98f9fcfe4f Release v6.8.0-beta.1 (#16284) 2026-04-16 22:07:46 +02:00
github-actions[bot]
857d5d5f37 docs: Auto Update Changelogs of v6.8.0-beta.1 (#16285)
* docs: Auto Generate Changelog of Release v6.8.0-beta.1

* i18n: quick and dirty EN (it's just a beta)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2026-04-16 21:42:32 +02:00
Constrat
4d08a2cdbd chore: implement Quickly Place Clues for Global (#14966) 2026-04-16 14:03:44 +02:00
Constrat
52157f505c i18n: EN 2026-04-16 12:59:48 +02:00
Constrat
84b7ed59d9 chore: EN OS minigame (#16283)
* feat: minigame

* fix: typo

* fix: typo optimized
2026-04-16 12:51:55 +02:00
status102
9ce2794841 ci: 将.Net SDK限制置于CI内, 以便于本地开发 2026-04-16 09:42:08 +08:00
uye
a627c68485 ci: dotnet Security patch Update SDK version from 10.0.201 to 10.0.202 2026-04-16 00:31:08 +08:00
status102
2a5cdf24e7 perf: 自动编队预编队后检查选中情况 2026-04-16 00:13:02 +08:00
status102
0772aa9168 chore: 加点注释
[skip changelog]
2026-04-16 00:12:45 +08:00
github-actions[bot]
3180374a19 feat: Update Submodules MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24425274742
[skip changelog]
2026-04-14 22:06:53 +00:00
晓丶梦丶仁
a1b6f0e9bb fix: KR OSChapterToOS OCR 2026-04-14 22:34:17 +08:00
github-actions[bot]
a852ab31b0 chore: Auto Templates Optimization
Triggered by 757cfbf99a

[skip changelog]
2026-04-14 14:28:42 +00:00
uye
757cfbf99a fix: yj 怎么还暗改老主题
fix #16218
2026-04-14 22:28:12 +08:00
Manicsteiner
7ed7d8af92 chore: YostarJP OS stages and more ocr 2026-04-14 22:21:13 +08:00
github-actions[bot]
b8f279abfa chore: Auto Templates Optimization
Triggered by 4443367709

[skip changelog]
2026-04-14 14:10:54 +00:00
HX3N
4443367709 chore: YostarKR OS ocr and minigame (#16268)
* chore: KR OS stage

* chore: minigame placeholder

* chore: MiniGame OS

* chore: ocr edit

* i18n: MiniGame OS
2026-04-14 22:10:00 +08:00
Manicsteiner
32805735ed chore: YostarJP OS ocr and minigame (#16267) 2026-04-14 22:09:33 +08:00
github-actions[bot]
b8a052fc88 chore: Auto Update Game Resources - 2026-04-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24399489743

[skip changelog]
2026-04-14 12:42:59 +00:00
github-actions[bot]
db35bf16c8 chore: Auto Update Game Resources - 2026-04-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24389664505

[skip changelog]
2026-04-14 08:45:37 +00:00
github-actions[bot]
5cb72d7d64 chore: Auto Update Game Resources - 2026-04-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24381737109

[skip changelog]
2026-04-14 04:59:05 +00:00
Reverse0xCC
5b75f1caed chore: 肉鸽添加怒潮凛冬招募逻辑 (#16217)
* chore: 肉鸽添加怒潮凛冬招募逻辑

* chore: 肉鸽添加怒潮凛冬招募逻辑

* chore: 肉鸽添加怒潮凛冬招募逻辑

* chore: 肉鸽添加怒潮凛冬招募逻辑

* chore: 肉鸽添加怒潮凛冬招募逻辑
2026-04-13 23:05:50 +08:00
drway
98070cb7f7 chore: 添加贝洛内、怒潮凛冬基建技能数值 (#16260)
* chore: 添加贝洛内、怒潮凛冬基建技能数值

添加贝洛内、怒潮凛冬基建技能数值

* fix: i am stupid
2026-04-13 23:05:11 +08:00
晓丶梦丶仁
9bfa2dab87 chore: git ignore 添加 claude code 2026-04-13 17:32:58 +08:00
github-actions[bot]
1d54789dd5 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24316471820
[skip changelog]
2026-04-12 21:10:27 +00:00
MistEO
01a26f207d Revert "ci: issue bot skills 添加 at 符号检测 (#16239)"
This reverts commit 578ffc266e.
2026-04-12 19:30:53 +08:00
uye
e8d5982b60 perf: 优化提示元素展示效果 2026-04-12 19:27:29 +08:00
Goat Boring(山羊博宁88)
f2dcefda54 docs: i18n for install.md (#16214)
* docs: i18n for install.md

* docs: merge ABA2396 & sourcery-ai[bot] revises

Apply suggestion from @sourcery-ai[bot]

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

* docs: 略作修改

* i18n: ko-kr

* docs: Apply changes

* i18n: JP

* i18n: zh-tw

* chore: 哭阿刪多了 補回來

* i18n: ko-kr edit

ref 4efd3ac67f

* i18n: EN fix

---------

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2026-04-12 12:37:02 +02:00
status102
0266db8144 chore: 存在DEBUG.txt时MaaCore额外在Log开始时额外输出提示
[skip changelog]
2026-04-12 13:51:24 +08:00
status102
d44cd057a4 fix(wpf): 自动战斗鼠标长按分页时, 可能会反复触发切换 2026-04-12 13:51:24 +08:00
status102
c825f823de Revert "fix: prts.plus改为zoot.plus"
This reverts commit d9b6eb7020.
2026-04-12 13:51:23 +08:00
Constrat
8c51447c86 fix: EN IS6 DLC1 regexes 2026-04-11 13:29:49 +02:00
status102
25481d16ca perf: 作业版本号需求允许省略patch 2026-04-11 16:34:37 +08:00
晓丶梦丶仁
578ffc266e ci: issue bot skills 添加 at 符号检测 (#16239)
* ci: issue bot skills 添加 at 符号检测

* fix: review
2026-04-11 13:24:07 +08:00
github-actions[bot]
4173760050 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/24264327755
[skip changelog]
2026-04-10 21:11:51 +00:00
status102
a98df31323 perf: 使用SemaphoreSlim替换Lock 2026-04-11 00:07:41 +08:00
status102
eac28656e4 chore: AnnihilationName 2026-04-11 00:07:40 +08:00
status102
bc0d5c8707 fix: 在定时任务触发时, 固定等待UpdateStageList 2026-04-11 00:07:40 +08:00
uye
f479192400 chore: pc 端禁用完成后退出模拟器 2026-04-10 22:49:33 +08:00
uye
4d58dd5f97 perf: 分辨率不支持时打印当前分辨率 2026-04-10 22:36:07 +08:00
EzraRT
9c96a11ba1 perf: 移除 NotificationImplWinRT 中二次进入 UI 线程 (#16196)
rft: 优化 ToastNotification 处理
2026-04-10 22:12:18 +08:00
lhhxxxxx
7e93a0dacd perf: 提升 Algorithm.hpp 算法性能及其鲁棒性 (#16235) 2026-04-10 22:07:25 +08:00
status102
2746e7a645 fix: 修复LinkStart期间UpdateStageList内进入SetFightParams导致死锁
修复后依旧存在UpdateStageList过晚导致定时启动时, 关卡信息未更新的可能. 不过活动信息自带过期时间, 应该不会触发问题
2026-04-10 13:48:24 +08:00
435 changed files with 50135 additions and 2333 deletions

11
.clangd
View File

@@ -1,5 +1,14 @@
If:
PathMatch: unit_test/.*\.(c|cc|cpp|cxx|h|hh|hpp)$
CompileFlags:
CompilationDatabase: build/unit_test
Add: [-Wunused-variables]
---
If:
PathExclude: unit_test/.*\.(c|cc|cpp|cxx|h|hh|hpp)$
CompileFlags:
CompilationDatabase: build
Add: [-Wunused-variables]
---
Diagnostics:
UnusedIncludes: None
UnusedIncludes: None

View File

@@ -45,8 +45,6 @@ body:
**若待上传压缩包大于 25MB请转而上传该压缩包同日期文件夹中的若干小压缩包**
**若为 MAA 闪退问题,如果 %LOCALAPPDATA%\CrashDumps 中存在 MAA.exe.dmp 文件,请一并上传**
若正在使用 macOS请点击屏幕左上角的“文件”点击“打开日志文件夹”
placeholder: |
请确认上传文件前已关闭 MAA
validations:
required: true
- type: textarea

View File

@@ -49,8 +49,6 @@ body:
**请在 MAA -> 设置 -> 问题反馈中找到生成日志压缩包按钮,点击并上传压缩包**
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
placeholder: |
请确认上传文件前已关闭 MAA
validations:
required: true
- type: textarea

View File

@@ -49,8 +49,6 @@ body:
**请在 MAA -> 设置 -> 问题反馈中找到生成日志压缩包按钮,点击并上传压缩包**
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
placeholder: |
请确认上传文件前已关闭 MAA
validations:
required: true
- type: textarea

View File

@@ -47,8 +47,6 @@ body:
**If the archive to upload is larger than 25MB, please upload smaller archives from the same date folder instead.**
**If the issue is related to MAA crashing, please upload the MAA.exe.dmp file found in %LOCALAPPDATA%\CrashDumps if it exists**
If you are using macOS, please click the "File" option in the top-left corner of the screen, then click "Open Log Folder".
placeholder: |
Please confirm that MAA is not running before uploading files.
validations:
required: true
- type: textarea

View File

@@ -0,0 +1,68 @@
#!/usr/bin/env bash
set -euo pipefail
mode="init"
depth=""
declare -a paths=()
while (($# > 0)); do
case "$1" in
--init)
mode="init"
shift
;;
--remote)
mode="remote"
shift
;;
--depth)
depth="$2"
shift 2
;;
--)
shift
paths+=("$@")
break
;;
*)
paths+=("$1")
shift
;;
esac
done
if ((${#paths[@]} == 0)); then
echo "Usage: $0 [--init|--remote] [--depth N] path [path ...]" >&2
exit 64
fi
is_submodule_path() {
local path="$1"
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' 2>/dev/null \
| awk '{ print $2 }' \
| grep -Fxq "$path"
}
for path in "${paths[@]}"; do
if ! is_submodule_path "$path"; then
echo "Skipping $path: not configured as a submodule in .gitmodules."
continue
fi
if [[ "$mode" == "remote" ]]; then
echo "Updating submodule: $path"
git submodule update --remote "$path"
continue
fi
if [[ -n "$depth" ]]; then
echo "Initializing submodule: $path (depth=$depth)"
git submodule update --init --depth "$depth" "$path"
continue
fi
echo "Initializing submodule: $path"
git submodule update --init "$path"
done

189
.github/workflows/ci-avalonia.yml vendored Normal file
View File

@@ -0,0 +1,189 @@
name: Build MAAUnified (Avalonia + MaaCore Runtime)
on:
workflow_dispatch:
pull_request:
paths:
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
push:
branches:
- dev
paths:
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
jobs:
meta:
name: Resolve version tag
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.out.outputs.tag }}
steps:
- id: out
run: |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
else
echo "tag=preview-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
fi
build:
name: Build ${{ matrix.name }}
needs: meta
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: windows-x64
os: windows-latest
rid: win-x64
self_contained: true
cmake_preset: windows-publish-x64
maadeps_triplet: x64-windows
- name: linux-x64
os: ubuntu-latest
rid: linux-x64
self_contained: true
cmake_preset: linux-publish-x64
maadeps_triplet: x64-linux
- name: macos-x64
os: macos-latest
rid: osx-x64
self_contained: true
cmake_preset: macos-publish-x64
maadeps_triplet: x64-osx
steps:
- uses: actions/checkout@v6
- name: Fetch required submodules
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MAAUnified src/MaaUtils
- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: "10.0.x"
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Restore app
run: dotnet restore src/MAAUnified/App/MAAUnified.App.csproj
- name: Restore tests
if: matrix.name != 'macos-x64'
run: dotnet restore src/MAAUnified/Tests/MAAUnified.Tests.csproj
- name: Run Linux baseline consistency gate
if: matrix.name == 'linux-x64'
run: >
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
--results-directory TestResults/${{ matrix.name }}
--logger "trx;LogFileName=baseline-consistency.trx"
--filter "FullyQualifiedName~BaselineContractTests|FullyQualifiedName~BaselineCoverageTests|FullyQualifiedName~BaselineRenderSyncTests|FullyQualifiedName~ParityMatrixSyncTests"
- name: Run Linux full MAAUnified test gate
if: matrix.name == 'linux-x64'
run: >
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
--results-directory TestResults/${{ matrix.name }}
--logger "trx;LogFileName=full-maaunified-tests.trx"
- name: Run Windows platform capability contract gate
if: matrix.name == 'windows-x64'
run: >
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
--results-directory TestResults/${{ matrix.name }}
--logger "trx;LogFileName=platform-capability-contract.trx"
--filter "FullyQualifiedName~PlatformCapabilityContractTests"
- name: Run Windows native capability smoke gate
if: matrix.name == 'windows-x64'
run: >
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
--results-directory TestResults/${{ matrix.name }}
--logger "trx;LogFileName=platform-windows-native-smoke.trx"
--filter "FullyQualifiedName~PlatformWindowsNativeSmokeTests"
- name: Upload test result artifacts on failure
if: failure() && matrix.name != 'macos-x64'
uses: actions/upload-artifact@v7
with:
name: MAAUnified-TestResults-${{ matrix.name }}
path: TestResults/${{ matrix.name }}/*.trx
if-no-files-found: ignore
- name: Bootstrap MaaDeps
run: python tools/maadeps-download.py ${{ matrix.maadeps_triplet }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build MaaCore runtime
run: |
cmake --preset ${{ matrix.cmake_preset }} -DINSTALL_PYTHON=OFF -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build --preset ${{ matrix.cmake_preset }}
cmake --install build --config RelWithDebInfo
- name: Publish MAAUnified app
run: dotnet publish src/MAAUnified/App/MAAUnified.App.csproj -c Release -r ${{ matrix.rid }} --self-contained ${{ matrix.self_contained }} -o publish
- name: Merge MaaCore runtime (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Copy-Item install\* publish\ -Recurse -Force
if (!(Test-Path "publish\MaaCore.dll")) { throw "MaaCore.dll not found in publish output." }
if (!(Test-Path "publish\resource")) { throw "resource directory not found in publish output." }
- name: Merge MaaCore runtime (Unix)
if: runner.os != 'Windows'
shell: bash
run: |
cp -a install/. publish/
if [[ "$RUNNER_OS" == "Linux" ]]; then
test -f publish/libMaaCore.so
else
test -f publish/libMaaCore.dylib
fi
test -d publish/resource
- name: Package (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
New-Item -ItemType Directory -Path release -Force | Out-Null
$name = "MAAUnified-${{ needs.meta.outputs.tag }}-${{ matrix.name }}"
Compress-Archive -Path publish\* -DestinationPath "release\$name.zip"
- name: Package (Unix)
if: runner.os != 'Windows'
shell: bash
run: |
mkdir -p release
name="MAAUnified-${{ needs.meta.outputs.tag }}-${{ matrix.name }}"
tar -czf "release/${name}.tar.gz" -C publish .
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: MAAUnified-${{ matrix.name }}
path: release/*

View File

@@ -110,9 +110,8 @@ jobs:
show-progress: false
- name: Fetch submodules
run: |
git submodule update --init --depth 1 src/MaaUtils
git submodule update --init --depth 1 3rdparty/EmulatorExtras
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras
- name: Cache MaaDeps
id: cache-maadeps
@@ -134,22 +133,27 @@ jobs:
run: |
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
cmake --build build --target MAA.Updater --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
cmake --install build --config RelWithDebInfo
- name: Download MaaFramework
if: matrix.arch == 'x64'
uses: robinraju/release-downloader@v1
with:
repository: MaaXYZ/MaaFramework
tag: v5.9.2
fileName: "*win-x86_64*.zip"
fileName: ${{ matrix.arch == 'arm64' && '*win-aarch64*.zip' || '*win-x86_64*.zip' }}
extract: true
out-file-path: MaaFramework-temp
- name: Copy MaaWin32ControlUnit
if: matrix.arch == 'x64'
- name: Copy ControlUnits
run: |
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
cp MaaFramework-temp/bin/*AdbControlUnit* install/
- name: Generate global.json
shell: bash
run: |
echo '{"sdk":{"version":"10.0.203","rollForward":"disable"}}' > global.json
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
@@ -212,6 +216,7 @@ jobs:
rm -rf install/*.pdb
rm -rf install/msvc-debug
rm -rf install/*.h
rm -rf install/*.bak
cp tools/DependencySetup_依赖库安装.bat install
@@ -241,10 +246,8 @@ jobs:
show-progress: false
- name: Fetch submodules
run: |
git submodule update --init --depth 1 src/MaaUtils
git submodule update --init --depth 1 3rdparty/EmulatorExtras
git submodule update --init --depth 1 src/maa-cli
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras src/maa-cli
- name: Cache MaaDeps
id: cache-maadeps
@@ -269,6 +272,19 @@ jobs:
env:
CLICOLOR_FORCE: 1
- name: Download MaaFramework
uses: robinraju/release-downloader@v1
with:
repository: MaaXYZ/MaaFramework
latest: true
fileName: '*linux-${{ matrix.arch }}*.zip'
extract: true
out-file-path: MaaFramework-temp
- name: Copy ControlUnits
run: |
cp MaaFramework-temp/bin/*AdbControlUnit* install/
- name: Setup cross compile toolchains for CLI
uses: ./src/maa-cli/.github/actions/setup
with:
@@ -348,8 +364,8 @@ jobs:
show-progress: false
- name: Fetch submodules
run: |
git submodule update --init --depth 1 src/MaaUtils
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
# ninja 1.13.1 is already installed and up-to-date.
# - name: Install dependencies
@@ -376,6 +392,19 @@ jobs:
cmake --build --preset ${{ matrix.arch == 'x86_64' && 'macos-publish-x64' || 'macos-publish-arm64' }} --parallel $(sysctl -n hw.logicalcpu)
cmake --install build --config RelWithDebInfo
- name: Download MaaFramework
uses: robinraju/release-downloader@v1
with:
repository: MaaXYZ/MaaFramework
latest: true
fileName: ${{ matrix.arch == 'x86_64' && '*macos-x86_64*.zip' || '*macos-aarch64*.zip' }}
extract: true
out-file-path: MaaFramework-temp
- name: Copy ControlUnits
run: |
cp MaaFramework-temp/bin/*AdbControlUnit* install/
- name: Upload MAA to GitHub
uses: actions/upload-artifact@v7
with:
@@ -416,14 +445,14 @@ jobs:
- name: Install Developer ID certificate
if: startsWith(github.ref, 'refs/tags/v')
uses: apple-actions/import-codesign-certs@v6
uses: apple-actions/import-codesign-certs@v7
with:
p12-file-base64: ${{ secrets.HGUANDL_SIGN_CERT_P12 }}
p12-password: ${{ secrets.HGUANDL_SIGN_CERT_PASSWD }}
- name: Download provisioning profiles
if: startsWith(github.ref, 'refs/tags/v')
uses: apple-actions/download-provisioning-profiles@v5
uses: apple-actions/download-provisioning-profiles@v6
with:
bundle-id: "com.hguandl.MeoAsstMac"
issuer-id: ${{ secrets.HGUANDL_APPSTORE_ISSUER }}
@@ -562,7 +591,7 @@ jobs:
find . -type f | while read f; do mv -fvt . $f; done
- name: Publish release to GitHub
uses: softprops/action-gh-release@v2.6.1
uses: softprops/action-gh-release@v3.0.0
with:
body_path: CHANGELOG.md
files: |

View File

@@ -14,7 +14,7 @@ jobs:
steps:
- name: Check for duplicate issues in last hour
id: duplicate-check
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
@@ -66,7 +66,7 @@ jobs:
- name: Check for issue checkboxes
id: unread-checkbox-check
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
// 找不到###就算了
@@ -89,7 +89,7 @@ jobs:
- name: Close low-quality issue
if: steps.unread-checkbox-check.outputs.result == 'true'
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
await github.rest.issues.update({
@@ -116,7 +116,7 @@ jobs:
- name: Fold checkboxes
if: steps.unread-checkbox-check.outputs.result == 'false'
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
const originalBody = context.payload.issue.body;

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clean up previous comment
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
const { data: comments } = await github.rest.issues.listComments({
@@ -29,7 +29,7 @@ jobs:
});
}
- name: Check commits
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
const { data: commits } = await github.rest.pulls.listCommits({

View File

@@ -52,9 +52,8 @@ jobs:
git fetch --depth=250 --tags
- name: Fetch submodules
run: |
git submodule update --init --depth 1 src/MaaUtils
git submodule update --init --depth 1 3rdparty/EmulatorExtras
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras
- name: Checkout ref (if provided)
if: inputs.ref != ''
@@ -189,6 +188,7 @@ jobs:
run: |
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ steps.set_tag.outputs.tag }}'
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
cmake --build build --target MAA.Updater --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
cmake --install build --config RelWithDebInfo
- name: Download MaaFramework
@@ -206,6 +206,11 @@ jobs:
run: |
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
- name: Generate global.json
shell: bash
run: |
echo '{"sdk":{"version":"10.0.203","rollForward":"disable"}}' > global.json
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
with:

View File

@@ -129,7 +129,7 @@ jobs:
maa_cos:
name: Upload to MAA COS
needs: meta
if: ${{ github.event.inputs.maa_cos == 'true' && !contains(needs.meta.outputs.RELEASE_TAG, '-') }}
if: false
runs-on: ubuntu-latest
continue-on-error: true
env:
@@ -145,9 +145,9 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Upload to COS
uses: zkqiang/tencent-cos-action@v0.1.0
uses: zkqiang/tencent-cos-action@v1.0.0
with:
args: upload -rs downloads/${{ env.FILENAME }} MAA/${{ env.FILENAME }}
args: sync -r downloads/${{ env.FILENAME }} cos://default/MAA/${{ env.FILENAME }}
secret_id: ${{ secrets.MISTEO_MAA_COS_SECRET_ID }}
secret_key: ${{ secrets.MISTEO_MAA_COS_SECRET_KEY }}
bucket: ${{ secrets.MISTEO_MAA_COS_BUCKET }}

View File

@@ -165,8 +165,8 @@ jobs:
- name: Fetch submodules
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
git submodule update --init --depth 1 src/MaaUtils
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
- name: Cache MaaDeps
if: steps.resupd-cache.outputs.cache-hit != 'true'
@@ -204,7 +204,7 @@ jobs:
./tools/ResourceUpdater/res_updater
- name: Wait for resource cloning
uses: yogeshlonkar/wait-for-jobs@v0
uses: yogeshlonkar/wait-for-jobs@v1
with:
ignore-skipped: 'false'
jobs: |
@@ -235,10 +235,23 @@ jobs:
run: |
./tools/ResourceUpdater/res_updater
- name: Setup python
uses: actions/setup-python@v6
with:
python-version: "3.11"
cache: pip
cache-dependency-path: |
tools/TaskSorter/requirements.txt
tools/OptimizeTemplates/requirements.txt
- name: Install TaskSorter dependencies
run: |
python -m pip install -r tools/TaskSorter/requirements.txt
- name: Sort tasks
id: task_sorting
run: |
python3 tools/TaskSorter/TaskSorter.py
python tools/TaskSorter/TaskSorter.py
echo "gitdiff=$(echo $(git diff --name-only --diff-filter=ACM 2>/dev/null | grep '\.json$'))" >> $GITHUB_OUTPUT
- name: Run prettier
@@ -251,25 +264,10 @@ jobs:
run: |
sh ./tools/ResourceUpdater/version.sh
- name: Setup python
if: steps.update_version.outputs.contains_png == 'True'
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Cache python packages
if: always() && steps.update_version.outputs.contains_png == 'True'
id: cache_python
uses: actions/cache@v5
continue-on-error: true
with:
path: ${{ env.pythonLocation }}/Lib/site-packages
key: ${{ runner.os }}-pip-optimize-templates-${{ hashFiles('./tools/OptimizeTemplates/requirements.txt') }}
- name: Install dependencies
if: steps.cache_python.outputs.cache-hit != 'true' && steps.update_version.outputs.contains_png == 'True'
if: steps.update_version.outputs.contains_png == 'True'
run: |
pip install -r tools/OptimizeTemplates/requirements.txt
python -m pip install -r tools/OptimizeTemplates/requirements.txt
- name: Setup oxipng
if: steps.update_version.outputs.contains_png == 'True'
@@ -280,7 +278,7 @@ jobs:
- name: Optimize png images
if: steps.update_version.outputs.contains_png == 'True'
run: |
python3 tools/OptimizeTemplates/optimize_templates.py --no-cleanup -p resource/template/items/ resource/template/infrast/
python tools/OptimizeTemplates/optimize_templates.py --no-cleanup -p resource/template/items/ resource/template/infrast/
- name: Commit changes
if: steps.update_version.outputs.changes == 'True'

View File

@@ -70,8 +70,8 @@ jobs:
- name: Fetch submodules
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
git submodule update --init --depth 1 src/MaaUtils
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
- name: Cache MaaDeps
if: steps.smoke-cache.outputs.cache-hit != 'true'

122
.github/workflows/unit-tests.yml vendored Normal file
View File

@@ -0,0 +1,122 @@
name: Unit Tests
on:
# push:
# branches:
# - "dev-v2"
# paths:
# - ".github/workflows/unit-tests.yml"
# - "unit_test/**"
# - "src/**"
# pull_request:
# paths:
# - ".github/workflows/unit-tests.yml"
# - "unit_test/**"
# - "src/**"
workflow_dispatch:
permissions:
contents: read
jobs:
select-tests:
name: Select Unit Test Suites
runs-on: ubuntu-latest
outputs:
has_tests: ${{ steps.select.outputs.has_tests }}
matrix: ${{ steps.select.outputs.matrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
show-progress: false
- name: Select affected test suites
id: select
env:
EVENT_NAME: ${{ github.event_name }}
BEFORE_SHA: ${{ github.event.before }}
HEAD_SHA: ${{ github.sha }}
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
python3 - <<'PY'
import json
import os
import subprocess
def matches(path: str, rule: str) -> bool:
if rule.endswith('/**'):
return path.startswith(rule[:-3])
return path == rule
with open('unit_test/test-suites.json', encoding='utf-8') as f:
mapping = json.load(f)
event_name = os.environ['EVENT_NAME']
changed_files = []
run_all = event_name == 'workflow_dispatch'
if not run_all:
if event_name == 'pull_request':
base_sha = os.environ['PR_BASE_SHA']
head_sha = os.environ['PR_HEAD_SHA']
else:
base_sha = os.environ['BEFORE_SHA']
head_sha = os.environ['HEAD_SHA']
if not base_sha or set(base_sha) == {'0'}:
run_all = True
else:
diff = subprocess.check_output(
['git', 'diff', '--name-only', base_sha, head_sha],
text=True,
)
changed_files = [line for line in diff.splitlines() if line]
print('Changed files:')
for file_path in changed_files:
print(f' - {file_path}')
if run_all or any(any(matches(path, rule) for rule in mapping['runAllOnChanges']) for path in changed_files):
selected = mapping['suites']
else:
selected = []
for suite in mapping['suites']:
if any(any(matches(path, rule) for rule in suite['paths']) for path in changed_files):
selected.append(suite)
matrix = {'suite': selected}
with open(os.environ['GITHUB_OUTPUT'], 'a', encoding='utf-8') as f:
f.write(f"has_tests={'true' if selected else 'false'}\n")
f.write(f"matrix={json.dumps(matrix, separators=(',', ':'))}\n")
PY
unit-tests:
name: ${{ matrix.suite.name }} Unit Tests
needs: select-tests
if: ${{ needs.select-tests.outputs.has_tests == 'true' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.select-tests.outputs.matrix) }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
show-progress: false
- name: Configure unit tests
run: |
cmake -S unit_test -B build/unit_test -DCMAKE_BUILD_TYPE=Release
- name: Build selected unit test target
run: |
cmake --build build/unit_test --parallel --target ${{ matrix.suite.buildTarget }}
- name: Run selected unit tests
run: |
ctest --test-dir build/unit_test --output-on-failure -R '${{ matrix.suite.ctestRegex }}'

View File

@@ -17,15 +17,14 @@ jobs:
submodules: true
- name: Update submodules
run: |
git submodule update --remote src/MaaMacGui
git submodule update --remote src/maa-cli
shell: bash
run: bash ./.github/scripts/sync-optional-submodules.sh --remote src/MAAUnified src/MaaMacGui src/maa-cli
- name: Commit and push changes
uses: actions-js/push@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "feat: Update Submodules MaaMacGui, maa-cli
message: "feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}

4
.gitignore vendored
View File

@@ -420,6 +420,10 @@ FodyWeavers.xsd
# Local History for Visual Studio Code
.history/
# Claude Code
.claude/
!.claude/skills/
# Windows Installer files from build outputs
*.cab
*.msi

4
.gitmodules vendored
View File

@@ -13,3 +13,7 @@
[submodule "src/MaaUtils"]
path = src/MaaUtils
url = https://github.com/MaaXYZ/MaaUtils
[submodule "src/MAAUnified"]
path = src/MAAUnified
url = https://github.com/MaaAssistantArknights/MaaUnified.git
branch = main

View File

@@ -1,32 +1,147 @@
## v6.7.1
## v6.9.2
### 新增 | New
### 许愿墙前挂满愿签,牛牛顺手把更新器、作战流程和海外服体验都打磨了一遍 | Highlights
* SideStory「人们我们」导航 @SherkeyXD
* 剿灭关卡在结算时识别周限进度 (#15847) @sylw114
* restart game client when login errors (#16053) @Constrat
这一版的重点仍然是把日常使用体验打磨得更顺手、更稳定。我们一边补齐周年活动与海外服适配,一边继续清理那些会打断长时间挂机流程的细碎问题。
#### 启动流程与更新可视化
MAA 现在会在重复启动时直接唤起已经打开的主窗口,不再额外弹出警告打断操作。与此同时,更新器补上了暗色模式、进度条与控制台输出,避免后台更新时因看不到进度而被重复打开,进一步降低更新流程出问题的概率。
#### 自动作战更稳,也更懂得何时停下
这一版为关卡未解锁、剿灭未启用全权代理等场景补上了提前停止检查,也支持保存代理指挥记录,并在合成玉 0 掉落时自动结束任务。针对 5.1 七周年版本更新后理智上限调整带来的影响,本次还修复了理智汇报与代理倍率选择异常;此前生息演算容易卡住的问题,同样也是由 5.1 更新后的变更引起,现在也已一并处理。
技能识别准确率也在这一版中大幅提升。默认情况下MAA 会在 debug/skill_ready 下仅保留最近 50 次技能识别结果;如果你在自动战斗中遇到技能识别错误,欢迎及时携带日志和截图反馈。若根目录下存在 DEBUG_skill_ready.txt则会无限保存相关截图如果你愿意帮助我们训练技能识别模型可以创建该文件将错误分类的文件放入 对应标签_err 文件夹后发送至 uye[at]maa-org.net。
#### 七周年与海外服内容继续补齐
本次更新适配了七周年许愿墙、“重构”界面主题与争锋频道「绿藤城」,也补齐了 Yostar JP、EN、KR 小游戏相关的 SPA、资源与模板优化让活动期间和海外服环境下的使用体验更完整。
----
### Highlights
This release continues to focus on making everyday use smoother and more reliable. Alongside support for anniversary content and overseas servers, we kept cleaning up the small but disruptive issues that can break long unattended runs.
#### Better Launch Flow and Update Visibility
MAA now re-activates the existing main window on repeated launches instead of interrupting users with an extra warning dialog. The updater also gains dark mode, a progress bar, and console output, helping users avoid reopening it while an update is still running in the background without visible feedback.
#### More Reliable Automation, with Smarter Stop Conditions
This version adds early-stop checks for locked stages and annihilation runs without proxy enabled, and it can now save auto-command records while ending runs automatically when 0 Orundum is detected. It also fixes incorrect sanity reporting and proxy multiplier selection caused by the sanity cap changes introduced in the 5.1 anniversary update. The Reclamation Algorithm freeze issue was caused by the same 5.1 update and has been fixed as well.
Skill recognition accuracy has also been significantly improved. By default, MAA keeps only the most recent 50 skill-recognition results under debug/skill_ready. If you encounter incorrect skill recognition during auto-battle, please report it together with the relevant logs and screenshots. If DEBUG_skill_ready.txt exists in the root directory, related screenshots will be saved without limit. If you would like to help train the skill-recognition model, you can create that file, move misclassified files into the corresponding label_err folder, and send them to uye[at]maa-org.net.
#### Continued Anniversary and Overseas Server Coverage
This update adapts to the 7th anniversary wishing wall, the “Reclamation” interface theme, and the Green Vine channel in SSS. It also rounds out Yostar JP, EN, and KR minigame SPA support together with related resource and template optimizations, making event-period and overseas-server usage more complete.
----
以下是详细内容:
## v6.9.2
### 改进 | Improved
* 优化刷坍缩方式判断逻辑,在刷取到指定二级坍缩方式的下位范式时不会直接重开 @ABA2396
* 剿灭入口检测支持代理卡耗尽情况 @status102
### 修复 | Fix
* 欸我草我是啥比 @SherkeyXD
* 我是🐖 @SherkeyXD
* 繁中服基建幹員識別 (#16183) @vonnoq
* 错误的 DateTimeOffset 与 DateTime 对比 @ABA2396
* 开始唤醒流程 @status102
### 文档 | Docs
* stderr redirection no longer needed for waydroid as it's enabled by default @Constrat
* ★ correction @Constrat
* 添加 DLL 注入问题解决方案并优化 FAQ 描述 (#16404) @ocsin1
## v6.9.1
### 新增 | New
* 新增完整包更新时的强制提示,安装在根目录或部分特殊目录根目录时禁止启动与更新 (#16435) @ABA2396
### 改进 | Improved
* 支持沙盘战斗结束识别,重构战斗失败识别逻辑 (#16449) @status102
* 修正应用宝连接时额外的 ClientType 设置 @status102 @ABA2396
* 优化自动编队在 Elite 图标匹配失败或无精英化干员时的判定 @status102 @ABA2396
* 临期理智药到期时间 OCR 与处理逻辑进一步优化,遇到时效识别失败时会取消本次吃药 @status102
### 修复 | Fix
* 修复部分场景下无法自动启动游戏,以及开始唤醒后过早切换账号的问题 (#16422) @1b2c @status102
* 修复临期理智药库存位数、日期前缀与剩余时间输出等识别问题,并移除不再生效的日服 ROI 覆盖 @status102
* 修复绿票商店稳定性问题,并调整信用商店识别区域以支持 4 位数信用识别 (#16369) @Roland125 @ABA2396 @ZiyinLin
* 修复剿灭入口图片资源与结算合成玉基线识别问题 (#16458) (#16460) @Roland125
* 修复凯尔希与 GALLUS² 识别问题 @Saratoga-Official
* 修复设置指引中连接设置“每次重新检测”提示块隐藏错误 @ABA2396
* 修复自动战斗多作业模式导航 retry_time 异常 @status102
* 修复公招计数返回值,适配更精细的招募计数 (#16355) (#16371) @Roland125
* 修复若干正确性问题含肉鸽投资存款校验、pixel analyzer 灰度阈值、rect 越界裁剪、肉鸽招募时间解析、密文板识别等) @status102 @FireflySentinel
### 文档 | Docs
* 补全连接阶段的 ClientType 参数说明 @ABA2396
### 其他 | Other
* add deepwiki config @MistEO
* 优化时间对比 @ABA2396
* 延长一点干员冲突确认按钮后的等待时间 @ABA2396
* 繁中服「命運」主題 &「無憂夢囈」導航 (#16174) @momomochi987
* Revert "ci: 临时禁用 macos build" @MistEO
* 优化按钮样式切换 @ABA2396
* PC 端连接跳过数据上报 @ABA2396
## v6.9.0
### 新增 | New
* 重复启动时通过跨进程事件激活主窗口,替代弹窗警告提示 (#16363) @ABA2396
* 新增关卡未解锁代理或剿灭未启用全权代理时的错误停止检查 (#16357) @ABA2396
* 新增保存代理指挥记录功能并支持合成玉掉落检查0 掉落时自动结束任务 (#16356) @Roland125
* 掉落物识别额外输出剿灭进度信息 @status102
* 适配“重构”界面主题 (#16349) @SherkeyXD
* 支持腾讯应用宝 5.10.56.xx (#16292) @srdr0p
* 新增 updater 暗色模式支持 @ABA2396
* 新增 updater 进度条与控制台输出支持 @ABA2396
* 支持 PC 端 `完成后退出明日方舟` (#16351) @glimmertouch
* 新增争锋频道「绿藤城」支持 (#16345) @Daydreamer114
* 适配七周年许愿墙 @Copilot
* YostarJP/EN/KR MiniGame SPA @Manicsteiner @Constrat @HX3N
### 改进 | Improved
* 统一 CheckComboBox 样式 @ABA2396
* 大幅提升技能就绪识别准确率,优化技能截图保存策略 (#16393) @ABA2396
* 合并并简化任务状态逻辑 @status102
* 统一 ProcessTask 匹配命中状态更新逻辑 @status102
* 优化 1 星词条选项操作描述 @status102
* 理智上限提升至 210 @status102
* 调整完整后 `无其他 MAA` 选项绑定逻辑,不再强制勾选退出模拟器 @ABA2396
* 调整选项 `IsEnabled` 逻辑 @ABA2396
* 使用 PC 端连接方式时,自动禁用不支持的完成后操作 @ABA2396
* optimize templates yostarkr SPA @Constrat
### 修复 | Fix
* 修复 3 星 tag 标题显示异常 @ABA2396
* 修复 CheckComboBox 不显示标题的问题 @ABA2396
* 修复生息演算 5.1 更新后无法使用无存档刷分的问题 (#16402) @ABA2396
* 修复剿灭后出现升级界面导致任务无法继续的问题 (#16255) (#16370) @Roland125
* 修复干员仓储识别中升变阿米娅的识别问题 @status102
* 修复若干正确性问题(含 null check / race / clamp / retry 等 9 处) (#16332) @FireflySentinel
* 修复干员仓储识别未跳过数据查找失败干员的问题 @status102
* 修复 EN IS6 trail 正则匹配问题 @Constrat
* 修复月度小队隐藏分队选择的问题 @SherkeyXD
* 修复小游戏列表中下拉框偶现无法展开的问题 @ABA2396
* 修复蓝叠模拟器关闭失败的问题 (#16388) @lengyanyu258
* 升级结算时闪退 @ABA2396
* lower YoStarJP office mini threshold (#16390) @Rememorio
### 文档 | Docs
* 更新部分代码注释 (#16215) @JasonHuang79
### 其他 | Other
* 任务排序支持 JSONC @ABA2396
* 调整资源更新环境 @ABA2396
* 修改 issue template @ABA2396
* 更新周年月卡相关文本 @SherkeyXD

View File

@@ -34,9 +34,12 @@ target_include_directories(HeaderOnlyLibraries INTERFACE 3rdparty/include)
add_subdirectory(src/MaaCore)
if(BUILD_WPF_GUI)
add_subdirectory(src/MaaUpdater)
include_external_msproject(MaaWpfGui ${PROJECT_SOURCE_DIR}/src/MaaWpfGui/MaaWpfGui.csproj)
add_dependencies(MaaWpfGui MaaCore)
add_dependencies(MaaWpfGui MAA.Updater)
if(DEFINED ENV{VSCODE_PID})
add_custom_target(run-MaaWpfGui
COMMAND "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/MAA.exe"

View File

@@ -181,6 +181,9 @@
"publish-base",
"windows-x64"
],
"cacheVariables": {
"BUILD_WPF_GUI": "ON"
},
"$comment": [
"github actions only support Visual Studio 17 2022",
"see https://github.com/actions/runner-images/issues/13291"
@@ -194,6 +197,9 @@
"publish-base",
"windows-arm64"
],
"cacheVariables": {
"BUILD_WPF_GUI": "ON"
},
"$comment": [
"github actions only support Visual Studio 17 2022",
"see https://github.com/actions/runner-images/issues/13291"

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -78,7 +78,9 @@ We've preset several different development environments for you to choose from:
- Press F5 to run
::: tip
To debug Win32Controller (Windows window control) features, you need to manually download the corresponding platform package from [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases), and place `MaaWin32ControlUnit.dll` from the `bin` directory into MAA's DLL directory (e.g. `build/bin/Debug`). PRs for an auto-download script are welcome!
To run Win32Controller (Windows window control) / MaaFwAdbController (MaaFramework touch mode) features, you need to manually download the package for your platform from [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases), and place `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` from the `bin` directory into MAA's DLL directory (e.g. `build/bin/Debug`). PRs for an auto-download script are welcome!
To debug these features, [compile the Debug version of MaaFramework yourself](https://maafw.com/docs/4.1-BuildGuide) and use the corresponding DLLs, or it will randomly crash at breakpoints.
:::
9. Now you're ready to happily ~~mess around~~ start developing!

View File

@@ -8,7 +8,8 @@ icon: teenyicons:linux-alt-solid
**This tutorial requires readers to have some Linux environment configuration ability and programming foundation!** If you only want to directly install MAA instead of compiling it yourself, please read [User Manual - Linux Emulators and Containers](../manual/device/linux.md).
::: info Note
MAA's build method is still under discussion. The content of this tutorial may be outdated. Please refer to the scripts in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134). You can also refer to [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights), [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix).
MAA's build method is still under discussion. The content of this tutorial may be outdated. Please refer to the scripts in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A).
You can also refer to [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) or [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix).
:::
::: info
@@ -73,6 +74,8 @@ Mac can use the `tools/build_macos_universal.zsh` script for compilation. It's r
cmake --install build --prefix <target_directory>
```
4. To debug MaaFwAdbController (MaaFramework touch mode) features, you need to [compile the Debug version of MaaFramework yourself](https://maafw.com/docs/4.1-BuildGuide) and put `libMaaAdbControlUnit.so` in the installation directory.
## Integration Documentation
[~~Perhaps not really documentation~~](../protocol/integration.md)
@@ -85,8 +88,6 @@ You can refer to the implementation of `__main__` in [Python demo](https://githu
You can refer to the implementation in [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)
### C Sharp
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
### C\#
You can refer to the implementation in [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)

View File

@@ -1,5 +1,5 @@
---
order: 3
order: 4
icon: mdi:plug
---
@@ -16,6 +16,7 @@ As of MAA v5.22.3, the following emulators and connection addresses are supporte
- LDPlayer 9: `emulator-5554/5556/5558/5560`, `127.0.0.1:5555/5557/5559/5561`
- NoxPlayer: `127.0.0.1:62001/59865`
- MEmu Play: `127.0.0.1:21503`
- Tencent App Store (after 5.10.56.xx): `127.0.0.1:5555`
If detection fails, try launching MAA with UAC administrator privileges and detect again. If it still fails, refer to the manual setup instructions below and verify that your emulator and connection address are included in the list above.
@@ -57,6 +58,7 @@ Emulators running on your local machine should use addresses like `127.0.0.1:<po
- [LDPlayer 9](https://help.ldmnq.com/docs/LD9adbserver) `emulator-5554`
- [NoxPlayer](https://support.yeshen.com/zh-CN/qt/ml) `127.0.0.1:62001`
- [MEmu Play](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `127.0.0.1:21503`
- [Tencent App Store](https://sj.qq.com/faq/3878): ADB port is fixed at `127.0.0.1:5555`. ADB path example: `C:\Program Files\Tencent\Androws\Application\<version>\adb.exe`.
For other emulators, refer to [Zhao Qingqing's blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html).
@@ -180,17 +182,28 @@ Requires official or international LDPlayer 9 V9.1.32 or newer. <!-- Official V9
3. Enter the number (ID) of the corresponding emulator in the LDPlayer multi-instance manager in `Instance Number`, such as `0` for the main instance.
### AVD Screenshot Enhanced Mode
Requires Android Emulator v27.2.9 or newer. (You should be fine as long as you got the emulator after Arknights launched.)
AVD Screenshot Enhanced Mode is implemented in MaaFramework. Touch mode must be set accordingly for Screenshot Enhanced Mode to work.
1. In `Settings` - `Connection` - `Connection Preset`, select `Android Virtual Device (AVD)`.
2. For `Touch Mode`, select `MaaFramework`.
## Touch Mode
1. [Minitouch](https://github.com/DeviceFarmer/minitouch): An Android touch event handler written in C that operates on `evdev` devices and provides a Socket interface for external programs to trigger touch events and gestures. Starting with Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode.<sup>[source](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch): MAA's Java reimplementation of Minitouch that uses Android's native `InputDevice` and adds extra features. Compatibility with newer Android versions is still being tested. ~~Help us test it~~
3. Adb Input: Directly calls ADB to use Android's `input` command for touch operations. Most compatible but slowest.
4. [MaaFramework](https://maafw.com/): Delegates screenshot and touch commands to MaaFramework's control unit. Still being tested. ~~Help us test it x2~~
## ADB Lite
MAA's independent ADB Client implementation that communicates directly with the ADB Server via TCP. Compared to the original ADB, it avoids constantly launching multiple ADB processes, reducing performance overhead, but some screenshot methods aren't available.<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
We recommend enabling it, but specific pros and cons need feedback. ~~Help us test it x2~~
We recommend enabling it, but specific pros and cons need feedback. ~~Help us test it x3~~
## Running multiple MAA and emulator instances

View File

@@ -121,6 +121,8 @@ Requirements: 16:9 screen resolution larger than 720p
Recommended configuration: x86_64 architecture (R - 30 - x86_64 - Android 11.0) with MAA's Linux x64 dynamic library
Also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
Note: Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
### ⚠️ [Genymotion](https://www.genymotion.com/)

View File

@@ -35,7 +35,9 @@ Supported, but less thoroughly tested. Requires using a touch mode other than `M
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Supported, but starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
Supported; also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
From Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (Free, optimized for Apple M-series chips)
@@ -61,4 +63,6 @@ Note: On macOS, the Nox ADB binary is located at `/Applications/NoxAppPlayer.app
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Supported, but starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
Supported; also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.

View File

@@ -40,6 +40,11 @@ const fullySupport = [
note: 'Fully compatible. Need to turn on ADB Connectivity in the emulator `Settings``Advanced``Android Debug Bridge``Enable`. Known to be compatible with Hyper-V.\n\n- Recommended to download [Offline Installer](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer) to avoid slow and bundled installation; recommend installing [Android 11](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer#:~:text=To%20install%20BlueStacks%205%20Android%2011) version; to uninstall it, please use the official [Uninstall Tool](https://support.bluestacks.com/hc/en-us/articles/360057724751-How-to-uninstall-BlueStacks-5-BlueStacks-X-and-BlueStacks-Services-completely-from-your-PC) to get rid of residues.\n- If the ADB port number keeps changing irregularly and is different every time you start it, it may be because your computer has [Hyper-V](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11) enabled. MAA will now try to automatically read the port number from the BlueStacks emulator configuration file. If this doesn\'t work, or you need to use multiple instances, or have installed multiple emulator cores, please refer to [Connection Settings](../connection.html#bluestacks-emulator-hyper-v-port-number-changes-every-startup) to make adjustments. Since Hyper-V runs as administrator, operations that don\'t involve ADB such as automatic emulator shutdown or connection detection also need MAA to run as administrator.',
},
...shuffleArray([
{
name: 'Tencent App Store',
link: 'https://sj.qq.com/',
note: 'Supports versions after 5.10.56.xx. Select `Tencent App Store` connection configuration in `Settings` - `Connection Settings`. Known to be compatible with Hyper-V.\n\n- ADB port is `127.0.0.1:5555`.\n- ADB path example: `C:\\Program Files\\Tencent\\Androws\\Application\\<version>\\adb.exe`.\n\n- You need to first [enable ADB debugging](https://sj.qq.com/faq/3878) in the app.',
},
{
name: 'Nox Player',
link: 'https://www.bignox.com/',
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: 'Theoretically supported.\n\n- Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.\n- AVD is designed for development debugging, not gaming. Other emulators specifically designed for gaming are recommended instead.',
note: 'Theoretically supported, with additional support for [Screenshot Enhanced Mode](../connection.html#avd-screenshot-enhanced-mode).\n- Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.\n- AVD is designed for development debugging, not gaming. Other emulators specifically designed for gaming are recommended instead.',
},
{
name: 'Google Play Games (Developer)',

View File

@@ -1,5 +1,5 @@
---
order: 2
order: 3
icon: ph:question-fill
---
@@ -54,6 +54,13 @@ For Windows N/KN (European/Korean versions), you also need to install the [Media
Due to runtime libraries and system components requiring Windows 10 or above, MAA no longer supports Windows 7/8/8.1 systems.
### Flagged by Windows Defender / antivirus software (PUA / malware)
- First verify the download source. Only use official channels (official website, GitHub Releases, Winget, or official community distribution channels), and make sure you downloaded the full package (for example, `MAA-<version>-win-x64.zip`).
- Automation tools may trigger heuristic detections in some antivirus engines. A detection result does not always mean the program is malicious.
- If the source is trusted, submit a false-positive sample to the security vendor and wait for signature updates.
- While waiting, you can temporarily add the MAA installation directory to antivirus allowlists. Avoid disabling real-time protection entirely.
## Connection errors
### Verify ADB and connection address are correct

View File

@@ -0,0 +1,83 @@
---
order: 2
icon: material-symbols:download-2-rounded
---
<!-- markdownlint-disable MD024 -->
# Download & Installation
::: tip
You are viewing the MAA GUI download and installation guide. If you need the maa-cli download and installation instructions, see maa-cli's [Installation and Build](./cli/install.md). The Android variant (MAA Android) is currently in open testing — see [MAA-Meow](https://github.com/Aliothmoon/MAA-Meow) for details.
:::
## Downloading MAA
MAA offers multiple download channels, including the official website, package managers, and group file shares. Choose the method that fits your environment.
### Download the latest package from the [official website](https://maa.plus)
The website usually selects the correct architecture automatically; for most readers this will be Windows x64. macOS users should choose the macOS universal build.
### Download the latest package via [Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install)
Confirm your system architecture and download the matching package. Mirror酱 does not provide a macOS universal build — macOS users should select the package matching their chip architecture (arm/x86).
::: tip
[Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install) is a thirdparty, paid download acceleration service and is not operated by the MAA project. Its operating costs are covered by subscriptions and a portion of revenue is shared with project contributors. Consider subscribing to CDK for faster downloads and to support the project.
:::
### Install via Windows package manager (Winget)
::: tip
This method applies only to Windows users.
:::
Run the following command in a terminal:
```bash
winget install maa
```
When installed this way the default install path is `C:\Users\<username>\AppData\Local\Microsoft\WinGet\Packages`.
### Download from the official QQ group files
1. Join the [MAA official QQ group](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
2. Download the latest MAA package from the group's shared files.
### Download from [GitHub Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)
Make sure to choose the package that matches your system architecture. For most Windows users download `MAA-<version>-win-x64.zip`. For macOS users choose `MAA-<version>-macos-universal.dmg`.
## Linux and other operating systems
MAA GUI is currently not supported on Linux or other operating systems. You can use `maa-cli` to access MAA functionality on those systems — see the maa-cli [Installation and Build](./cli/install.md) document for details.
## Installing MAA
### Windows
After downloading you will have a `.zip` file. Extract it fully with your archive tool to obtain a folder containing all MAA files.
::: warning
1. Do not extract MAA to locations that require UAC elevation such as `C:\` or `C:\Program Files\`.
2. MAA includes a bundled .NET runtime (self-contained deployment), but it still requires the Visual C++ Redistributable x64 (VCRedist x64). After extraction, run `DependencySetup_依赖库安装.bat` in the MAA directory as administrator to install the required dependencies. After installation completes, run `MAA.exe`.
For more information see the top of the [FAQ](./faq.md).
:::
Double-click `MAA.exe` to start MAA.
::: tip
If you installed via Winget you can start MAA by running `maa` from the command line without extracting the archive or installing runtimes manually. If `maa-cli` is on your PATH you may need extra steps to disambiguate the two.
:::
### macOS
Open the downloaded `.dmg` and drag `MAA.app` to `/Applications` to complete installation.
## Next steps
After installation, return to the [New User Guide](./newbie.md) to continue setup, or visit [Introduction](./introduction/) to learn about MAA's features. If you encounter problems during installation, check the [FAQ](./faq.md) for troubleshooting tips.

View File

@@ -1146,10 +1146,10 @@ value
Invalid placeholder. Enum value: 0.
:::
::: field name="MinitouchEnabled" type="boolean" optional
Deprecated. Originally for enabling minitouch; "1" - on, "0" - off. Note that the device may not support it. Enum value: 1 (deprecated).
Deprecated. Originally for enabling Minitouch; "1" - on, "0" - off. Note that the device may not support it. Enum value: 1 (deprecated).
:::
::: field name="TouchMode" type="string" optional default="minitouch"
Touch mode setting. Options: minitouch | maatouch | adb. Default minitouch. Enum value: 2.
Touch mode setting. Options: minitouch | maatouch | adb | MaaFwAdb. Default minitouch. Enum value: 2.
:::
::: field name="DeploymentWithPause" type="boolean" optional
Whether to pause when deploying operators (affects IS, Copilot and Stationary Security Service). Options: "1" | "0". Enum value: 3.
@@ -1160,4 +1160,7 @@ Whether to enable AdbLite or not. Options: "0" | "1". Enum value: 4.
::: field name="KillAdbOnExit" type="boolean" optional
Release Adb on exit. Options: "0" | "1". Enum value: 5.
:::
::: field name="ClientType" type="string" optional
Client channel. Most connection configs do not need this option. Set it before `AsstConnect` / `AsstAsyncConnect` only when the selected `config` uses `[PackageName]` in commands executed during connect. In the built-in configs, only `Androws` and `WSA` currently require it for `displayId` lookup. This does not replace the `client_type` task parameter used by StartUp / CloseDown tasks. Enum value: 6.
:::
::::

View File

@@ -84,7 +84,9 @@ icon: iconoir:developer
- F5 キーを押して実行
::: tip
Win32ControllerWindows ウィンドウ制御)関連機能をデバッグする場合は、[MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) から対応プラットフォームのアーカイブをダウンロードし、`bin` ディレクトリ内の `MaaWin32ControlUnit.dll` を MAA の DLL と同じディレクトリ(例:`build/bin/Debug`)に配置してください。自動ダウンロードスクリプトの PR 歓迎!
Win32ControllerWindows ウィンドウ制御)/ MaaFwAdbControllerMaaFramework のタッチモード)関連機能を実行する場合は、[MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) から対応プラットフォームのアーカイブをダウンロードし、`bin` ディレクトリ内の `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` を MAA の DLL と同じディレクトリ(例:`build/bin/Debug`)に配置してください。自動ダウンロードスクリプトの PR 歓迎!
関連機能をデバッグする場合は、[MaaFramework の Debug バージョンを自分でコンパイル](https://maafw.com/docs/4.1-BuildGuide)し、対応する DLL ファイルを使用する必要があります。そうしないと、ブレークポイントデバッグ中に謎のクラッシュが発生します。
:::
9. これで自由に ~~改造~~ 開発を始められます

View File

@@ -8,7 +8,8 @@ icon: teenyicons:linux-alt-solid
**このチュートリアルでは、読者にLinux環境の構成能力とプログラミングの基礎が必要です**
::: info 注意
MAAの構築方法はまだ議論されていますが、このチュートリアルの内容は古くなる可能性があります。 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) のスクリプトに準拠してください
MAAの構築方法はまだ議論されていますが、このチュートリアルの内容は古くなる可能性があります。[GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) のスクリプトに準拠してください
また、[AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) や [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix) も参照可能です。
:::
## コンパイルプロセス
@@ -56,6 +57,8 @@ MAAの構築方法はまだ議論されていますが、このチュートリ
cmake --install build --prefix <target_directory>
```
4. MaaFwAdbControllerMaaFramework のタッチモード)関連機能をデバッグする場合は、[MaaFramework の Debug バージョンを自分でコンパイル](https://maafw.com/docs/4.1-BuildGuide)し、`libMaaAdbControlUnit.so` をインストールディレクトリにコピーする必要があります。
## その他のインストール方法
- AUR: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights)

View File

@@ -1,23 +1,19 @@
---
order: 1
icon: material-symbols:download
icon: material-symbols:download-2-rounded
---
# 安装及编译
# インストールとコンパイル
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
maa-cli は、プリコンパイル済みバイナリ、パッケージマネージャー、または `cargo` を使用した自己コンパイルなど、複数のインストール方法を提供しています。
maa-cli 提供多种方式安装,包括预编译二进制文件、包管理器和通过 `cargo` 自行编译安装。
## プリコンパイル済みバイナリ
## 预编译二进制文件
安装 maa-cli 最简单的方式是使用安装脚本一键安装:
maa-cli をインストールする最も簡単な方法は、インストールスクリプトを使用する方法です:
::: tabs#pre-compile
@tab:active Linux macOS
@tab:active Linux macOS
```bash
curl -fsSL https://raw.githubusercontent.com/MaaAssistantArknights/maa-cli/main/install.sh | bash
@@ -31,27 +27,27 @@ Invoke-WebRequest -Uri "https://raw.githubusercontent.com/MaaAssistantArknights/
:::
后续你可以通过 `maa self update` 来更新 maa-cli。
その後、`maa self update` コマンドで maa-cli を更新できます
如果你的平台不在上述列表中,可以尝试自行[编译安装](#编译安装)
お使いのプラットフォームが上記のリストにない場合は、[コンパイルによるインストール](#コンパイルによるインストール)を試してみてください
## 通过包管理器安装
## パッケージマネージャーによるインストール
对于 macOS 和受支持的 Linux 发行版用户,可以使用包管理器安装 maa-cli
macOS および対応している Linux ディストリビューションユーザーは、パッケージマネージャーを使用して maa-cli をインストールできます
### macOS
Homebrew 用户可以通过非官方的 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) 安装 maa-cli
Homebrew ユーザーは、非公式の [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) を使用して maa-cli をインストールできます
::: code-tabs
@tab:active 定版
@tab:active 定版
```bash :no-line-numbers
brew install MaaAssistantArknights/tap/maa-cli
```
@tab 不定版/预发行
@tab 不定版/プレリリース
```bash :no-line-numbers
brew install MaaAssistantArknights/tap/maa-cli-beta
@@ -61,11 +57,11 @@ brew install MaaAssistantArknights/tap/maa-cli-beta
### Linux
Arch、Nix 以及 Linux Homebrew 用户可以通过包管理器安装 maa-cli
Arch、Nix、および Linux Homebrew ユーザーは、パッケージマネージャーを使用して maa-cli をインストールできます
#### Arch Linux
可以安装 [AUR 包](https://aur.archlinux.org/packages/maa-cli/)
[AURパッケージ](https://aur.archlinux.org/packages/maa-cli/) をインストールできます
::: code-tabs
@@ -85,17 +81,17 @@ yay -S maa-cli
#### ❄️ Nix
用户可以直接运行:
ユーザーは直接実行できます:
::: code-tabs
@tab:active 定版
@tab:active 定版
```bash :no-line-numbers
nix run nixpkgs#maa-cli
```
@tab 每夜构建
@tab ナイトリービルド
```bash :no-line-numbers
nix run github:Cryolitia/nur-packages#maa-cli-nightly
@@ -103,31 +99,31 @@ nix run github:Cryolitia/nur-packages#maa-cli-nightly
:::
定版打包至 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) 中,使用 `nixpkgs` 中的 Rust 工具链;每夜构建位于 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix) 中,使用 Beta channel 的 Rust 工具链,由 Github Actions 日自更新和构建验证
定版 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) にパッケージされており、`nixpkgs` Rust ツールチェーンを使用します。ナイトリービルドは [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix) にあり、Rust ツールチェーンのベータチャンネルを使用し、GitHub Actions によって毎日自更新およびビルド検証が行われます
#### Homebrew
对于在 Linux 上使用 Homebrew 的用户,请参见上述 macOS 的安装方式
Linux Homebrew を使用するユーザーは、上記の macOS のインストール方法を参照してください
#### 其他发行版
#### その他のディストリビューション
请使用 [预编译二进制文件](#预编译二进制文件) 或是 [自行编译安装](#编译安装)
[プリコンパイル済みバイナリ](#プリコンパイル済みバイナリ)を使用するか、[コンパイルによるインストール](#コンパイルによるインストール)を行ってください
我们也欢迎各位有兴趣的开发者将 maa-cli 提交到更多发行版的官方仓库或是用户仓库
また、maa-cli をより多くのディストリビューションの公式リポジトリやユーザーリポジトリに提出してくださる開発者の方々も歓迎します
## 编译安装
## コンパイルによるインストール
Rust 开发者可以通过 `cargo` 自行编译安装 maa-cli
Rust 開発者は、`cargo` を使用して maa-cli を自己コンパイルできます
::: code-tabs
@tab:active 稳定版本
@tab:active 安定バージョン
```bash :no-line-numbers
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked
```
@tab 开发版本
@tab 開発バージョン
```bash :no-line-numbers
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked
@@ -136,65 +132,65 @@ cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin m
:::
::: warning
maa-cli 目前的最低支持 Rust 版本 (MSRV) 为 1.88。请注意MSRV 可能随时发生变化,我们建议始终使用最新的 Rust 工具链以获得最佳体验
maa-cli の現在の最小サポート Rust バージョン(MSRV)は 1.88 です。MSRVは予告なく変更される可能性があるため、最適な体験を得るには常に最新のRustツールチェーンを使用することをお勧めします
:::
### 编译选项
### コンパイルオプション
从源码编译时,你可以通过 `--no-default-features` 禁用默认的特性,然后通过 `--features` 来启用特定的特性。目前可用的特性有
ソースからコンパイルする場合、`--no-default-features` でデフォルトのフィーチャーを無効にし、`--features` で特定のフィーチャーを有効にすることができます。現在利用可能なフィーチャーは以下の通りです
- `cli_installer`: 启用 `maa self update` 命令,用于更新自身,这个特性默认启用;
- `core_installer`: 启用 `maa install` `maa update` 命令,用于安装和更新 MaaCore 及资源,这个特性默认启用;
- `git2`: 提供 `libgit2` 资源更新后端,这个特性默认启用
- `cli_installer`: `maa self update` コマンドを有効にし、自身を更新するために使用します。このフィーチャーはデフォルトで有効です。
- `core_installer`: `maa install` および `maa update` コマンドを有効にし、MaaCore とリソースをインストールおよび更新するために使用します。このフィーチャーはデフォルトで有効です。
- `git2`: `libgit2` リソース更新バックエンドを提供します。このフィーチャーはデフォルトで有効です
## 安装 MaaCore 及资源
## MaaCoreとリソースのインストール
maa-cli 只提供了一个命令行界面,它需要 MaaCore 和资源来运行任务
maa-cli はコマンドラインインターフェースのみを提供しており、タスクを実行するには MaaCore とリソースが必要です
根据安装方式和平台的不同,你的操作也有所区别
インストール方法とプラットフォームによって、操作は異なります
::: tabs#maacore
@tab:active 预编译
对于使用预编译二进制或者自行编译的用户maa-cli 可以帮助你安装和更新
@tab:active プリコンパイル
プリコンパイル済みバイナリを使用する場合、または自己コンパイルしたユーザーの場合、maa-cli がインストールと更新を支援します
```bash :no-line-numbers
maa install
```
@tab Windows
对于 Windows 平台的用户,在运行 `maa install` 命令前,请以管理员身份在命令提示符或 PowerShell 中运行以下命令,以安装必要组件 VC++ 运行库
Windows プラットフォームのユーザーは、`maa install` コマンドを実行する前に、管理者権限でコマンドプロンプトまたは PowerShell で以下のコマンドを実行し、必須コンポーネントである VC++ ランタイムをインストールしてください
```bat :no-line-numbers
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --uninstall-previous --accept-package-agreements --force
```
然后再运行 `maa install`。
その後、`maa install` を実行してください
@tab Arch
你可以使用 maa-cli 安装预编译的 MaaCore:
maa-cli を使用してプリコンパイル済みの MaaCore をインストールできます:
```bash :no-line-numbers
maa install
```
你也可以通过 [AUR](https://aur.archlinux.org/packages/maa-assistant-arknights/) 安装 maa-core
また、[AUR](https://aur.archlinux.org/packages/maa-assistant-arknights/) を使用して maa-core をインストールすることもできます:
```bash :no-line-numbers
paru -S maa-assistant-arknights
```
或者
または
```bash :no-line-numbers
yay -S maa-assistant-arknights
```
@tab Nix
Nix 上的 maa-cli 强制依赖 MaaCore,因此 Nix 用户无需,也不应该手动安装 MaaCore
Nix maa-cli MaaCore に強く依存しています。そのため、Nix ユーザーは MaaCore を手動でインストールする必要はなく、またすべきではありません
:::
::: warning
`maa install` 下载的是 MAA 官方预编译的 MaaCore而包管理器安装的 MaaCore 可能使用与官方预编译版本不同的编译选项和依赖版本,这也许会导致性能和功能上的略微差异
`maa install` MAA 公式がプリコンパイルした MaaCore をダウンロードします。一方、パッケージマネージャーでインストールされる MaaCore は、公式のプリコンパイルバージョンとは異なるコンパイルオプションや依存関係のバージョンを使用する可能性があり、これによりパフォーマンスや機能にわずかな違いが生じる可能性があります
:::

View File

@@ -1,5 +1,5 @@
---
order: 3
order: 4
icon: mdi:plug
---
@@ -43,6 +43,7 @@ icon: mdi:plug
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
- [逍遥](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
- [夜神](https://support.yeshen.com/zh-CN/qt/ml) `62001`
- [テンセントアプリストア](https://sj.qq.com/faq/3878) (5.10.56.xx 以降)ADB ポートは `127.0.0.1:5555` 固定。ADB パス例:`C:\Program Files\Tencent\Androws\Application\バージョン番号\adb.exe`
他のエミュレータについては[Zhaoqingqing's Blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)を参照してください。
@@ -224,14 +225,25 @@ LDPlayerの正式版9 V9.1.32 以降を使用する必要があります。<!--
3. `インスタンス番号` には LD マルチインスタンス内でのエミュレーターの番号を入力してください。主インスタンスの場合は `0` です。
### AVD スクリーンショット強化モード
Android Emulator v27.2.9 以降が必要です。(アークナイツのリリース以降にダウンロードしたエミュレーターであれば大丈夫です。)
AVD スクリーンショット強化モードは MaaFramework 内で実装されているため、MaaFramework のタッチモードを有効にすることが、この機能を利用する前提となります。
1. `設定` - `接続設定` - `接続構成``Android Virtual Device (AVD)` を選択します。
2. `タッチモード``MaaFramework` を選択します。
## タッチモード
1. [Minitouch](https://github.com/DeviceFarmer/minitouch)Android タッチイベントを操作するための C 言語で書かれたツールで、`evdev` デバイスを操作し、外部プログラムがタッチイベントとジェスチャーをトリガーできる Socket インターフェースを提供します。Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できなくなりました。<sup>[出典](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)MAA による Java で Minitouch を再実装し、Android の `InputDevice` を使用し、追加の機能を付加しました。高バージョンの Android での利用可能性はまだテスト中です。~~テストを手伝ってください~~
3. Adb Input直接 ADB を呼び出して、Android の `input` コマンドを使用してタッチ操作を行います。最も互換性があり、最も遅い速度です。
4. [MaaFramework](https://maafw.com/)MaaFramework の制御ユニットのスクリーンショットとタッチ機能を呼び出します。利用可能性はまだテスト中です。~~テストを手伝ってください x2~~
## ADB Lite
MAA によって独自に実装された ADB クライアントで、オリジナルの ADB よりも多重の ADB プロセスを開始せずに済み、パフォーマンスの低下を抑えることができますが、一部のスクリーンショット方法は使用できません。
推奨されますが、具体的な利点と欠点はまだフィードバックを得ていません。~~テストを手伝ってください x2~~
推奨されますが、具体的な利点と欠点はまだフィードバックを得ていません。~~テストを手伝ってください x3~~

View File

@@ -121,6 +121,8 @@ MAA Wine Bridge で生成された `MaaDesktopIntegration.so` を `MAA.exe` と
推奨構成: x86_64 のフレームワーク (R - 30 - x86_64 - Android 11.0) と MAA のLinux x64 ダイナミック ライブラリ
[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります。
- Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive` モードに切り替え。
### ⚠️ [Genymotion](https://www.genymotion.com/)

View File

@@ -39,7 +39,9 @@ icon: basil:apple-solid
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
サポートされています。Android 10 以降、SELinux が\`Enforcing\`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** \`Permissive\`モードに切り替え
サポートされています。[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります
Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive` モードに切り替え。
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) 無料、Apple Mシリーズチップ向けに最適化されたバージョン
@@ -69,4 +71,4 @@ Mac 版の開発は人手不足のため、更新速度が比較的遅いです
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
サポートされています。
サポートされています。[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります。

View File

@@ -25,12 +25,12 @@ const fullySupport = [
{
name: 'MuMu Player',
link: 'https://www.mumuplayer.com/',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもあ。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。\n- `ビデオメモリ使用ポリシー``リソース使用量が少ない`に設定しないでください。',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもあります。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。\n- `ビデオメモリ使用ポリシー``リソース使用量が少ない`に設定しないでください。',
},
{
name: 'LDPlayer',
link: 'https://www.ldplayer.net/',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#LDPlayer スクリーンショット強化モード)の追加サポートもあ。 Hyper-Vとの互換性が確認されています。\n\n- LDPlayer 9のインストーラーは、インストールプロセス中に自動的にHyper-Vをサイレントで無効にしますので、必要な場合は注意してください。',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#LDPlayer スクリーンショット強化モード)の追加サポートもあります。 Hyper-Vとの互換性が確認されています。\n\n- LDPlayer 9のインストーラーは、インストールプロセス中に自動的にHyper-Vをサイレントで無効にしますので、必要な場合は注意してください。',
},
]),
// keep internal sorting for bluestacks.
@@ -40,6 +40,11 @@ const fullySupport = [
note: 'サポートされています。エミュレーターの `設定` - `上位設定``Android Debug Bridge`をONにする必要があります。\n\n- ネットワーク環境が悪い場合は [オフラインパッケージ](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F)をダウンロードしてください。\n- adbポート番号が不規則に変化し続け、起動するたびに同じでない場合は、お使いのコンピュータが [Hyper-V](https://support.bluestacks.com/hc/ja/articles/4415238471053-BlueStacks-5-Hyper-V%E3%81%8C%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8BWindows-10%E3%81%A8Windows-11%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A6%81%E4%BB%B6)を有効にしている可能性があります,\nこのような状況に対して、MAAはポート番号を自動的に取得する小さなバックドアを提供しています。この機能がは動作しません/複数のエミュレータが必要/複数のエミュレータコアがインストールされているの場合は [よくある質問](../よくある質問.html#blue-stackエミュレータが起動するたびにポート番号が異なるhyper-v) を参照して変更してください。Hyper-V は管理者として実行されるため、エミュレーターの自動シャットダウンや接続の自動検出など、adb を伴わない操作でも MAA を管理者として実行する必要があります。',
},
...shuffleArray([
{
name: 'テンセントアプリストア',
link: 'https://sj.qq.com/',
note: 'バージョン 5.10.56.xx 以降をサポートしています。`設定` - `接続設定` で `テンセントアプリストア` 接続設定を選択してください。Hyper-V との互換性が確認されています。\n\n- ADB ポートは `127.0.0.1:5555` です。\n- ADB パス例:`C:\\Program Files\\Tencent\\Androws\\Application\\バージョン番号\\adb.exe`。\n\n- 事前にアプリストアで [ADB デバッグを有効化](https://sj.qq.com/faq/3878) する必要があります。',
},
{
name: 'NOX',
link: 'https://www.yeshen.com/',
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: '理論的なサポートされています。\n\n- Android 10 以降、SELinux が`Enforcing`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive`モードに切り替え。\n- AVD はデバッグ用に構築されており、ゲーム用に設計された他のエミュレーターを使用することをおすすめします。',
note: '理論的なサポートされています。\n\n- [スクリーンショット強化モード](../connection.html#avd-スクリーンショット強化モード)の追加サポートもあります。\n- Android 10 以降、SELinux が`Enforcing`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive`モードに切り替え。\n- AVD はデバッグ用に構築されており、ゲーム用に設計された他のエミュレーターを使用することをおすすめします。',
},
{
name: 'Google Play ゲーム(開発者)',

View File

@@ -1,5 +1,5 @@
---
order: 2
order: 3
icon: ph:question-fill
---

View File

@@ -0,0 +1,93 @@
---
order: 2
icon: material-symbols:download-2-rounded
---
<!-- markdownlint-disable MD024 -->
# ダウンロードとインストール
::: tip
これは MAA GUI のダウンロードとインストールに関するドキュメントです。maa-cli のダウンロードとインストールについては、[インストールとコンパイル](./cli/install.md)を参照してください。現在、Android版「MAA-MeowMAA Android版」はテスト公開中です。詳細は [MAA-Meow](https://github.com/Aliothmoon/MAA-Meow)をご覧ください。現在、このソフトウェアのUIは中国語のみサポートしています
:::
## MAA のダウンロード
MAA では、公式サイトからのダウンロード、パッケージマネージャーからのインストール、グループファイルからのダウンロードなど、複数の方法を提供しています。ご都合に合わせた方法でダウンロードしてください。
### [公式サイト](https://maa.plus)から最新の MAA パッケージをダウンロード
通常、公式サイトでは正しいバージョンとアーキテクチャが自動選択されます。ほとんどの読者にとっては Windows x64 です。macOS ユーザーの方は、macOS ユニバーサル版をダウンロードしてください。
### [Mirror ちゃん](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install)から最新の MAA パッケージをダウンロード
システムアーキテクチャを確認し、対応するパッケージをダウンロードしてください。ほとんどの Windows ユーザーにとっては Windows x64 です。Mac ユーザーの場合、Mirrorちゃんはユニバーサルパッケージを提供していないため、お使いのチップアーキテクチャarm/x86を確認して対応するパッケージをダウンロードしてください。
::: tip
[Mirrorちゃん](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install)は独立したサードパーティのダウンロードアクセラレーションサービスであり、MAA の有料サービスではありません。その運営コストはサブスクリプション収入で賄われ、収益の一部はプロジェクト開発者に還元されます。高速ダウンロードを楽しみながらプロジェクトの継続的な開発を支援するために、CDK の購読をご検討ください。
:::
### Windows パッケージマネージャーWingetを使用したインストール
::: tip
この方法は Windows ユーザーのみ利用可能です。
:::
ターミナルで以下のコマンドを実行してください:
```bash
winget install maa
```
この方法でインストールした場合、デフォルトのインストールパスは `C:\Users\ユーザー名\AppData\Local\Microsoft\WinGet\Packages` です。
### QQ グループファイルから最新のMAAパッケージをダウンロード
1. [MAA 公式 QQ グループ](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)に参加してください。
2. グループファイル内で最新の MAA パッケージをダウンロードしてください。
### [GitHub Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)から最新の MAA パッケージをダウンロード
システムアーキテクチャを確認し、対応するパッケージをダウンロードしてください。ほとんどの Windows ユーザーにとっては `MAA-<バージョン番号>-win-x64.zip` です。macOS ユーザーの方は `MAA-<バージョン番号>-macos-universal.dmg` を選択してください。
## Linux およびその他のオペレーティングシステム
MAA GUI は**現時点では** Linux やその他のオペレーティングシステムをサポートしていません。これらのシステムで MAA の機能を使用するには、**maa-cli** を利用できます。詳細は、maa-cli の [インストールとコンパイル](./cli/install.md)を参照してください。
## MAA のインストール
### Windows
ダウンロードが完了すると、`.zip`ファイルが取得できます。解凍ソフトで完全に解凍すると、MAAのすべてのファイルを含むフォルダが作成されます。
::: warning
1. `C:\``C:\Program Files\` など UAC 権限が必要なパスに MAA を解凍しないでください。
2. MAA には .NET ランタイムが内蔵されています自己完結型デプロイ。ただし、Visual C++ Redistributable x64VCRedist x64が必要です。解凍したMAAディレクトリ内で、管理者権限で `DependencySetup_依赖库安装.bat` を実行し、この依存関係をインストールしてください。インストール完了後、`MAA.exe` を実行してください。
詳細は[よくある質問](./faq.md)のトップを参照してください。
:::
`MAA.exe`をダブルクリックすると、MAAが起動します。
::: tip
Windows パッケージマネージャーWingetを使用してインストールした場合、解凍やランタイムのインストールなどの追加操作なしで、コマンドラインに `maa` と入力するだけで MAA を起動できます。ただし、PATHに `maa-cli` が存在する場合、それらを区別するために追加の手順が必要になることがあります。
:::
### macOS
ダウンロードが完了すると、`.dmg`ファイルが取得できます。その `.dmg` をダブルクリックして開き、`MAA.app``/Applications` にドラッグしてインストールを完了します。
## 次のステップ
インストールが完了したら、[初心者向けガイド](./newbie.md)に戻って設定を続行するか、[機能紹介](./introduction/)で MAA がサポートするさまざまな機能を確認してください。インストール中に問題が発生した場合は、[よくある質問](./faq.md)を参照して解決を試みてください。

View File

@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
無効なプレースホルダ。列挙値0。
:::
::: field name="MinitouchEnabled" type="boolean" optional
廃止済み。元は minitouch を有効にするかどうか。"1" オン、"0" オフ。デバイスがサポートされていない可能性がります。列挙値1廃止済み
廃止済み。元は Minitouch を有効にするかどうか。"1" オン、"0" オフ。デバイスがサポートされていない可能性がります。列挙値1廃止済み
:::
::: field name="TouchMode" type="string" optional default="minitouch"
タッチ モード設定。可能な値minitouch | maatouch | adb。デフォルト minitouch。列挙値2。
タッチ モード設定。可能な値minitouch | maatouch | adb | MaaFwAdb。デフォルト minitouch。列挙値2。
:::
::: field name="DeploymentWithPause" type="boolean" optional
暫停状態でオペレーターを配置するかどうか。自動戦闘、統合戦略、保全駐在に同時に影響。可能な値:"1" または "0"。列挙値3。
@@ -1159,4 +1159,7 @@ AdbLite を使用するかどうか。可能な値:"0" または "1"。列挙
::: field name="KillAdbOnExit" type="boolean" optional
終了時に Adb プロセスをキルするかどうか。可能な値:"0" または "1"。列挙値5。
:::
::: field name="ClientType" type="string" optional
クライアント種別(ゲームチャネル)。ほとんどの接続設定では不要です。`AsstConnect` / `AsstAsyncConnect` に渡す `config` が、接続時に実行するコマンド内で `[PackageName]` を使用する場合にのみ、接続前に `AsstSetInstanceOption(..., ClientType, ...)` を設定してください。現在の組み込み設定では、`Androws``WSA``displayId` 取得のみがこの値に依存します。このオプションは StartUp / CloseDown などのタスクパラメータ `client_type` を置き換えるものではありません。列挙値6。
:::
::::

View File

@@ -83,7 +83,9 @@ icon: iconoir:developer
- F5 키를 눌러 실행
::: tip
Win32Controller(Windows 창 제어) 관련 기능을 디버깅하려면 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases)에서 해당 플랫폼 압축 파일을 다운로드하고, `bin` 디렉토리의 `MaaWin32ControlUnit.dll`을 MAA DLL과 같은 디렉토리(예: `build/bin/Debug`)에 배치해야 합니다. 자동 다운로드 스크립트 PR 환영!
Win32Controller(Windows 창 제어) / MaaFwAdbController(MaaFramework 터치 수행 방식) 관련 기능을 실행하려면 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases)에서 해당 플랫폼 압축 파일을 다운로드하고, `bin` 디렉토리의 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll`을 MAA DLL과 같은 디렉토리(예: `build/bin/Debug`)에 배치해야 합니다. 자동 다운로드 스크립트 PR 환영!
若需调试相关功能,则需要自行编译 MaaFramework 的 Debug 版本,使用对应的 DLL 文件,否则在断点调试时会神秘闪退。
:::
9. 이제 자유롭게 ~~개조~~ 개발 시작!

View File

@@ -8,7 +8,7 @@ icon: teenyicons:linux-alt-solid
**이 가이드는 독자가 일정한 Linux 환경 설정 능력과 프로그래밍 기초를 가지고 있다고 가정합니다!** MAA를 직접 컴파일하는 대신 단순히 설치하길 원한다면 [사용자 매뉴얼 - Linux 지원](../manual/device/linux.md)를 참고하세요.
::: info 주의
MAA의 빌드 방법은 여전히 논의 중입니다. 이 가이드의 내용은 최신 내용이 아닐 수 있으므로 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134)의 스크립트를 참고하는 것이 좋습니다.
MAA의 빌드 방법은 여전히 논의 중입니다. 이 가이드의 내용은 최신 내용이 아닐 수 있으므로 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A)의 스크립트를 참고하는 것이 좋습니다.
또한 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 또는 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)를 참고할 수도 있습니다.
:::
@@ -80,7 +80,7 @@ MaaAssistantArknights/MaaMacGui 프로젝트의 [README.md](https://github.com/M
cmake --install build --prefix <target_directory>
```
4. 완료, 디렉터리에서 빌드 파일을 확인할 수 있을 것입니다.
4. 若需调试 MaaFwAdbControllerMaaFramework 触控模式)相关功能,需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,将 `libMaaAdbControlUnit.so` 放到安装目录下。
::::
@@ -96,8 +96,6 @@ MaaAssistantArknights/MaaMacGui 프로젝트의 [README.md](https://github.com/M
[CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)의 구현을 참고하세요.
### C Sharp
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
### C\#
[MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)의 구현을 참고하세요.

View File

@@ -1,5 +1,5 @@
---
order: 3
order: 4
icon: mdi:plug
---
@@ -16,6 +16,7 @@ MAA v5.22.3까지 지원하는 감지 가능한 에뮬레이터 및 연결 주
- LDPlayer 9: `emulator-5554/5556/5558/5560`, `127.0.0.1:5555/5557/5559/5561`
- 逍遥(Xiaoyao): `127.0.0.1:62001/59865`
- 夜神(Yeshen): `127.0.0.1:21503`
- 텐센트 앱스토어 (5.10.56.xx 이후): `127.0.0.1:5555`
감지에 실패하면 UAC 관리자 권한으로 MAA를 시작하여 다시 감지해보세요. 여전히 실패한다면 아래 수동 설정을 참고하고, 에뮬레이터와 연결 주소가 위 목록에 포함되어 있는지 확인하세요.
@@ -59,6 +60,7 @@ MAA 폴더에 직접 압축을 푸는 것을 권장합니다. 그러면 ADB 경
- [LDPlayer 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc) `emulator-5554`
- [逍遥(Xiaoyao)](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
- [夜神(Yeshen)](https://support.yeshen.com/zh-CN/qt/ml) `62001`
- [텐센트 앱스토어](https://sj.qq.com/faq/3878): ADB 포트는 `127.0.0.1:5555` 고정. ADB 경로 예시: `C:\Program Files\Tencent\Androws\Application\버전번호\adb.exe`.
기타 에뮬레이터는 [赵青青의 블로그](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)를 참고하세요.
@@ -194,11 +196,22 @@ MAA 폴더에 직접 압축을 푸는 것을 권장합니다. 그러면 ADB 경
3. `인스턴스 번호`에 LD 멀티플레이어에서 해당 에뮬레이터의 일련번호(ID)를 입력합니다. 예: 메인 멀티플레이어의 경우 `0`
### AVD 스크린샷 향상 모드
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟开服之后下载的就没问题。)
因为 AVD 截图增强模式在 MaaFramework 中实现,所以必须选择 MaaFramework 触控模式才能启用 AVD 截图增强。
1. `设置` - `连接设置` - `连接配置` 选择 `Android 虚拟设备AVD`
2. `触控模式` 选择 `MaaFramework`
## 터치 모드
1. [Minitouch](https://github.com/DeviceFarmer/minitouch): C로 작성된 Android 터치 이벤트 핸들러로, 외부 프로그램이 터치 이벤트와 제스처를 트리거할 수 있는 소켓 인터페이스를 제공합니다. Android 10부터는 SELinux가 `Enforcing` 모드일 때 Minitouch가 더 이상 사용되지 않습니다.
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch): MAA가 Java 기반으로 Minitouch를 재구현한 것입니다. 높은 버전의 Android에서도 사용 가능성이 테스트 중입니다.
3. Adb Input: ADB 명령어를 직접 호출하여 터치 작업을 수행하며, 호환성이 가장 좋지만, 속도는 가장 느립니다.
4. [MaaFramework](https://maafw.com/): 调用 MaaFramework 控制单元的截图和触控功能。可用性尚待测试。~~帮我们做做测试 x2~~
## ADB Lite

View File

@@ -121,6 +121,8 @@ MAA Wine Bridge에서 생성된 `MaaDesktopIntegration.so`를 `MAA.exe`와 같
권장 구성: MAA의 리눅스 x64 동적 라이브러리와 함께 x86_64 프레임워크 (R - 30 - x86_64 - Android 11.0) 사용
[스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
참고: Android 10 이상에서는 SELinux가 `Enforcing` 모드인 경우 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 전환하세요.
### ⚠️ [Genymotion](https://www.genymotion.com/)

View File

@@ -35,7 +35,9 @@ icon: basil:apple-solid
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
지원됩니다. 그러나 Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
지원됩니다, [스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
### ✅ [블루스택 에어](https://www.bluestacks.com/mac) (무료, Apple M 시리즈 칩에 최적화된 버전)
@@ -65,4 +67,6 @@ Mac 버전 개발에 인력이 부족하여 업데이트 속도가 비교적 느
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
지원됩니다. 그러나 Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
지원됩니다, [스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.

View File

@@ -40,6 +40,11 @@ const fullySupport = [
note: '완전히 호환됩니다. 에뮬레이터의 `설정` - `고급 설정`에서 `ADB 기능`을 켜야 합니다. Hyper-V와 호환되는 것으로 알려져 있습니다.\n\n- 느리고 번들로 제공되는 설치를 피하기 위해 [오프라인 설치 프로그램](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer)을 다운로드하는 것이 좋습니다; [Android 11](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer#:~:text=To%20install%20BlueStacks%205%20Android%2011) 버전 설치를 권장합니다; 제거하려면 공식 [제거 도구](https://support.bluestacks.com/hc/en-us/articles/360057724751-How-to-uninstall-BlueStacks-5-BlueStacks-X-and-BlueStacks-Services-completely-from-your-PC)를 사용하여 잔여물을 제거하세요.\n- adb 포트 번호가 계속 불규칙하게 변경되고 시작할 때마다 다르다면 컴퓨터에 [Hyper-V](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11)가 활성화되어 있기 때문일 수 있습니다. MAA는 이제 BlueStacks 에뮬레이터 구성 파일 내에서 포트 번호를 자동으로 읽으려고 시도할 것입니다. 이 방법이 작동하지 않거나 다중 실행/둘 이상의 에뮬레이터 커널이 설치된 경우 [연결 설정](../connection.md#bluestacks-에뮬레이터-hyper-v-포트-번호-변경)을 참조하여 변경하세요. Hyper-V는 관리자로 실행되므로 에뮬레이터 자동 종료, 자동 연결 감지 등 adb와 관련 없는 작업도 MAA를 관리자로 실행해야 합니다.',
},
...shuffleArray([
{
name: '텐센트 앱스토어',
link: 'https://sj.qq.com/',
note: '5.10.56.xx 이후 버전을 지원합니다. `설정` - `연결 설정`에서 `텐센트 앱스토어` 연결 구성을 선택하세요. Hyper-V와 호환되는 것으로 알려져 있습니다.\n\n- ADB 포트는 `127.0.0.1:5555`입니다.\n- ADB 경로 예시: `C:\\Program Files\\Tencent\\Androws\\Application\\버전번호\\adb.exe`.\n\n- 먼저 앱스토어에서 [ADB 디버깅을 활성화](https://sj.qq.com/faq/3878)해야 합니다.',
},
{
name: 'Nox',
link: 'https://kr.bignox.com/',
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: '이론적으로 지원됩니다.\n\n- Android 10부터 SELinux가 `Enforcing` 모드일 때 Minitouch를 사용할 수 없으므로 다른 터치 모드로 전환하거나 SELinux를 **임시로** `Permissive` 모드로 전환하세요.\n- AVD는 디버깅을 위해 만들어졌으므로 게임용으로 설계된 다른 에뮬레이터를 사용하는 것이 더 좋습니다.',
note: '이론적으로 지원됩니다.\n\n- [스크린샷 향상 모드](../connection.html#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.\n- Android 10부터 SELinux가 `Enforcing` 모드일 때 Minitouch를 사용할 수 없으므로 다른 터치 모드로 전환하거나 SELinux를 **임시로** `Permissive` 모드로 전환하세요.\n- AVD는 디버깅을 위해 만들어졌으므로 게임용으로 설계된 다른 에뮬레이터를 사용하는 것이 더 좋습니다.',
},
{
name: 'Google Play Games (개발자용)',

View File

@@ -1,5 +1,5 @@
---
order: 2
order: 3
icon: ph:question-fill
---
@@ -12,7 +12,7 @@ MAA를 처음 사용하는 경우 [초보자 가이드](./newbie.md)를 읽어
MAA가 업데이트 후 실행되지 않거나 MAA의 오류 창을 통해 여기에 도달했다면, 이는 대부분 실행 라이브러리가 업데이트되지 않은 문제 때문입니다.
가장 자주 발생하는 문제는 실행 라이브러리 문제이며, 많은 사람들이 문서를 읽지 않고 질문만 하기 때문에 공지 내용을 이걸로 교체했습니다.
MAA는 .NET 런타임을 내장하고 있습니다(자체 포함 배포). 하지만 Visual C++ 런타임이 필요합니다.
MAA는 자체 포함 배포 방식을 채택하여 .NET 실행 환경이 내장되어 있으나, Visual C++ 실행 라이브러리는 여전히 필요합니다.
MAA 디렉토리에서 `DependencySetup_依赖库安装.bat`를 실행하거나, 터미널에서 아래 명령을 실행하거나,
@@ -52,7 +52,7 @@ Windows 8/8.1/10/11 N/KN(유럽/한국) 버전을 사용하는 경우, [미디
#### Windows 7 / 8 / 8.1 관련
MAA가 의존하는 런타임 라이브러리 시스템 구성 요소가 Windows 10 이상을 필요로 하기 때문에, MAA는 Windows 7 / 8 / 8.1 시스템을 더 이상 지원하지 않습니다.
MAA가 의존하는 실행 라이브러리 시스템 구성 요소가 Windows 10 이상을 요구하기 때문에, MAA는 Windows 7 / 8 / 8.1을 더 이상 지원하지 않습니다.
## 연결 오류

View File

@@ -0,0 +1,83 @@
---
order: 2
icon: material-symbols:download-2-rounded
---
<!-- markdownlint-disable MD024 -->
# 다운로드 및 설치
::: tip
MAA GUI의 다운로드 및 설치 안내 문서를 보고 있습니다. maa-cli의 다운로드 및 설치 안내가 필요하다면 maa-cli의 [설치 및 빌드](./cli/install.md) 문서를 참조하세요. 현재 MAA Android 버전이 테스트 공개 중입니다. 자세한 내용은 [MAA-Meow](https://github.com/Aliothmoon/MAA-Meow)를 참조하세요.
:::
## MAA 다운로드
MAA는 공식 홈페이지 다운로드, 패키지 관리자 설치, QQ 그룹 파일 다운로드 등 다양한 방법을 제공합니다. 원하는 방법을 선택하여 다운로드하세요.
### [공식 홈페이지](https://maa.plus)에서 최신 MAA 패키지 다운로드
공식 홈페이지는 일반적으로 올바른 버전 아키텍처를 자동으로 선택합니다. 이 문서를 읽는 대부분의 사용자에게는 Windows x64가 해당됩니다. macOS 사용자는 macOS 유니버설 버전을 다운로드하세요.
### [Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install)에서 최신 MAA 패키지 다운로드
시스템 아키텍처를 확인하고 해당하는 패키지를 다운로드하세요. 이 문서를 읽는 대부분의 Windows 사용자에게는 Windows x64가 해당됩니다. Mac 사용자의 경우, Mirror酱은 유니버설 패키지를 제공하지 않으므로 칩 아키텍처(arm/x86)를 확인한 후 해당 패키지를 다운로드하세요.
::: tip
[Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install)은 독립적인 서드파티 다운로드 가속 서비스로, MAA가 아닌 Mirror酱에서 유료로 운영됩니다. 운영 비용은 구독 수익으로 충당되며, 수익의 일부는 프로젝트 개발자에게 환원됩니다. CDK를 구독하여 고속 다운로드를 즐기면서 프로젝트의 지속적인 개발을 지원해 주세요.
:::
### Windows 패키지 관리자(Winget)로 설치
::: tip
이 방법은 Windows 사용자에게만 적용됩니다.
:::
터미널에서 다음 명령을 실행하세요:
```bash
winget install maa
```
이 방법으로 설치하는 경우 기본 설치 경로는 `C:\Users\사용자이름\AppData\Local\Microsoft\WinGet\Packages`입니다.
### QQ 그룹 파일에서 최신 MAA 패키지 다운로드
1. [MAA 공식 QQ 그룹](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)에 참가하세요.
2. 그룹 파일에서 최신 MAA 패키지를 찾아 다운로드하세요.
### [GitHub Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)에서 최신 MAA 패키지 다운로드
시스템 아키텍처를 확인하고 해당하는 패키지를 다운로드하세요. 이 문서를 읽는 대부분의 Windows 사용자에게는 `MAA-<버전>-win-x64.zip`이 해당됩니다. macOS 사용자는 `MAA-<버전>-macos-universal.dmg`를 선택하세요.
## Linux 및 기타 운영 체제
MAA GUI는 Linux 및 기타 운영 체제를 **현재 지원하지 않습니다**. 이러한 시스템에서 MAA 기능을 사용하려면 **maa-cli**를 사용하세요. 자세한 내용은 maa-cli의 [설치 및 빌드](./cli/install.md) 문서를 참조하세요.
## MAA 설치
### Windows
다운로드가 완료되면 `.zip` 파일을 얻게 됩니다. 압축 해제 프로그램으로 완전히 압축을 해제하면 MAA의 모든 파일이 포함된 폴더를 얻을 수 있습니다.
::: warning
1. `C:\`, `C:\Program Files\` 등 UAC 권한이 필요한 경로에 MAA를 압축 해제하지 마세요.
2. MAA는 .NET 런타임이 내장되어 있습니다(자체 포함 배포). 하지만 Visual C++ Redistributable x64(VCRedist x64)가 여전히 필요합니다. 압축 해제된 MAA 디렉토리에서 관리자 권한으로 `DependencySetup_依赖库安装.bat`를 실행하여 해당 종속성을 설치하세요. 설치 완료 후 `MAA.exe`를 실행하세요.
자세한 내용은 [자주 묻는 질문](./faq.md) 공지를 참조하세요.
:::
`MAA.exe`를 더블 클릭하면 MAA가 실행됩니다.
::: tip
Windows 패키지 관리자(Winget)로 설치한 사용자는 압축 해제, 런타임 설치 등의 추가 작업 없이 명령줄에서 `maa`를 입력하여 MAA를 바로 실행할 수 있습니다. PATH에 `maa-cli`가 있는 경우 둘을 구분하기 위한 추가 단계가 필요할 수 있습니다.
:::
### macOS
다운로드가 완료되면 `.dmg` 파일을 얻게 됩니다. `.dmg`를 더블 클릭하여 열고, `MAA.app``/Applications`로 드래그하여 설치를 완료하세요.
## 다음 단계
설치가 완료되었으면 [초보자 가이드](./newbie.md)로 돌아가 설정을 계속하거나, [기능 소개](./introduction/)에서 MAA가 지원하는 다양한 기능을 확인해 보세요! 설치 중 문제가 발생한 경우 [자주 묻는 질문](./faq.md)을 참조하여 해결해 보세요.

View File

@@ -1134,10 +1134,10 @@ Value
무효 점유. 열거값: 0
:::
::: field name="MinitouchEnabled" type="boolean" optional
폐기됨. 원 minitouch 활성화 여부; "1" 켜기, "0" 끄기. 장치가 지원하지 않을 수 있음. 열거값: 1 (폐기됨)
폐기됨. 원 Minitouch 활성화 여부; "1" 켜기, "0" 끄기. 장치가 지원하지 않을 수 있음. 열거값: 1 (폐기됨)
:::
::: field name="TouchMode" type="string" optional default="minitouch"
터치 모드 설정. 옵션: minitouch | maatouch | adb. 기본값 minitouch. 열거값: 2
터치 모드 설정. 옵션: minitouch | maatouch | adb | MaaFwAdb. 기본값 minitouch. 열거값: 2
:::
::: field name="DeploymentWithPause" type="boolean" optional
오퍼레이터 배치 시 일시정지 여부, 자동지휘/통합 전략/보안파견에 모두 영향. 옵션: "1" 켜기, "0" 끄기. 열거값: 3
@@ -1148,4 +1148,7 @@ AdbLite 사용 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 4
::: field name="KillAdbOnExit" type="boolean" optional
종료 시 ADB 프로세스 종료 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 5
:::
::: field name="ClientType" type="string" optional
클라이언트 종류(게임 채널). 대부분의 연결 설정에서는 필요하지 않습니다. `AsstConnect` / `AsstAsyncConnect` 에 전달하는 `config` 가 연결 단계에서 실행되는 명령에 `[PackageName]` 을 사용할 때만, 연결 전에 `AsstSetInstanceOption(..., ClientType, ...)` 를 호출해 설정해야 합니다. 현재 내장 설정 중에서는 `Androws``WSA``displayId` 조회만 이 값에 의존합니다. 이 옵션은 StartUp / CloseDown 등의 작업 파라미터 `client_type` 를 대체하지 않습니다. 열거값: 6
:::
::::

View File

@@ -78,7 +78,9 @@ icon: iconoir:developer
- 按 F5 运行
::: tip
若需调试 Win32ControllerWindows 窗口控制)相关功能,需要自行从 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) 下载对应平台的压缩包,将 `bin` 目录中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目录下(如 `build/bin/Debug`)。欢迎 PR 一个自动下载脚本!
若需运行 Win32ControllerWindows 窗口控制)/ MaaFwAdbControllerMaaFramework 触控模式)相关功能,需要自行从 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) 下载对应平台的压缩包,将 `bin` 目录中的 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` 放到 MAA 的 DLL 同目录下(如 `build/bin/Debug`)。欢迎 PR 一个自动下载脚本!
若需调试相关功能,则需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,使用对应的 DLL 文件,否则在断点调试时会神秘闪退。
:::
9. 到这里,你就可以愉快地 ~~瞎 JB 改~~ 发电了

View File

@@ -8,8 +8,8 @@ icon: teenyicons:linux-alt-solid
**本教程需要读者有一定的 Linux 环境配置能力及编程基础!**若您仅希望直接安装MAA而非自行编译请阅读[用户手册 - Linux 模拟器与容器](../manual/device/linux.md)。
::: info 注意
MAA 的构建方法仍在讨论中, 本教程的内容可能过时, 请以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的脚本为准
你也可参考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
MAA 的构建方法仍在讨论中, 本教程的内容可能过时, 请以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) 中的脚本为准
你也可参考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
:::
::: info
@@ -80,9 +80,8 @@ Mac 可以使用 `tools/build_macos_universal.zsh` 脚本进行编译
cmake --install build --prefix <target_directory>
```
4. 结束,你应该能在目录下看到构建文件了
::::
4. 若需调试 MaaFwAdbControllerMaaFramework 触控模式)相关功能,需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,将 `libMaaAdbControlUnit.so` 放到安装目录下。
::::
## 集成文档
@@ -96,8 +95,6 @@ Mac 可以使用 `tools/build_macos_universal.zsh` 脚本进行编译
可参考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的实现
### C Sharp
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
### C\#
可参考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的实现

View File

@@ -16,6 +16,7 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
- 雷电模拟器 9`emulator-5554/5556/5558/5560``127.0.0.1:5555/5557/5559/5561`
- 夜神模拟器:`127.0.0.1:62001/59865`
- 逍遥模拟器:`127.0.0.1:21503`
- 腾讯应用宝 (5.10.56.xx之后)`127.0.0.1:5555`
若检测失败,请尝试使用 UAC 管理员权限启动 MAA 并再次检测。若仍失败,则请阅读下文手动设置,并参考上述列表进行反馈。
@@ -57,6 +58,7 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
- [雷电模拟器 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc)
- [夜神模拟器](https://support.yeshen.com/zh-CN/qt/ml)
- [逍遥模拟器](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537)
- [腾讯应用宝](https://sj.qq.com/faq/3878)ADB 端口固定为 `127.0.0.1:5555`ADB 路径示例:`C:\Program Files\Tencent\Androws\Application\版本号\adb.exe`
其他模拟器可参考 [赵青青的博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
@@ -186,17 +188,28 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
3. `实例编号` 填写雷电多开器内对应模拟器的编号ID如主多开为 `0`
### AVD 截图增强模式
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟开服之后下载的就没问题。)
AVD 截图增强模式在 MaaFramework 中实现,必须选择 MaaFramework 触控模式才能启用 AVD 截图增强。
1. `设置` - `连接设置` - `连接配置` 选择 `Android 虚拟设备AVD`
2. `触控模式` 选择 `MaaFramework`
## 触控模式
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):使用 C 编写的 Android 触控事件器,操作 `evdev` 设备,提供 Socket 接口供外部程序触发触控事件和手势。从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。<sup>[](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基于 Java 对 Minitouch 的重新实现,使用安卓原生的 `InputDevice`,并添加了额外特性。高版本 Android 可用性尚待测试。~~帮我们做做测试~~
3. Adb Input直接调用 ADB 使用安卓的 `input` 命令进行触控操作,兼容性最强,速度最慢。
4. [MaaFramework](https://maafw.com/):调用 MaaFramework 控制单元的截图和触控功能。可用性尚待测试。~~帮我们做做测试 x2~~
## ADB Lite
由 MAA 独立实现的 ADB Client使用 TCP 直接与 ADB Server 通信。相较原版 ADB 可以避免不停开启多个 ADB 进程,减少性能开销,但部分截图方式不可用。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
推荐启用,但具体优缺点尚待反馈。~~帮我们做做测试 x2~~
推荐启用,但具体优缺点尚待反馈。~~帮我们做做测试 x3~~
## MAA 和模拟器多开

View File

@@ -121,6 +121,8 @@ MAA WPF GUI 当前可以通过 Wine 运行。MAA 已采用自包含部署方式
推荐配置: x86_64 的框架 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 动态库
额外支持[截图增强模式](../connection.md#avd-截图增强模式)。
注意:从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
### ⚠️ [Genymotion](https://www.genymotion.com/)

View File

@@ -35,11 +35,13 @@ icon: basil:apple-solid
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
支持,但从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式
支持,且额外支持[截图增强模式](../connection.md#avd-截图增强模式)
### ✅ [蓝叠模拟器air版](https://www.bluestacks.com/mac) (免费,针对 Apple M 系列芯片进行优化的版本)
从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
支持,经测试,可用 maatouch 经`127.0.0.1:5555`连接。
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (免费,针对 Apple M 系列芯片进行优化的版本)
支持,经测试,可使用 MaaTouch 通过 `127.0.0.1:5555` 连接。
需要在模拟器 `设置` - `高级` 中打开 `Android调试ADB`
@@ -61,8 +63,10 @@ icon: basil:apple-solid
完美支持。
补充mac 下夜神模拟器的 ADB 二进制文件的位置为 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` ,在父目录 `MacOS` 下可使用 `adb devices` 命令查看 ADB 端口。
补充macOS 下夜神模拟器的 ADB 二进制文件的位置为 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` ,在父目录 `MacOS` 下可使用 `adb devices` 命令查看 ADB 端口。
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
支持,但从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
支持,且额外支持[截图增强模式](../connection.md#avd-截图增强模式)。
从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。

View File

@@ -45,6 +45,11 @@ const fullySupport = [
note: '完美支持,需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥`。已知兼容 Hyper-V。\n\n- 推荐下载 [离线安装包](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免缓慢和捆绑安装;推荐安装 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;卸载请使用官方提供的 [卸载工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除残留。\n- 若 ADB 端口号不断的无规律变动,每次启动都不相同,可能是因为您的电脑开启了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 现在会尝试自动读取蓝叠模拟器配置文件内的端口号,若该功能失效/你有多开需求/安装了多个模拟器核心,请参考 [连接设置](../connection.html#蓝叠模拟器-hyper-v-每次启动端口号都不一样) 做出修改。由于 Hyper-V 以管理员身份运行,如自动关闭模拟器、自动检测连接等不涉及 ADB 的操作同样需要以管理员身份运行 MAA。',
},
...shuffleArray([
{
name: '腾讯应用宝',
link: 'https://sj.qq.com/',
note: '支持 5.10.56.xx之后的版本。在 `设置` - `连接设置` 中选择 `腾讯应用宝` 连接配置。已知兼容 Hyper-V。\n\n- ADB 端口为 `127.0.0.1:5555`\n- ADB路径示例`C:\\Program Files\\Tencent\\Androws\\Application\\版本号\\adb.exe`。\n\n- 需要先在应用宝中 [开启 ADB 调试](https://sj.qq.com/faq/3878)。',
},
{
name: '夜神模拟器',
link: 'https://www.yeshen.com/',
@@ -72,12 +77,12 @@ const partiallySupport = shuffleArray([
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: '理论支持。\n\n- 从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。\n- AVD 是为调试而生的,更建议使用其他为游戏而设计的模拟器。',
note: '理论支持,且额外支持[截图增强模式](../connection.html#avd-截图增强模式)。\n- 从 Android 10 开始Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。\n- AVD 是为调试而生的,更建议使用其他为游戏而设计的模拟器。',
},
{
name: 'Google Play 游戏(开发者)',
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-cn',
note: '理论支持。必须启 Hyper-V且必须登录谷歌账户。\n\n- 需要使用 [自定义连接](../connection.html) 的方式来连接ADB 端口为 `6520`。\n- 由于 Android 10 及更新版本的 SELinux 策略Minitouch 无法正常工作,请切换到其他触控模式。\n- 每次启动模拟器后的首次连接都会失败,需勾选 `连接失败后尝试关闭并重启ADB进程`。',
note: '理论支持。必须启 Hyper-V且必须登录谷歌账户。\n\n- 需要使用 [自定义连接](../connection.html) 的方式来连接ADB 端口为 `6520`。\n- 由于 Android 10 及更新版本的 SELinux 策略Minitouch 无法正常工作,请切换到其他触控模式。\n- 每次启动模拟器后的首次连接都会失败,需勾选 `连接失败后尝试关闭并重启ADB进程`。',
},
]);
@@ -87,11 +92,6 @@ const notSupport = shuffleArray([
link: 'https://play.google.com/googleplaygames',
note: '不支持,[玩家客户端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)无法连接 ADB。',
},
{
name: '腾讯应用宝',
link: 'https://sj.qq.com/',
note: '不支持腾讯应用宝没有给出adb连接选项无法连接 ADB。',
},
]);
const md = new MarkdownIt();

View File

@@ -54,6 +54,21 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
由于 MAA 依赖的运行库和系统组件要求 Windows 10 及以上版本MAA 不再支持 Windows 7 / 8 / 8.1 系统。
### 被 Windows Defender / 杀毒软件误报PUA / 病毒)
- 请先确认下载来源可信仅使用官网、GitHub Releases、Winget 或官方群文件;并确认下载的是完整安装包(如 `MAA-<版本>-win-x64.zip`)。
- 自动化工具可能会触发部分杀毒软件的启发式检测,出现误报并不一定代表软件存在恶意行为。
- 若确认来源可信,建议向对应安全厂商提交误报样本,等待其病毒库修正。
- 在等待修正期间,可临时将 MAA 安装目录加入杀毒软件白名单;不建议直接关闭系统实时防护。
### DLL 注入问题
MAA 启动时弹出悲报MAA 路径的 DLL 注入可能会导致 MAA 闪退或界面渲染异常
(主要是 Nahimic 等程序引起的)
可以在资源管理器中导航至 MAA 给出的路径,右键该 DLL 并重命名,把扩展名改为 `dll1` 等无效扩展名
(如果没有扩展名或者你找不到这个文件,就点击页面上的`查看--显示--文件扩展名``查看--显示--隐藏的项目`
**该方法可能会导致相关程序出错,请谨慎使用,想了解问题原因可以查看[相关动态](https://t.bilibili.com/1133690423484612615)和 [blog](https://blog.walterlv.com/post/wpf-renders-wrong-because-of-nahimicosd.html)**
## 连接错误
### 确认 ADB 及连接地址正确

View File

@@ -8,7 +8,7 @@ icon: ph:sword-bold
`resource/copilot/*.json` 的使用方法及各字段说明
::: tip
请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用
请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用。注释中的 **作业站** 均指 [PRTS plus](https://prts.plus/) 。
:::
## 完整字段一览
@@ -64,7 +64,7 @@ icon: ph:sword-bold
"type": "部署", // 操作类型,可选,默认为 "Deploy"
// "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera" | "ResetStopwatch"
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" | "重置全局计时器"
// 中英文皆可,效果相同
// 中英文皆可,效果相同,但目前作业站发布只支持英文
// 若为 "部署", 当费用不够时,会一直等待到费用够(除非 timeout
// 若为 "技能", 当技能 cd 没转好时,一直等待到技能 cd 好(除非 timeout
// "二倍速" 是可切换的,即使用一次变成二倍速,再次使用又变回一倍速
@@ -106,7 +106,7 @@ icon: ph:sword-bold
"direction": "左", // 部署干员的干员朝向。 type 为 "部署" 时必选
// "Left" | "Right" | "Up" | "Down" | "None"
// "左" | "右" | "上" | "下" | "无"
// 中英文皆可,效果相同
// 中英文皆可,效果相同,但目前作业站发布只支持英文
"skip_if_not_ready": false, // 仅在 type 为 "技能" 时有效, 允许在技能不可用时跳过当前行动,主要用于关闭未打完的弹药技能。可选,默认为 false
"skill_usage": 1, // 修改技能用法。当 type 为 "技能用法" 时必选
// 举例:刚下桃金娘需要她帮忙打几个怪,不能自动开技能,中后期平稳了需要她自动开技能
@@ -155,7 +155,7 @@ icon: ph:sword-bold
"type": "二倍速"
}
],
"minimum_required": "v4.0", // 最低要求 maa 版本号,必选
"minimum_required": "v6.7.0", // 最低要求 maa 版本号,必选;例如 v6.7.0, v6.8.0-beta.1
"doc": {
// 描述,可选。
"title": "低练度高成功率作业",

View File

@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
无效占位。枚举值0。
:::
::: field name="MinitouchEnabled" type="boolean" optional
已弃用。原为是否启用 minitouch"1" 开,"0" 关。注意设备可能不支持。枚举值1已弃用
已弃用。原为是否启用 Minitouch"1" 开,"0" 关。注意设备可能不支持。枚举值1已弃用
:::
::: field name="TouchMode" type="string" optional default="minitouch"
触控模式设置。可选值minitouch | maatouch | adb。默认 minitouch。枚举值2。
触控模式设置。可选值minitouch | maatouch | adb | MaaFwAdb。默认 minitouch。枚举值2。
:::
::: field name="DeploymentWithPause" type="boolean" optional
是否暂停下干员,同时影响抄作业、肉鸽、保全。可用值:"1" 或 "0"。枚举值3。
@@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
::: field name="KillAdbOnExit" type="boolean" optional
退出时是否杀掉 Adb 进程。可用值:"0" 或 "1"。枚举值5。
:::
::: field name="ClientType" type="string" optional
客户端类型(游戏渠道)。大多数连接配置不需要设置。仅当传给 `AsstConnect` / `AsstAsyncConnect``config` 在连接阶段命令里使用 `[PackageName]` 时,才需要在连接前调用 `AsstSetInstanceOption(..., ClientType, ...)`。当前内置配置仅 `Androws``WSA``displayId` 查询依赖该值。该选项不替代 StartUp / CloseDown 等任务参数里的 `client_type`。枚举值6。
:::
::::

View File

@@ -78,7 +78,9 @@ icon: iconoir:developer
- 按 F5 執行。
::: tip
若需針對 Win32ControllerWindows 視窗控制)相關功能進行除錯,需要自行從 [MaaFramework Releases](https://github.com/MaaModular/MaaFramework/releases) 下載對應平台的壓縮檔案,將 `bin` 目錄中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目錄下(例如 `build/bin/Debug`)。歡迎 PR 一個自動下載腳本!
若需執行 Win32ControllerWindows 視窗控制)/ MaaFwAdbControllerMaaFramework 觸控模式)相關功能,需要自行從 [MaaFramework Releases](https://github.com/MaaModular/MaaFramework/releases) 下載對應平台的壓縮檔案,將 `bin` 目錄中的 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` 放到 MAA 的 DLL 同目錄下(例如 `build/bin/Debug`)。歡迎 PR 一個自動下載腳本!
若需針對相關功能進行除錯,則需要自行編譯 MaaFramework 的 Debug 版本,使用對應的 DLL 檔案,否則在斷點除錯時會神秘閃退。
:::
9. 到這裡,你就可以愉快地 ~~瞎雞巴改~~ 發電了

View File

@@ -8,7 +8,7 @@ icon: teenyicons:linux-alt-solid
**本教學需要讀者具備一定的 Linux 環境配置能力與程式設計基礎!** 若您僅希望直接安裝 MAA 而非自行編譯,請參閱[用戶手冊 - Linux 模擬器與容器](../manual/device/linux.md)。
::: info 注意
MAA 的建置方法仍在討論中,本教學內容可能過時,請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的腳本為準。
MAA 的建置方法仍在討論中,本教學內容可能過時,請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) 中的腳本為準。
您也可以參考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)。
:::
@@ -80,7 +80,7 @@ Mac 使用者可以使用 `tools/build_macos_universal.zsh` 腳本進行編譯
cmake --install build --prefix <target_directory>
```
4. 結束,您現在應該能在目錄下看到建置完成的檔案了
4. 若需針對 MaaFwAdbControllerMaaFramework 觸控模式)相關功能進行除錯,需要[自行編譯 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,將 `libMaaAdbControlUnit.so` 放到安裝目錄下
::::
@@ -96,8 +96,6 @@ Mac 使用者可以使用 `tools/build_macos_universal.zsh` 腳本進行編譯
可參考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的實作方式。
### C Sharp
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
### C\#
可參考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的實作方式。

View File

@@ -1,5 +1,5 @@
---
order: 3
order: 4
icon: mdi:plug
---
@@ -16,6 +16,7 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
- 雷電模擬器 9`emulator-5554/5556/5558/5560``127.0.0.1:5555/5557/5559/5561`
- 夜神模擬器:`127.0.0.1:62001/59865`
- 逍遙模擬器:`127.0.0.1:21503`
- 騰訊應用寶 (5.10.56.xx 之後)`127.0.0.1:5555`
若偵測失敗,請嘗試以系統管理員權限啟動 MAA 並再次偵測。若仍失敗,請參考下文進行手動設定,並參考上述清單向我們回報。
@@ -57,6 +58,7 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
- [雷電模擬器 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc)
- [夜神模擬器](https://support.yeshen.com/zh-CN/qt/ml)
- [逍遙模擬器](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537)
- [騰訊應用寶](https://sj.qq.com/faq/3878)ADB 連接埠固定為 `127.0.0.1:5555`ADB 路徑範例:`C:\Program Files\Tencent\Androws\Application\版本號\adb.exe`
其他模擬器可參閱 [趙青青的博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
@@ -186,17 +188,28 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
3. `執行個體編號` 填寫雷電多開器內對應的模擬器序號ID主多開為 `0`
### AVD 截圖增強模式
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟開服之後下載的就沒問題。)
AVD 截圖增強模式在 MaaFramework 中實現,必須選擇 MaaFramework 觸控模式才能啟用 AVD 截圖增強。
1. `設定` - `連線設定` - `連線配置` 選擇 `Android 虛擬裝置AVD`
2. `觸控模式` 選擇 `MaaFramework`
## 觸控模式
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):基於 C 語言編寫的 Android 觸控事件驅動程式,透過操作 `evdev` 裝置,提供 Socket 介面供外部程式觸發觸控事件與手勢。自 Android 10 開始,若系統的 SELinux 為 `Enforcing`強制模式Minitouch 將無法運作。<sup>[來源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基於 Java 對 Minitouch 的重新實作,改用 Android 原生的 `InputDevice`介面,並加入額外特性。目前在高版本 Android 上的相容性仍待測試,~~幫我們做做測試~~。
3. Adb Input直接呼叫 ADB 執行 Android 內建的 `input` 指令來進行觸控操作。此方式的相容性最強,但執行速度最慢。
4. [MaaFramework](https://maafw.com/):呼叫 MaaFramework 控制單元的螢幕截圖和觸控功能。可用性尚待測試。~~幫我們做做測試 x2~~
## ADB Lite
由 MAA 獨立實現的 ADB 用戶端,使用 TCP 直接與 ADB Server 通信。相較原版 ADB 可避免頻繁開啟 ADB 程序並減少效能開銷,但部分截圖方式不支援。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
推薦開啟,但具體表現尚待回饋。~~幫我們做做測試 x2~~
推薦開啟,但具體表現尚待回饋。~~幫我們做做測試 x3~~
## MAA 與模擬器多開

View File

@@ -121,6 +121,8 @@ MAA WPF GUI 當前可以透過 Wine 執行。MAA 已採用自包含部署方式
推薦配置x86_64 的架構 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 動態函式庫
額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)。
請注意:從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
### ⚠️ [Genymotion](https://www.genymotion.com/)

View File

@@ -35,11 +35,13 @@ icon: basil:apple-solid
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
支援,但從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式
支援,且額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)
### ✅ [BlueStacks 藍疊模擬器 Air 版](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
支援,經測試,可用 maatouch 透過 `127.0.0.1:5555` 連線。
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
支援,經測試,可用 MaaTouch 透過 `127.0.0.1:5555` 連線。
需要在模擬器 `設定` - `進階` 中打開 `Android 調試 (ADB)`
@@ -61,8 +63,10 @@ icon: basil:apple-solid
完美支援。
補充mac 下夜神模擬器的 ADB 執行檔路徑為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 指令查看 ADB 連接埠。
補充macOS 下夜神模擬器的 ADB 執行檔路徑為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 指令查看 ADB 連接埠。
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
支援,但從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
支援,且額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)。
從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。

View File

@@ -45,6 +45,11 @@ const fullySupport = [
note: '完美支援,需要在模擬器 `設定` - `進階` 中打開 `Android 調試橋 (ADB)`。已知相容 Hyper-V。\n\n- 推薦下載 [離線安裝程式](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免下載緩慢或綑綁安裝;推薦安裝 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;解除安裝請使用官方提供的 [解除安裝工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除殘留。\n- 若 ADB 連接埠號碼不斷無規律變動,每次啟動都不相同,可能是因為您的電腦開啟了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 目前會嘗試自動讀取藍疊模擬器配置檔案內的連接埠號碼,若該功能失效、有分身多開需求或安裝了多個模擬器核心,請參考 [連線設定](../connection.html#藍疊模擬器-hyper-v-每次啟動連接埠號都不一樣) 進行修改。由於 Hyper-V 以管理員身分執行,如自動關閉模擬器、自動偵測連線等不涉及 ADB 的操作同樣需要以系統管理員身分執行 MAA。',
},
...shuffleArray([
{
name: '騰訊應用寶',
link: 'https://sj.qq.com/',
note: '支援 5.10.56.xx 之後的版本。在 `設定` - `連線設定` 中選擇 `騰訊應用寶` 連線配置。已知相容 Hyper-V。\n\n- ADB 連接埠為 `127.0.0.1:5555`。\n- ADB 路徑範例:`C:\\Program Files\\Tencent\\Androws\\Application\\版本號\\adb.exe`。\n\n- 需要先在應用寶中 [開啟 ADB 除錯](https://sj.qq.com/faq/3878)。',
},
{
name: '夜神模擬器 (NoxPlayer)',
link: 'https://www.yeshen.com/',
@@ -72,7 +77,7 @@ const partiallySupport = shuffleArray([
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: '理論支援。\n\n- 從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為開發除錯而生的,更建議使用其他為遊戲設計的模擬器。',
note: '理論支援,且額外支援[截圖增強模式](../connection.html#avd-截圖增強模式)。\n- 從 Android 10 開始Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為開發除錯而生的,更建議使用其他為遊戲設計的模擬器。',
},
{
name: 'Google Play 遊戲(開發者版本)',
@@ -87,11 +92,6 @@ const notSupport = shuffleArray([
link: 'https://play.google.com/googleplaygames',
note: '不支援,[一般玩家版客戶端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-tw#installing-game-consumer)無法連線 ADB。',
},
{
name: '騰訊應用寶',
link: 'https://sj.qq.com/',
note: '不支援,騰訊應用寶沒有提供 ADB 連線選項,無法連線 ADB。',
},
]);
const md = new MarkdownIt();

View File

@@ -1,5 +1,5 @@
---
order: 2
order: 3
icon: ph:question-fill
---

View File

@@ -0,0 +1,83 @@
---
order: 2
icon: material-symbols:download-2-rounded
---
<!-- markdownlint-disable MD024 -->
# 下載與安裝
::: tip
您正在查閱 MAA GUI 的下載與安裝說明文件。若您需要查閱 maa-cli 的下載與安裝說明,請前往 maa-cli 的 [安裝及編譯](./cli/install.md) 文件。目前 MAA Android 版已開放測試,請前往 [MAA-Meow](https://github.com/Aliothmoon/MAA-Meow) 瞭解更多資訊。
:::
## 下載 MAA
MAA 提供多種下載方式,包括官網下載、透過套件管理員安裝、群組檔案下載等方式。請選擇適合您的方式進行下載。
### 透過 [官網](https://maa.plus) 下載最新的 MAA 安裝檔
官網一般會自動選擇正確的版本架構,對於大多數閱讀本文件的 Windows 使用者來說,應為 Windows x64。對於閱讀本文件的 macOS 使用者來說,應下載 macOS 通用版本。
### 透過 [Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install) 下載最新的 MAA 安裝檔
請確認系統架構並下載對應的安裝檔案。對於大多數閱讀本文件的 Windows 使用者來說,應為 Windows x64。對於閱讀本文件的 Mac 使用者Mirror酱 不提供通用安裝檔請確認您的晶片架構arm/x86後下載對應版本。
::: tip
[Mirror酱](https://mirrorchyan.com/zh/projects?rid=MAA&source=maadocs-install) 是獨立的第三方下載加速服務,需要付費使用,而非由 MAA 收費。其營運成本由訂閱收入支撐,部分收益將回饋專案開發者。歡迎訂閱 CDK 享受快速下載,同時支援專案持續開發。
:::
### 使用 Windows 套件管理員Winget安裝
::: tip
本方法僅適用於使用 Windows 的使用者
:::
請在終端機中執行以下指令:
```bash
winget install maa
```
透過此方式安裝的預設安裝路徑為 `C:\Users\使用者名稱\AppData\Local\Microsoft\WinGet\Packages`
### 透過 QQ 群組檔案下載最新的 MAA 安裝檔
1. 加入 [MAA 官方 QQ 群](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
2. 在群組檔案中找到最新的 MAA 壓縮檔進行下載。
### 透過 [GitHub Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) 下載最新的 MAA 安裝檔
請確認系統架構並下載對應的安裝檔。對於大多數閱讀本文件的 Windows 使用者來說,檔案名稱應為 `MAA-<版本號>-win-x64.zip`。對於閱讀本文件的 macOS 使用者來說,應選擇 `MAA-<版本號>-macos-universal.dmg`
## Linux 和其他作業系統
MAA GUI **暫不支援** Linux 和其他作業系統。您可以使用 **maa-cli** 在這些系統上使用 MAA 的功能。請前往 maa-cli 的 [安裝及編譯](./cli/install.md) 文件瞭解更多資訊。
## 安裝 MAA
### Windows
下載完成後,您會得到一個 `.zip` 檔案。使用解壓縮軟體將其完整解壓縮後,會得到一個包含 MAA 所有檔案的資料夾。
::: warning
1. 請不要將 MAA 解壓縮到如 `C:\``C:\Program Files\` 等受系統保護的路徑,以免因「管理員權限限制」導致程式執行失敗。
2. MAA 已內建 .NET 執行環境(獨立發行版),但仍需要 Visual C++ Redistributable x64VCRedist x64。請在解壓縮後的 MAA 目錄中以系統管理員身分執行 `DependencySetup_依赖库安装.bat` 來安裝該相依元件,安裝完成後再執行 `MAA.exe`
更多資訊請參考 [常見問題](./faq.md) 置頂內容。
:::
連按兩下 `MAA.exe` 即可啟動 MAA。
::: tip
透過 Windows 套件管理員Winget安裝的使用者可直接在命令列中輸入 `maa` 來啟動 MAA而無需額外執行解壓縮、安裝執行環境等操作。若環境變數 PATH 中已有 `maa-cli`,可能需要額外步驟以區分兩者。
:::
### macOS
下載完成後,您會得到一個 `.dmg` 檔案。連按兩下開啟該 `.dmg`,將 `MAA.app` 拖曳至 `/Applications` 以完成安裝。
## 後續步驟
安裝完成後,請返回 [新手上路](./newbie.md) 繼續設定,或前往 [功能介紹](./introduction/) 查看 MAA 支援的各項功能吧!若您在安裝中遇到問題,可以嘗試查閱 [常見問題](./faq.md) 來解決問題。

View File

@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
無效佔位。列舉值0。
:::
::: field name="MinitouchEnabled" type="boolean" optional
已棄用。原為是否啟用 `minitouch`"1" 開,"0" 關。請注意設備可能不支援。列舉值1已棄用
已棄用。原為是否啟用 Minitouch"1" 開,"0" 關。請注意設備可能不支援。列舉值1已棄用
:::
::: field name="TouchMode" type="string" optional default="minitouch"
觸控模式設定。可選值:`minitouch` | `maatouch` | `adb`。預設為 `minitouch`。列舉值2。
觸控模式設定。可選值minitouch | maatouch | adb | MaaFwAdb。預設為 minitouch。列舉值2。
:::
::: field name="DeploymentWithPause" type="boolean" optional
是否暫停下幹員,同時影響抄作業、肉鴿、保全派駐。可用值:"1" 或 "0"。列舉值3。
@@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
::: field name="KillAdbOnExit" type="boolean" optional
退出時是否結束 ADB。可用值"0" 或 "1"。列舉值5。
:::
::: field name="ClientType" type="string" optional
客戶端類型(遊戲渠道)。大多數連線設定不需要設定。僅當傳給 `AsstConnect` / `AsstAsyncConnect``config` 在連線階段命令中使用 `[PackageName]` 時,才需要在連線前呼叫 `AsstSetInstanceOption(..., ClientType, ...)`。目前內建設定中僅 `Androws``WSA``displayId` 查詢依賴該值。此選項不取代 StartUp / CloseDown 等任務參數中的 `client_type`。列舉值6。
:::
::::

View File

@@ -1,7 +0,0 @@
{
"sdk": {
"version": "10.0.201",
"rollForward": "disable",
"allowPrerelease": false
}
}

View File

@@ -61,6 +61,9 @@ extern "C"
AsstHandle ASSTAPI AsstCreateEx(AsstApiCallback callback, void* custom_arg);
void ASSTAPI AsstDestroy(AsstHandle handle);
// 设置实例级参数。
// InstanceOptionKey::ClientType 仅在所选连接配置的 connect 阶段命令依赖 [PackageName] 时需要预先设置;
// 当前内置配置中仅 Androws / WSA 的 displayId 查询依赖该值。
AsstBool ASSTAPI
AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, const char* value);

View File

@@ -0,0 +1,670 @@
{
"code": "PA-EX-1",
"height": 9,
"levelId": "activities/act51side/level_act51side_ex01",
"name": "在底层",
"stageId": "act51side_ex01#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 10
}

View File

@@ -0,0 +1,670 @@
{
"code": "PA-EX-1",
"height": 9,
"levelId": "activities/act51side/level_act51side_ex01",
"name": "在底层",
"stageId": "act51side_ex01",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 10
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-2",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex02",
"name": "活尸",
"stageId": "act51side_ex02#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-2",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex02",
"name": "活尸",
"stageId": "act51side_ex02",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-3",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex03",
"name": "母亲",
"stageId": "act51side_ex03#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-3",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex03",
"name": "母亲",
"stageId": "act51side_ex03",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-4",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex04",
"name": "长子",
"stageId": "act51side_ex04#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-4",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex04",
"name": "长子",
"stageId": "act51side_ex04",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

View File

@@ -0,0 +1,710 @@
{
"code": "PA-EX-5",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex05",
"name": "三姐妹",
"stageId": "act51side_ex05#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 12
}

View File

@@ -0,0 +1,710 @@
{
"code": "PA-EX-5",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex05",
"name": "三姐妹",
"stageId": "act51side_ex05",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 12
}

View File

@@ -0,0 +1,733 @@
{
"code": "PA-EX-6",
"height": 9,
"levelId": "activities/act51side/level_act51side_ex06",
"name": "钦差大臣",
"stageId": "act51side_ex06#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 11
}

View File

@@ -0,0 +1,733 @@
{
"code": "PA-EX-6",
"height": 9,
"levelId": "activities/act51side/level_act51side_ex06",
"name": "钦差大臣",
"stageId": "act51side_ex06",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 11
}

View File

@@ -0,0 +1,654 @@
{
"code": "PA-EX-7",
"height": 8,
"levelId": "activities/act51side/level_act51side_ex07",
"name": "乐观的悲剧",
"stageId": "act51side_ex07#f#",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 11
}

Some files were not shown because too many files have changed in this diff Show More