Compare commits

...

432 Commits

Author SHA1 Message Date
MistEO
b1f017dcc9 ci: bot agent use secret 2026-06-30 22:28:56 +08:00
MistEO
b9fa7ca008 ci: bot agent use secrets 2026-06-30 22:28:14 +08:00
github-actions[bot]
d41c370110 chore: Auto Update Game Resources - 2026-06-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28439907321

[skip changelog]
2026-06-30 11:10:47 +00:00
uye
7311dab428 fix: 修复未开启系统通知时进行系统通知检查 2026-06-30 12:58:47 +08:00
github-actions[bot]
55668face3 chore: Auto Update Game Resources - 2026-06-29
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28395806977

[skip changelog]
2026-06-29 19:02:38 +00:00
uye
031e99c295 feat: 增加自动下载更新包提示文本 2026-06-29 14:46:42 +08:00
uye
84b560d3cd feat: 新增隐藏更新进度提示框选项 2026-06-29 14:37:02 +08:00
MistEO
ac9dbff483 ci: 强调要读skills 2026-06-29 12:15:19 +08:00
Constrat
b926a838c2 chore: revert discord notification embed color 2026-06-28 16:56:53 +02:00
uye
d9e8ec97ee Release v6.13.0 (#17210)
## Summary by Sourcery

为 v6.13.0 更新发布通知和问题分析工作流。

新特性:
- 在 Discord 发布通知中新增分别针对 Windows x64/ARM 和 Linux x64/ARM 的下载链接。

增强:
- 修订 Discord 发布通知消息文案和嵌入样式。
- 将问题 AI 分析工作流从基于 Codex 的集成切换为基于 Claude 的集成,包括作业命名和输出引用。

CI:
- 更新用于 Discord 发布通知和问题 AI 分析的 GitHub Actions 工作流,以反映新的构建产物和 AI 提供商配置。

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

## Summary by Sourcery

Update release notification and issue analysis workflows for v6.13.0.

New Features:
- Add separate Windows x64/ARM and Linux x64/ARM download links to
Discord release notifications.

Enhancements:
- Revise Discord release notification message copy and embed styling.
- Switch the issue AI analysis workflow from Codex-based to Claude-based
integration, including job naming and output references.

CI:
- Update GitHub Actions workflows for Discord release notifications and
issue AI analysis to reflect new artifacts and AI provider
configuration.

</details>
2026-06-28 21:25:15 +08:00
uye
d92fa39e88 docs: update skill and changelog 2026-06-28 21:24:19 +08:00
MistEO
30477505e8 ci: AI changelog generation with auto PR creation (#17214)
* ci: AI changelog generation with auto PR creation

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: force write CHANGELOG.md from AI output

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: add warning when changelog has no diff

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 14:42:57 +08:00
MistEO
0fc8263854 chore: switch AI issue analysis to unified main branch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 13:36:13 +08:00
dependabot[bot]
ff7306775b ci: bump actions/cache from 5 to 6 in /.github/workflows in the github-actions group (#17207)
Signed-off-by: dependabot[bot] <support@github.com>
2026-06-28 13:24:55 +08:00
uye
8af85aa4ec docs: changelog 2026-06-28 10:09:07 +08:00
github-actions[bot]
2bf335d35d feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28303359795
[skip changelog]
2026-06-27 22:12:56 +00:00
MistEO
18d764643a chore: switch AI issue analysis from Codex to Claude
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 00:22:42 +08:00
Constrat
62f456dc5a style: update discord release notification 2026-06-27 12:03:59 +02:00
Constrat
ca19cb1af1 fix: discord release link for linux x86_64 2026-06-27 10:06:59 +02:00
uye
58e3d06b27 Release v6.13.0-beta.3 (#17203)
## 由 Sourcery 总结

改进运行时语言切换、跨实例属性依赖处理和 OCR 可靠性,同时优化任务队列 UI 行为以及多处彩蛋流程。

新功能:
- 支持在多个 ViewModel 间进行跨实例和基于属性的依赖绑定,包括针对语言变化的全局刷新钩子。
- 引入可复用的 `LocalizedObservableList` 帮助类,用于集中管理本地化的选项列表,并在语言改变时自动刷新。
- 新增统一的非阻塞 `EasterEggDialog` 视图和辅助 API,用于在设置页和助理流程中展示脚本化对话框。
- 通过 `LocalizationHelper` 暴露运行时语言重载能力,提供 `LanguageChanged` 事件和
`CurrentCulture`,实现无需重启应用的热语言切换。
- 增强 `OcrPackNcnn` 中的 OCR 行为,以兼容 fastdeploy
的检测与识别流程以及空检测场景;在未检测到任何框时,将整张图片视作一行处理。
- 新增 GPU 选项视图模型封装(`GpuOptionItem`),以支持本地化的 GPU 选择并保持稳定的 `ComboBox` 绑定行为。
- 扩展成就系统,增加发布阶段元数据,包括本地化的工具提示和基于阶段的 UI 提示。

错误修复:
- 通过将 `LanguageChanged` 接入设置、任务队列、工具箱、计时器、关卡和多个设置面板,修复多处与语言相关的陈旧文本问题。
- 在临时 ViewModel 被释放时跟踪并清理跨实例属性依赖,防止内存泄漏和“僵尸”通知。
- 将 DWM 组合被禁用和拖放过程中的 COM 异常视为非致命错误,避免不必要的应用退出,同时仍然弹出错误对话框。
- 调整预处理、候选过滤和多边形评分,使其与 fastdeploy 行为一致,修复小 ROI 场景下的 OCR
误检问题,包括丢弃过于细长的检测框。
- 确保本地化的条目名称和关卡工具提示在语言更改时能够正确回退与重新加载。
- 修正肉鸽难度选择校验逻辑,并在主题特定限制变化时正确更新当前显示的难度。
- 改进对永久关卡阻塞后续关卡的处理,在配置会导致静默跳过后续关卡时对用户进行警告。
- 通过将显示文本与底层 `GpuOption` 值解耦,修复语言切换时的 GPU 选择与 `ComboBox` 刷新问题。

增强优化:
- 重构本地化处理逻辑,让更多设置与任务相关的 ViewModel 订阅集中式的 `LanguageChanged`
事件,并就地刷新缓存的显示字符串,而非依赖重启。
- 优化 Pallas 语言“醉酒/宿醉”彩蛋流程,避免强制重启,使用内部语言切换辅助工具,并在启动与退出时展示非阻塞对话框。
- 将多种对话框控件(文本输入、定时文本以及新的
`EasterEggDialog`)统一到重命名后的视图类下,并更新在任务队列和其他界面中的使用方式。
- 改进 `StageManager` 和 `StageInfo`,同时存储本地化键和值,使关卡名称、提示和小游戏入口在语言变更时可动态刷新。
- 使多个设置列表(连接配置、客户端类型、无人机使用模式、基础设施模式、更新通道、肉鸽主题、收容模式、战斗序列/重置模式等)现代化,统一使用
`LocalizedObservableList`,以实现更简洁、可热插拔的本地化方案。
- 收紧计时器、协作作战、工具箱、托盘图标、后置动作以及根视图在语言变化和启动流程中的行为,包括自动刷新标题与工具提示。
- 添加结构化的成就阶段发布日期映射,以支持更具信息量的成就 UI。
- 对日志作用域和若干 UI 绑定做小规模重构,包括语言切换后的非阻塞关卡/日期刷新以及废弃配置键的清理。

杂务:
- 更新多份游戏资源 JSON 文件(关卡、任务、物品索引、地块位置、版本清单),以适配最新内容与关卡布局,包括新的危机合约 v2
地块位置信息。

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

## Summary by Sourcery

Improve runtime language switching, cross-instance property dependency
handling, and OCR robustness, while refining task queue UI behaviors and
various Easter egg flows.

New Features:
- Support cross-instance and attribute-based property dependencies
across ViewModels, including global refresh hooks for language changes.
- Introduce a reusable LocalizedObservableList helper to centralize
localized option lists that automatically refresh on language change.
- Add a unified non-blocking EasterEggDialog view and helper APIs for
showing scripted dialogs from settings and assistant flows.
- Expose runtime language reload via LocalizationHelper with a
LanguageChanged event and CurrentCulture, enabling hot language
switching without app restart.
- Enhance OCR behavior in OcrPackNcnn to handle fastdeploy-compatible
detection, recognition, and empty-detection cases, including treating
the whole image as a line when no boxes are found.
- Add GPU option view-model wrapper (GpuOptionItem) to support localized
GPU selection with stable ComboBox binding behavior.
- Extend achievements with release phase metadata including localized
tooltips and phase-based UI hints.

Bug Fixes:
- Fix multiple language-related stale-text issues by wiring
LanguageChanged into Settings, task queues, toolbox, timers, stages, and
various settings panels.
- Prevent memory leaks and zombie notifications by tracking and cleaning
cross-instance property dependencies when transient ViewModels are
disposed.
- Handle DWM composition disabled and drag-drop COM exceptions as
non-fatal, avoiding unnecessary application exits while still surfacing
error dialogs.
- Address OCR mis-detections on small ROIs by aligning preprocessing,
candidate filtering, and polygon scoring with fastdeploy behavior,
including dropping overly thin boxes.
- Ensure localized item names and stage tooltips fall back gracefully
and reload correctly when the language is changed.
- Correct roguelike difficulty selection validation and update of the
displayed difficulty when theme-specific limits change.
- Improve handling of permanent stages blocking later entries by warning
the user when configuration would silently skip subsequent stages.
- Fix GPU selection and ComboBox refresh issues when language changes by
decoupling display text from the underlying GpuOption value.

Enhancements:
- Rework localization handling so many settings and task-related
ViewModels subscribe to a central LanguageChanged event and refresh
cached display strings in-place instead of requiring restarts.
- Refine Pallas language "drunk/hangover" easter egg flow to avoid
forced restarts, use internal language switching helpers, and show
non-blocking dialogs on start and exit.
- Unify various dialog controls (text input, timed text, and new
EasterEggDialog) under renamed view classes and updated usages in
TaskQueue and other screens.
- Improve StageManager and StageInfo to store localization keys
alongside values, enabling dynamic refresh of stage names, tips, and
mini-game entries on language change.
- Modernize several settings lists (connection configs, client types,
drones usage, infrast modes, update channels, roguelike themes,
reclamation modes, fight series/reset modes, etc.) to use
LocalizedObservableList for cleaner, hot-swappable localization.
- Tighten timer, copilot, toolbox, notify icon, post-action, and root
view behaviors around language changes and startup flows, including
automatic title and tooltip refreshes.
- Add structured release date mapping for achievement phases to support
more informative achievement UI.
- Minor refactors to logging scopes and miscellaneous UI bindings,
including non-blocking stage/date updates after language changes and
cleanup of obsolete configuration keys.

Chores:
- Update multiple game resource JSON files (stages, tasks, item indexes,
tile positions, version manifests) for the latest content and stage
layouts, including new crisis v2 tile position data.

</details>
2026-06-27 13:53:51 +08:00
Aliothmoon
72c68bd1e0 chore: 补点注释 (#17205) 2026-06-27 13:53:32 +08:00
uye
19e6e1d70b fix. 复制任务时保留原任务的启用状态 2026-06-27 13:36:27 +08:00
uye
2cad3baf92 docs: changelog 2026-06-27 13:28:12 +08:00
uye
5d5b66a1ef ai: 优化 changelog skill,changelog 生成改用 ai 生成 2026-06-27 13:28:03 +08:00
uye
cdbf31debb feat: 增加 DWM 被禁用与重复拖动解决方案提示 2026-06-27 12:37:39 +08:00
github-actions[bot]
0239409ef4 chore: Auto Update Game Resources - 2026-06-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28232398301

[skip changelog]
2026-06-26 10:29:16 +00:00
github-actions[bot]
8927eb7a15 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28203974590
[skip changelog]
2026-06-25 22:17:06 +00:00
github-actions[bot]
b81e1d49b5 chore: Auto Update Game Resources - 2026-06-25
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28157219377

[skip changelog]
2026-06-25 08:29:20 +00:00
uye
7a92d322d8 refactor: 移动 TextDialogWithTimerUserControl 到 Dialogs 文件夹并统一命名
- 将 TextDialogWithTimerUserControl 从 Views/UserControl/ 移至 Views/Dialogs/,重命名为 TextWithTimerDialogView
- 将 TextDialogUserControl 重命名为 TextDialogView,统一 Dialogs 文件夹内的 *DialogView 命名约定
- 同步更新命名空间、x:Class、copyright 注释及 TaskQueueViewModel 中的引用
2026-06-25 15:43:38 +08:00
uye
a36947a8ec chore: 喝酒堂堂复活 2026-06-25 14:13:38 +08:00
uye
eb318012c4 feat: 无痛喝酒 2026-06-25 14:11:46 +08:00
uye
d17249649e feat: 不重启切换语言 (#17183)
* feat: 不重启切换语言

* feat: 部分文本与列表更新

* feat: 右键图标菜单、关卡提示、牛杂、关卡列表、指定材料

* chore: Stage 刷新

* feat: LocalizedList

* chore: SettingsViewModel

* chore: ConnectSettingsUserControlModel

* chore: GameSettingsUserControlModel

* chore: VersionUpdateSettingsUserControlModel

* chore: InfrastSettingsUserControlModel

* chore: RecruitSettingsUserControlModel

* chore: RoguelikeSettingsUserControlModel

* chore: UserDataUpdateSettingsUserControlModel

* chore: LastSyncTime

* chore: 设置指引重叠

* chore: PerformanceUserControlModel

* chore: GPU 绑定

* chore: FightSettingsUserControlModel

* chore: GuiSettingsUserControlModel

* style: FightSettingsUserControlModel

* chore: ReclamationSettingsUserControlModel

* feat: 干员识别/仓库识别 支持动态切换语言

* feat: 干员名称显示语言

* perf: 优化 IsLocalizationDictionary 判断

* style: 空行

* chore: UnInitializePropertyDependencies / GC.SuppressFinalize(this);

* chore: PropertyDependsOnUtility 增加锁

* chore: 移除未使用 using

* chore: 更新时序

* chore: 在 UI 线程 Reload

* fix: OperNameLanguageModeList 去重

* chore: LocalizedList -> LocalizedObservableList

* fix: 修复 TaskItemViewModel.Name 绕过 _name 字段导致 SetAndNotify 变更检测失效

getter 改为复用 BaseTask.NameOrTaskType(与原构造参数语义一致),
移除已成为死代码的 _name 字段;setter 写配置后显式 NotifyOfPropertyChange,
确保外部重命名后 UI 能收到通知。

* fix: UnInitializePropertyDependencies 清理孤儿外部实例避免处理器累积

当某 externalInstance 的 propMap 完全清空后,移除该键并反订阅其
externalHandler,避免 TaskItemViewModel 反复创建/销毁时 _externalHandlers
外壳持续累积(虽不产生错误通知,但持有空字典浪费内存)。

* rft: 提取 RefreshInverseModeText 消除 InverseMode 自赋值 hack

原 LanguageChanged 回调用 InverseMode = InverseMode 触发 setter 内的
本地化文本刷新,依赖 SetAndNotify 不 early-return 的副作用,语义脆弱。
提取 RefreshInverseModeText() 方法供 setter 和回调共用。

* rft: UseStoneString 改用 SuppressMessage 替代 #pragma

将 #pragma warning disable CA1822 改为 [SuppressMessage],
并补充 Justification 说明必须保持实例成员以支持 PropertyDependsOn 反射触发通知。

* docs: 补充 LanguageChanged 订阅单例约定注释

在 LanguageChanged 事件声明处补充订阅约定(必须是 IoC 单例,
非单例需 Dispose 时清理跨实例依赖);在 ToolboxViewModel(Stylet IoC 单例)
订阅处标注无需取消订阅。

* rft: 删除 TaskItemViewModel 构造函数的 name 参数

Name getter 已改为从配置动态读取 NameOrTaskType,构造时传入的 name
不再有任何作用,删除该参数及三处调用点的实参。

* chore: 简化绑定

* fix: 修复语言切换时 PropertyDependsOn 回调读到旧字典的时序竞态

原先 Language setter 里先 SetAndNotify 再 Reload,导致同步通知链中
PropertyDependsOn(Language) 回调执行时 ResourceDictionary 尚未替换,
LocalizationHelper.GetString 拿到的是旧语言文本。

调整为先 Reload(内部先替换字典再触发 LanguageChanged),再更新
_language 字段并触发 PropertyChanged,确保两条通知链路
(LanguageChanged 订阅者 + PropertyDependsOn 回调)读到的都是新语言。

* refactor: LocalizedObservableList 内部支持增删,消除 Zip 脱节隐患

将 _entries 从 readonly array 改为可变 List,新增 Add/Remove/RemoveAt/
Insert/Clear 方法同步维护 _entries 与 Items,确保两者始终一一对应。

此前 RefreshLocalization 用 Zip 遍历,对运行时动态添加的项(如
OperNameLanguageForce)不会刷新 Display,需调用方手动补偿。现在动态项
也纳入 _entries,RefreshLocalization 改为索引遍历,覆盖全部条目。

同步修正类头 XML 注释:去掉不实的 INotifyPropertyChanged 声明与
'转发 item 属性变更'描述(item 的 PropertyChanged 由 WPF 直接监听)。

调用方 GuiSettingsUserControlModel 改用 Add/Remove API,移除
RefreshLocalization 里的手动补偿逻辑。

* fix: 任务排序/增删后 Index 变化时自动刷新 Name

TaskItemViewModel.Name 的 getter 依赖 Index 从配置读取,但此前只声明了
对 Language 的跨实例依赖,拖拽排序/增删任务导致 Index 变化时 Name 不会被
通知刷新,自定义名任务可能短暂显示错位。

将 PropertyDependsOnAttribute 的 AllowMultiple 改为 true,为 Name 额外声明
[PropertyDependsOn(nameof(Index))],使 Index 变化时自动触发 Name 刷新。
Utility 的 GetCustomAttributes 循环已原生支持多 attribute,无需改动。

* chore: 图标 Unloaded 时取消 LanguageChanged 订阅

* fix: Pormpt1/Pormpt2 小提示刷新
2026-06-25 13:14:55 +08:00
uye
d31ca81e83 feat: 常驻关卡备选提示 2026-06-25 10:56:18 +08:00
github-actions[bot]
5bfbd22215 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28130848588
[skip changelog]
2026-06-24 21:31:18 +00:00
github-actions[bot]
9ab5912a4b chore: Auto Update Game Resources - 2026-06-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28126992299

[skip changelog]
2026-06-24 20:20:15 +00:00
Manicsteiner
382f10a58c chore: JP episide new navigation and JieGarden theme recruit 2026-06-24 23:56:21 +08:00
Constrat
295f2073bd chore: EN preload lone trail + fix JieGarden themes 2026-06-24 14:42:17 +02:00
Constrat
821d5fc425 fix: EnterEpisodeNew-Click EN 2026-06-24 14:00:43 +02:00
HX3N
1676cb7de4 chore: KR remove deprecated EnterEpisodeNew 2026-06-24 20:33:55 +09:00
Aliothmoon
efb3c7a567 fix: 部分设备界园树洞是非境识别错误 (#17181) 2026-06-24 10:58:48 +08:00
Aliothmoon
418a4aa0e0 fix: ncnn 对齐 fastdeploy 的 det 缩放与 rec 预处理 (#17182)
* fix: 对齐 OcrPackNcnn det 缩放算法与 fastdeploy

- 小 ROI 下 ceil 直接就爆了,识别会出现问题

* fix: ncnn 对齐 fastdeploy de1通道序/打分/裁剪

* fix: OcrPackNcnn det 无框兜底走整图 rec,尺寸过滤对齐 fastdeploy
2026-06-24 10:58:22 +08:00
uye
cab1ca8cca chore: dlc 还是放后面,毕竟钥匙扣已经这么做了)
[skip changelog]
2026-06-23 15:52:33 +08:00
Manicsteiner
130164e925 chore: JP ocr edits 2026-06-23 13:24:42 +08:00
uye
85024b6141 rft: 优化成就 DLC 标识显示效果与提示,增加对应 DLC 上线时间提示 2026-06-23 12:24:02 +08:00
github-actions[bot]
aa47abfacb chore: Auto Templates Optimization
Triggered by fa8d0f8344

[skip changelog]
2026-06-23 02:04:54 +00:00
Manicsteiner
fa8d0f8344 chore: JP LoneTrail theme and JieGarden theme update (#17175)
主题预载
界园主题突然大改了一遍,其他几个免费主题好像没问题,付费主题等issue和贴图()
2026-06-23 10:04:32 +08:00
HX3N
95a3fa6236 fix: expanded KR training roi for wrapped names 2026-06-23 10:49:39 +09:00
github-actions[bot]
cf61b5b6e4 chore: Auto Templates Optimization
Triggered by 20056e52b9

[skip changelog]
2026-06-22 23:41:02 +00:00
HX3N
20056e52b9 chore: KR LoneTrail theme 2026-06-23 08:07:32 +09:00
HX3N
746daa27cf chore: KR ocr edits 2026-06-23 08:07:31 +09:00
Constrat
c3dffe9929 fix: future alter operators EN 2026-06-22 18:34:10 +02:00
github-actions[bot]
94e0addc9a chore: Auto Update Game Resources - 2026-06-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27953171369

[skip changelog]
2026-06-22 12:38:44 +00:00
github-actions[bot]
1083ee342e chore: Auto Update Game Resources - 2026-06-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27933177568

[skip changelog]
2026-06-22 06:11:46 +00:00
uye
f9dbbb36b9 Release v6.13.0-beta.2 (#17170)
## Summary by Sourcery

错误修复:
- 在 `MultiCopilotTaskPlugin` 中遍历导航重试循环时,使用正确的最大重试配置。

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

## Summary by Sourcery

Bug Fixes:
- Use the correct maximum retry configuration when iterating the
navigation retry loop in MultiCopilotTaskPlugin.

</details>
2026-06-22 12:36:59 +08:00
uye
1c4aba28fd docs: Bump version to v6.13.0-beta.2 in CHANGELOG
Updated changelog to reflect version bump to v6.13.0-beta.2 and added fix details.
2026-06-22 12:34:42 +08:00
status102
ba47dd16cf fix: 猪猪 2026-06-22 12:24:31 +08:00
uye
db6bb9c4e6 Release v6.13.0-beta.1 (#17131)
## Summary by Sourcery

为 v6.13.0-beta.1 做准备,加入基于 Android NCNN 的 OCR、Webhook 预设模板,以及多项稳定性与 CI
改进。

New Features:
- 为 Android 构建引入基于 NCNN 的 OCR 实现,同时在其他平台继续使用 FastDeploy OCR。
- 在外部通知设置中新增可选择的 Webhook 预设模板,包括 MeoW 预设。
- 支持「仅配置」的 6 星自动公招确认,并固定公招时间为 9:00。

Bug Fixes:
- 确保 Maa API 更新检查能够遵循全局更新代理配置。
- 修复任务停止与 UI 重置逻辑,避免竞争条件,并确保超时能强制恢复 UI。
- 当在连接过程中已发出停止请求时,阻止协助器(copilot)继续启动。
- 当 Windows 无法显示系统 Toast 通知时,避免显示应用内 Toast 日志,而是改用 Growl 作为回退方案。

Enhancements:
- 重构 OCR 包实现,在其背后使用 pimpl 隔离平台相关的后端实现。
- 调整多协助器导航重试逻辑,更好地尊重已配置的重试次数。
- 改进手动停止行为,将 Core 停止处理和任务结束脚本集中到统一逻辑中。
- 在 Toast 通知失败的情况下,始终使用 Growl 显示失败消息,而不是写入任务日志。
- 刷新明日方舟的关卡方块、关卡、肉鸽和任务元数据资源,以支持最新活动。
- 收紧公招时间处理,将 5 星 / 6 星公招时间固定为 9:00,并打通序列化和工具箱相关逻辑。
- 更新 MaaDeps 下载脚本以拉取 v2.13.1,并使依赖安装脚本路径与当前目录结构保持一致。

Build:
- 在 MaaCore 的 CMake 中拆分 OCR 实现选择:桌面端使用 FastDeploy,Android 使用
NCNN,并相应调整链接依赖。
- 将 Avalonia CI 触发条件限制为相关源码与构建文件,并将默认推送分支切换为 dev-v2。

CI:
- 将各工作流中对 actions/checkout 的使用升级到 v7。
- 在资源同步与模板优化工作流中,将 ad-m/github-push-action 固定到 v1.3.0。
- 将 softprops/action-gh-release 升级到 v3.0.1,用于发布 GitHub Release。

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

## Summary by Sourcery

Prepare v6.13.0-beta.1 by adding Android NCNN-based OCR, webhook preset
templates, and various stability and CI improvements.

New Features:
- Introduce NCNN-based OCR implementation for Android builds while
keeping FastDeploy OCR for other platforms.
- Add selectable preset webhook templates, including a MeoW preset, in
external notification settings.
- Support configuration-only 6-star auto-recruit confirmation with fixed
9:00 recruit time.

Bug Fixes:
- Ensure Maa API update checks respect the global update proxy
configuration.
- Fix task stopping and UI reset logic to avoid race conditions and
ensure timeouts force UI recovery.
- Prevent copilot start from proceeding if a stop request was issued
during connection.
- Avoid showing in-app toast logs when Windows toast notifications are
unavailable, instead using Growl fallback.

Enhancements:
- Refactor OCR pack implementation behind a pimpl to separate
platform-specific backends.
- Adjust multi-copilot navigation retry logic to better respect
configured retry counts.
- Improve manual stop behavior to centralize Core stop handling and
end-of-task scripts.
- Always use Growl for toast notification failure messages instead of
task log entries.
- Refresh Arknights tile, stage, roguelike, and task metadata resources
for new events.
- Tighten recruit time handling by fixing 5-star/6-star recruit times to
9:00 and wiring them through serialization and toolbox.
- Update MaaDeps downloader script to pull v2.13.1 and align dependency
setup script paths with current layout.

Build:
- Split OCR implementation selection in MaaCore CMake to use FastDeploy
on desktop and NCNN on Android, adjusting link dependencies accordingly.
- Restrict Avalonia CI triggers to relevant source and build files and
switch its default push branch to dev-v2.

CI:
- Upgrade actions/checkout usage across workflows to v7.
- Pin ad-m/github-push-action to v1.3.0 in resource sync and template
optimization workflows.
- Bump softprops/action-gh-release to v3.0.1 for GitHub release
publishing.

</details>

新功能:
- 为外部通知配置引入内置 webhook 预设模板,包括 MeoW 预设。
- 在外部通知设置界面中开放预设 webhook 的选择,并提供本地化显示名称。

错误修复:
- 在通过 Maa API 检查更新时,使用全局更新代理配置。

优化改进:
- 刷新《明日方舟》的地块位置、关卡、肉鸽和任务元数据资源,并提升资源版本以适配新一批活动。

CI:
- 更新 GitHub workflow,使用 `ad-m/github-push-action` v1.3.0 进行自动推送。

日常维护:
- 调整依赖安装批处理脚本的路径/名称,以与当前工具布局保持一致。

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

## Summary by Sourcery

为 v6.13.0-beta.1 做准备,加入基于 Android NCNN 的 OCR、Webhook 预设模板,以及多项稳定性与 CI
改进。

New Features:
- 为 Android 构建引入基于 NCNN 的 OCR 实现,同时在其他平台继续使用 FastDeploy OCR。
- 在外部通知设置中新增可选择的 Webhook 预设模板,包括 MeoW 预设。
- 支持「仅配置」的 6 星自动公招确认,并固定公招时间为 9:00。

Bug Fixes:
- 确保 Maa API 更新检查能够遵循全局更新代理配置。
- 修复任务停止与 UI 重置逻辑,避免竞争条件,并确保超时能强制恢复 UI。
- 当在连接过程中已发出停止请求时,阻止协助器(copilot)继续启动。
- 当 Windows 无法显示系统 Toast 通知时,避免显示应用内 Toast 日志,而是改用 Growl 作为回退方案。

Enhancements:
- 重构 OCR 包实现,在其背后使用 pimpl 隔离平台相关的后端实现。
- 调整多协助器导航重试逻辑,更好地尊重已配置的重试次数。
- 改进手动停止行为,将 Core 停止处理和任务结束脚本集中到统一逻辑中。
- 在 Toast 通知失败的情况下,始终使用 Growl 显示失败消息,而不是写入任务日志。
- 刷新明日方舟的关卡方块、关卡、肉鸽和任务元数据资源,以支持最新活动。
- 收紧公招时间处理,将 5 星 / 6 星公招时间固定为 9:00,并打通序列化和工具箱相关逻辑。
- 更新 MaaDeps 下载脚本以拉取 v2.13.1,并使依赖安装脚本路径与当前目录结构保持一致。

Build:
- 在 MaaCore 的 CMake 中拆分 OCR 实现选择:桌面端使用 FastDeploy,Android 使用
NCNN,并相应调整链接依赖。
- 将 Avalonia CI 触发条件限制为相关源码与构建文件,并将默认推送分支切换为 dev-v2。

CI:
- 将各工作流中对 actions/checkout 的使用升级到 v7。
- 在资源同步与模板优化工作流中,将 ad-m/github-push-action 固定到 v1.3.0。
- 将 softprops/action-gh-release 升级到 v3.0.1,用于发布 GitHub Release。

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

## Summary by Sourcery

Prepare v6.13.0-beta.1 by adding Android NCNN-based OCR, webhook preset
templates, and various stability and CI improvements.

New Features:
- Introduce NCNN-based OCR implementation for Android builds while
keeping FastDeploy OCR for other platforms.
- Add selectable preset webhook templates, including a MeoW preset, in
external notification settings.
- Support configuration-only 6-star auto-recruit confirmation with fixed
9:00 recruit time.

Bug Fixes:
- Ensure Maa API update checks respect the global update proxy
configuration.
- Fix task stopping and UI reset logic to avoid race conditions and
ensure timeouts force UI recovery.
- Prevent copilot start from proceeding if a stop request was issued
during connection.
- Avoid showing in-app toast logs when Windows toast notifications are
unavailable, instead using Growl fallback.

Enhancements:
- Refactor OCR pack implementation behind a pimpl to separate
platform-specific backends.
- Adjust multi-copilot navigation retry logic to better respect
configured retry counts.
- Improve manual stop behavior to centralize Core stop handling and
end-of-task scripts.
- Always use Growl for toast notification failure messages instead of
task log entries.
- Refresh Arknights tile, stage, roguelike, and task metadata resources
for new events.
- Tighten recruit time handling by fixing 5-star/6-star recruit times to
9:00 and wiring them through serialization and toolbox.
- Update MaaDeps downloader script to pull v2.13.1 and align dependency
setup script paths with current layout.

Build:
- Split OCR implementation selection in MaaCore CMake to use FastDeploy
on desktop and NCNN on Android, adjusting link dependencies accordingly.
- Restrict Avalonia CI triggers to relevant source and build files and
switch its default push branch to dev-v2.

CI:
- Upgrade actions/checkout usage across workflows to v7.
- Pin ad-m/github-push-action to v1.3.0 in resource sync and template
optimization workflows.
- Bump softprops/action-gh-release to v3.0.1 for GitHub release
publishing.

</details>

</details>
2026-06-21 17:07:07 +08:00
uye
349a0bf730 docs: changelog 2026-06-21 16:47:41 +08:00
uye
e2400684bb chore: 通知不可用时记录日志 2026-06-21 16:46:15 +08:00
uye
6cec1e9ced chore: 移除未使用变量 2026-06-21 16:18:38 +08:00
uye
d821607983 chore: copilot stop 改为 Task 2026-06-21 16:18:37 +08:00
Status102
8f860635aa fix: 错误短路 2026-06-21 16:05:40 +08:00
uye
222c853263 rft: 无法显示系统通知时回退到软件内通知,启动时日志中的通知不可用提示改为 growl 提示 (#17165) 2026-06-21 15:43:34 +08:00
dependabot[bot]
8276849f1a ci:将 /.github/workflows 中的 github-actions 组更新 2 次 (#17163)
Bumps the github-actions group in /.github/workflows with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `softprops/action-gh-release` from 3.0.0 to 3.0.1
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  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-06-20 23:08:27 +08:00
uye
f24c0e237a feat: 新增可通过手动修改配置文件开启 6 星自动公招,将是否招募和招募时间选项移入常规设置 (#17154) 2026-06-20 16:46:05 +08:00
Halo
e04e656f45 修复MAAUnified CI 选错ref的问题 (#17143)
* ci: checkout PR head for MAAUnified debug builds

* fix(Avalonia): 删除倒反天罡的对主仓CI的相关测试
2026-06-19 17:22:15 +08:00
uye
9104f1a06a chore: 调整日志超时提示 2026-06-19 17:08:36 +08:00
github-actions[bot]
9344e38fec chore: Auto Templates Optimization
Triggered by d2cb0fd435

[skip changelog]
2026-06-19 05:59:02 +00:00
HX3N
d2cb0fd435 chore: YostarKR crop JieGarden@Roguelike@StartAction.png to improve match score 2026-06-19 14:55:29 +09:00
HX3N
645b86babd fix: YostarKR correct ClickChapterNewDefaultProgress roi
Yostar changed the UI layout
2026-06-19 13:57:58 +09:00
github-actions[bot]
70a3a5a6eb feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27723628023
[skip changelog]
2026-06-17 22:24:57 +00:00
github-actions[bot]
6b7ec43006 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27721405857
[skip changelog]
2026-06-17 21:41:25 +00:00
github-actions[bot]
3578c255be chore: Auto Update Game Resources - 2026-06-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27710873810

[skip changelog]
2026-06-17 18:29:27 +00:00
status102
0d66797b34 fix: 漏了 2026-06-17 18:21:06 +08:00
Aliothmoon
9097d4e1c1 feat: Android OCR 推理使用 NCNN (#17133) 2026-06-17 16:56:03 +08:00
uye
0f4497da86 rft: 统一停止逻辑 (#17087)
* rft: 统一停止逻辑

* chore: 连接时停止脚本
2026-06-17 15:02:24 +08:00
Manicsteiner
ded0682bcc chore: Yostar SSS#10 极寒 (#17137) 2026-06-17 14:58:52 +08:00
Manicsteiner
8c560b8bc6 ci: 优化Avalonia构建工作流触发条件 (#17139)
- push 触发改为 dev-v2 分支。
 - 不再在仅有 resources 更改时触发。
 - 新增该文件本身和cmake、3rdparty触发条件,不再在仅md文件更改时触发,与 ci.yml 保持一致。

~另外这玩意失败概率有点高啊~

## 由 Sourcery 提供的摘要

调整 Avalonia CI 工作流的触发条件,以更好地匹配相关的源码变更和分支使用情况。

CI:
- 将 Avalonia CI 的 push 触发分支从 `dev` 限制为 `dev-v2`。
- 当仅有 Markdown 或资源文件发生变更时跳过运行;同时确保对工作流文件、CMake、第三方依赖(3rdparty
includes)以及核心源码路径的变更仍会触发构建。

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

## Summary by Sourcery

Adjust Avalonia CI workflow triggers to better match relevant source
changes and branch usage.

CI:
- Limit Avalonia CI push triggers to the dev-v2 branch instead of dev.
- Exclude runs when only markdown or resource files change while
ensuring the workflow, CMake, 3rdparty includes, and core source paths
still trigger builds.

</details>
2026-06-17 14:57:42 +08:00
status102
0b281e6ff6 fix: 自动战斗导航retry异常, 跳过作业 2026-06-17 14:24:55 +08:00
github-actions[bot]
9f831564be feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27652374477
[skip changelog]
2026-06-16 22:30:10 +00:00
status102
3b1eb29e20 chore: 怪猎一期复刻 CF-EX-8, CF-S-1 view1参数 2026-06-15 20:11:45 +08:00
status102
41dfee2d92 fix: HandleUpdateFromMaaApi 未能遵循正确的代理设置 2026-06-15 20:09:35 +08:00
uye
a2d1cd93a2 chore: "text": ["苍暮", "山", "地"]
[skip changelog]
2026-06-15 18:27:59 +08:00
github-actions[bot]
7946a61441 chore: Auto Update Game Resources - 2026-06-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27536955354

[skip changelog]
2026-06-15 09:30:35 +00:00
SherkeyXD
110baa4fdf fix: 修正落叶落叶逐火入口OCR文本 2026-06-15 17:30:23 +08:00
uye
b99c07b234 chore: 移除依赖库安装的提权操作 2026-06-15 17:13:45 +08:00
SherkeyXD
f3e8070e1d feat: 添加落叶逐火复刻入口任务 2026-06-15 17:01:50 +08:00
Saratoga-Official
4034bc58e4 fix: 肉鸽战斗结束后招募误入StartExplore
fix #17120
2026-06-15 12:38:20 +08:00
github-actions[bot]
0dde389e34 chore: Auto Update Game Resources - 2026-06-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27521713212

[skip changelog]
2026-06-15 03:12:52 +00:00
Saratoga-Official
3f18299322 fix: 水月大海的遗产和狗眼婆娑事件名识别错误 2026-06-15 11:07:41 +08:00
Saratoga-Official
e47d6a56a3 fix: GetDrop增加LoadingText等待
fix #17118
2026-06-15 10:59:14 +08:00
Saratoga-Official
d74fa22fb6 fix: 修复CloseEvent和CloseCollection同时出现导致的问题
fix #17121
2026-06-15 10:36:12 +08:00
github-actions[bot]
d0fee36c76 chore: Auto Update Game Resources - 2026-06-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27511123959

[skip changelog]
2026-06-14 20:31:01 +00:00
AnnAngela
4af887cd0f ci: Update GitHub push action version comment in workflow (#17124) 2026-06-14 23:08:04 +08:00
dependabot[bot]
043b78e19f ci: bump ad-m/github-push-action from d30dc2d070765d7e509df00c34c5fa2dd636ff74 to 881a6320fdb16eb5318c5054f31c218aec2b324c in /.github/workflows in the github-actions group across 1 directory (#16934)
Signed-off-by: dependabot[bot] <support@github.com>
2026-06-14 23:02:55 +08:00
pboymt
e02f75adea feat: Custom Webhook 新增预置模板功能 (#17081)
* feat: Custom Webhook 新增预置模板功能

为 Custom Webhook 添加预置模板下拉框,内置 MeoW 模板。
选中模板后自动填入 URL/Headers/Body,用户手动替换占位符。

- 新增 WebhookPresetTemplate 模型类及 BuiltInTemplates 静态列表
- 新增预置模板 ComboBox 及 tooltip 提示
- 选中模板时自动填入并持久化 URL/Headers/Body
- 新增 4 条本地化 key(5 种语言)

* fix: 处理 Code Review 反馈

- WebhookPresetTemplate.BuiltInTemplates 改为 IReadOnlyList 防止外部修改
- 切换回自定义时不再清空字段,保留用户已编辑内容

* chore: 移除 MeoW 模板中不需要的 Headers 配置

* feat: 使用尖括号标识用户需替换的占位符,移除多余的 UI 通知

- WebhookPresetTemplate URL 中的 {nickname} 改为 <nickname>,
  以区别于系统自动替换的 {title}/{content}/{time}
- 移除 SelectedPresetTemplateId 中多余的 NotifyOfPropertyChange 调用
  (属性 setter 已通过 SetAndNotify 自动通知 UI 更新)
2026-06-14 20:06:21 +08:00
github-actions[bot]
f6aa5b4797 chore: Auto Update Game Resources - 2026-06-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27496235398

[skip changelog]
2026-06-14 10:40:16 +00:00
HY
578d23e6ae chore: 調整繁中服 "CharsNameOcrReplace" 部分內容 (#17113) 2026-06-14 12:37:27 +02:00
uye
ac38ea9e43 Release v6.12.2 (#17109)
## Summary by Sourcery

改进 Windows 更新程序的鲁棒性、实例协调机制以及 CI/发布工作流程,以支持 v6.12.2 版本发布。

New Features:
- 允许 Windows 更新程序接收一个可选的命名互斥量参数,在更新期间阻止新的应用实例启动,并与 WPF 启动器使用的互斥量进行协调。
- 在 Windows 更新应用程序失败时,自动回滚已备份的文件。

Bug Fixes:
- 通过重试、强制删除和原子安装策略加固 Windows 更新程序的文件操作,以更好地处理被锁定或正在使用的文件。
- 确保 POSIX 命令运行器在无法在给定超时时间内建立套接字连接时,会超时并干净地杀死子进程。
- 在应用新更新之前,清理上一次中断更新遗留的待删除文件。

Enhancements:
- 调整备份和回收逻辑,在回收站操作失败时回退到强制删除。
- 改进关于 MuMu 渲染器库加载路径的日志记录,以提升诊断能力。
- 优化 CI 中并发组(concurrency group)的处理,并保护某些工作流不在 fork 的拉取请求上运行。
- 重构 WPF 引导程序中的互斥量/实例键处理逻辑,以便其他组件(如更新程序)复用。
- 将 Windows CI 和打包工作流切换为使用 `windows-2025-vs2026` 运行器镜像。

CI:
- 通过使用显式环境变量、适当引用(quoting),并将执行限制在非 fork PR 上,加固发布准备和 PR 自动打标签工作流。
- 通过环境变量对标签/更新日志生成以及标签合并步骤进行参数化,使 GitHub Actions 脚本更加健壮。

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

## Summary by Sourcery

Improve Windows updater robustness, instance coordination, and
CI/release workflows for the v6.12.2 release.

New Features:
- Allow the Windows updater to take an optional named mutex parameter to
block new app instances during updates and coordinate with the WPF
launcher mutex.
- Add automatic rollback of backed-up files when the Windows update
application fails.

Bug Fixes:
- Harden Windows updater file operations with retry, force-delete, and
atomic install strategies to better handle locked or in-use files.
- Ensure the POSIX command runner times out and cleanly kills child
processes if a socket connection cannot be established within the given
timeout.
- Clean up stale pending-delete files from previous interrupted updates
before applying a new update.

Enhancements:
- Adjust backup and recycle logic to fall back to force deletion when
recycle bin operations fail.
- Improve logging around MuMu renderer library loading paths for better
diagnostics.
- Refine concurrency group handling in CI and guard certain workflows
from running on forked pull requests.
- Refactor mutex/instance-key handling in the WPF bootstrapper for reuse
by other components like the updater.
- Switch Windows CI and packaging workflows to the windows-2025-vs2026
runner image.

CI:
- Harden release-preparation and PR auto-tag workflows by using explicit
environment variables, quoting, and restricting execution to non-fork
PRs.
- Parameterize tag/changelog generation and tag merge steps via
environment variables for more robust GitHub Actions scripting.

</details>
2026-06-14 17:27:06 +08:00
uye
5bdf6b9320 docs: changelog 2026-06-14 17:25:25 +08:00
uye
cafc394605 Merge commit from fork
- release-preparation.yml: bind PR_TITLE/PR_URL/TAG_NAME via env instead of inlining expressions in run blocks; add fork guard to both jobs
- pr-auto-tag.yml: bind EVENT_NAME/PR_TITLE/INPUT_TAG/TAG_NAME via env; replace bash inline expression with [ ] test
- ci.yml: bind CONCURRENCY_GROUP via env instead of inlining github.head_ref in run block
2026-06-14 13:05:13 +08:00
Saratoga-Official
0d2e18a476 chore: 更新肉鸽招募干员
fix #17094
2026-06-13 15:58:22 +08:00
Saratoga-Official
1dfac534d0 fix: 界园移时换物放弃探索
fix #17055
2026-06-13 14:14:06 +08:00
github-actions[bot]
f7262208f0 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27446261928
[skip changelog]
2026-06-12 22:18:01 +00:00
status102
99167c3298 fix: 水月肉鸽事件DiceConfirm后事件不处理 2026-06-12 19:57:13 +08:00
status102
c5f51f56fe perf: 初始化期TaskQueue滑动宽限 2026-06-12 19:00:43 +08:00
soundofautumn
38527ffe08 build: use vs2026 in publish (#15806)
* build: publish remove Visual Studio 17 2022

* build: test vs2026

* fix: 不小心删多了

* fix: nightly 应该也要改

* fix: 这个好像也得改?
2026-06-12 15:45:24 +08:00
uye
21a8d170d7 chore: 移除未使用的变量 2026-06-12 14:13:39 +08:00
soundofautumn
208d28d6fa feat: MAA updater 增加文件被占用时增加重试、互斥量协调与回滚机制 (#16703)
* feat: updater和maa本体共享一个mutex锁

* feat: updater和maa本体共享一个mutex锁

* feat: 改进MAA updater

* feat: instance key改成mutex name

* fix: unused function
2026-06-12 13:56:32 +08:00
Halo
a73ce8efeb fix: respect timeout while waiting for macOS socket data (#17027)
fix: respect timeout while waiting for POSIX socket data
2026-06-12 01:35:09 +08:00
uye
562ff75c5a chore: 简化 external_renderer_ipc 加载成功的日志 2026-06-12 00:27:03 +08:00
uye
b318e3698f Release v6.12.1 (#17078)
## Summary by Sourcery

调整多协作助手任务中的阶段导航颜色阈值参数和 OCR 调试输出。

Enhancements:
- 在 `MultiCopilotTaskPlugin` 中,用 `special_params` 代替 `bin_threshold`
来配置阶段颜色阈值。
- 将阶段检测的阶段图像预处理从灰度转换为 HSV 颜色空间。
- 扩展 OCR 调试绘制,在分数旁边同时显示识别到的文本。

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

## Summary by Sourcery

Adjust stage navigation color thresholding parameters and OCR debugging
output for multi-copilot tasks.

Enhancements:
- Use special_params instead of bin_threshold for stage color threshold
configuration in MultiCopilotTaskPlugin.
- Switch stage image preprocessing from grayscale to HSV color space for
stage detection.
- Extend OCR debug drawing to include recognized text alongside the
score.

</details>
2026-06-11 22:14:54 +08:00
uye
edb9b268e7 docs: changelog 2026-06-11 22:12:12 +08:00
status102
263a84831d fix: 自动战斗导航选错关卡无法重选 2026-06-11 21:09:30 +08:00
status102
e44ccffe0e perf: 不再使用不必要的子任务 2026-06-11 21:09:29 +08:00
uye
d900c20b65 chore: 加两个提前返回 2026-06-11 21:02:20 +08:00
status102
d373e3a094 fix: 多作业模式关卡名复核失效 2026-06-11 20:41:04 +08:00
github-actions[bot]
cf370818e0 chore: Auto Update Game Resources - 2026-06-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27343798086

[skip changelog]
2026-06-11 11:33:56 +00:00
Rin
018e4ba38f fix: 处理界园事件内通宝交换后的事件结束页 (#16936)
* fix: 处理界园事件内通宝交换后的事件结束页

* fix: 优化事件内放弃通宝的#next
2026-06-11 17:12:30 +08:00
status102
9b51d03415 fix: 有小猪 2026-06-11 13:10:41 +08:00
status102
54d00e741d perf(core): OCRer DEBUG下m_image_draw绘制增加结果文本 2026-06-11 13:08:39 +08:00
uye
ff47c11d99 Release v6.12.0 (#17074)
* Revert "fix: Potential fix for pull request finding"

This reverts commit 588bfb3778.

* Revert "chore: 删除多余验证"

This reverts commit e208a2f94e.

* chore: Auto Update Game Resources - 2026-06-09

https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27222080798

[skip changelog]

* fix: build warning

* feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27239478748
[skip changelog]

* chore: 还原牛杂 i18n 实现方式

* chore: 阵地足球开始后增加动画延迟,避免点入编队界面

* chore: 足球需要更多的 325

* chore: 调整部署速度

* chore: Auto Update Game Resources - 2026-06-10

https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27265152626

[skip changelog]

* fix(gui): 释放 StartSettings 中未释放的 Process 对象 (#17060)

StartEmulator / RestartAdb / ReconnectByAdb 中 new 出来的 Process 对象在使用后
未被释放,会泄漏进程相关句柄(CA2000)。改为 using 声明,使其在作用域结束时
释放。释放 Process 托管对象只回收本地句柄,不会终止已启动的进程,因此对仿真器
的 fire-and-forget 启动也是安全的。

不改动 catch 兜底里的静态 Process.Start,以及 GetProcesses() 的查询写法。

* chore: OF1把嵯峨换成银灰避免可能打不过

* fix(gui): 修复 MuMu 12 任务完成后无法关闭模拟器 (#17067)

* fix(gui): 修复 MuMu 12 任务完成后无法关闭模拟器

感谢 @lingwateryang 在 issue 中给出的详细分析。

* fix(gui): MuMu 12 关闭模拟器改用 control 命令

旧的 `api -v {index} shutdown_player` 已失效。按 @ABA2396 的 review 意见,本 PR
仅将关闭命令替换为 `control -v {index} shutdown`;调用 MuMu 的接口之后模拟器是否
真正退出由 MuMu 负责,不在 MAA 的处理范围内,故不再附加进程确认与强杀等逻辑。

* chore: 繁中服「雪山降臨1101」活動導航 & 「喀蘭貿易技術研發部」小遊戲 (#17073)

* chore: 繁中服「雪山降臨1101」活動導航

* chore: 喀蘭貿易技術研發部 小遊戲

* feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27299220997
[skip changelog]

* chore: Auto Update Game Resources - 2026-06-10

https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27300017468

[skip changelog]

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Zmjjeff7 <2519416535@qq.com>
Co-authored-by: Saratoga-Official <1819530756@qq.com>
Co-authored-by: HY <45387477+momomochi987@users.noreply.github.com>
2026-06-11 03:42:32 +08:00
uye
ec76f93881 docs: changelog 2026-06-11 03:41:14 +08:00
github-actions[bot]
305b67bbb9 chore: Auto Update Game Resources - 2026-06-10
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27300017468

[skip changelog]
2026-06-10 19:15:44 +00:00
github-actions[bot]
e23d910fd7 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27299220997
[skip changelog]
2026-06-10 19:01:50 +00:00
HY
880a1987b6 chore: 繁中服「雪山降臨1101」活動導航 & 「喀蘭貿易技術研發部」小遊戲 (#17073)
* chore: 繁中服「雪山降臨1101」活動導航

* chore: 喀蘭貿易技術研發部 小遊戲
2026-06-11 01:25:52 +08:00
Zmjjeff7
f64a0af6c3 fix(gui): 修复 MuMu 12 任务完成后无法关闭模拟器 (#17067)
* fix(gui): 修复 MuMu 12 任务完成后无法关闭模拟器

感谢 @lingwateryang 在 issue 中给出的详细分析。

* fix(gui): MuMu 12 关闭模拟器改用 control 命令

旧的 `api -v {index} shutdown_player` 已失效。按 @ABA2396 的 review 意见,本 PR
仅将关闭命令替换为 `control -v {index} shutdown`;调用 MuMu 的接口之后模拟器是否
真正退出由 MuMu 负责,不在 MAA 的处理范围内,故不再附加进程确认与强杀等逻辑。
2026-06-11 01:14:05 +08:00
Saratoga-Official
28b6264a3c chore: OF1把嵯峨换成银灰避免可能打不过 2026-06-10 22:26:25 +08:00
Zmjjeff7
79a8a9bcca fix(gui): 释放 StartSettings 中未释放的 Process 对象 (#17060)
StartEmulator / RestartAdb / ReconnectByAdb 中 new 出来的 Process 对象在使用后
未被释放,会泄漏进程相关句柄(CA2000)。改为 using 声明,使其在作用域结束时
释放。释放 Process 托管对象只回收本地句柄,不会终止已启动的进程,因此对仿真器
的 fire-and-forget 启动也是安全的。

不改动 catch 兜底里的静态 Process.Start,以及 GetProcesses() 的查询写法。
2026-06-10 20:19:39 +08:00
github-actions[bot]
26011dae85 chore: Auto Update Game Resources - 2026-06-10
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27265152626

[skip changelog]
2026-06-10 08:58:55 +00:00
uye
be1087846b chore: 调整部署速度 2026-06-10 12:02:42 +08:00
uye
127fed5318 chore: 足球需要更多的 325 2026-06-10 11:59:35 +08:00
uye
3a9e059299 chore: 阵地足球开始后增加动画延迟,避免点入编队界面 2026-06-10 11:53:58 +08:00
uye
11c8170e7b chore: 还原牛杂 i18n 实现方式 2026-06-10 11:11:42 +08:00
github-actions[bot]
88bc6533fa feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27239478748
[skip changelog]
2026-06-09 22:17:52 +00:00
uye
4b50961a75 fix: build warning 2026-06-10 01:37:28 +08:00
github-actions[bot]
7d5648fe1a chore: Auto Update Game Resources - 2026-06-09
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27222080798

[skip changelog]
2026-06-09 17:09:13 +00:00
uye
4245829444 Revert "chore: 删除多余验证"
This reverts commit e208a2f94e.
2026-06-10 00:56:33 +08:00
uye
127e84462e Revert "fix: Potential fix for pull request finding"
This reverts commit 588bfb3778.
2026-06-10 00:56:33 +08:00
uye
15d1848e8e Release v6.12.0-beta.2 (#17054)
## Summary by Sourcery

改进交易订单处理、配置保存和小游戏元数据,同时新增一个小游戏任务定义。

新功能:
- 为新的 PF 小游戏添加配置和任务定义。

错误修复:
- 在配置保存时使用带有适当异常处理的信号量,以避免竞态条件,并确保在应用程序释放时可靠地进行最终保存。
- 通过重试、验证和失败上报来保护交易订单变更,减少制造状态不一致的情况。
- 调整小游戏显示和提示解析逻辑,优先采用 API 提供的值,防止本地化文本不正确或缺失。

改进:
- 简化 MuMu 外部渲染器加载的日志输出。
- 精简最终配置保存的日志,以清晰表明成功或失败。

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

## Summary by Sourcery

Improve trade order handling, configuration saving, and mini‑game
metadata while adding a new mini‑game task definition.

New Features:
- Add configuration and task definitions for a new PF mini‑game.

Bug Fixes:
- Make configuration saving use a semaphore with proper exception
handling to avoid race conditions and ensure reliable final save on
application release.
- Guard trade order changes with retry, verification, and failure
reporting to reduce inconsistent manufacturing state.
- Adjust mini‑game display and tip resolution to prefer API‑provided
values, preventing incorrect or missing localized text.

Enhancements:
- Simplify MuMu external renderer load logging output.
- Streamline final configuration save logging to clearly indicate
success or failure.

</details>

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

## Summary by Sourcery

改进交易订单处理、配置保存和小游戏元数据,同时新增一个小游戏任务定义。

新功能:
- 为新的 PF 小游戏添加配置和任务定义。

错误修复:
- 在配置保存时使用带有适当异常处理的信号量,以避免竞态条件,并确保在应用程序释放时可靠地进行最终保存。
- 通过重试、验证和失败上报来保护交易订单变更,减少制造状态不一致的情况。
- 调整小游戏显示和提示解析逻辑,优先采用 API 提供的值,防止本地化文本不正确或缺失。

改进:
- 简化 MuMu 外部渲染器加载的日志输出。
- 精简最终配置保存的日志,以清晰表明成功或失败。

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

## Summary by Sourcery

Improve trade order handling, configuration saving, and mini‑game
metadata while adding a new mini‑game task definition.

New Features:
- Add configuration and task definitions for a new PF mini‑game.

Bug Fixes:
- Make configuration saving use a semaphore with proper exception
handling to avoid race conditions and ensure reliable final save on
application release.
- Guard trade order changes with retry, verification, and failure
reporting to reduce inconsistent manufacturing state.
- Adjust mini‑game display and tip resolution to prefer API‑provided
values, preventing incorrect or missing localized text.

Enhancements:
- Simplify MuMu external renderer load logging output.
- Streamline final configuration save logging to clearly indicate
success or failure.

</details>

</details>
2026-06-10 00:46:50 +08:00
uye
e2f4762f2c docs: Update CHANGELOG for v6.12.0-beta.2 release 2026-06-10 00:44:23 +08:00
uye
e208a2f94e chore: 删除多余验证 2026-06-10 00:36:35 +08:00
uye
588bfb3778 fix: Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-10 00:35:07 +08:00
uye
614c344def i18n: 小游戏翻译 2026-06-10 00:31:12 +08:00
github-actions[bot]
68f029cf42 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27220085543
[skip changelog]
2026-06-09 16:20:30 +00:00
github-actions[bot]
c7f9646c52 chore: Auto Templates Optimization
Triggered by da7fabd57e

[skip changelog]
2026-06-09 16:16:34 +00:00
uye
da7fabd57e feat: 添加阵地足球锦标赛小游戏 2026-06-10 00:13:27 +08:00
Status102
357823e0d3 fix: ConfigFactory Save锁统一 (#17052)
## 由 Sourcery 提供的总结

使配置保存使用基于异步和信号量的机制,并确保最终保存时采用一致的锁定方式。

错误修复:
- 通过统一使用基于信号量的 `Save` 实现,防止在保存配置文件时可能出现的竞态条件和不一致的锁定问题。

增强内容:
- 重构配置的 `Save` 方法,使其异步化并使用异步文件 I/O,在需要的地方将调用方更新为以同步方式调用该方法。
- 从配置工厂中移除未使用的 WPF 命名空间导入。

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

## Summary by Sourcery

通过切换为基于信号量的保护机制来统一配置保存时的加锁方式,并将其一致地应用于同步保存和发布时(release-time)的保存。

Bug Fixes:
- 通过使用与其他地方相同的信号量来保护同步保存操作,防止配置保存时的竞态条件。

Enhancements:
- 优化配置保存逻辑,在使用信号量时采用 try/catch/finally 结构,并将保存成功或失败的日志记录逻辑集中化。
- 从配置工厂中移除未使用的 WPF 命名空间引用。

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

## Summary by Sourcery

Unify configuration save locking by switching to semaphore-based
protection and apply it consistently to synchronous and release-time
saves.

Bug Fixes:
- Prevent configuration save race conditions by guarding synchronous
saves with the same semaphore used elsewhere.

Enhancements:
- Refine configuration save logic to use try/catch/finally around
semaphore usage and centralize logging of save success or failure.
- Remove an unused WPF namespace import from the configuration factory.

</details>

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

## Summary by Sourcery

通过切换为基于信号量的保护机制来统一配置保存时的加锁方式,并将其一致地应用于同步保存和发布时(release-time)的保存。

Bug Fixes:
- 通过使用与其他地方相同的信号量来保护同步保存操作,防止配置保存时的竞态条件。

Enhancements:
- 优化配置保存逻辑,在使用信号量时采用 try/catch/finally 结构,并将保存成功或失败的日志记录逻辑集中化。
- 从配置工厂中移除未使用的 WPF 命名空间引用。

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

## Summary by Sourcery

Unify configuration save locking by switching to semaphore-based
protection and apply it consistently to synchronous and release-time
saves.

Bug Fixes:
- Prevent configuration save race conditions by guarding synchronous
saves with the same semaphore used elsewhere.

Enhancements:
- Refine configuration save logic to use try/catch/finally around
semaphore usage and centralize logging of save success or failure.
- Remove an unused WPF namespace import from the configuration factory.

</details>

</details>

</details>
2026-06-09 23:42:47 +08:00
Rin
0b3f97dea9 fix: 增加贸易站订单切换重试和产物确认逻辑 (#16954) 2026-06-09 11:25:39 +08:00
github-actions[bot]
605b1518b4 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27168308205
[skip changelog]
2026-06-08 21:34:20 +00:00
uye
f3e4313e3a Release v6.12.0-beta.1 (#17029)
## Summary by Sourcery

更新 copilot、paradox 和任务处理逻辑,以跟踪每个 copilot 的独立 ID、改进阶段导航和 OCR
的稳健性,并通过强类型事件将子任务消息接入 WPF UI,同时为更多任务添加截图插件并改进工具和文档。

New Features:
- 在核心任务和 WPF 模型中支持按 copilot 区分的 ID,以更好地跟踪和操作特定的 copilot 条目。
- 在 WPF 层将子任务消息暴露为强类型事件,并在相关的设置视图模型中进行消费。
- 为 copilot 条目新增独立的视频 URL 字段和存在标记,而不是复用 copilot URL 字段。

Bug Fixes:
- 修复在缺少提交作者或使用 web-flow 时的变更日志生成问题,通过在 PR 或提交中解析作者登录名来解决。
- 通过使用双精度累积来提高掩码模板匹配的数值稳定性,以避免灾难性消除。
- 修正模拟器自动启动逻辑,并在测试模拟器路径时增加校验。

Enhancements:
- 重构 copilot 阶段导航,使用图像分析和 OCR 更可靠地定位和确认阶段,包括重试和对图表的处理。
- 在子任务的额外信息消息中包含 copilot ID,使 UI 能将结果与选中的条目进行关联。
- 为奖励、商店、仓库、战斗启动、基建开始和干员仓库进入等任务添加截图采集插件,以获得更好的诊断能力。
- 通过用事件机制替换静态分发器来简化任务子消息的传播。
- 对文档中的 copilot 协议命名进行轻微措辞调整,并更新若干资源和本地化内容。

Documentation:
- 在主 README 和中文 README 中将 copilot 协议描述由「自动抄作业协议」重命名为「自动战斗协议」。

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

## Summary by Sourcery

Update copilot, paradox, and task handling to track per-copilot IDs,
improve stage navigation and OCR robustness, and wire subtask messages
into the WPF UI via strongly typed events, while adding screenshot
plugins to more tasks and refining tooling and docs.

New Features:
- Support per-copilot IDs through core tasks and WPF models to better
track and act on specific copilot entries.
- Expose subtask messages as strongly typed events in the WPF layer and
consume them from relevant settings view models.
- Add a dedicated video URL field and presence flag for copilot entries
instead of overloading the copilot URL.

Bug Fixes:
- Fix changelog generation when commit authors are missing or web-flow
by resolving author logins via PRs or commits.
- Improve masked template matching numerical stability by using double
precision accumulation to avoid catastrophic cancellation.
- Correct emulator auto-start logic and add validation around testing
the emulator path.

Enhancements:
- Rework copilot stage navigation to use image analysis and OCR to
locate and confirm stages more reliably, including retries and plot
handling.
- Include copilot IDs in subtask extra info messages so the UI can
correlate results with selected items.
- Add screenshot capture plugins to award, mall, depot, fight startup,
infrastructure begin, and operator box enter tasks for better
diagnostics.
- Simplify task submessage propagation by replacing the static
dispatcher with an event-based mechanism.
- Minor wording updates in documentation for the copilot protocol naming
and various resource and localization updates.

Documentation:
- Rename the copilot protocol description from "自动抄作业协议" to "自动战斗协议" in
the main and Chinese READMEs.

</details>
2026-06-09 02:53:37 +08:00
uye
12f481706e docs: changelog 2026-06-09 02:43:48 +08:00
uye
07c923c894 docs: changelog 2026-06-09 02:32:50 +08:00
uye
204c9498ac fix: 错误隐藏开局分队与开局干员选项 2026-06-09 02:32:50 +08:00
Status102
f3df45bac4 feat: 理智药使用增加使用中的药品信息 (#17034)
- close #17032
@MaaAssistantArknights/i18n-dev 

## Summary by Sourcery

为理智药剂使用添加详细的报告和 UI 处理,包括按药剂的使用信息,并重构处理该子任务消息的位置。

新特性:
- 在理智药剂使用的 `SubTaskExtraInfo` 消息中加入按药剂的使用详情,并在任务队列日志中展示这些信息。

增强:
- 将药剂使用子任务的处理从 `AsstProxy` 移动到
`FightSettingsUserControlModel`,并扩展以展示当前使用的药剂信息,同时保留成就追踪功能。

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

## Summary by Sourcery

Add detailed reporting and UI handling for sanity medicine usage,
including per-medicine information, and refactor where this subtask
message is processed.

New Features:
- Include per-medicine usage details in SubTaskExtraInfo messages for
sanity medicine usage and surface them in the task queue logs.

Enhancements:
- Move medicine usage subtask handling from AsstProxy into
FightSettingsUserControlModel and extend it to show currently used
medicine information while preserving achievement tracking.

</details>
2026-06-09 02:05:32 +08:00
uye
80aa69e710 docs: changelog 2026-06-09 02:04:19 +08:00
status102
9b951cbabf perf: 优化部分情况下自动战斗导航OCR结果中会出现误识别的前缀 2026-06-09 01:54:04 +08:00
uye
edeaeeba49 feat: 支持 mumu 6.0 截图增强路径 (#16994)
* feat: 支持 mumu 6.0 截图增强路径

* chore: Update src/MaaCore/Controller/MumuExtras.cpp

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

* fix: 示例路径

---------

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-06-09 01:52:02 +08:00
status102
5fd74495a2 chore: rename Wpf ProcSubTaskMsg param name 2026-06-09 01:29:52 +08:00
status102
48f98ad413 perf(wpf): DEBUG 环境下Init时TaskQueue状态限制缓解 2026-06-09 01:29:52 +08:00
github-actions[bot]
ee6d2c9867 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27154116231
[skip changelog]
2026-06-08 17:08:54 +00:00
github-actions[bot]
348825ef33 chore: Auto Update Game Resources - 2026-06-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27142132661

[skip changelog]
2026-06-08 13:49:39 +00:00
Constrat
0ade8f5c7c chore: revert all changes to remainingcandleflame IS6 EN 2026-06-08 13:44:13 +02:00
MistEO
b18068c846 ci: user MistEO/codex bot (#17040) 2026-06-08 18:16:04 +08:00
Constrat
5ae734461e fix: EN IS6 bosky updated template 2026-06-08 01:06:58 +02:00
status102
e4c6a740c4 perf 2026-06-07 19:55:09 +08:00
Constrat
b281f258cd fix: EN IS6 bosky text size changed 2026-06-07 12:59:39 +02:00
status102
b488aca991 perf: 2026-06-07 18:12:49 +08:00
status102
85ed1fb38b perf: null check 2026-06-07 18:08:35 +08:00
status102
8e3bfe3783 i18n: ai trans 2026-06-07 18:07:41 +08:00
status102
6e1f9e0fce feat: 理智药使用增加使用中的药品信息 2026-06-07 18:03:17 +08:00
HX3N
b461960985 chore: YostarKR winden colorScale for compatibility 2026-06-07 13:38:37 +09:00
github-actions[bot]
2a8c952b24 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27075305432
[skip changelog]
2026-06-06 22:12:57 +00:00
Status102
353c0ec972 fix: 修正特克诺干员名 OCR 误识别 (#17030)
## 问题与修复
issue 日志中,排序重选阶段 OCR 将“特克诺”识别为“持克诺”,导致后续按精确干员名匹配时无法命中。
在全局干员名 OCR 替换表中加入规则,仅将完整识别结果“持克诺”替换为“特克诺”。

```
15912:[2026-06-06 11:07:15.290][TRC][Px20248][Tx37564] asst::WordOcr [{ text: 褐果, rect: [ 0 (80), 0 (1), 40, 19 ], score: 0.999965 }] by OCR Rec , cost 16 ms
15913:[2026-06-06 11:07:15.290][TRC][Px20248][Tx37564] Proceed [{ text: 褐果, rect: [ 80, 1, 40, 19 ], score: 0.999965 }]
15914:[2026-06-06 11:07:15.290][WRN][Px20248][Tx37564] asst::VisionHelper::correct_rect roi is empty, use whole image
15915:[2026-06-06 11:07:15.307][TRC][Px20248][Tx37564] asst::WordOcr [{ text: 持克诺, rect: [ 0 (60), 0 (1), 60, 19 ], score: 0.881702 }] by OCR Rec , cost 16 ms
15916:[2026-06-06 11:07:15.307][TRC][Px20248][Tx37564] Proceed [{ text: 持克诺, rect: [ 60, 1, 60, 19 ], score: 0.881702 }]
15917:[2026-06-06 11:07:15.307][WRN][Px20248][Tx37564] asst::VisionHelper::correct_rect roi is empty, use whole image
15918:[2026-06-06 11:07:15.354][TRC][Px20248][Tx37564] asst::WordOcr [{ text: 凯尔希思衡托, rect: [ 0 (6), 0 (2), 114, 16 ], score: 0.992512 }] by OCR Rec , cost 45 ms
15919:[2026-06-06 11:07:15.354][TRC][Px20248][Tx37564] Proceed [{ text: 凯尔希·思衡托, rect: [ 6, 2, 114, 16 ], score: 0.992512 }]
```

fixes #17018

## Summary by Sourcery

错误修复:
- 通过在全局替换表中将误识别的“持克诺”映射为“特克诺”,纠正对运营商名称的 OCR 识别。

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

## Summary by Sourcery

Bug Fixes:
- Correct OCR recognition of the operator name by mapping the misread
form “持克诺” to “特克诺” in the global replacement table.

</details>
2026-06-07 03:26:53 +08:00
ZiyinLin
4e5a234ece fix: 修正特克诺干员名 OCR 误识别 2026-06-07 00:57:00 +08:00
github-actions[bot]
2abb30e373 chore: Auto Update Game Resources - 2026-06-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27067590574

[skip changelog]
2026-06-06 16:28:19 +00:00
uye
0a551b95f9 feat: 切换主题时保存当前画面截图 (#16993)
* feat: 切换主题时保存当前画面截图

* chore: SwitchTheme tasks 定义移到子文件夹中
2026-06-07 00:17:54 +08:00
github-actions[bot]
0b6280483c chore: Auto Templates Optimization
Triggered by 1247e9a308

[skip changelog]
2026-06-05 17:36:16 +00:00
status102
1247e9a308 fix: 绿票商店状态回退错误 2026-06-06 01:35:14 +08:00
status102
0ae5fceb87 fix: 绿票商店2阶段check
Co-authored-by: ZiyinLin <xuanbing1464129430@gmail.com>
2026-06-06 01:35:13 +08:00
github-actions[bot]
8bf6cb5033 chore: Auto Update Game Resources - 2026-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27023843129

[skip changelog]
2026-06-05 15:27:16 +00:00
github-actions[bot]
1fcf16c234 chore: Auto Update Game Resources - 2026-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27012894478

[skip changelog]
2026-06-05 11:45:03 +00:00
github-actions[bot]
64eb36e9e8 chore: Auto Update Game Resources - 2026-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27001805688

[skip changelog]
2026-06-05 07:32:10 +00:00
github-actions[bot]
24ab0f454a chore: Auto Update Game Resources - 2026-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26997987540

[skip changelog]
2026-06-05 05:50:51 +00:00
github-actions[bot]
4e2ff1eaef feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26982898553
[skip changelog]
2026-06-04 22:17:05 +00:00
github-actions[bot]
84dcbce43e chore: Auto Update Game Resources - 2026-06-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26973477754

[skip changelog]
2026-06-04 19:09:08 +00:00
Rbqwow
61d46678c8 docs: README 自动抄作业 --> 自动战斗 2026-06-05 02:28:37 +08:00
uye
b396d0fb8c feat: 统一 SearchBar 样式 2026-06-05 00:30:10 +08:00
Status102
204542620c rft: 肉鸽弹窗类事件处理重构 CloseCollectionClose (#17005)
* rft: 界园 part

* rft: 水月part

修改后未使用: StageEncounterEnter, CloseEvent, DropsFlag; 仅使用了: ChooseOperFlag, Stages
原始
```
"next": [
    "Mizuki@Roguelike@StageEncounterEnter",
    "Mizuki@Roguelike@Stages#next",
    "Mizuki@Roguelike@DropsFlag",
    "Mizuki@Roguelike@CloseEvent",
    "Mizuki@Roguelike@ChooseOperFlag"
]
```

* rft: 萨米part

* rft: 萨卡兹part

* rft: ChooseOper处的CloseCollectionContinue统一调整至上一级的ChooseOperFlag
2026-06-04 18:21:31 +08:00
status102
fa60340ed0 rft: ChooseOper处的CloseCollectionContinue统一调整至上一级的ChooseOperFlag 2026-06-04 17:05:38 +08:00
status102
8971768c33 rft: 萨卡兹part 2026-06-04 16:58:28 +08:00
status102
8610f11890 rft: 萨米part 2026-06-04 16:12:48 +08:00
status102
e4af06ea9c rft: 水月part
修改后未使用: StageEncounterEnter, CloseEvent, DropsFlag; 仅使用了: ChooseOperFlag, Stages
原始
```
"next": [
    "Mizuki@Roguelike@StageEncounterEnter",
    "Mizuki@Roguelike@Stages#next",
    "Mizuki@Roguelike@DropsFlag",
    "Mizuki@Roguelike@CloseEvent",
    "Mizuki@Roguelike@ChooseOperFlag"
]
```
2026-06-04 15:37:10 +08:00
status102
a132f80158 rft: 界园 part 2026-06-04 15:22:49 +08:00
Status102
bba3f3281a rft: 基于灰度阈值预处理的自动战斗导航, 适配H关及怪猎2期 (#16990)
* rft: 基于灰度阈值的自动战斗导航, 适配H关及怪猎2期

* perf: 清理

* fix: replace

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: loule

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-04 09:54:16 +08:00
Status102
4843310bec feat: 悖论模拟支持跳过战斗失败的作业, 自动战斗作业增加对应结构 (#16985)
feat: 悖论模拟支持跳过战斗失败的作业
2026-06-04 09:53:56 +08:00
uye
f31ceb55c9 chore: 自动战斗-视频链接 始终显示
fix #5349
2026-06-04 02:15:32 +08:00
uye
fc89014ab5 feat: 启动设置添加模拟器启动测试按钮,便于测试是否配置成功
fix #10627
2026-06-04 02:02:48 +08:00
Aliothmoon
77612daaeb fix: MaskedCcoeffMatcher 稀疏路径累加器改用 CV_64F 防止大数相减精度损失 (#16983) 2026-06-04 00:54:19 +08:00
Luhan Xiao
e25ee6920e fix: 修复 MaaMacGui changelog 贡献者 mention (#16978)
## 变更内容

修复 MaaMacGui 子仓库 changelog 中贡献者 mention 可能错误的问题。

- associated PR 存在时,优先使用 PR 作者的 `user.login`,并保持 PR title / PR link
逻辑不变。
- 无 associated PR 时,使用 GitHub commit API 的 `author.login` 作为贡献者。
- 无法确认 GitHub login 时,不追加作者 mention。
- 不再使用 git author name / display name / commit author name 生成
`@mention`。
- 不写入主仓库 `contributors` 映射,避免污染主仓库贡献者缓存。
- 过滤空 contributors,避免生成无效 mention。

## 验证

- `python3 -m py_compile
tools/ChangelogGenerator/changelog_generator.py`
- `git diff --cached --check`
- 使用 MaaMacGui 真实历史区间验证:
  - `Add localized strings for relaunch case` 输出 `@ABA2396`
  - `RelaunchAnchor` 输出 `@hguandl`
  - 不再输出 `@uye` / `@hao Guan`
  - PR 记录仍正常输出 `@FireflySentinel` / `@ColdSpellhere`

## Summary by Sourcery

基于 GitHub 元数据而非本地 git 作者信息,改进 MaaMacGui 更新日志中的贡献者提及方式。

Bug 修复:
- 防止空的贡献者账号在生成的更新日志中产生无效的 @提及。
- 确保 MaaMacGui 更新日志使用关联的 PR 作者登录名或提交作者登录名作为贡献者提及,避免错误或缺失的映射。

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

## Summary by Sourcery

Improve MaaMacGui changelog contributor mentions based on GitHub
metadata instead of local git author information.

Bug Fixes:
- Prevent empty contributor handles from producing invalid @mentions in
generated changelogs.
- Ensure MaaMacGui changelog uses the associated PR author login or
commit author login as the contributor mention, avoiding incorrect or
missing mappings.

</details>
2026-06-04 00:17:15 +08:00
Weiyou Wang
64ec267180 fix: 降低 PlayCover 下肉鸽部分任务的模版匹配分数阈值 (#16968)
群友在 PlayCover + EN 服的双重 Debuff 下,卡住了。
~~我总感觉日志和截图有些匹配不上~~,但是问题大概就是这么个问题。
已获得正确的日志文件
[asst.log](https://github.com/user-attachments/files/28484412/asst.log)
与截图。
<img width="1280" height="720" alt="2026 06 01-10 34 43 869_raw"
src="https://github.com/user-attachments/assets/34505f24-d327-4af0-b509-29ceba0e1308"
/>

```
[2026-06-01 10:34:43.205][TRC][Px27484][Tx52497] asst::PlayToolsController::screencap | enter
[2026-06-01 10:34:43.255][TRC][Px27484][Tx52497] asst::PlayToolsController::screencap | leave, 50 ms
[2026-06-01 10:34:43.280][TRC][Px27484][Tx52497] match_templ | Roguelike@StageTraderInvestCancel.png [opencv] score: 0.789736 rect: [ 580, 484, 89, 20 ] roi: [ 507, 418, 242, 149 ]
[2026-06-01 10:34:43.280][INF][Px27484][Tx52497] {"class":"asst::ProcessTask","cur_task":"JieGarden@Roguelike@StageTraderInvestSystemError","details":{"cur_retry":20,"retry_times":20,"to_be_recognized":["JieGarden@Roguelike@StageTraderInvestCancel"]},"first":["JieGarden@Roguelike@Begin"],"pre_task":"JieGarden@Roguelike@StageTraderInvestConfirm","subtask":"ProcessTask","taskchain":"Roguelike","taskid":40}
[2026-06-01 10:34:43.280][TRC][Px27484][Tx52497] ready to sleep 500
[2026-06-01 10:34:43.783][TRC][Px27484][Tx52497] end of sleep 500
[2026-06-01 10:34:43.783][TRC][Px27484][Tx52497] asst::PlayToolsController::screencap | enter
[2026-06-01 10:34:43.828][TRC][Px27484][Tx52497] asst::PlayToolsController::screencap | leave, 44 ms
[2026-06-01 10:34:43.855][TRC][Px27484][Tx52497] match_templ | Roguelike@StageTraderInvestCancel.png [opencv] score: 0.789736 rect: [ 580, 484, 89, 20 ] roi: [ 507, 418, 242, 149 ]
[2026-06-01 10:34:43.855][INF][Px27484][Tx52497] Assistant::append_callback | SubTaskError {"class":"asst::ProcessTask","details":{},"first":["JieGarden@Roguelike@Begin"],"pre_task":"JieGarden@Roguelike@StageTraderInvestConfirm","subtask":"ProcessTask","taskchain":"Roguelike","taskid":40,"uuid":"com.hypergryph.arknights"}
```

<img width="761" height="378" alt="image"
src="https://github.com/user-attachments/assets/85f7159b-783e-4bbf-b578-4d3133d2ce6a"
/>

---

顺带,对萨卡兹肉鸽快速刷钱所使用的刷新节点任务的模版匹配阈值也进行了调整。(句子好长,好绕口)
[asst.log](https://github.com/user-attachments/files/28531048/asst.log)

···
[2026-06-02 19:50:45.972][TRC][Px65548][Tx4604]
asst::PlayToolsController::screencap | enter
[2026-06-02 19:50:46.015][TRC][Px65548][Tx4604]
asst::PlayToolsController::screencap | leave, 42 ms
[2026-06-02 19:50:46.030][TRC][Px65548][Tx4604] match_templ |
Sarkaz@RoguelikeRouting-RefreshNode.png [opencv] score: 0.741615 rect: [
798, 203, 47, 15 ] roi: [ 796, 130, 50, 170 ]
[2026-06-02 19:50:46.030][INF][Px65548][Tx4604]
{"class":"asst::ProcessTask","cur_task":"","details":{"cur_retry":20,"retry_times":20,"to_be_recognized":["Sarkaz@RoguelikeRouting-RefreshNode"]},"first":["Sarkaz@RoguelikeRouting-RefreshNode"],"pre_task":"","subtask":"ProcessTask","taskchain":"Roguelike","taskid":2}
[2026-06-02 19:50:46.030][TRC][Px65548][Tx4604] ready to sleep 500
[2026-06-02 19:50:46.535][TRC][Px65548][Tx4604] end of sleep 500
[2026-06-02 19:50:46.535][TRC][Px65548][Tx4604]
asst::PlayToolsController::screencap | enter
[2026-06-02 19:50:46.585][TRC][Px65548][Tx4604]
asst::PlayToolsController::screencap | leave, 50 ms
[2026-06-02 19:50:46.599][TRC][Px65548][Tx4604] match_templ |
Sarkaz@RoguelikeRouting-RefreshNode.png [opencv] score: 0.741614 rect: [
798, 203, 47, 15 ] roi: [ 796, 130, 50, 170 ]
[2026-06-02 19:50:46.599][INF][Px65548][Tx4604]
Assistant::append_callback | SubTaskError
{"class":"asst::ProcessTask","details":{},"first":["Sarkaz@RoguelikeRouting-RefreshNode"],"pre_task":"","subtask":"ProcessTask","taskchain":"Roguelike","taskid":2,"uuid":"com.hypergryph.arknights"}
···


## Summary by Sourcery

错误修复:
- 降低 iOS 上特定类 Rogue-like 退出投资任务的模板匹配分数阈值,以防止在 PlayCover 环境和英文客户端条件下任务卡住。

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

## Summary by Sourcery

Bug Fixes:
- Lower template matching score thresholds for specific roguelike
exit-investment tasks on iOS to prevent task stalling under PlayCover
and English client conditions.

</details>
2026-06-04 00:10:47 +08:00
github-actions[bot]
842e6e9637 chore: Auto Update Game Resources - 2026-06-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26877559937

[skip changelog]
2026-06-03 10:01:11 +00:00
Status102
9d6e41e74a rft: InvokeProcSubTaskMsg 重构 (#16979)
* rft: InvokeProcSubTaskMsg 重构

* perf: try
2026-06-03 13:39:51 +08:00
github-actions[bot]
2f865c8435 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26851913390
[skip changelog]
2026-06-02 22:31:54 +00:00
Saratoga-Official
83d106220f chore: 补充可露希尔基建数值
fix #16977
2026-06-02 11:24:09 +08:00
github-actions[bot]
c5d4ceb7e4 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26784708703
[skip changelog]
2026-06-01 22:03:47 +00:00
晓丶梦丶仁
cd0973cb87 Release v6.11.1 (#16971)
## Summary by Sourcery

为版本 v6.11.1 准备发布元数据,而不引入任何功能性代码更改。

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

## Summary by Sourcery

Prepare release metadata for version v6.11.1 without introducing
functional code changes.

</details>
2026-06-02 05:31:11 +08:00
uye
ff2bce837d docs: Update CHANGELOG.md for version 6.11.1
Added details for version 6.11.1 improvements.
2026-06-02 05:30:42 +08:00
github-actions[bot]
46153cfe57 docs: Update CHANGELOG top version to v6.11.1 (#16972)
* docs: Auto Generate Changelog of Release v6.11.1

* Revert "docs: Auto Generate Changelog of Release v6.11.1"

This reverts commit aff4e4d5db.

* docs: bump changelog title to v6.11.1

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-02 05:20:15 +08:00
uye
f3a2d90472 chore: 延长 TD-Open 延迟 2026-06-02 04:53:53 +08:00
uye
c533a44a9a chore: TDChapterToTD 添加重试 2026-06-02 04:48:47 +08:00
uye
6037746760 Release v6.11.0 (#16963)
## Sourcery 总结

更新宿舍干员选择、信用商店购买、账号切换和通知行为,并为 v6.11.0 版本新增协议、UI 和资源支持。

新功能(New Features):
- 在账号切换与启动配置中新增对 txwy(繁体中文)客户端的支持。
- 允许为外部 Webhook 通知配置自定义 HTTP 请求头。
- 支持使用基于文件的输入进行悖论模拟助手的批量识别。
- 为助手的“用户附加信息”弹出网格引入动态尺寸和对齐方式。

缺陷修复(Bug Fixes):
- 修复宿舍自动填充逻辑,更好地协调基于心情的选择、信赖刷取以及“未进驻”筛选条件,并增强筛选开关的稳定性。
- 通过使用 OCR 等价处理、保留物品名称以及在点击前校验商品,改进信用商店物品识别与购买流程,避免买错物品。
- 确保任务完成后的检查仅在任务队列由 link-start 启动时才执行。
- 修正信用商店售罄检测与白名单排序逻辑,使其能基于结构化的 TextRect 结果而非裸矩形数据工作。
- 修复悖论模拟助手的识别逻辑,使其正确读取和引用悖论配置文件,而不是干员名称。
- 解决外部通知自定义 Webhook 配置相关问题,通过安全持久化请求头并在请求中正确应用。
- 明确并修正针对更多客户端类型和 OCR 设置的账号切换行为。

增强优化(Enhancements):
- 将宿舍选择状态重构为更清晰的选择阶段,并为信赖阈值和设施标签抽取常量。
- 收紧基建任务中的筛选菜单交互,确保“未进驻”和“全部设施”筛选条件能稳定应用和取消。
- 优化信用商店购买逻辑,更好地遵守“仅折扣”和“信用预留”选项,并具有更清晰的停止条件。
- 打磨外部通知、战斗设置和启动设置的 ViewModel 与 XAML 绑定,实现更清晰的行为与格式。
- 更新变更日志生成器和依赖下载脚本,以改善格式并跟踪最新 MaaDeps 版本。

构建(Build):
- 在下载辅助脚本中将 MaaDeps 依赖版本提升至 v2.11.0。

文档(Documentation):
- 扩展多语言的集成与启动文档,加入对繁体中文(txwy)账号的使用指南以及账号名匹配示例。

杂项维护(Chores):
- 刷新多项游戏数据与任务 JSON 资源,包括最新关卡与记忆关卡的地块坐标定义、物品与关卡索引以及本地化资源。

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

## Summary by Sourcery

准备 v6.11.0 版本发布,本次更新包括:改进宿舍自动填充逻辑、更安全且更精准的信用点商店购买、扩展悖论模拟器批量识别、增强外部
Webhook 通知、支持 txwy(繁体中文)账号、更新工具链,以及刷新游戏数据/资源。

New Features:
- 在账号切换与启动配置中,新增对 txwy(繁体中文)游戏客户端的支持。
- 允许为外部 Webhook 通知配置自定义 HTTP 请求头,并在发送请求时应用这些请求头。
- 支持使用基于文件的输入而非干员名称进行悖论模拟批量识别。
- 为 UI 中 copilot 的“User additional information”弹出网格添加动态尺寸和对齐能力。
- 让 ImageCropper 工具在 ADB 设备之外,额外支持通过 Win32/WGC 捕获 PC 窗口。

Bug Fixes:
- 通过更好地协调基于心情的选择、信赖刷取以及“未进驻”筛选状态,稳定宿舍自动填充行为。
- 改进信用点商店物品检测和购买逻辑,避免购买错误物品,包括更健壮的 OCR 等价处理以及在购买前对单件物品进行校验。
- 确保战斗结束后的任务完成检查仅在通过 link-start 启动任务队列时才会运行。
- 修复信用点商店中已售罄检测和白名单排序,使其基于结构化的 TextRect 结果而非原始矩形进行处理。
- 修正悖论模拟器识别逻辑,改为读取悖论配置文件,而不是直接使用干员名称。
- 修复自定义 Webhook 通知设置的持久化与应用问题,包括请求头的安全存储和正确使用。
- 在更多客户端类型和 OCR 设置(包括 txwy)下,澄清并修正账号切换逻辑。

Enhancements:
- 将宿舍选择流程细化为更清晰的阶段(低心情、信赖自动填充、填满剩余),并强化对“未进驻”筛选和信赖阈值的处理。
- 收紧基建筛选菜单交互,使“未进驻”和“全部设施”筛选能稳定生效与清除。
- 优化信用点商店购买逻辑,更好地遵守“仅折扣”和“保留信用点”选项,并具有更清晰的停止条件。
- 打磨外部通知、战斗设置、启动和 copilot 视图的 ViewModel 与 XAML 绑定,以获得更可预期的行为和布局。
- 改进更新日志生成和依赖下载脚本,包括格式调整以及对最新 MaaDeps 版本的跟踪。

Build:
- 在辅助下载脚本中将 MaaDeps 依赖版本提升至 v2.11.0。
- 将 ImageCropper 的 Python 依赖更新为 MaaFw 5.10 和 OpenCV 4.13。

Documentation:
- 扩展多语言集成与启动文档,增加关于使用 txwy(繁体中文)账号以及登录名匹配的说明与示例。
- 更新 ImageCropper 使用文档,涵盖通过 WGC/Win32 捕获 PC 窗口及相关配置选项。

Chores:
- 刷新多项游戏数据和任务 JSON 资源,包括新关卡、记忆关卡、地块坐标、物品索引、关卡索引、UI
主题任务、肉鸽任务,以及最新内容的本地化资源。
- 更新所有已支持语言的协议与启动文档,说明 txwy 账号格式及相关使用建议。

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

## Summary by Sourcery

Prepare the v6.11.0 release with improved dormitory auto-fill logic,
safer and more accurate credit shop purchasing, expanded paradox
simulator batch recognition, enhanced external webhook notifications,
txwy (Traditional Chinese) account support, updated tooling, and
refreshed game data/resources.

New Features:
- Add support for the txwy (Traditional Chinese) game client in account
switching and startup configuration.
- Allow configuring custom HTTP headers for external webhook
notifications and apply them when sending requests.
- Support batch paradox simulation recognition using file-based inputs
instead of operator names.
- Add dynamic sizing and alignment for the copilot "User additional
information" popup grid in the UI.
- Enable the ImageCropper tool to capture PC windows via Win32/WGC in
addition to ADB devices.

Bug Fixes:
- Stabilize dormitory auto-fill behavior by better coordinating
mood-based selection, trust farming, and the "not stationed" filter
state.
- Improve credit shop item detection and purchasing to avoid buying
incorrect items, including more robust OCR equivalence handling and
per-item verification before purchase.
- Ensure post-battle task completion checks only run when the task queue
is started via link-start.
- Fix sold-out detection and whitelist sorting in the credit shop to
operate on structured TextRect results rather than raw rectangles.
- Correct paradox simulator recognition to read paradox configuration
files instead of using operator names directly.
- Fix persistence and application of custom webhook notification
settings, including secure storage and usage of request headers.
- Clarify and correct account switching logic across more client types
and OCR settings, including txwy.

Enhancements:
- Refine dormitory selection into clearer phases (low mood, trust
autofill, fill remaining) and tighten handling of "not stationed"
filtering and trust thresholds.
- Tighten infrastructure filter menu interactions so "not stationed" and
"all facilities" filters apply and clear reliably.
- Optimize credit shop buying logic to better respect discount-only and
credit-reserve options with clearer stopping conditions.
- Polish ViewModel and XAML bindings for external notifications, fight
settings, startup, and copilot views for more predictable behavior and
layout.
- Improve changelog generation and dependency download scripts,
including formatting tweaks and tracking the latest MaaDeps version.

Build:
- Bump MaaDeps dependency version to v2.11.0 in the helper download
script.
- Update ImageCropper Python dependencies to MaaFw 5.10 and OpenCV 4.13.

Documentation:
- Extend multi-language integration and startup documentation with
guidance and examples for using txwy (Traditional Chinese) accounts and
login-name matching.
- Update ImageCropper usage docs to cover PC window capture via
WGC/Win32 and related configuration options.

Chores:
- Refresh multiple game data and task JSON resources, including new
stages, memory stages, tile coordinates, item indices, stage indices, UI
theme tasks, roguelike tasks, and localization resources for the latest
content.
- Update protocol and startup documentation across all supported
languages to describe txwy account formats and recommendations.

</details>

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

## Summary by Sourcery

准备 v6.11.0 版本发布,本次更新包括:改进宿舍自动填充逻辑、更安全且更精准的信用点商店购买、扩展悖论模拟器批量识别、增强外部
Webhook 通知、支持 txwy(繁体中文)账号、更新工具链,以及刷新游戏数据/资源。

New Features:
- 在账号切换与启动配置中,新增对 txwy(繁体中文)游戏客户端的支持。
- 允许为外部 Webhook 通知配置自定义 HTTP 请求头,并在发送请求时应用这些请求头。
- 支持使用基于文件的输入而非干员名称进行悖论模拟批量识别。
- 为 UI 中 copilot 的“User additional information”弹出网格添加动态尺寸和对齐能力。
- 让 ImageCropper 工具在 ADB 设备之外,额外支持通过 Win32/WGC 捕获 PC 窗口。

Bug Fixes:
- 通过更好地协调基于心情的选择、信赖刷取以及“未进驻”筛选状态,稳定宿舍自动填充行为。
- 改进信用点商店物品检测和购买逻辑,避免购买错误物品,包括更健壮的 OCR 等价处理以及在购买前对单件物品进行校验。
- 确保战斗结束后的任务完成检查仅在通过 link-start 启动任务队列时才会运行。
- 修复信用点商店中已售罄检测和白名单排序,使其基于结构化的 TextRect 结果而非原始矩形进行处理。
- 修正悖论模拟器识别逻辑,改为读取悖论配置文件,而不是直接使用干员名称。
- 修复自定义 Webhook 通知设置的持久化与应用问题,包括请求头的安全存储和正确使用。
- 在更多客户端类型和 OCR 设置(包括 txwy)下,澄清并修正账号切换逻辑。

Enhancements:
- 将宿舍选择流程细化为更清晰的阶段(低心情、信赖自动填充、填满剩余),并强化对“未进驻”筛选和信赖阈值的处理。
- 收紧基建筛选菜单交互,使“未进驻”和“全部设施”筛选能稳定生效与清除。
- 优化信用点商店购买逻辑,更好地遵守“仅折扣”和“保留信用点”选项,并具有更清晰的停止条件。
- 打磨外部通知、战斗设置、启动和 copilot 视图的 ViewModel 与 XAML 绑定,以获得更可预期的行为和布局。
- 改进更新日志生成和依赖下载脚本,包括格式调整以及对最新 MaaDeps 版本的跟踪。

Build:
- 在辅助下载脚本中将 MaaDeps 依赖版本提升至 v2.11.0。
- 将 ImageCropper 的 Python 依赖更新为 MaaFw 5.10 和 OpenCV 4.13。

Documentation:
- 扩展多语言集成与启动文档,增加关于使用 txwy(繁体中文)账号以及登录名匹配的说明与示例。
- 更新 ImageCropper 使用文档,涵盖通过 WGC/Win32 捕获 PC 窗口及相关配置选项。

Chores:
- 刷新多项游戏数据和任务 JSON 资源,包括新关卡、记忆关卡、地块坐标、物品索引、关卡索引、UI
主题任务、肉鸽任务,以及最新内容的本地化资源。
- 更新所有已支持语言的协议与启动文档,说明 txwy 账号格式及相关使用建议。

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

## Summary by Sourcery

Prepare the v6.11.0 release with improved dormitory auto-fill logic,
safer and more accurate credit shop purchasing, expanded paradox
simulator batch recognition, enhanced external webhook notifications,
txwy (Traditional Chinese) account support, updated tooling, and
refreshed game data/resources.

New Features:
- Add support for the txwy (Traditional Chinese) game client in account
switching and startup configuration.
- Allow configuring custom HTTP headers for external webhook
notifications and apply them when sending requests.
- Support batch paradox simulation recognition using file-based inputs
instead of operator names.
- Add dynamic sizing and alignment for the copilot "User additional
information" popup grid in the UI.
- Enable the ImageCropper tool to capture PC windows via Win32/WGC in
addition to ADB devices.

Bug Fixes:
- Stabilize dormitory auto-fill behavior by better coordinating
mood-based selection, trust farming, and the "not stationed" filter
state.
- Improve credit shop item detection and purchasing to avoid buying
incorrect items, including more robust OCR equivalence handling and
per-item verification before purchase.
- Ensure post-battle task completion checks only run when the task queue
is started via link-start.
- Fix sold-out detection and whitelist sorting in the credit shop to
operate on structured TextRect results rather than raw rectangles.
- Correct paradox simulator recognition to read paradox configuration
files instead of using operator names directly.
- Fix persistence and application of custom webhook notification
settings, including secure storage and usage of request headers.
- Clarify and correct account switching logic across more client types
and OCR settings, including txwy.

Enhancements:
- Refine dormitory selection into clearer phases (low mood, trust
autofill, fill remaining) and tighten handling of "not stationed"
filtering and trust thresholds.
- Tighten infrastructure filter menu interactions so "not stationed" and
"all facilities" filters apply and clear reliably.
- Optimize credit shop buying logic to better respect discount-only and
credit-reserve options with clearer stopping conditions.
- Polish ViewModel and XAML bindings for external notifications, fight
settings, startup, and copilot views for more predictable behavior and
layout.
- Improve changelog generation and dependency download scripts,
including formatting tweaks and tracking the latest MaaDeps version.

Build:
- Bump MaaDeps dependency version to v2.11.0 in the helper download
script.
- Update ImageCropper Python dependencies to MaaFw 5.10 and OpenCV 4.13.

Documentation:
- Extend multi-language integration and startup documentation with
guidance and examples for using txwy (Traditional Chinese) accounts and
login-name matching.
- Update ImageCropper usage docs to cover PC window capture via
WGC/Win32 and related configuration options.

Chores:
- Refresh multiple game data and task JSON resources, including new
stages, memory stages, tile coordinates, item indices, stage indices, UI
theme tasks, roguelike tasks, and localization resources for the latest
content.
- Update protocol and startup documentation across all supported
languages to describe txwy account formats and recommendations.

</details>

</details>

</details>
2026-06-02 03:07:02 +08:00
github-actions[bot]
02d2180092 docs: Auto Update Changelogs of v6.11.0 (#16965)
* docs: Auto Generate Changelog of Release v6.11.0

* docs: changelog

* docs: mac

---------

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-06-02 03:01:30 +08:00
status102
fbf66862b3 perf(wpf): PostAction清空按钮新增仅一次状态同步 2026-06-02 01:43:59 +08:00
uye
4aa5d0c330 Revert "perf: 仅在LinkStart时执行完成后动作, 避免单次运行时触发"
This reverts commit b3801e64ee.
2026-06-02 00:27:06 +08:00
uye
66f2e9e752 chore: 调整吐司通知禁用说明 2026-06-02 00:26:40 +08:00
DavidWang19
067fdab400 feat: 支持 ImageCropper 截取 PC 窗口 (#16969) 2026-06-01 16:51:55 +01:00
SherkeyXD
c277a69110 feat: 界面主题「出猎」 2026-06-01 22:19:04 +08:00
uye
7bca192a21 fix: roi 2026-06-01 21:22:48 +08:00
github-actions[bot]
b2510df2ed feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26757428388
[skip changelog]
2026-06-01 13:19:48 +00:00
Rin
1d46ff16a1 feat: 增加怪猎联动二期 TD-6/7/8 (#16962)
* feat: 增加怪猎联动二期 TD-6/7/8

* chore: revert stage.json

* chore: 移除多余逻辑

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-06-01 21:18:32 +08:00
Aliothmoon
c8d6d99010 chore: update MaaDeps version to v2.11.0 (#16961)
see https://github.com/MaaAssistantArknights/MaaDeps/pull/36
2026-06-01 20:42:37 +08:00
github-actions[bot]
3a4e2ebd53 chore: Auto Update Game Resources - 2026-06-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26750150948

[skip changelog]
2026-06-01 10:46:42 +00:00
status102
d4ce454114 i18n: 修改描述文本 过期关卡重置为 -> 过期活动关卡重置为 以更加符合当前重置范围 2026-06-01 17:50:04 +08:00
status102
90cd87d7f3 perf(wpf): 临期药下拉框显示24h x n 2026-06-01 17:42:57 +08:00
status102
e7151cdf8d rft: 悖论模拟作业列表变量名与实际不符 2026-06-01 17:40:14 +08:00
github-actions[bot]
d0d492b5b3 chore: Auto Templates Optimization
Triggered by 857742dfdc

[skip changelog]
2026-06-01 09:24:06 +00:00
momomochi987
857742dfdc docs: 帳號切換手冊與整合協議補上繁中服說明
- manual/introduction/startup.md:example 區加入繁中服 Email 帳號範例
- protocol/integration.md:account_name 範例區加入繁中服說明
- ko-kr/manual/introduction/startup.md:移除『不支援全球服 (CN만 가능)』
  字樣,並對齊其他語系的條列範例格式
- zh-tw / zh-cn / en-us / ja-jp / ko-kr 五個語系同步更新
2026-06-01 17:17:17 +08:00
momomochi987
9f16ccd95f docs: 更新帳號切換小提示,加入繁中服 Email 帳號說明
- 將支援客戶端清單從『官服、B服』擴充為『官服、B服、繁中服』
- 新增繁中服 Email 帳號的填寫範例,建議使用不含星號的明文片段
- 將原本『不支援登入帳號』改為更精準的『不支援第三方登入方式』
- zh-tw / zh-cn / en-us / ja-jp / ko-kr 五個語系同步更新
2026-06-01 17:11:28 +08:00
momomochi987
c20c103176 feat: GUI 啟動設定支援繁中服顯示帳號名欄位
- StartUpTaskUserControl.xaml:帳號名 TextBox 與『立即切換』按鈕的 Visibility 條件加入 txwy
- StartUpSettingsUserControlModel.cs:序列化時將 Txwy 視為支援帳號切換的客戶端類型
2026-06-01 17:09:47 +08:00
momomochi987
db665d52a9 feat: 繁中服資源補上帳號切換流程與模板
- tasks.json 新增帳號切換相關 task override:
  - LoginOther 加入 AccountManagerTxwy 為候選入口
  - AccountManagerTxwy 設定 ROI (供 template match 使用)
  - Settings 改成直接接 LogoutOCR/Logout,跳過繁中沒有的 UserCenter/ExitOld 中間層
  - LogoutOCR / LogoutConfirm / AccountCurrentOCR / AccountManagerLoginButton /
    AccountManagerListAccount / AccountManagerTrashButton / AccountManager
    依繁中介面位置調整 ROI 與識別文字
  - AccountManager 改用 OCR detect 偵測「帳號管理」,避開原 template 比 ROI 大的問題
  - LogoutConfirm 直接 reuse 既有的 PopupConfirm.png
- 新增 AccountManagerTxwy.png:繁中服帳號管理頁的 GRYPHLINE 標誌特徵塊
2026-06-01 17:09:18 +08:00
momomochi987
9237dddda4 feat: AccountSwitchTask 支援繁中服客戶端
- 在 _run/select_account 將 txwy 視為與 Official 同類,套用 char model OCR
- navigate_to_start_page 認得 AccountManagerTxwy 作為登入頁入口
- SupportedClientType 將 txwy 從註解移到實際列表
2026-06-01 17:08:26 +08:00
Saratoga-Official
22635a7b60 fix: 御龙装置识别 2026-06-01 14:19:30 +08:00
github-actions[bot]
cae85ce6da chore: Auto Update Game Resources - 2026-05-31
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26727125523

[skip changelog]
2026-05-31 23:08:28 +00:00
github-actions[bot]
b1436cb7c7 chore: Auto Update Game Resources - 2026-05-31
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26723878173

[skip changelog]
2026-05-31 20:41:18 +00:00
Rin
9bd27f7968 Revert "fix: 调整基建干员名 OCR 区域" (#16937)
* Revert "fix: 调整基建干员名 OCR 区域 (#16905)"

This reverts commit 89377eba94.

* revert: EN changes no longer needed

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2026-05-31 22:34:18 +08:00
github-actions[bot]
3ebdd1f03f feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26696235621
[skip changelog]
2026-05-30 22:10:57 +00:00
github-actions[bot]
4496d5c9da chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26695211011
[skip changelog]
2026-05-30 21:21:39 +00:00
Rin
137f7764bd fix: 优化追加自定干员弹窗删除时的布局 (#16921)
* fix: 优化追加自定干员弹窗删除时的布局

* refactor: 统一追加自定干员列表高度配置
2026-05-30 23:53:43 +08:00
github-actions[bot]
6c4527e00d chore: Auto Update Game Resources - 2026-05-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26682018364

[skip changelog]
2026-05-30 10:55:40 +00:00
Constrat
127ef87f9c fix: revert OCR changes 2026-05-30 12:37:41 +02:00
status102
b3801e64ee perf: 仅在LinkStart时执行完成后动作, 避免单次运行时触发 2026-05-30 17:51:11 +08:00
Status102
7d6ad3b4c1 rft: 水月萨卡兹肉鸽 关闭next弹窗 (#16918)
* rft: 水月肉鸽 关闭next弹窗

* rft: 萨卡兹part

* perf: 简化模板声明
2026-05-30 17:21:21 +08:00
uye
a10391e9d4 perf: 优化信用商店复核逻辑 (#16932)
* perf: 优化信用商店复核逻辑

* chore: 增加对 OCR 结果为空的处理
2026-05-30 17:12:59 +08:00
github-actions[bot]
5f1869ab46 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26663324632
[skip changelog]
2026-05-29 21:35:11 +00:00
Rin
89377eba94 fix: 调整基建干员名 OCR 区域 (#16905)
- 扩大笑脸锚点派生的干员名识别范围
2026-05-30 01:10:32 +08:00
Rin
4b520aaac9 fix: 修复宿舍自定义干员+信赖补位的bug&外服同步修复&提升代码可读性 (#16659)
* fix: 修复宿舍自定义干员+信赖补位的bug

* chore: EN

* fix: 补充宿舍筛选全部按钮的日韩识别文本

补充日服“全て”和韩服“전부”,用于取消宿舍“未进驻”筛选时点击“全部”选项。

* refactor: improve infrast dorm task readability

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Roland125 <oroland125@outlook.com>
2026-05-30 00:56:57 +08:00
status102
0f25895c6d feat(wpf): CustomWebhook支持自定义Headers 2026-05-30 00:25:48 +08:00
github-actions[bot]
5681d6a37e chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26603778911
[skip changelog]
2026-05-28 21:39:41 +00:00
uye
23ad7fd301 Release v6.11.0-beta.2 (#16919) 2026-05-29 01:46:14 +08:00
uye
ed817cce19 fix: changelog 猪了 2026-05-29 01:45:36 +08:00
uye
854b9ec9b0 Release v6.11.0-beta.2 (#16916)
## Summary by Sourcery

通过将串口配置与命令执行分离,并对共享客户端实例的访问强制使用互斥锁保护,改进 ADB-lite 客户端管理。

改进内容:
- 添加锁定辅助工具,在执行 connect、shell、exec、push 和交互式 shell 命令之前,验证并保护对共享 ADB-lite
客户端的访问。
- 在 PlatformIO/AdbLiteIO 上引入可配置的 ADB
串口,并在客户端(重新)初始化时提供安全机制,同时在客户端创建失败时记录错误日志。
- 调整 ADB 释放逻辑,仅在存在 ADB-lite 客户端时才发出释放命令,从而减少不必要的操作。
- 连接 AdbController,将设备地址向下传递到平台 I/O 层,以在各类命令中实现 ADB-lite 客户端的一致使用。

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

## Summary by Sourcery

Improve ADB-lite client management by separating serial configuration
from command execution and enforcing mutex-guarded access to the shared
client instance.

Enhancements:
- Add a locking helper to validate and guard access to the shared
ADB-lite client before executing connect, shell, exec, push, and
interactive shell commands.
- Introduce a configurable ADB serial on PlatformIO/AdbLiteIO with safe
client (re)initialization and error logging when client creation fails.
- Adjust ADB release logic to only issue release commands when an
ADB-lite client is present, reducing unnecessary operations.
- Wire AdbController to propagate the device address into the platform
I/O layer for consistent ADB-lite client usage across commands.

</details>
2026-05-29 01:42:01 +08:00
uye
b3eb6cbbc5 ai: changelog details 增加日期 2026-05-29 01:41:21 +08:00
uye
f4fafde9bf docs: changelog 2026-05-29 01:33:56 +08:00
github-actions[bot]
952c97d9a6 chore: Auto Update Game Resources - 2026-05-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26589446911

[skip changelog]
2026-05-28 17:00:23 +00:00
Loong
b2fa9a1c3e fix: 显式声明 adb-lite client 对应的 serial (#16853)
## 概述

- 在 `AdbController::connect` 确定目标 address/serial 后,通过
`PlatformIO::set_adb_serial` 显式声明当前 adb 设备。
- NativeIO 默认忽略该调用;AdbLiteIO 使用该 serial 初始化或切换内部 adb-lite client。
- adb-lite 的 `shell`、`exec-out`、`push` 和交互式 shell 只使用已声明的
client,不再从命令路径里隐式初始化 client。
- AdbLiteIO 内部集中校验 client/serial,并用 mutex 覆盖 `m_adb_client` /
`m_adb_serial` 以及对 adb-lite client 的调用,避免 `call_command` 与
`interactive_shell` 并发访问同一状态。

## 背景

#16850 已修复 `adb connect` 被跳过后 adb-lite client 未初始化的问题,并补充了内部锁保护。这个 PR
是后续调整:把 client 初始化入口从命令执行路径挪到连接生命周期中,让状态声明更明确。

## 修复方式

连接阶段已经知道当前 address/serial,所以在设置 connect/release 命令后调用:

```cpp
m_platform_io->set_adb_serial(address);
```

对 NativeIO 来说这是 no-op;对 AdbLiteIO 来说,这是初始化或切换 `adb::client` 的入口。

后续 adb-lite 命令路径通过 `lock_adb_client(serial)` 统一校验命令中的 `-s <serial>` 与当前
client 对应的 serial 一致,并在同一把锁仍然持有时调用 adb-lite client。这样避免在
`interactive_shell` 中隐式写入 client/serial 状态,也避免把 `m_adb_client` 暴露给无锁调用。

`set_adb_serial` 也改为先创建临时 `adb::client`,创建成功后再提交 `m_adb_serial` /
`m_adb_client` 状态;如果创建失败则记录错误并清空 adb-lite client 状态,避免 serial 已切换但
client 仍指向旧对象的不一致状态。

## 验证

- `git diff --check --cached`
- `cmake --build /private/tmp/maa-build-8599-core --parallel 8`
- `cmake --install /private/tmp/maa-build-8599-core --config
RelWithDebInfo`
- 本机 `maa` CLI + Android 35 arm64 AVD:
  - `maa run connect-only -p adb-lite-test --no-summary -vvv`
  - 日志显示 `Loading MaaCore from: /private/tmp/maa-test-data-8599/lib`
  - 日志显示 `Setting adb lite enabled to true`
  - 日志到达 `Connected`
  - 日志到达 `FastestWayToScreencap Encode`
  - 未出现 `adb client not initialized`
  - 未出现 `failed to create adb-lite client`
  - 未出现 `fallback to NativeIO`
2026-05-29 00:46:30 +08:00
uye
5a4c3fe7b4 fix: 修复开启基建退出提醒时无法退出基建
fix #16913
2026-05-29 00:04:39 +08:00
github-actions[bot]
e8a6d8b063 chore: Auto Update Game Resources - 2026-05-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26584047595

[skip changelog]
2026-05-28 15:22:16 +00:00
uye
6ed2275197 fix: 修复快捷切换在遇到 LoadingText 时无法跳出循环
fix #16910
2026-05-28 23:03:18 +08:00
github-actions[bot]
35a92857d1 chore: Auto Update Game Resources - 2026-05-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26559057935

[skip changelog]
2026-05-28 06:40:01 +00:00
uye
e6360ac8a8 Release v6.11.0-beta.1 (#16906)
## Summary by Sourcery

在提供的 resource/tasks/tasks.json
差异中看不到任何功能性更改;根据现有信息,此次发布似乎不包含代码、配置或文档方面的修改。

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

## Summary by Sourcery

No functional changes are visible in the provided diff for
resource/tasks/tasks.json; the release appears to contain no code,
config, or documentation modifications based on the available
information.

</details>
2026-05-28 14:07:30 +08:00
uye
046459acee fix: 信用收支卡在商店里 2026-05-28 14:05:56 +08:00
uye
50814459f0 Release v6.11.0-beta.1 (#16895)
## Sourcery 总结


为作战任务新增基于仓库库存的掉落目标模式,重做自动公招标签偏好及保留逻辑,改进任务队列交互体验和通知处理,并增强平台与文件系统工具的健壮性,同时更新配置处理方式和文档。

新功能:
- 为作战任务中指定掉落物新增“按仓库库存为目标”的模式,包括按核心任务的运行时追踪,以及展示当前库存和有效刷取数量的 UI。
- 新增对可配置公招标签(包括机器人)的保留支持,通过开关 UI 和回调实现,取代旧的“1 级干员跳过”行为。
- 允许在任务队列中通过新的复制操作来重复已有任务。
- 暴露通知可用状态,并在启动时以及启用通知时展示 toast 通知健康检查结果。
- 新增可复用的公招标签列表归一化工具,以及用于迁移旧版公招保留标签配置的 JSON 转换器。

缺陷修复:
- 在视觉辅助工具中避免出现无效的零大小 ROI:将全零矩形视为对整张图片的请求,并仅记录真正的空区域日志。
- 修复子进程中的 POSIX shell 命令执行行为,避免在 `exec` 失败后返回并破坏父进程状态。
- 通过使用错误码和受保护的目录遍历,使调试图像维护对权限与文件系统错误更加健壮。
- 确保任务索引在选择变更后保持一致,并在任务队列日志及 UI 绑定中统一使用正确的任务显示名称属性。
- 正确处理仓库识别更新和任务状态变化,使基于库存的掉落目标能正确刷新,同时在任务运行时避免修改配置。
- 在加载与序列化过程中对公招标签进行归一化,避免重复或空标签项。
- 在存在备用基础 URL 时,避免意外退回到使用缓存的 API 响应。

优化改进:
- 优化作战设置的用户体验:提供更清晰的中文 XML 注释,重命名拖拽状态属性,并改进掉落相关绑定的更新逻辑。
- 重做自动公招参数以支持偏好的 3★ 标签和独立的保留标签,调整 toast 行为,并将旧的 `skip_robot`
仅保留在协议层以保证向后兼容。
- 清理重复的布尔配置解析逻辑,在多个设置视图模型和服务中统一使用强类型的 `ConfigurationHelper.GetValue` 调用。
- 改进 tooltip 基础设施,以支持自定义 tooltip 内容、启用状态以及更丰富的绑定。
- 调整内部日志辅助工具和基础设施生产任务日志,使日志信息更清晰、更结构化,并统一日志记录器用法。
- 改善启动行为,将配置恢复和 toast 通知检查拆分为后台任务,并更新高级设置可见性逻辑。
- 收紧 adb-lite shell 封装及其他一些基础设施代码路径,使其更清晰和更健壮。

CI:
- 在多个工作流中将第三方 GitHub Actions(push 和 AI 分析)固定到具体的提交 SHA,以提升 CI 行为的可复现性。

文档:
- 更新所有支持语言的集成协议文档,弃用 `skip_robot`,记录新的 `skip_tags` 参数,并调整公招示例。
- 在所有支持语言中扩展回调模式文档,加入新的 `RecruitPreservedTag` 通知说明。
- 明确自动公招手册内容,描述偏好 3★ 标签、保留标签行为以及更新后的通知触发条件。

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

## Sourcery 总结


为战斗任务引入基于仓库库存的目标掉落模式,重构自动公招偏好与保留标签配置,改进任务队列交互体验和通知健康检查,并加强平台、文件系统与配置处理的健壮性。

新特性:
- 为战斗任务新增“基于仓库库存的目标掉落模式”,包括按核心任务进行运行时追踪,以及在 UI 中展示当前库存和有效刷取数量。
- 为自动公招新增“偏好 3★ 标签”和“保留标签”配置,包含新的 UI 控件、核心支持和回调通知。
- 允许在任务队列中通过“复制”操作复用现有任务。
- 暴露 toast 通知的可用性,并向用户展示启动时的健康检查结果。
- 引入可复用的助手工具,用于公招标签列表的规范化处理以及旧版公招配置的迁移。

缺陷修复:
- 在视觉助手中避免出现无效的零尺寸 ROI:将全零矩形视为“全图请求”,只对真正为空的区域进行日志记录。
- 修复子进程中 POSIX Shell 命令执行的问题,确保 exec 失败会正确终止子进程,而不会破坏父进程状态。
- 通过受保护的目录遍历和支持错误码的日志记录,提高调试图像维护在面对文件系统和权限错误时的健壮性。
- 当选择变化时,保持任务队列模型、日志和绑定中的任务索引与显示名称一致。
- 修正仓库识别更新与任务状态变更的处理逻辑,确保基于库存的掉落目标能够正确刷新且不会在运行过程中修改配置。
- 在加载与序列化时规范化公招标签,避免出现重复或空标签项。
- 当为 Maa API 请求配置了备用基础 URL 时,避免回退到缓存的 API 响应。
- 改进基建任务中的产品变更与无人机使用流程,更好地处理产品识别不稳定和产品变更失败的情况,避免阻塞干员上岗。
- 确保肉鸽藏品刷取在退出“最后领奖”流程时正确重置配置标记。

改进与优化:
- 优化战斗设置相关的交互体验:提供更清晰的中文 XML 注释,重命名拖拽状态属性,并改进与运行时状态绑定的掉落绑定刷新逻辑。
- 重构自动公招参数,使其支持“偏好 3★ 标签”和“独立的保留标签”,同时将传统的 `skip_robot` 限制在协议层用于兼容旧版。
- 通过统一使用 `ConfigurationHelper.GetValue`
替代临时的布尔解析逻辑,实现强类型的集中化配置访问,覆盖各项设置与服务代码。
- 扩展工具提示(tooltip)基础设施,以支持自定义内容、启用状态以及更丰富的数据绑定。
- 精简内部日志助手工具,生成更清晰、更结构化的日志并简化日志记录调用方式。
- 调整启动流程,将配置恢复与 toast 通知检查放入后台任务执行,并优化高级设置的显示逻辑。
- 收紧 adb-lite shell 封装及相关平台代码,使执行路径更清晰、更可靠。
- 更新窗口、托盘、睡眠管理及其他 GUI 行为,以更稳定地遵循新的配置默认值。
- 改进基建产物与无人机插件的行为,提供更清晰的日志,并采用更严格的产品识别置信度阈值。

持续集成(CI):
- 将用于 push 和 AI 分析的第三方 GitHub Actions 固定到具体的提交 SHA,以提升 CI 行为的可复现性。

文档:
- 更新所有支持语言的对接协议文档,弃用 `skip_robot`,补充新的 `skip_tags` 参数,并刷新自动公招示例。
- 在所有支持语言中扩展回调协议文档,新增 `RecruitPreservedTag` 通知说明。
- 明确自动公招说明文档,对“偏好 3★ 标签”、保留标签的行为以及更新后的通知触发条件进行详细说明。

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

## Summary by Sourcery

Introduce inventory-based target drop mode for fight tasks, rework auto
recruitment preferences and preserved tags, improve task queue UX and
notification health checks, and harden platform, filesystem, and
configuration handling.

New Features:
- Add inventory-based target drop mode for fight tasks, including
runtime tracking per core task and UI display of current inventory and
effective farming quantity.
- Add preferred 3★ tag and preserved tag configuration for auto
recruitment, with new UI controls, core support, and callback
notifications.
- Allow duplicating existing tasks in the task queue via a copy action.
- Expose toast notification availability and surface a startup health
check to users.
- Introduce reusable helpers for recruitment tag list normalization and
migration of legacy recruitment configuration.

Bug Fixes:
- Prevent invalid zero-size ROIs in vision helpers by treating all-zero
rectangles as full-image requests and logging only truly empty regions.
- Fix POSIX shell command execution in child processes so exec failures
terminate the child without corrupting the parent process state.
- Harden debug image maintenance against filesystem and permission
errors through guarded directory traversal and error-code-aware logging.
- Keep task indices and display names consistent across task queue
models, logs, and bindings when the selection changes.
- Correct handling of depot recognition updates and task state changes
so inventory-based drop targets refresh correctly without mutating
configuration during runs.
- Normalize recruitment tags on load and serialization to avoid
duplicate or empty items.
- Avoid falling back to cached API responses when a fallback base URL is
configured for Maa API requests.
- Improve product change and drone-usage workflows in infrastructure
tasks to better handle weak product detection and product-change
failures without blocking staffing.
- Ensure roguelike collectible runs reset configuration flags correctly
when exiting last-reward handling.

Enhancements:
- Refine fight settings UX with clearer Chinese XML comments, renamed
drag state properties, and improved drop-binding refresh logic tied to
runtime state.
- Rework auto recruitment parameters to support preferred 3★ tags and
independent preserved tags while keeping legacy `skip_robot` only at the
protocol layer for backward compatibility.
- Centralize strongly typed configuration access by replacing ad-hoc
boolean parsing with `ConfigurationHelper.GetValue` across settings and
services.
- Extend tooltip infrastructure to support custom content, enabled
state, and richer bindings.
- Streamline internal logging helpers to produce clearer, more
structured logs and simplify logger usage.
- Adjust startup behavior to run config recovery and toast notification
checks in background tasks and refine advanced settings visibility.
- Tighten adb-lite shell wrapping and related platform code for clearer,
more robust execution paths.
- Update window, tray, sleep management, and other GUI behaviors to
respect new configuration defaults more reliably.
- Improve infrastructure production and drone plugins with clearer
logging and stricter product verification confidence thresholds.

CI:
- Pin third-party GitHub Actions used for pushes and AI analysis to
specific commit SHAs for more reproducible CI behavior.

Documentation:
- Update integration protocol docs in all supported languages to
deprecate `skip_robot`, document the new `skip_tags` parameter, and
refresh auto recruit examples.
- Extend callback schema documentation in all supported languages with
the new `RecruitPreservedTag` notification.
- Clarify auto recruitment manuals to describe preferred 3★ tags,
preserved tag behavior, and updated notification triggers.

</details>

</details>
2026-05-28 13:32:02 +08:00
uye
30925621f2 docs: changelog 2026-05-28 12:15:37 +08:00
Luhan Xiao
1bafad61dd feat(changelog): 记录 MaaMacGui 子仓库更新 (#16870)
* feat(changelog): 记录 MaaMacGui 子仓库更新

* fix(changelog): 修复 MaaMacGui 更新记录解析
2026-05-28 12:09:25 +08:00
H2O_MERO
a752f4b193 feat:为设置添加了搜索支持 (#16833)
* fix:修复了问题 只能在#nullable 注释上下文内的代码中使用可为 null 的引用类型的注释

* chore: Apply suggestion from @sourcery-ai[bot]

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

* chore: 搜索框放到导航栏上方

* chore: UpdateSourceTrigger

* rft: 通过附加属性实现

* rft: 实时遍历可视树,结束搜索时还原展开状态

* perf: 雷霆边框

* chore: 等待界面更新后再搜索

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-05-28 12:08:07 +08:00
uye
c7f83cc154 chore: 删除多余标题 2026-05-28 08:11:18 +08:00
uye
f311cd9bcc ai: 调整 changelog skill 2026-05-28 08:06:35 +08:00
uye
98445b29e9 chore: 公告也改用 MarkdownDataHelper 2026-05-28 08:03:29 +08:00
uye
a9520e2298 feat: 新增 MarkdownDataHelper 2026-05-28 07:56:40 +08:00
github-actions[bot]
fe961feb75 docs: Auto Update Changelogs of v6.11.0-beta.1 (#16898)
* docs: Auto Generate Changelog of Release v6.11.0-beta.1

* 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-05-28 07:22:03 +08:00
uye
8f8d9bd6b2 i18n: 添加任务复制失败的本地化翻译 2026-05-28 06:56:52 +08:00
uye
1a4512976b docs: 补全 指定天数内的理智药 相关文档 2026-05-28 06:50:20 +08:00
uye
14157a9085 perf: 优化 FightTaskStageResetModeConverter 与 RecruitTaskHoldTagsConverter 嵌套逻辑 2026-05-28 06:41:06 +08:00
uye
1c0f5a985f chore: 调整静态视频路径的绑定 2026-05-28 06:36:07 +08:00
uye
b9cbfaa338 docs: skip_tags -> preserve_tags 2026-05-28 06:30:53 +08:00
uye
3f07db484f chore: 在 OnCustomToolTipChanged 中增加对 PART_Border 为空的防护,以避免在模板应用前出现空引用异常 2026-05-28 06:27:05 +08:00
uye
bf6654eb31 chore: 调整特定平台下的 IsNotificationAvailable 返回 2026-05-28 06:25:44 +08:00
github-actions[bot]
a9025a8c4b feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26541802412
[skip changelog]
2026-05-27 22:12:39 +00:00
github-actions[bot]
3039e41c3f chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26540052175
[skip changelog]
2026-05-27 21:35:27 +00:00
github-actions[bot]
49e660f3ea chore: Auto Update Game Resources - 2026-05-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26536825404

[skip changelog]
2026-05-27 20:29:04 +00:00
uye
a5a237f53f chore: 改漏了——
[skip changelog]
2026-05-28 03:41:42 +08:00
uye
fa11d62642 chore: 增加基建小房子切换兜底 2026-05-28 03:39:36 +08:00
uye
f64a353c14 fix: 使用小房子转跳后无法切换基建设施 2026-05-28 03:18:00 +08:00
uye
d763c9b152 chore: 添加主任务右键效果切换提示 2026-05-28 02:56:09 +08:00
uye
676c3bda4a chore: 加回右键菜单和单次运行
fix #16889
2026-05-28 02:44:16 +08:00
HY
92d939b36c chore: 繁中服「天想」主題 (#16893)
chore: 繁中服「孤星」主題
2026-05-28 01:54:33 +08:00
github-actions[bot]
b30112b5b7 chore: Auto Templates Optimization
Triggered by 70cd6d5324

[skip changelog]
2026-05-27 10:45:46 +00:00
HY
70cd6d5324 fix: 嘗試修復繁中服界園肉鴿無法放棄探索 (#16887) 2026-05-27 18:45:24 +08:00
Status102
2f14464a91 perf: NotificationImplWpf当Toast不可用时提示原因 (#16877)
* perf: NotificationImplWpf当Toast不可用时提示原因

* i18n: by uye

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

* i18n: JP

* i18n: zh-tw

* i18n: KR

* i18n: machine translate

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: momomochi987 <45387477+momomochi987@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2026-05-27 18:44:38 +08:00
status102
93af38fbe4 fix: Roi.height 越界 2026-05-27 16:03:56 +08:00
status102
9c91b666cb fix: 避免多次correct_rect后返回全图rect 2026-05-27 12:58:08 +08:00
status102
7a33b92d58 fix: 避免多次correct_rect后返回全图rect 2026-05-27 12:46:58 +08:00
status102
b48c640119 fix: LogWarn 等宏在 Release 下依旧输出scope导致额外间隔 2026-05-27 12:46:57 +08:00
Saratoga-Official
f50f67177f fix: 界园见钱问柳事件选择逻辑
fix #16879
2026-05-27 09:32:47 +08:00
github-actions[bot]
0c572e9f6c feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26478296389
[skip changelog]
2026-05-26 22:16:59 +00:00
github-actions[bot]
191e7035b6 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26476376564
[skip changelog]
2026-05-26 21:33:41 +00:00
github-actions[bot]
fda1cc3ff3 chore: Auto Update Game Resources - 2026-05-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26473080349

[skip changelog]
2026-05-26 20:25:29 +00:00
H2O_MERO
39e01179ce feat: 对一键长草列表进行了交互优化,并添加了复制按钮 (#16733)
* feat: 对一键长草列表进行了交互优化

* feat: 增加了删除和编辑两种矢量图标并使用

* fix:修复了按钮颜色没有及时恢复的问题

* feat:加入了复制按钮

* fix:修复了复制任务后部分任务丢失数据和出现渲染异常的问题

* refactor: 跟进和优化了引导界面的任务设置部分样式

* perf: 任务index设置

* perf:

* revert

* fix: NameDisplay -> NameOrTaskType

* fix: 额外的图标

* fix: GroupName

* rft: 提取通用属性,修复 RadioButton 绑定错误,非 Idle 时不显示对应操作按钮

* chore: 删除左键提示

* fix: 高亮背景色

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-05-27 02:38:59 +08:00
github-actions[bot]
d5a2e8efb9 chore: Auto Update Game Resources - 2026-05-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26464510177

[skip changelog]
2026-05-26 17:34:30 +00:00
uye
0289fa0381 feat: 公招保留指定词条 (#16586)
* feat: 保留指定词条

* chore: wpf 不再传递 skip_robot

* rft: 提取共用方法

* perf: 传参

* rft: 统一使用 PreserveTags

* fix: NameOrTaskType

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2026-05-27 00:46:02 +08:00
uye
5efdfa1b5c feat: 理智作战支持设定目标材料最大库存 (#16487)
* feat: 理智作战支持设定目标材料最大库存

* chore: 调整翻译绑定,修改运行时 IsEnable,移除无用属性

* chore: 调整描述

* chore: 调整缩进

* perf: 移除不必要的变更判断

* feat: 任务开始时刷新库存

* rft: rename

* chore: 运行时不刷新仓库数据,仅在进入任务时刷新一次

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2026-05-27 00:28:56 +08:00
uye
753547b5dd feat: 支持部分任务间通过导航栏切换 (#16869) 2026-05-27 00:28:22 +08:00
github-actions[bot]
2592b76569 chore: Auto Update Game Resources - 2026-05-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26460728688

[skip changelog]
2026-05-26 16:20:47 +00:00
Alex Gu
45aefd30d7 fix: filenum_ctrl SIGABRT (#16233) + PosixIO fork _exit + CI action SHA pin (#16502)
* fix: PosixIO::call_command 中 fork 后 child 缺少 _exit 导致 unwind 进 parent 代码

当 execlp 失败时,child 分支走 `return std::nullopt`,该子进程会从
PosixIO::call_command 一路 unwind 回 AdbController::call_command 及其
caller,跟 parent 同时跑:

- 在 child 地址空间副本中释放 m_callcmd_mutex(caller 处持有的 unique_lock)
- 后续命中 `kill(m_child, SIGTERM)` 时 child 视角 m_child==0
  → POSIX `kill(0, SIG)` 给整个进程组发信号 → 把 parent 一并杀掉
- 析构时双 close 同一 fd 号(kernel 已重用给别处)→ 关掉 parent 的
  socket / log fd → 后续 read/write 错乱

查看 git 历史发现回归引入于 #7748(perf: update PosixIO::call_command, 2023-12)。
当时 perf 重构把 child 分支结尾的 `::exit(exit_ret)` 替换成
`Log.error(...) + return std::nullopt`。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* ci: 将第三方 action 钉到 commit SHA,符合 GitHub 安全建议

https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-third-party-actions

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: filenum_ctrl 中 std::filesystem 调用缺 error_code 导致 SIGABRT

Windows 上 debug 截图被另一进程占用时,std::filesystem 多个调用会抛 filesystem_error。
异常未被 filenum_ctrl / save_debug_image / AbstractTask::run 任一层
捕获,沿任务栈一路冒到 MaaCore 顶层(issue #16233)。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: 清理 PosixIO 子分支 execlp 死赋值

按 Sourcery review 清掉死代码。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: restore release package workflow

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 22:20:33 +08:00
Jin Zhaonian
a5e3176e49 fix: 更新检查失败时优先尝试 api2 再使用缓存 (#16873) 2026-05-26 21:58:20 +08:00
uye
fd9f396f74 chore: MT 入口 2026-05-26 21:57:03 +08:00
uye
a4cb1e716d rft: 统一使用重载的 GetValue 替换 Convert.To (#16866) 2026-05-26 10:21:04 +08:00
uye
fb64c1164e feat: TouchMode ToolTip 添加视频演示 (#16812)
* feat: TouchMode ToolTip 添加视频演示

* style: 空行

* rft: 拓展 TooltipBlock 支持自定义 ToolTip
2026-05-26 10:15:44 +08:00
github-actions[bot]
6b5a021b2e feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26421831573
[skip changelog]
2026-05-25 22:14:07 +00:00
Luhan Xiao
0a7f6e272c fix(macOS): 降低 RA4 和 RA15 二倍速识别阈值 (#16860)
## 变更内容

- 在 macOS平台差异配置中,为 RA4 和 RA15 的二倍速识别节点补充 `templThreshold: 0.7`
- 与此前 macOS的 iOS 差异配置保持一致

## 修改位置

- `resource/platform_diff/iOS/resource/tasks.json`

## 原因

RA4 和 RA15 在 iOS/macOS 触控环境下识别二倍速按钮时也有用户反馈出现模板匹配分数偏低的问题,和此前 RA1 的情况类似。  
因此仅在 iOS 平台差异文件中降低对应节点阈值,避免影响通用任务配置和其他平台。

## 说明

本次未修改通用任务文件 `resource/tasks/RA/Reclamation3.json`。

## Summary by Sourcery

错误修复:
- 在 macOS/iOS 的 platform-diff 任务配置中,降低 RA4 和 RA15 的双倍速度模板匹配阈值,以减少漏检情况。

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

## Summary by Sourcery

Bug Fixes:
- Lower the double-speed template matching threshold for RA4 and RA15 in
the macOS/iOS platform-diff task configuration to reduce missed
detections.

</details>
2026-05-26 02:24:24 +08:00
status102
81b71409a8 Revert "fix: 任务匹配进入onErrorNext时, cur_task_ptr错误置空"
This reverts commit c27cefa307.
2026-05-25 18:33:37 +08:00
status102
34d6e682be rft: 界园肉鸽弹窗Next关闭
招募卷关闭
2026-05-25 18:21:17 +08:00
status102
c27cefa307 fix: 任务匹配进入onErrorNext时, cur_task_ptr错误置空 2026-05-25 18:21:17 +08:00
status102
5495615247 perf: TaskQueue CheckBox与添加任务按钮对齐 2026-05-25 14:34:22 +08:00
status102
5a2d0401e4 perf: 优化TaskQueue选中任务时设置按钮表现以突出当前选中的选项 2026-05-25 14:33:25 +08:00
status102
4f39102526 rft: rename
[skip changelog]
2026-05-25 14:17:28 +08:00
Rin
7c628d25a5 fix: 处理界园司岁台分队招募券 NEXT 关闭 (#16806)
* fix: 改为复用原模板

* rft: 重构为JieGarden@Roguelike@CloseCollectionContinue2

* perf: 可读性优化

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2026-05-25 11:31:40 +08:00
github-actions[bot]
6a286f05a3 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26373021279
[skip changelog]
2026-05-24 21:19:51 +00:00
uye
23e6245b89 Release v6.10.7 (#16851)
## Summary by Sourcery

更新 AdbLiteIO,以按设备序列号管理 adb 客户端,并改进线程安全的访问与释放行为。

增强点:
- 在 `adb shell`、`exec-out`、`push` 和交互式 shell 命令中,显式匹配并传递设备序列号,从而实现按设备管理
adb 客户端。
- 引入一个助手工具,以设备序列号为键延迟创建并复用 adb 客户端,并通过互斥锁进行保护,以支持 `call_command` 和
`interactive_shell` 的并发访问。
- 调整 adb 释放逻辑,在执行命令时避免持有客户端互斥锁,从而防止潜在的死锁。

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

## Summary by Sourcery

Update AdbLiteIO to manage adb clients per device serial and improve
thread-safe access and release behavior.

Enhancements:
- Match and pass device serials explicitly in adb shell, exec-out, push,
and interactive shell commands, allowing per-device adb client
management.
- Introduce a helper to lazily create and reuse adb clients keyed by
device serial, guarded by a mutex to support concurrent access from
call_command and interactive_shell.
- Adjust adb release logic to avoid holding the client mutex while
executing commands, preventing potential deadlocks.

</details>
2026-05-25 04:07:09 +08:00
uye
ab7e4f5a4f fix: Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-25 04:02:24 +08:00
uye
75feed058b docs: changelog
Updated version from 6.10.6 to 6.10.7 with highlights and fixes.
2026-05-25 03:54:39 +08:00
Loong
975981c568 fix: 修复 adb-lite 跳过 adb connect 后未初始化 client (#16850)
## 概述

- 在 adb-lite 处理 `shell`、`exec-out`、`push` 和交互式 shell 命令时,从 `-s <serial>`
参数懒初始化 adb-lite client。
- `adb connect <address>` 路径继续使用同一个 client 获取逻辑。
- 记录当前 adb-lite serial,在切换设备时重新创建 client。

## 问题原因

#15300 之后,`AdbController::connect` 会先检查 `adb devices`。如果目标设备已经在列表中,例如
`emulator-5554 device`,就会跳过 `adb connect <serial>`。

这个行为对普通 adb 路径是合理的,但 adb-lite 之前只在 `adb connect` 分支里初始化
`m_adb_client`。因此当设备已经在线、`adb connect` 被跳过时,后续的 `adb -s emulator-5554
shell ...` 会进入 adb-lite 路径,但此时 client 尚未初始化,日志中会出现:

```text
adb client not initialized
fallback to NativeIO
```

## 修复方式

把 adb-lite client 的初始化从 `adb connect` 分支中解耦出来。只要 adb-lite 收到带有 `-s
<serial>` 的 `shell`、`exec-out`、`push` 或交互式 shell 命令,就根据该 serial 获取或创建对应的
`adb::client`。

这样保留了 #15300 中“设备已在线时跳过 `adb connect`”的行为,同时也保证 adb-lite 不再依赖 `adb
connect` 作为唯一初始化入口。

## 验证

- 使用本机已安装的 maa-cli, MaaCore v6.10.6 和 Android 35 arm64 AVD 复现:
  - `adb devices` 返回 `emulator-5554 device`
  - 日志出现 `adb client not initialized`
  - 随后出现 `fallback to NativeIO`
- 编译并安装修复后的 Core:
  - 日志显示 `Setting adb lite enabled to true`
  - 日志到达 `Connected`
  - 日志到达 `FastestWayToScreencap Encode`
  - 未再出现 `adb client not initialized`
  - 未再出现 `fallback to NativeIO`

## Summary by Sourcery

确保 adb-lite 为每个设备序列号初始化并复用一个客户端,用于 shell、exec-out、push 和交互式 shell 命令,并且与
adb connect 的执行路径无关。

Bug 修复:
- 当已在线设备跳过 adb connect 时,防止 adb-lite 因客户端未初始化而失败。

增强功能:
- 追踪当前的 adb-lite 设备序列号,并在序列号变化时重新创建 adb 客户端,以支持多设备会话。

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

## Summary by Sourcery

Ensure adb-lite initializes and reuses a client per device serial for
shell, exec-out, push, and interactive shell commands, independent of
the adb connect path.

Bug Fixes:
- Prevent adb-lite from failing with an uninitialized client when adb
connect is skipped for already-online devices.

Enhancements:
- Track the current adb-lite device serial and recreate the adb client
when the serial changes to support multiple device sessions.

</details>
2026-05-25 03:50:35 +08:00
uye
8ac6c4a593 Release v6.10.6 (#16846)
生息演算应该差不多了,之后发 6.11.0beta 了

## Summary by Sourcery

为 v6.10.6 版本优化生产环境自动化、连接处理、通知机制和文档。

Bug 修复:
- 改进基础设施生产中的产品识别与变更流程,包括重试、校验以及在不阻塞人员调度的前提下进行失败上报。
- 修复无人机使用逻辑,正确区分自定义基础设施配置与基于参数的设置,并确保在不同任务之间正确跟踪状态。
- 修正 RegionOCRer 的 ROI 处理方式,对整幅图像应用掩码,避免错误的坐标偏移。
- 收紧 ADB 连接行为,正确处理仅包含序列号的地址,并确保连接命令既被执行又能正确上报连接成功。
- 规范 Bark 和 Gotify 通知 URL,处理尾随斜杠,并稳健地构造消息端点。
- 确保在 WPF 任务队列视图模型中移除任务条目时,同时释放视图模型以解除事件订阅。
- 调整类 Roguelike 模式的最后奖励逻辑,在每次运行后始终重置可收集模式标志,而不受主题影响。

增强:
- 在基础设施任务中新增带置信度阈值保护的产品检测,并将新的变更流程接入无人机使用决策和 UI 日志。
- 在任务设置视图模型中引入可复用的 UI 刷新作用域辅助工具,并在多个任务队列设置面板中采用,以避免刷新状态不一致。
- 在所有支持的语言和集成协议文档中,更精确地记录 RA-4 回收算法的前置条件和流程。
- 明确并扩展关于 ADB 触控模式使用及建议的内部知识。
- 改进遮罩模板匹配器中的日志输出与缓存管理格式,以便更好地诊断问题。
- 新增对产品变更失败的上报支持,将其记录到 WPF UI 日志中。

CI:
- 使用脚本化的基于 wingetcreate 的流程替换 WinGet 发布 Action,通过 GitHub API
解析发布资源、验证工具哈希,并使用专用 Token 提交更新后的包清单。

文档:
- 更新所有语种的 RA-1/RA-4/RA-15 回收算法手册和集成协议文档,以反映新的 RA-4 策略流程、操作员要求以及建筑移除相关说明。
- 扩展内部问题日志分析知识库,增加关于 ADB 触控模式行为及使用建议的详细指引。

杂项:
- 新增内部 Cursor 技能定义,用于结构化的多模块代码评审报告流水线。

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

## Summary by Sourcery

Refine infrastructure production automation, connection handling,
notifications, and documentation for the v6.10.6 release.

Bug Fixes:
- Improve product recognition and change flow in infrastructure
manufacturing, including retries, verification, and failure reporting
without blocking staffing.
- Fix drone usage logic to distinguish between custom infrastructure
configuration and parameter-based settings, and ensure correct state
tracking across tasks.
- Correct RegionOCRer ROI handling by applying the mask over the full
image and avoiding incorrect coordinate offsets.
- Tighten ADB connect behavior to properly handle serial-only addresses
and ensure the connect command both executes and reports a successful
connection.
- Normalize Bark and Gotify notification URLs to handle trailing slashes
and construct message endpoints robustly.
- Ensure task item removal in the WPF task queue view model disposes
view models to release event subscriptions.
- Adjust roguelike last reward logic to always reset collectible mode
flags after runs, regardless of theme.

Enhancements:
- Add confidence-threshold-guarded product detection in infrastructure
tasks and wire new change flows into drone usage decisions and UI
logging.
- Introduce a reusable UI refreshing scope helper in task settings view
models and adopt it across multiple task queue settings panels to avoid
inconsistent refresh state.
- Document RA-4 reclamation algorithm prerequisites and flow more
precisely across all supported languages and integration protocol docs.
- Clarify and expand internal knowledge about ADB touch mode usage and
recommendations.
- Improve logging and cache management formatting in masked template
matcher for better diagnostics.
- Add support for reporting product change failures to the WPF UI log.

CI:
- Replace the WinGet publishing action with a scripted
wingetcreate-based flow that resolves release assets via GitHub API,
verifies the tool hash, and submits updated package manifests using a
dedicated token.

Documentation:
- Update reclamation algorithm RA-1/RA-4/RA-15 manuals and integration
protocol docs in all locales to reflect the new RA-4 strategy flow,
operator requirements, and building removal notes.
- Extend internal issue log analysis knowledge base with detailed
guidance on ADB touch mode behavior and recommendations.

Chores:
- Add an internal Cursor skill definition for a structured, multi-module
code review report pipeline.

</details>

## Summary by Sourcery

完善用于 v6.10.6 版本的基础设施生产自动化、连接处理、通知端点、Roguelike 奖励标志以及回收算法文档。

Bug 修复:
- 通过在整张图像上应用掩码并避免错误的基于 ROI 的坐标偏移,修正 RegionOCRer 的掩码 OCR 处理。
- 收紧 ADB 连接处理,避免仅通过序列号发起的无效连接尝试,并确保 `connect` 命令既能正确执行,又能准确报告连接成功。
- 修复 WPF 任务队列项移除逻辑,以便在移除时释放任务项视图模型并注销事件订阅。
- 确保 Roguelike 可收集模式标志在每次运行后都会重置,而不受主题影响,从而使“烧水模式”能够正确恢复到用户设置。
- 规范 Bark 和 Gotify 通知 URL,以处理尾部斜杠,并稳健地构造消息端点。
- 调整基础设施无人机的使用方式,以区分基于参数的设置与自定义基础设施配置,避免在自定义模式下使用参数无人机。

增强:
- 在基础设施生产任务中引入带置信度阈值保护的产品检测,并将其接入产品变更逻辑和无人机使用决策。
- 改进基础设施产品切换流程,引入验证、重试与失败报告机制,同时在产品切换仍失败的情况下允许人员编排继续进行。
- 优化带掩码模板匹配器的缓存日志和布局,以便诊断信息更清晰。
- 将产品切换失败情况上报到 WPF UI 日志。
- 扩展关于 ADB 触控模式行为及推荐使用模式的内部知识库。

CI:
- 用基于脚本的 `wingetcreate` 流程替换 WinGet 发布 Action,通过 GitHub API
解析发布资源、验证工具哈希,并使用专用令牌提交更新后的包清单。

文档:
- 更新所有本地化版本中的 RA-1/RA-4/RA-15 回收算法手册和集成协议文档,以反映新的 RA-4
策略流程、前置条件、操作员配置和建筑移除说明。

杂项:
- 新增内部 Cursor 技能定义,以支持结构化的、多模块的代码审查报告流水线。

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

## Summary by Sourcery

Refine infrastructure production automation, connection handling,
notification endpoints, roguelike reward flags, and reclamation
algorithm documentation for the v6.10.6 release.

Bug Fixes:
- Correct RegionOCRer masked OCR handling by applying masks over the
full image and avoiding incorrect ROI-based coordinate offsets.
- Tighten ADB connection handling to avoid invalid serial-only
connection attempts and ensure connect commands both execute and report
successful connections.
- Fix WPF task queue item removal to dispose task item view models and
release event subscriptions.
- Ensure roguelike collectible mode flags are reset after runs
regardless of theme so burn-water mode correctly reverts to user
settings.
- Normalize Bark and Gotify notification URLs to handle trailing slashes
and construct message endpoints robustly.
- Adjust infrastructure drone usage to distinguish between
parameter-based settings and custom infrastructure config, and avoid
using parameter drones in custom mode.

Enhancements:
- Introduce confidence-threshold-guarded product detection in
infrastructure production tasks and wire it into product change logic
and drone usage decisions.
- Improve infrastructure product change flows with verification, retry,
and failure reporting, while allowing staffing to proceed when product
changes still fail.
- Refine masked template matcher cache logging and layout for clearer
diagnostics.
- Report product change failures to the WPF UI log.
- Extend internal knowledge base on ADB touch mode behavior and
recommended usage patterns.

CI:
- Replace the WinGet publishing action with a scripted
wingetcreate-based flow that resolves release assets via GitHub API,
verifies the tool hash, and submits updated package manifests using a
dedicated token.

Documentation:
- Update RA-1/RA-4/RA-15 reclamation algorithm manuals and integration
protocol docs in all locales to reflect the new RA-4 strategy flow,
prerequisites, operator setup, and building removal notes.

Chores:
- Add an internal Cursor skill definition to support a structured,
multi-module code review report pipeline.

</details>
2026-05-24 22:51:25 +08:00
uye
ca687b3024 docs: changelog 2026-05-24 22:30:07 +08:00
status102
b09c0f0678 Revert "rft: IsRefreshingUI 自动化支持"
This reverts commit 8e239b8bc2.
2026-05-24 22:28:56 +08:00
status102
ae194cf412 fix: TaskItem事件 2026-05-24 22:28:55 +08:00
uye
95c1e7b724 docs: changelog 2026-05-24 22:24:44 +08:00
uye
cc09e5b216 fix: 傀影肉鸽烧水后无法前往指定难度
fix #16843
2026-05-24 20:54:52 +08:00
github-actions[bot]
aef75152fe feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26360469934
[skip changelog]
2026-05-24 11:52:00 +00:00
status102
9c49148d72 fix: RegionOCR use_raw = false时bounding_rect的扩展失效 2026-05-24 16:47:56 +08:00
status102
a0cc100a96 fix: 事件订阅泄露 2026-05-24 15:26:21 +08:00
MistEO
3f9c91efce ai: 全项目代码审查 - only cursor can do (指薅羊毛 2026-05-24 12:23:05 +08:00
Saratoga-Official
c8e3d38529 fix: RA1交付石材有可能识别不到 2026-05-24 12:19:03 +08:00
github-actions[bot]
dd01602870 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26344814115
[skip changelog]
2026-05-23 22:08:42 +00:00
github-actions[bot]
e06dfaacb8 chore: Auto Update Game Resources - 2026-05-23
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26344701306

[skip changelog]
2026-05-23 22:03:24 +00:00
Rin
60104dbd89 fix: 基建制造站切换产物流程稳定性提升 (#16747)
* fix: 基建制造站切换产物流程稳定性提升

* fix: 切换产物失败时向 GUI/Log报错

* refactor: 换产物失败后仍进入换人步骤,不停止任务链

*fix: 拆分自定义/params 无人机使用变量

* fix: 补充缺失产物任务配置的空指针保护。

---------

Co-authored-by: Roland125 <oroland125@outlook.com>
2026-05-24 05:41:11 +08:00
github-actions[bot]
a1f736a763 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26343777856
[skip changelog]
2026-05-23 21:18:46 +00:00
Loong
48424a68c5 fix: refactor ADB connection logic to only connect when needed (#15300)
优化 ADB 连接处理逻辑,避免不必要的连接尝试,并在连接不需要或无效时改进错误报告。
2026-05-23 16:24:49 +01:00
Kaleb Luedtke
c14685311b ci:请使用 wingetcreate 代替 winget-releaser (#16813)
* fix: Use wingetcreate instead of winget-releaser

* fix: Pin to a version and hash

* fix: Specify to use PowerShell

* fix: Use GitHub API for fetching the download URLs

* fix: Don't set GITHUB_TOKEN

* fix: Trim leading character from version

* fix: Anchor regex for safety

* chore: Use newer API version

* fix: Ensure terminating errors terminate
2026-05-23 22:33:14 +08:00
uye
4499a0b9c5 chore: inheritdoc 2026-05-23 22:25:34 +08:00
uye
b6126a7392 fix: 修复 Bark 与 Gotify 无法使用反代路径 2026-05-23 22:23:21 +08:00
github-actions[bot]
f716362e03 chore: Auto Templates Optimization
Triggered by 8d236d83c5

[skip changelog]
2026-05-23 13:47:57 +00:00
萨拉托加
8d236d83c5 fix: RA-4已知问题 (#16821)
## Summary by Sourcery

为 `Reclamation3.json` 更新 RA Reclamation3 任务配置。

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

## Summary by Sourcery

Update RA Reclamation3 task configuration for Reclamation3.json.

</details>
2026-05-23 21:47:38 +08:00
HX3N
7949869f2e chore: YostarKR UR ocr edit 2026-05-23 18:08:35 +09:00
status102
8e239b8bc2 rft: IsRefreshingUI 自动化支持 2026-05-23 16:27:09 +08:00
status102
53f1ac9e07 perf: 剿灭关使用代理卷后网络卡顿等待 2026-05-23 15:59:43 +08:00
status102
7f8f4bdfff fix: 自动战斗结束检测bypass 2026-05-23 11:08:59 +08:00
uye
b6dec3a403 ai: Update KNOWLEDGE.md with Connect.TouchMode information
Added details about Connect.TouchMode and its modes.
2026-05-23 06:31:40 +08:00
github-actions[bot]
c56bb31e19 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26312714696
[skip changelog]
2026-05-22 21:26:42 +00:00
uye
fb89bec322 Release v6.10.5 (#16807)
## Summary by Sourcery

为回收算法任务和配置添加 RA-4 支持,改进超时和停滞检测处理,并优化模板匹配缓存行为和 GUI 工具提示。

New Features:
- 在核心任务、配置、协议定义、UI 配置以及多语言文档中引入 RA-4 作为新的回收算法模式。
- 在运行时状态和游戏设置 UI 中开放启用/禁用停滞检测的配置。
- 为当前理智刷图阶段方案添加 UI 工具提示说明,包括自定义关卡代码的提示。

Bug Fixes:
- 在线索交换被禁用时,通过默认产品类型,确保接待任务能计算出有效效率。
- 修复支线剧情重新开启时的导航和关卡处理,避免超时和错误的任务终止。
- 通过使用依赖属性而不是计算属性来跟踪内容空与否,使 TooltipBlock 的提示文本支持数据绑定。
- 修正信用战斗的战斗后处理逻辑,确保正确等待动作完成。

Enhancements:
- 将 `MaskedCcoeffMatcher` 中的 DFT 方案缓存替换为受 LRU 限制的模板方案缓存,并改为每次调用计算
DFT,同时加入淘汰日志和缓存大小追踪。
- 限制与超时相关的配置值在安全范围内,以避免整数溢出和无效的定时器间隔。
- 更新支线剧情重新开启关卡的导航处理逻辑,改为使用专用导航任务,而不是简单禁用导航。
- 调整 RA-1 回收任务行为和文档,包括部署重试机制和动画等待时间的调优。

Documentation:
- 在所有支持的语言中记录 RA-4 回收算法模式、流程与需求。
- 在所有地区的协议集成文档中描述 RA-4 模式。
- 为版本 v6.10.5 更新变更日志,包含新特性、改进、修复及其他说明。

Chores:
- 移除未使用的战斗关卡设置,并清理相关 UI 绑定和布局。

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

## Summary by Sourcery

Add RA-4 support to Reclamation Algorithm tasks and configuration,
improve timeout and stall detection handling, and refine template
matching cache behavior and GUI tooltips.

New Features:
- Introduce RA-4 as a new Reclamation Algorithm mode across core tasks,
configuration, protocol definitions, UI configuration, and multilingual
documentation.
- Expose configuration for enabling or disabling stall detection in both
runtime state and game settings UI.
- Add UI tooltip guidance for the current sanity farming stage plan,
including hints for custom stage codes.

Bug Fixes:
- Ensure reception task computes valid efficiency when clue exchange is
disabled by defaulting the product type.
- Fix side story reopen navigation and stage handling to avoid timeouts
and incorrect task termination.
- Allow TooltipBlock tooltip text to be data-bound by tracking emptiness
via a dependency property instead of a computed property.
- Correct credit fight post-battle handling to wait properly for action
completion.

Enhancements:
- Replace the DFT plan cache in MaskedCcoeffMatcher with an LRU-limited
template plan cache and per-call DFT computation, including eviction
logging and cache size tracking.
- Clamp timeout-related configuration values to safe ranges to avoid
integer overflow and invalid timer intervals.
- Update stage navigation handling for sidestory reopen stages to use
dedicated navigation tasks rather than disabling navigation.
- Adjust RA-1 Reclamation task behavior and documentation, including
deployment retries and animation wait tuning.

Documentation:
- Document RA-4 Reclamation Algorithm mode, flow, and requirements in
all supported languages.
- Describe RA-4 mode in protocol integration documentation for all
locales.
- Update changelog for version v6.10.5 with new features, improvements,
fixes, and other notes.

Chores:
- Remove unused fight stage settings and clean up related UI bindings
and layout.

</details>
2026-05-23 02:00:58 +08:00
uye
29c5b0abb2 docs: changelog 2026-05-23 02:00:25 +08:00
uye
62ae9c56b6 fix: 选项显示内容错误 2026-05-23 01:52:26 +08:00
uye
bcd6bcf949 fix: 企鹅物流汇报 ID 始终显示 2026-05-23 01:51:22 +08:00
uye
ad810146df chore: 移除不必要的刷新 2026-05-23 01:44:41 +08:00
status102
cfe86445f8 fix: 自动战斗快速编队干员名roi 2026-05-23 01:27:58 +08:00
uye
9a491c0baa chore: 优化任务超时判断 2026-05-23 01:20:39 +08:00
uye
fef0e8f25b docs: Release notes for version 6.10.5
Updated CHANGELOG for version 6.10.5 with new features, improvements, and fixes.
2026-05-23 00:21:03 +08:00
uye
e4ab103f96 fix: 修复未开启线索交流时不计算会客室效率 2026-05-22 23:43:54 +08:00
Status102
0dec7ff8fc perf: 刷理智关卡选择提示当前任务将执行的关卡 (#16797)
* perf: 刷理智关卡选择提示当前任务将执行的关卡

* i18n: EN

* i18n: KR

* i18n: JP

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: ManicSteiner <manicsteiner@outlook.com>
2026-05-22 22:54:03 +08:00
Aliothmoon
3db262c5ca fix: 移除dft路径下的缓存 & 补充缓存驱逐机制 (#16800)
* fix: 移除dft路径下的缓存

* feat: 使用LRU控制一下缓存上限

* fix: potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* feat: 驱逐缓存项时打印日志

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-22 22:52:50 +08:00
Status102
263eaf14c1 fix: TooltipBlock无法使用Binding进行绑定 (#16796)
* fix: TooltipBlock无法使用Binding进行绑定

* fix: review
2026-05-22 22:52:35 +08:00
github-actions[bot]
8d8e800c3b chore: Auto Update Game Resources - 2026-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26293837506

[skip changelog]
2026-05-22 14:38:19 +00:00
萨拉托加
4f094c68c9 feat: RA-4 (#16749)
* feat: RA-4

* fix: 修复一些问题

* fix: 继续优化改进

* fix: 继续优化改进

* feat: 添加 RA-4 入口与文档

* perf: 提取 baseTask

* chore: 调整描述

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-05-22 22:23:59 +08:00
uye
2882637c83 chore: 删除 (大型) 兽栏的描述 2026-05-22 22:16:47 +08:00
github-actions[bot]
0c3002380d chore: Auto Update Game Resources - 2026-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26285403922

[skip changelog]
2026-05-22 11:36:07 +00:00
status102
fe2bae6093 fix: SS复刻任务导航超时临时修复
等待重构拆分
2026-05-22 18:48:12 +08:00
status102
9c15e82ff8 fix: 删多了 2026-05-22 16:05:13 +08:00
status102
3ba810d1d5 rft: 移除FightTask不再使用的关卡设置 2026-05-22 14:55:23 +08:00
github-actions[bot]
294d1c52be chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26254266055
[skip changelog]
2026-05-21 21:32:08 +00:00
uye
ebe325a474 fix: RA-15 导致无法启动 2026-05-22 02:19:27 +08:00
github-actions[bot]
e52a41745f chore: Auto Update Game Resources - 2026-05-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26244718893

[skip changelog]
2026-05-21 18:18:17 +00:00
Michael Liu 刘嘉远
37d0fec568 fix: 生息演算RA15 bug fix (#16770)
* fix: 0520 bug fix

* fix: RA-15代码完善

* fix: 完善RA15
2026-05-22 01:52:53 +08:00
github-actions[bot]
ff9c7b8048 chore: Auto Update Game Resources - 2026-05-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26242308150

[skip changelog]
2026-05-21 17:31:45 +00:00
Luhan Xiao
c04dab8c05 fix(macOS): 为 PlayCover 生息演算 RA1 二倍速识别添加 iOS 模板和降低识别阈值 (#16779)
## 修改内容

为 iOS / PlayCover 差异资源中的 `RelaunchAnchor@RA@RA1-DoubleSpeed`
增加单独的模板匹配阈值:

```json
"RelaunchAnchor@RA@RA1-DoubleSpeed": {
    "templThreshold": 0.75
}
```

修改文件:

```text
resource/platform_diff/iOS/resource/tasks.json
```

## 问题背景

在 MacBook Air M4 + PlayCover 环境下执行生息演算 `Reclamation / RelaunchAnchor`
时,RA-1 流程会在部署采集基站后卡在:

```text
RelaunchAnchor@RA@RA1-WaitDoubleSpeed
```

游戏画面右上角实际已经出现二倍速按钮,但模板匹配分数只有约 `0.78`,低于默认阈值时不会进入 `RA1-DoubleSpeed`
点击节点,而是持续停留在 `RA1-WaitDoubleSpeed / DoNothing`。

相关问题背景可参考:#16775、#16778  
更完整的问题发现、排查、修改和本地测试闭环见:#16778

## 本地验证

本地先恢复了通用任务文件 `resource/tasks/RA/Reclamation3.json`,只在 iOS 差异文件中加入上述
`templThreshold` 配置后,重新启动 MAA 并测试。

日志中可以看到 iOS 差异资源被加载:

```text
load ../../../../../../../../Applications/MAA.app/Contents/Resources/resource/platform_diff/iOS/resource/template
load ret 1
```

原本卡住的位置可以成功识别并进入 `RA1-DoubleSpeed`:

```text
cur_task":"RelaunchAnchor@RA@RA1-WaitDoubleSpeed"
to_be_recognized":["RelaunchAnchor@RA@RA1-DoubleSpeed","RelaunchAnchor@RA@RA1-WaitDoubleSpeed"]

match_templ | RelaunchAnchor@RA@DoubleSpeed.png [optimized] score: 0.784211 rect: [ 1068, 24, 52, 63 ] roi: [ 1060, 20, 80, 70 ]
analyze | MatchTemplate RelaunchAnchor@RA@RA1-DoubleSpeed

"action":"ClickSelf"
"algorithm":"MatchTemplate"
"score":0.784211
"task":"RA1-DoubleSpeed"

Click with scaled coordinates (1094, 83) 1.5
PlayTools click: (1641, 124)
```

之后流程继续进入后续节点:

```text
RelaunchAnchor@RA@RA1-DeployGatheringBaseWait
RelaunchAnchor@RA@RA1-WaitCost
RelaunchAnchor@RA@RA1-Cost
RelaunchAnchor@RA@RA1-DeployOperatorSwipe
RelaunchAnchor@RA@RA1-DeployOperatorDirection
```

本地游戏内也确认可以正常继续执行,不再卡在 `RA1-WaitDoubleSpeed`。

## 说明

该修改没有改动通用 `resource/tasks/RA/Reclamation3.json`,只对 iOS / PlayCover
平台差异资源生效,用于兼容 PlayCover 环境下二倍速按钮模板匹配分数偏低的问题。
2026-05-22 00:57:29 +08:00
uye
a1047e9d33 perf: RA-1 增加迷迭香部署方向失败重试,增加过场动画过长时等待 2026-05-21 23:54:13 +08:00
uye
313b39a1e9 chore: 肉鸽分队添加 代理人分队 不支持描述 2026-05-21 23:54:13 +08:00
github-actions[bot]
1e84039f78 chore: Auto Update Game Resources - 2026-05-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26215064526

[skip changelog]
2026-05-21 08:37:21 +00:00
github-actions[bot]
c0c177d273 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26193227134
[skip changelog]
2026-05-20 22:18:27 +00:00
uye
5ec43a8ead chore: 优化界面布局 2026-05-20 23:27:21 +08:00
uye
bac1bbeb21 perf: 支持禁用日志停滞检测,优化数据绑定 2026-05-20 23:13:13 +08:00
github-actions[bot]
52a76b0386 chore: Auto Update Game Resources - 2026-05-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26150926055

[skip changelog]
2026-05-20 08:31:25 +00:00
status102
ad0295c83e fix: OF-1战斗失败错误结束
- link to #16748
2026-05-20 12:28:34 +08:00
uye
cf1137be3d Release v6.10.4 (#16743)
怎么 [issues-helper](https://github.com/actions-cool/issues-helper) 被 ban
了
2026-05-20 02:27:59 +08:00
uye
c0a5cf6b1f ci: Remove issue creation step on CI failure
Removed issue creation step on failure in CI workflow.
2026-05-20 02:21:50 +08:00
uye
a3b421f948 ci: Remove issue creation on OTA release failure
Removed failure issue creation steps for OTA releases on Windows and macOS.
2026-05-20 02:21:30 +08:00
uye
6d5fc774ce Release v6.10.4 (#16741)
## Summary by Sourcery

更新游戏自动化功能及文档,改进配置恢复行为,并优化关卡掉落处理与远程控制日志行为。

New Features:
- 在所有支持的语言中编写并公开新的迷你游戏自动化功能文档,包括活动商店与“再遗战地(Reclamation
Algorithm)”商店相关的自动化流程。
- 为“再遗战地·重启锚点(Reclamation Algorithm Relaunch Anchor)”主题添加支持与配置
schema,并加入 RA-1 和 RA-15 自动化模式。
- 为 YoStar EN/JP 服务器的 UR 关卡以及额外的“再遗战地”资源提供新的关卡/任务定义。

Bug Fixes:
- 放宽对剿灭作战关卡掉落的处理逻辑,对于缺失合成玉的情况不再强制停止任务,以避免在识别异常时提前终止。
- 改进配置加载逻辑,可从旧配置文件中恢复缺失或不匹配的配置,并在执行修复时通知用户。

Enhancements:
- 将 Android、Linux 和 macOS 设备连接指南重构为明确的步骤容器,并在所有支持语言中厘清 ADB 与 Python
的使用流程。
- 更新干员与仓库识别工具文档,统一列出支持的导出格式,并移除过时的 beta/alpha 标签。
- 明确“再遗战地”使用文档与集成协议,反映 Tales 默认主题、新的重启锚点模式以及不同主题的专有参数。
- 统一特殊文档容器命名,在各语言的文档规范中将 demo-wrapper 容器重命名为 window。
- 调整远程控制启动逻辑,通过其公共 API 而非反射来清理任务队列视图模型日志。

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

## Summary by Sourcery

Update game automation features and documentation, improve configuration
recovery behavior, and refine stage drop handling and remote control
logging behavior.

New Features:
- Document and expose the new mini-game automation feature across
supported languages, including event shop and Reclamation Algorithm shop
workflows.
- Add support and configuration schema for the Reclamation Algorithm
Relaunch Anchor theme with RA-1 and RA-15 automation modes.
- Provide new stage/task definitions for UR stages for YoStar EN/JP
servers and additional Reclamation Algorithm resources.

Bug Fixes:
- Relax annihilation stage drop handling so missing orundum no longer
forcibly stops the task, avoiding premature termination on recognition
anomalies.
- Improve configuration loading to recover missing or mismatched
configurations from old config files and notify the user when repairs
are applied.

Enhancements:
- Restructure Android, Linux, and macOS device connection guides into
explicit step containers and clarify ADB and Python usage flows in all
supported languages.
- Update operator and depot recognition tool docs to list supported
export formats consistently and remove obsolete beta/alpha labels.
- Clarify Reclamation Algorithm usage docs and integration protocol to
reflect the Tales default theme, new Relaunch Anchor modes, and
theme-specific parameters.
- Standardize special documentation containers by renaming the
demo-wrapper container to window in documentation guidelines across
languages.
- Adjust remote control startup to clear the task queue view model log
through its public API instead of reflection.

</details>
2026-05-20 01:19:39 +08:00
uye
b01281e0db docs: changelog 2026-05-20 01:15:19 +08:00
uye
50de6a25fb ai: Changelog skill 2026-05-20 01:14:38 +08:00
uye
8ad75a3760 perf: 优化配置异常弹窗 2026-05-20 00:48:51 +08:00
status102
e4b0acfe9a perf: 配置损坏记录 2026-05-20 00:25:37 +08:00
status102
ba4a998d0b fix: 修复潜在的空config 2026-05-20 00:21:46 +08:00
status102
d6872bc425 fix: 配置修复弹窗后自动退出 2026-05-20 00:15:43 +08:00
uye
079c64aba6 fix: 修复重复添加同名配置会删除上一个配置 2026-05-20 00:06:40 +08:00
uye
31d516f0e6 docs: Update docs/ko-kr/manual/device/macos.md
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-05-19 23:41:23 +08:00
github-actions[bot]
34f9e12f11 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26107648395
[skip changelog]
2026-05-19 15:34:29 +00:00
github-actions[bot]
e651f44425 chore: Auto Update Game Resources - 2026-05-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26107479502

[skip changelog]
2026-05-19 15:32:49 +00:00
status102
80c753b3d4 docs(wpf): 自动战斗右侧提示移除需要手动借助战的额外操作说明 2026-05-19 23:30:45 +08:00
uye
b06a824ae2 fix: 远控 LinkStart-* 子任务失败
fix #16740
2026-05-19 23:27:56 +08:00
uye
cb02b83f3d docs: 补充生息演算与小工具相关文档 2026-05-19 23:24:05 +08:00
Michael Liu 刘嘉远
fd10ca546c fix: 修复部分 RA-15 bug,优化逻辑 (#16725)
* fix: 修复部分ra15bug,优化逻辑

* fix: add stability

* fix: add stability
2026-05-19 22:17:49 +08:00
wryx166
212e9aa605 docs: 设备文档添加 steps/details容器,修复bat代码块格式,处理文档中demo-wrapper的废弃警告 (#16712)
* docs: 为设备文档添加步骤容器并修正代码块语言
  - 添加 `::: steps` 步骤容器
  - 将 Windows 批处理代码块修正为 `bat`,相应注释改为bat风格
  - i18n

  Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: 处理文档中demo-wrapper的废弃警告
2026-05-19 20:51:37 +08:00
uye
8274c0b23a chore: RA-1 部署基站失败时尝试重新部署 2026-05-19 20:25:18 +08:00
uye
7ce44a2f2c chore: 生息演算增加基础设施识别,避免二次点击制造图标进入错误位置 2026-05-19 19:44:56 +08:00
HY
ed30b4011c fix: 補上繁中服漏掉的「擬態學者分隊」 (#16731)
fix: 補上漏掉的「擬態學者分隊」
2026-05-19 13:14:50 +08:00
status102
e13461f972 Revert "feat: SwitchConfig 检测到配置缺失尝试从当前配置复制恢复通知用户"
This reverts commit b8b25d7c20.
2026-05-19 13:08:59 +08:00
status102
2effcbb065 perf: 配置部分损坏提示 2026-05-19 13:08:04 +08:00
status102
0b28249453 perf: Config检查到缺失时, 统一使用当前config进行赋值 2026-05-19 12:58:46 +08:00
github-actions[bot]
87d64af26f chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26061417579
[skip changelog]
2026-05-18 21:27:58 +00:00
Roland125
9475e2f76a fix: 剿灭掉落识别不到合成玉时不停止任务 (#16726) 2026-05-19 01:38:40 +08:00
uye
7583758492 chore: 调整坐标 2026-05-19 01:28:02 +08:00
Manicsteiner
87faaf2cfd chore: Yostar UR stage navigation (#16723) 2026-05-18 23:09:08 +08:00
uye
2bf3c937d4 Revert "fix: 当新配置损坏时, 重新补充默认配置"
This reverts commit 5c7ab5c3cd.
2026-05-18 21:02:14 +08:00
uye
b8b25d7c20 feat: SwitchConfig 检测到配置缺失尝试从当前配置复制恢复通知用户 2026-05-18 21:02:14 +08:00
H2O_MERO
266ae1cda6 chore: 更新基建排班文档中过时的链接 (#16700)
把基建排班文档中的链接从master存档分支改到了v2分支

## Summary by Sourcery

文档:
- 更新基础调度模式文档(EN/JA/KO/ZH)中的示例 JSON 链接,使其引用 master-v2 分支中的资源。

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

## Summary by Sourcery

Documentation:
- Update example JSON links in base scheduling schema docs (EN/JA/KO/ZH)
to reference the master-v2 branch resources.

</details>
2026-05-18 20:35:40 +08:00
status102
5c7ab5c3cd fix: 当新配置损坏时, 重新补充默认配置
fix #16691
2026-05-18 20:25:37 +08:00
uye
f1a3627dc0 Release v6.10.3 (#16701)
## Summary by Sourcery

更新回收任务模式的处理方式,使用统一的标志位(flags)风格枚举,并通过改进的验证和容错机制,收紧 JSON 枚举转换行为。

New Features:
- 引入统一的 `ReclamationMode` 枚举,使用标志位(flags)风格的取值来同时表示 Tales 和 Relaunch
Anchor 模式。
- 在宽容(tolerant)的 JSON 枚举转换器中,新增对标志位(flags)风格枚举组合以及作为字典键使用的支持。

Bug Fixes:
- 通过更改底层数字取值,确保 Relaunch Anchor 的回收模式值在 C# 与 C++ 配置之间保持一致。
- 在切换主题时,正确保留或重置回收清除存储(clear store)和模式设置,并验证所选模式与当前主题是否兼容。

Enhancements:
- 优化宽容枚举 JSON 转换器,通过预计算掩码和预定义集合来验证枚举值,并在出错时抛出带路径信息的
`JsonException`,而不是默默回退到默认值。
- 简化回收设置视图模型,将分离的模式列表统一为单一模式列表,并根据所选主题进行刷新。
- 明确容错根级转换行为,改为依赖具备路径信息的枚举转换错误来恢复无效属性。

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

## Summary by Sourcery

Update reclamation task mode handling to use a unified flags-style enum
and tighten JSON enum conversion behavior with improved validation and
fault tolerance.

New Features:
- Introduce a unified ReclamationMode enum with flags-style values to
represent both Tales and Relaunch Anchor modes.
- Add support for flags-style enum combinations and dictionary keys in
the tolerant JSON enum converter.

Bug Fixes:
- Ensure Reclamation mode values for Relaunch Anchor align between C#
and C++ configurations by changing the underlying numeric values.
- Preserve or reset reclamation clear store and mode settings correctly
when switching themes, and validate that the selected mode is compatible
with the current theme.

Enhancements:
- Refine the tolerant enum JSON converter to validate enum values via a
precomputed mask and defined set, and to throw JsonException with path
information instead of silently defaulting.
- Simplify reclamation settings view model by unifying separate mode
lists into a single mode list that is refreshed based on the selected
theme.
- Clarify fault-tolerant root conversion behavior to rely on path-aware
enum conversion errors for recovering invalid properties.

</details>
2026-05-18 12:57:48 +08:00
uye
39cb3fd32a docs: Bump version to v6.10.3 and update changelog
Updated version number to v6.10.3 and added highlights, improvements, and fixes.
2026-05-18 12:57:20 +08:00
uye
b20a05f2ea fix: review 2026-05-18 12:54:01 +08:00
uye
aa6ea24d8d fix: 不会现在还有人选沙中遗火吧 2026-05-18 12:42:20 +08:00
uye
8346706622 chore: 遇到无法转换的枚举值转换为带路径信息的 JsonException 2026-05-18 11:54:38 +08:00
Status102
ac3b826c55 rft: RA mode (#16697)
## Summary by Sourcery

围绕共享的 `ReclamationMode` 枚举统一回收任务模式处理方式,并相应更新 UI 和配置流程。

New Features:
- 引入共享的 `ReclamationMode` 枚举,在各类回收主题和任务中统一用于表示算法模式。

Bug Fixes:
- 确保 `RelaunchAnchor` 模式选择在使用新的基于位标志(bitflag)的模式值时,仍能正确映射到 `RA-1` 和
`RA-15`,并保持已序列化配置中的现有行为不变。

Enhancements:
- 更新回收设置视图模型,使其暴露统一的模式列表;该列表会根据当前选中的主题动态重建,同时在可能的情况下保留当前选择。
- 调整 `ReclamationTask` 及相关配置类,使用新的 `ReclamationMode` 枚举来替代原先按主题划分的整型模式值。
- 在主题或底层任务数据变更时刷新回收模式选项,以保持 UI 与模型的同步。

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

## Summary by Sourcery

Unify reclamation task mode handling around a shared ReclamationMode
enum and update UI and config flows accordingly.

New Features:
- Introduce a shared ReclamationMode enum used across reclamation themes
and tasks to represent algorithm modes.

Bug Fixes:
- Ensure RelaunchAnchor mode selection correctly maps to RA-1 and RA-15
using the new bitflag-based mode values while maintaining existing
behavior in serialized configs.

Enhancements:
- Update reclamation settings view model to expose a unified mode list
that is dynamically rebuilt based on the selected theme while preserving
the current selection where possible.
- Adjust ReclamationTask and related config classes to use the new
ReclamationMode enum instead of theme-specific integer modes.
- Refresh reclamation mode options whenever the theme or underlying task
data changes to keep the UI and model in sync.

</details>

增强内容:
- 将原本分别使用整数和主题特定表示的回收模式,统一替换为在任务配置和视图模型中通用的 `ReclamationMode` 枚举。
- 更新回收设置的 UI,使其根据所选主题动态生成模式列表,并在主题变化时保持已选模式同步。
- 调整配置转换和任务序列化逻辑,使其使用新的枚举来读写回收模式,同时保持现有行为不变。

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

## Summary by Sourcery

围绕共享的 `ReclamationMode` 枚举统一回收任务模式处理方式,并相应更新 UI 和配置流程。

New Features:
- 引入共享的 `ReclamationMode` 枚举,在各类回收主题和任务中统一用于表示算法模式。

Bug Fixes:
- 确保 `RelaunchAnchor` 模式选择在使用新的基于位标志(bitflag)的模式值时,仍能正确映射到 `RA-1` 和
`RA-15`,并保持已序列化配置中的现有行为不变。

Enhancements:
- 更新回收设置视图模型,使其暴露统一的模式列表;该列表会根据当前选中的主题动态重建,同时在可能的情况下保留当前选择。
- 调整 `ReclamationTask` 及相关配置类,使用新的 `ReclamationMode` 枚举来替代原先按主题划分的整型模式值。
- 在主题或底层任务数据变更时刷新回收模式选项,以保持 UI 与模型的同步。

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

## Summary by Sourcery

Unify reclamation task mode handling around a shared ReclamationMode
enum and update UI and config flows accordingly.

New Features:
- Introduce a shared ReclamationMode enum used across reclamation themes
and tasks to represent algorithm modes.

Bug Fixes:
- Ensure RelaunchAnchor mode selection correctly maps to RA-1 and RA-15
using the new bitflag-based mode values while maintaining existing
behavior in serialized configs.

Enhancements:
- Update reclamation settings view model to expose a unified mode list
that is dynamically rebuilt based on the selected theme while preserving
the current selection where possible.
- Adjust ReclamationTask and related config classes to use the new
ReclamationMode enum instead of theme-specific integer modes.
- Refresh reclamation mode options whenever the theme or underlying task
data changes to keep the UI and model in sync.

</details>

</details>
2026-05-18 11:42:29 +08:00
uye
b4d43cbfe3 perf: 优化 [Flags] 判断 2026-05-18 11:34:16 +08:00
uye
54f239411b fix: TolerantEnumConverter 支持 Flags 2026-05-18 11:14:45 +08:00
uye
82abc7e89a Release v6.10.2 (#16693)
## Summary by Sourcery

重构宽容枚举 JSON 转换器,以复用解析逻辑,并扩展对作为 JSON 属性名使用的枚举值的支持。

增强内容:
- 将通用的宽容枚举解析逻辑提取到一个辅助方法中,在字符串场景和属性名场景中复用。
- 为枚举序列化为 JSON 属性名时的宽容枚举处理添加读/写支持。

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

## Summary by Sourcery

Refactor tolerant enum JSON converter to reuse parsing logic and extend
support to enum values used as JSON property names.

Enhancements:
- Extract shared tolerant enum parsing into a helper method reused
across string and property-name scenarios.
- Add read/write support for tolerant enum handling when enums are
serialized as JSON property names.

</details>
2026-05-18 10:09:15 +08:00
uye
c5722c0f9d docs: Update CHANGELOG for version 6.10.2
Updated version number to v6.10.2 and added highlights and fixes.
2026-05-18 10:09:04 +08:00
uye
9456d7a5da fix: 自定义枚举转换器无法处理枚举作为字典键 2026-05-18 10:07:33 +08:00
uye
b687e5887a Release v6.10.1 (#16689) 2026-05-18 09:15:45 +08:00
uye
072666f425 fix: 日志顺序 2026-05-18 09:14:30 +08:00
uye
5207c09929 docs: Update CHANGELOG for version 6.10.1
Add changelog entry for version 6.10.1 with a fix.
2026-05-18 09:11:22 +08:00
uye
8c72cac105 fix: 在遇到多个非法配置参数时会直接重置配置 2026-05-18 09:08:16 +08:00
github-actions[bot]
629cb81c64 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/26002960944
[skip changelog]
2026-05-17 21:18:14 +00:00
539 changed files with 54054 additions and 4760 deletions

View File

@@ -0,0 +1,332 @@
---
name: changelog
description: 根据 git 提交记录、diff、现有 CHANGELOG 与 tag整理符合 MAA 发布规范的 changelog Markdown。过滤噪音、合并同类改动输出可直接写入 CHANGELOG.md 的最终版本。
---
# MAA Changelog Skill
## 目标
读取待发布范围内的 commit、diff、现有 CHANGELOG 与历史 tag输出可直接写入 `CHANGELOG.md` 的最终 Markdown。
- **只输出最终 Markdown**,不输出分析过程、分类理由或代码围栏。
- 第一目标:"最终用户看得懂、历史版本不断裂、同类改动不重复"。
## 必要输入
- 目标版本号(如 `v6.13.0-beta.3`)。
- 待发布提交范围(可由 tag、PR、分支信息推导
- 当前 CHANGELOG 内容。
## 核心规则
### 1. 净变更优先
- 同一功能/问题的多条相关 commit **合并为单条**,面向用户描述最终效果。
- commit 标题含糊、口语化、玩梗时,**必须查看 diff 后改写**为专业可理解的描述。
- **Revert 处理**:原改动被完整撤销则删除该项;仍保留部分语义则合并为一条准确描述最终结果的条目。
- "review""typo""日志顺序""调整坐标""build warning" 等缺乏用户语义的提交不单独保留,除非 diff 证明修复了用户可感知问题。
- **多服同类改动合并**:按**单项改动**(而非 commit/PR 整体)为粒度拆分,每项改动再跨服合并。同一 commit/PR 中若包含多项不同改动,应先按改动类型拆开,再将每项在实现了它的所有服务器上合并。服务器名用 `/` 连接(如 `YostarEN/JP/KR`),多位作者依次排列(如 `@author1 @author2 @author3`)。
- 示例:某 PR 为 JP 同时更新了主题、新增了章节导航,而 EN/KR 只更新了主题。应拆为两行:`YostarEN/JP/KR 更新主题`(三服共同)+ `YostarJP 新增章节导航`(仅 JP
### 2. 按用户价值分类
| 模块 | 适用场景 |
|------|----------|
| **新增 \| New** | 新功能、新支持、新入口、新兼容性 |
| **改进 \| Improved** | 能力增强、性能/稳定性/体验优化、识别优化、重构收益 |
| **修复 \| Fix** | 缺陷修正、兼容性/异常/回归修复 |
| **文档 \| Docs** | 纯文档变更 |
| **其他 \| Other** | 仅内部维护、CI、脚本等不适合省略时 |
| **MaaMacGui** | 子仓库独立区块,放在 `### 其他 \| Other` 之后内部复用相同分类结构PR 格式 `([#数字](https://github.com/MaaAssistantArknights/MaaMacGui/pull/数字))` |
### 3. 模块内排序与文案
- **中文在前,纯英文条目排最后**。
- 按重要性排序:功能/接口变更 > 兼容性/优化 > 次要修复/杂项。
- 列表前缀统一 `*`
- 中英文与数字间留空格(如"修复 3 个 bug""支持 3D 功能")。
- 术语统一大小写WPF、Json、Markdown、CSV、Info。
- 保留作者与 PR 引用,主仓库格式为 `([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author`;多条合并时引用合并括注。
### 4. 版本历史连续性
**版本类型定义**:不带 `-beta`/`-alpha` 后缀的均为正式版(包含首个正式版 `X.Y.0` 与 patch 正式版 `X.Y.1``X.Y.2` 等);带后缀的为测试版。
- **跨次版本号的正式版**(如 v6.12.x → v6.13.0):不保留上一个次版本号的任何历史折叠块。
- **同次版本号的 patch 正式版**(如 v6.13.1 相对 v6.13.0):当前版本只写相对上一版本的增量变化(放在 `<details open>` 展开块),不得复制更早版本已发布条目。更早版本保留为各自独立的 `<details>` 收起块,紧跟在当前版本展开块之后。
### 5. 测试版与 patch 版的折叠块规则
- 同次版本号内的测试版beta.1、beta.2…)与 patch 版之间**保留历史折叠块**。
- **发布正式版时**:将所有前置测试版条目按模块合并到正式版单一详细区块,去重后统一展示。测试版间被覆盖的条目只保留最终有效版本。正式版使用 `<details open>`,其后不再保留 beta 版本历史折叠块(除非有更早正式版)。
#### 正式版的详细内容来源:基于已有测试版 changelog 合并,而非全量重分析
**禁止**在发布正式版时从 git 历史全量重新分析提交、重新阅读 diff。正式版的详细内容应**直接合并已发布各测试版 changelog 的条目**,工作流如下:
1. 读取现有 CHANGELOG 中同次版本号的所有测试版区块beta.1、beta.2…直至最新测试版)。
2. 将这些区块的条目按模块(新增/改进/修复/其他…)汇总,跨测试版去重:
- 同一条目在多个测试版出现 → 只保留最终(最新)版本表述。
- 被后续测试版修正/覆盖的条目 → 保留修正后的最终结果。
3. **唯一需要新增分析的增量**:仅为「最后一个测试版 tag → HEAD」之间的提交。这部分通常是少量改动逐一检查后补充进正式版详细区块有用户可感知效果才补否则丢弃
4. 合并后统一排序、统一文案,不重复、不断裂。
**理由**:测试版发布时已完成对应提交范围的分析与改写,正式版只是对同一发布周期的汇总收尾,全量重分析会引入不一致、重复劳动,且容易把已被测试版 changelog 过滤/改写的噪音重新捞回。
### 6. Highlights 规则
- **中英双语,先中后英**。中文直接展示,英文放入 `<details><summary><b>English</b></summary>` 折叠块。
- Highlights 只总结最值得强调的变化,不要机械搬运所有条目。
- **复用规则(适用于 patch 版、测试版、以及由测试版晋升的正式版)**
- 判定标准:相对**直接前驱版本**patch 的父正式版、测试版的上一测试版、正式版晋升时的最后一个测试版)有无用户可感知的重大变化。
- 无重大变化 → **直接复用前驱版本 Highlights**,仅改版本号标题和日期,不改写内容。
- 有重大新变化 → 保留原有内容,新段落追加在末尾。
- 正式版的补丁版本不应修改 Highlights除非确实有用户可感知的重要变化。
- **由测试版晋升的正式版X.Y.0**:判定基准是最后一个测试版(如 beta.3。若最后一个测试版到正式版之间只有内部维护、CI、通知文案等无用户可感知的变化则 Highlights 一字不改地复用最后一个测试版的内容,只更新顶部版本号标题与日期。
### 7. 必须过滤的噪音
删除以下类型提交:
- bot 自动生成(`Auto Update Game Resources``Auto Templates Optimization` 等)
- `Release vX.Y.Z``Auto Update Changelogs``Auto Generate Changelog`
- `Update CHANGELOG``Bump version` 等 changelog 维护提交
-`[skip changelog]` 标记的提交
**不过滤**chore、perf 或看似内部优化的提交——只要有用户可感知效果(启动体验、性能、稳定性等),一律保留并放入合适模块。
### 8. git 历史编码处理Windows PowerShell
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; git -c core.quotepath=false -c i18n.logoutputencoding=utf-8 -c i18n.commitencoding=utf-8 log --encoding=utf-8 --format="%H %s" RANGE | ForEach-Object { [System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::Default.GetBytes($_)) }
```
如仍乱码,写入临时文件后用 read_file 读取:`| Out-File -Encoding utf8 -FilePath "$env:TEMP\commits.txt"`
### 9. 翻译判断规则(外服条目保留英文原文)
changelog 主体面向中文用户,但**并非所有条目都应译成中文**。判断依据是「该条目的目标读者是谁」:玩外服的用户能看懂英文/该服语言,而中文用户一般不接触外服内容,因此外服专有条目保留原文更准确、更不易误导。
**用中文描述(默认)**
- 国服CN、繁中服txwy相关改动。
- 跨服/全服通用的功能、架构、性能、稳定性改动。
- 行为描述、用户操作说明(如 `add support for X` → 「新增支持 X」
- 含糊/口语化/玩梗的英文 commit 标题,改写为专业可理解的中文表述。
**整条保留英文原文(不翻译)——外服专有条目**
- **适用范围**:仅针对 YostarEN / YostarJP / YostarKR 等外服的改动,且该改动不涉及国服。整条描述(含动词、行为)均保留英文,**不要**只保留专有名词而把描述译成中文。
- **原因**:① 外服条目的目标读者是玩该外服的用户,能看懂英文;② 外服的关卡、活动、章节、主题名(如 `lone trail``JieGarden`)在中文服可能不存在或译名不同,翻译会丢失原文标识、产生误导。
- **条目格式**:服务器代号前置,后接英文描述。跨多服同改时用 `/` 连接(如 `YostarEN/JP/KR ...`)。
-`YostarEN preload lone trail + fix JieGarden themes`
-`YostarEN/JP/KR update LoneTrail and JieGarden themes`
-`YostarEN/JP/KR 更新落叶逐火与界园主题`(把外服描述整条译成中文,且「落叶逐火」是中服译名)
-`YostarEN 预加载孤星轨道并修复界园主题`(把外服描述译成中文,丢失原文)
- ❌ 把 `Stage 10-2` 翻成「第十章第二节」
**混合判断**:同一 commit/PR 同时含国服与外服改动时,按 §1 拆为多条:国服部分用中文,外服部分保留英文,各自独立成行。
**代码/技术标识始终保留原文**(不分中外服):任务名(`Stage``Roguelike``Depot`、配置项、接口名、文件名、命令名以及技术术语与产品名WPF、Json、Markdown、CSV、onnx、ADB、minitouch 等,大小写见 §3
**判断要点**:翻译的目的是让「该条目的目标读者」看得懂。国服/通用条目译给中文用户看;外服专有条目保留英文给外服用户看——不要为了「消灭英文」而过度翻译。
## 完整文件结构
patch / 测试版结构(严格自上而下,不得打乱层次):
1. `## vX.Y.Z (YYYY-MM-DD)` — 顶部版本标题
2. `### Highlights` — 中文直接展示
3. 英文 Highlights 折叠块
4. `----` 分隔线
5. `以下是详细内容:`
6. `<details open><summary><b>vX.Y.Z (YYYY-MM-DD)</b></summary>` — 当前版本(展开)
7. `<details><summary><b>vX.Y.Z-1 (YYYY-MM-DD)</b></summary>` — 上一版本(收起)
8. 更早版本各自独立折叠块…
9. `<details><summary><b>vX.Y.0 (YYYY-MM-DD)</b></summary>` — 最早正式版(收起)
**要点**
- 折叠块内只保留详细内容,不重复 Highlights、不写 `## vX.Y.Z` 子标题。
- 历史区块不重复 Highlights 和"以下是详细内容:"引导语——这些只在顶部出现一次。
## 工作流程
### 通用步骤patch / 测试版)
1. 确定发布边界:目标版本、上一版本 tag、提交范围。
2. 读取现有 CHANGELOG 与范围内的 diff不只看 commit 标题)。
3. 过滤 bot、release、`[skip changelog]`、revert 等噪音。
4. 按净变更合并同类提交,必要时从 diff 改写标题。
5. 按用户价值分类到正确模块。
6. 模块内排序、术语统一、中英文整理。
7. 编写中英双语 Highlights。
8. 输出完整 Markdown顶部版本 + Highlights + 详细内容 + 历史折叠块)。
### 正式版(由测试版晋升)专属流程
**关键区别**:正式版**不做全量重分析**,而是「合并已有测试版 changelog + 补少量增量 + 处理 Highlights 复用」。步骤如下:
1. 读取现有 CHANGELOG 中同次版本号的所有测试版区块beta.1 … beta.N
2. 判定「最后一个测试版 tag → HEAD」是否有用户可感知的重大变化
- 若有 → 分析这小段增量提交并整理成条目;若足以影响 Highlights 则追加(一般不追加)。
- 若无(仅 CI、chore、内部维护等→ 增量条目为空。
3. **Highlights**:直接复用最后一个测试版的 Highlights仅改顶部版本号标题与日期不重写。
4. **详细内容**:将各测试版区块条目按模块汇总去重,补入第 2 步的增量条目,按 §3 排序。
5. 输出跨次版本号X.Y.0)不保留历史折叠块;同次版本号 patch 正式版保留历史折叠块。
## 模块标题格式
```
### 新增 | New
### 改进 | Improved
### 修复 | Fix
### 文档 | Docs
### 其他 | Other
### MaaMacGui
```
仅保留有内容的模块,空模块省略。列表项统一 `*`
## 输出模板
### 正式版
```markdown
## vX.Y.Z
### Highlights
#### 中文标题
中文正文。
<details>
<summary><b>English</b></summary>
#### English Title
English paragraph.
</details>
----
以下是详细内容:
<details open>
<summary><b>vX.Y.Z (YYYY-MM-DD)</b></summary>
### 新增 | New
* 条目 ([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author
### 改进 | Improved
* 条目 @author
### MaaMacGui
#### 新增 | New
* 子仓库条目 ([#85](https://github.com/MaaAssistantArknights/MaaMacGui/pull/85)) @author
</details>
```
- **跨次版本号正式版**X.Y.0,如 v6.13.0):按规则 §4 不保留任何历史折叠块。
- **同次版本号 patch 正式版**X.Y.Z, Z≥1如 v6.13.1 相对 v6.13.0):保留历史折叠块,与下方 patch / 测试版模板结构一致。
### patch / 测试版
```markdown
## vX.Y.Z
### Highlights
#### 中文标题
中文正文。
<details>
<summary><b>English</b></summary>
#### English Title
English paragraph.
</details>
----
以下是详细内容:
<details open>
<summary><b>vX.Y.Z (YYYY-MM-DD)</b></summary>
### 改进 | Improved
* 条目 ([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author
### 修复 | Fix
* 条目 @author
</details>
<details>
<summary><b>vX.Y.Z-1 (YYYY-MM-DD)</b></summary>
### 改进 | Improved
* 历史版本条目 @author
</details>
<details>
<summary><b>vX.Y.0 (YYYY-MM-DD)</b></summary>
### 新增 | New
* 正式版条目 @author
</details>
```
## 常见错误
- ❌ 旧版本条目整段复制到当前 patch 版本
- ❌ Revert 原样保留为单独条目
- ❌ bot/release/auto generate/update changelog 提交写入文档
- ❌ 同一功能拆成多条重复表述
- ❌ 保留玩梗/口语化/半成品标题
- ❌ 机械沿用 commit type 导致分类错误
- ❌ patch/测试版无重大变化却重写独立 Highlights
- ❌ 详细内容插入到 Highlights 与历史区块之间,破坏文件结构
- ❌ 历史区块重复 Highlights 或"以下是详细内容:"引导语
- ❌ 正式版按 beta 小版本分别折叠而非合并
- ❌ git 历史未指定编码导致中文乱码
- ❌ chore/perf 提交默认当噪音过滤(应判断是否有用户可感知效果)
- ❌ 跨次版本号时仍保留旧版本历史折叠块
- ❌ 正式版晋升时全量重新分析 git 提交,而非合并已有测试版 changelog
- ❌ 正式版晋升时重写 Highlights而非复用最后一个测试版的 Highlights无重大变化时
- ❌ 将外服专有条目YostarEN/JP/KR 等)的英文描述整条译成中文,应保留原文给外服用户阅读
## 最终检查
- [ ] 只保留最终有效净变更,非机械罗列 commit
- [ ] 已删除 bot、Release、Generate、Update CHANGELOG、Revert 等噪音?
- [ ] 未把旧版本已发布内容重复抄入当前版本?
- [ ] 所有条目用户可独立理解?
- [ ] 分类正确、排序合理、中文在前英文在后?
- [ ] 输出完整 Markdown非代码块
- [ ] patch/测试版无重大变化时复用了父版本 Highlights
- [ ] 详细内容紧跟"以下是详细内容:"之后?
- [ ] 历史区块无重复 Highlights 和引导语?
- [ ] 英文 Highlights 在 `<details>` 折叠块内?
- [ ] 每个版本各自独立 `<details>` 折叠块?
- [ ] 当前版本 `<details open>`,历史版本默认收起?
- [ ] 子仓库MaaMacGui作为独立子项放在 `### 其他 | Other` 之后?
- [ ] 正式版已合并所有测试版条目为单一区块?
- [ ] 正式版是合并已有测试版 changelog而非全量重分析提交
- [ ] 正式版 Highlights 无重大变化时复用了最后一个测试版的 Highlights
- [ ] git 历史查询已指定编码参数?
- [ ] 跨次版本号时已移除旧版本历史折叠块?
- [ ] 外服专有条目YostarEN/JP/KR 等)保留英文原文描述,未被整条翻译成中文?

View File

@@ -46,3 +46,13 @@
- MAA 在设计上仅针对单账号使用。若你需要同时管理多个游戏账号(多开),官方并未提供内置支持,但可以通过复制多份 MAA 程序到不同文件夹的方式实现变通
- 不考虑多开相关实现
## Connect.TouchMode: adb
- MAA 触控模式共三种:`minitouch`(默认)、`maatouch`(实验性)和 `adb input`(不推荐使用)。
- `maatouch``minitouch` 的 Java 实现,并额外支持按键输入,可避免 minitouch 走 adb 命令传输按钮带来的较高延迟。
- `adb input` 仅用于兼容部分系统版本过低、无法运行 `minitouch``maatouch` 的实体机设备。
- 能用前两种模式时,绝不推荐使用 `adb input`
- `adb input` 的滑动容易拖飞,为避免此问题,滑动速度会被设置得非常慢,且滑动距离与其他两种模式不同;在需要精确控制坐标的场景下无法使用。
- 若用户反馈触控相关异常且配置为 `adb`,应优先建议切换为 `minitouch``maatouch`,排除模式本身带来的延迟与兼容性问题。

View File

@@ -288,7 +288,7 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue`https://gi
- 如果主线已修复,再看修复 commit 是否已进入 tag / release已发版建议升级未发版建议等待 release。
- `gui.new.json``gui.json` 和实际日志不一致时,不要急着判“用户配置写错了”;先看 `gui.new.json.bak``gui.json.old`,尤其是用户复现后又改回开关的场景。
-`ConnectConfig=PC` 的 issue 里,`Win32Controller::click` 正常返回不代表点击真的生效;要看点击后的下一帧中,按钮状态、数量 OCR、场景识别有没有变化。
- `gui.log`已使用 48 小时内过期的理智药这类高层提示,不一定等价于底层逐药 OCR 结论;如果 `asst.log` 明确识别到 `9天``NotExpiring` 等相反证据,应优先相信 `asst.log`
- `gui.log`"已使用即将过期的理智药"这类高层提示,不一定等价于底层逐药 OCR 结论;如果 `asst.log` 明确识别到 `3天``NotExpiring` 等相反证据,应优先相信 `asst.log`注意过期天数阈值现为可配置参数 `medicine_expire_days`,不再是固定 48 小时。
## Correlating With Code

View File

@@ -0,0 +1,262 @@
---
name: code-review-report
description: >-
全项目代码审查流水线,输出结构化审查报告到 Markdown 文件。
按模块拆分 Review Unit派发 subagent 并行审查,汇总发现并分类,
生成完整的问题清单报告,不执行任何修复。
Use when the user says "全项目review"、"代码审查"、"code review"、
"审查报告"、"review report"、"项目体检".
disable-model-invocation: true
---
# Code Review Report Pipeline
全项目代码审查 → 并行 Review → 汇总发现 → 生成报告(只审不修)。
## 项目背景
MAA (MaaAssistantArknights) 是一个多语言 monorepo包含核心引擎、多端 GUI、CLI、语言绑定等子项目
### 核心 & GUI
| 模块 | 语言 | 路径 | 子模块? | 构建 |
|------|------|------|---------|------|
| MaaCore | C++20 | `src/MaaCore/` | 否 | CMake |
| MaaWpfGui | C# / WPF (.NET 10) | `src/MaaWpfGui/` | 否 | MSBuild |
| MaaMacGui | Swift / SwiftUI | `src/MaaMacGui/` | **是** | Xcode |
| MAAUnified | C# / Avalonia (.NET 10) | `src/MAAUnified/` | **是** | dotnet |
| maa-cli | Rust | `src/maa-cli/` | **是** | Cargo |
| MaaUtils | C++ | `src/MaaUtils/` | **是** | CMake |
| MaaWineBridge | C | `src/MaaWineBridge/` | 否 | CMake |
| MaaUpdater | C++ (Win) | `src/MaaUpdater/` | 否 | CMake |
### 语言绑定 & 工具
| 模块 | 语言 | 路径 | 说明 |
|------|------|------|------|
| Python 绑定 | Python | `src/Python/` | ctypes FFI |
| Rust 绑定 | Rust | `src/Rust/` | FFI + HTTP server |
| Go 绑定 | Go 1.23 | `src/Golang/` | Gin HTTP wrapper |
| Java 绑定 | Kotlin/Java | `src/Java/` | JNA + Ktor HTTP/WS |
| Dart 绑定 | Dart | `src/Dart/` | Flutter FFI plugin |
| Woolang 绑定 | Woolang | `src/Woolang/` | C API wrapper |
| C++ 示例 | C++ | `src/Cpp/` | 集成示例 |
| 工具脚本 | Python/C++/Shell | `tools/` | 开发维护工具 |
| 任务资源 | JSON | `resource/` | 任务定义/模板/OCR |
| 文档站 | Markdown/TS | `docs/` | VuePress |
| 公共头文件 | C | `include/` | AsstCaller.h 等 |
### 编码规范执行
| 配置文件 | 作用范围 |
|----------|----------|
| `.clang-format` | C++ (pre-commit 限定 `src/MaaCore/**`) |
| `.editorconfig` (多层) | 全局 + MaaCore/MaaWpfGui/maa-cli/MaaUtils 各有覆盖 |
| `rustfmt.toml` | Rust (maa-cli) |
| `.swift-format` | Swift (MaaMacGui) |
| `stylecop.json` | C# (MaaWpfGui) |
| `.prettierrc` | JSON/YAML |
| `analysis_options.yaml` | Dart |
| `.pre-commit-config.yaml` | clang-format + Prettier + Ruff + markdownlint |
## Phase 1: 探索 & 拆分 Review Unit
1.`explore` subagent 扫描项目,确认当前有哪些模块/子目录有实质改动或需要关注
2.**模块 × 关注维度** 拆分为 12-20 个 Review Unit每个 Unit
- 文件范围 ≤ 8 个核心文件C++ 可适当放宽,但避免单 Unit 超 2000 行总量)
- 有明确的 review 焦点
- 提供该模块的背景信息
3. 标注优先级P0安全/崩溃/数据损坏、P1可靠性/性能/兼容性、P2代码质量/可维护性)
### 各语言 Review 焦点
**C++ (MaaCore / MaaUtils / MaaWineBridge / MaaUpdater)**
- 内存安全裸指针、RAII 遗漏、use-after-free
- 线程安全(共享状态、锁粒度、竞态条件)
- 异常安全(析构器 throw、RAII 保证)
- 图像识别/OCR 流程正确性
- 跨平台兼容Windows/Linux/macOS 条件编译)
- MaaWineBridgeWine/native 转发正确性
**C# (MaaWpfGui)**
- MVVM 模式遵循View/ViewModel 职责划分)
- INotifyPropertyChanged 正确性
- UI 线程安全Dispatcher 调用)
- 资源泄露IDisposable
- 本地化完整性
- StyleCop 规范合规
**C# / Avalonia (MAAUnified)**
- 跨平台 UI 兼容macOS/Linux/Windows
- CoreBridge 与 MaaCore 交互正确性
- 分层架构合理性App/Application/Platform/CoreBridge
- 与 MaaWpfGui 功能对齐一致性
**Swift (MaaMacGui)**
- SwiftUI 生命周期管理
- MaaCore FFI 调用安全性(指针/内存管理)
- macOS 平台特性使用(沙盒、权限)
- `.swift-format` 规范合规
**Rust (maa-cli)**
- 所有权/生命周期正确性
- Error handling`?` 传播链完整性)
- unsafe 代码合理性与安全注释
- Cargo feature 配置正确性
- 参考 `src/maa-cli/AGENTS.md` 的检查项
**语言绑定 (Python/Rust/Go/Java/Dart/Woolang)**
- FFI 调用安全性(指针、回调、生命周期)
- 资源释放Handle/Destroy 配对)
-`include/AsstCaller.h` 公共 API 的一致性
- 错误传播与异常处理
**Python (tools/)**
- 类型注解一致性
- 异常处理(不吞异常)
- 文件路径跨平台处理
**JSON (resource/)**
- Schema 合规性
- 模板匹配参数合理性
- 多语言/多服务器资源一致性
## Phase 2: 并行 Review
按优先级批次启动 subagent
```
第一批P0 Unit3-5 个并行)
第二批P1 Unit5-7 个并行)
第三批P2 Unit剩余全部
```
每个 review subagent 的 prompt 模板:
```
你是 MAA 项目的代码审查员。审查以下文件,找出:
1. Bug逻辑错误、边界条件、竞态、崩溃风险
2. 安全问题(缓冲区溢出、注入、信息泄露、不安全的反序列化)
3. 性能问题不必要的拷贝、内存分配热点、O(n²) 算法)
4. 跨平台兼容性(平台特定代码未条件编译、路径分隔符硬编码)
5. 可维护性(巨型函数、重复代码、缺少错误处理)
项目语言:{language}
文件范围:{files}
背景:{background}
重点关注:{focus_areas}
输出格式:按严重性排序的问题列表(最多 Top 8。每个问题包含
- 严重性Critical / Major / Minor
- 位置:文件名 + 行号范围
- 问题:一句话描述
- 影响:会导致什么后果
- 建议:修复方向(一句话)
- 代码片段:相关代码(可选,简短引用即可)
```
## Phase 3: 汇总 & 生成报告
收集所有 Unit 的发现,按以下步骤生成报告:
1. **去重合并**:同一 bug 在多个 Unit 被发现时,保留最详细的描述
2. **分类归类**
| 分类 | 含义 | 图标 |
|------|------|------|
| 崩溃/安全 | 可导致崩溃或被利用 | 🔴 |
| 可靠性 | 影响功能正确性 | 🟠 |
| 性能 | 影响运行效率 | 🟡 |
| 兼容性 | 跨平台/版本兼容问题 | 🔵 |
| 代码质量 | 可维护性与规范 | ⚪ |
1. **按模块和严重性排序**
2. **生成统计摘要**
### 报告模板
将报告输出到项目根目录的 `code-review-report.md`,使用以下模板:
```markdown
# MAA 代码审查报告
> 审查时间:{date}
> 审查范围:{modules_reviewed}
> Review Unit 数量:{unit_count}
## 摘要
| 严重性 | 数量 |
|--------|------|
| 🔴 Critical | {n} |
| 🟠 Major | {n} |
| 🟡 Minor | {n} |
| 总计 | {total} |
| 模块 | Critical | Major | Minor |
|------|----------|-------|-------|
| MaaCore (C++) | {n} | {n} | {n} |
| MaaWpfGui (C#) | {n} | {n} | {n} |
| MaaMacGui (Swift) | {n} | {n} | {n} |
| MAAUnified (C#/Avalonia) | {n} | {n} | {n} |
| maa-cli (Rust) | {n} | {n} | {n} |
| MaaUtils (C++) | {n} | {n} | {n} |
| MaaWineBridge (C) | {n} | {n} | {n} |
| 语言绑定 | {n} | {n} | {n} |
| tools (Python) | {n} | {n} | {n} |
| resource (JSON) | {n} | {n} | {n} |
## 🔴 Critical 问题
### [{序号}] {问题标题}
- **模块**{module}
- **文件**`{file}:{line_range}`
- **分类**{category}
- **描述**{description}
- **影响**{impact}
- **建议修复方向**{suggestion}
{code_snippet可选}
---
## 🟠 Major 问题
### [{序号}] {问题标题}
...
## 🟡 Minor 问题
### [{序号}] {问题标题}
...
## 审查覆盖范围
| Review Unit | 模块 | 焦点 | 优先级 | 文件数 |
|-------------|------|------|--------|--------|
| {unit_name} | {module} | {focus} | {priority} | {file_count} |
| ... | ... | ... | ... | ... |
## 附注
- 本报告仅列出发现,未执行任何修复
- 建议按 Critical → Major → Minor 顺序处理
- 部分问题可能需要跨模块协同修复
```
## 执行要点
- **只审不修**:本 skill 不修改任何代码,所有发现仅记录到报告
- **报告路径**:默认输出到 `code-review-report.md`,用户可指定其他路径
- **增量 vs 全量**:如用户指定范围(如"只看 MaaCore"),相应缩减 Unit 拆分
- **subagent 并行上限**:每批不超过 7 个,避免上下文竞争
- **代码片段引用**:报告中引用代码时使用 ` ```startLine:endLine:filepath ` 格式

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
persist-credentials: false # Needed to bypass protection rules in Push changes
@@ -41,7 +41,7 @@ jobs:
- name: Push changes
if: ${{ steps.check_changes.outcome == 'failure' }}
uses: ad-m/github-push-action@master
uses: ad-m/github-push-action@881a6320fdb16eb5318c5054f31c218aec2b324c # v1.3.0
with:
branch: ${{ github.ref }}
github_token: ${{ secrets.MAA_RESOURCE_SYNC }}

View File

@@ -4,28 +4,34 @@ on:
workflow_dispatch:
pull_request:
paths:
- ".github/workflows/ci-avalonia.yml"
- "3rdparty/include/**"
- "cmake/**"
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
- "!**/*.md"
push:
branches:
- dev
- dev-v2
paths:
- ".github/workflows/ci-avalonia.yml"
- "3rdparty/include/**"
- "cmake/**"
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
- "!**/*.md"
jobs:
meta:
@@ -33,13 +39,17 @@ jobs:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.out.outputs.tag }}
checkout_sha: ${{ steps.out.outputs.checkout_sha }}
steps:
- id: out
env:
CHECKOUT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
echo "checkout_sha=${CHECKOUT_SHA}" >> "$GITHUB_OUTPUT"
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
else
echo "tag=preview-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
echo "tag=preview-${CHECKOUT_SHA::7}" >> "$GITHUB_OUTPUT"
fi
build:
@@ -51,7 +61,7 @@ jobs:
matrix:
include:
- name: windows-x64
os: windows-latest
os: windows-2025-vs2026
rid: win-x64
self_contained: true
cmake_preset: windows-publish-x64
@@ -70,7 +80,9 @@ jobs:
maadeps_triplet: x64-osx
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
ref: ${{ needs.meta.outputs.checkout_sha }}
- name: Fetch required submodules
shell: bash

View File

@@ -42,11 +42,13 @@ jobs:
prerelease: ${{ steps.set_pre.outputs.prerelease }}
steps:
- name: Show concurrency group
env:
CONCURRENCY_GROUP: ${{ github.workflow }}-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}${{ github.ref == 'refs/heads/dev-v2' && format('-{0}', github.sha) || '' }}
run: |
echo "Concurrency Group: ${{ github.workflow }}-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}${{ github.ref == 'refs/heads/dev-v2' && format('-{0}', github.sha) || '' }}"
echo "Concurrency Group: $CONCURRENCY_GROUP"
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false
@@ -101,11 +103,11 @@ jobs:
matrix:
arch: [arm64, x64]
fail-fast: false
runs-on: windows-latest
runs-on: windows-2025-vs2026
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -115,7 +117,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -162,7 +164,7 @@ jobs:
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -243,7 +245,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -253,7 +255,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -363,7 +365,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -373,7 +375,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -435,7 +437,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -450,7 +452,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -493,7 +495,7 @@ jobs:
runs-on: macos-26
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -669,7 +671,7 @@ jobs:
find . -type f | while read f; do mv -fvt . $f; done
- name: Publish release to GitHub
uses: softprops/action-gh-release@v3.0.0
uses: softprops/action-gh-release@v3.0.1
with:
body_path: CHANGELOG.md
files: |
@@ -692,11 +694,6 @@ jobs:
env:
GH_TOKEN: ${{ secrets.MISTEOWORKFLOW }}
- name: Create issue on failure
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Errors occured during release ${{ needs.meta.outputs.tag }}"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -42,27 +42,31 @@ jobs:
URL="${{ steps.release.outputs.url }}"
BASE_URL="https://github.com/${{ github.repository }}/releases/download/${TAG}"
WIN_URL="${BASE_URL}/MAA-${TAG}-win-x64.zip"
WIN64_URL="${BASE_URL}/MAA-${TAG}-win-x64.zip"
WINARM_URL="${BASE_URL}/MAA-${TAG}-win-arm64.zip"
MAC_URL="${BASE_URL}/MAA-${TAG}-macos-universal.dmg"
LIN_URL="${BASE_URL}/MAA-${TAG}-linux-amd64.tar.gz"
LIN64_URL="${BASE_URL}/MAA-${TAG}-linux-x86_64.tar.gz"
LINARM_URL="${BASE_URL}/MAA-${TAG}-linux-aarch64.tar.gz"
DESCRIPTION=$(printf 'Read the full release note [here](%s).\n\nOpen or reopen your MAA client to get automatic updates.\nOr, download `MAA %s` for your platform by clicking the buttons below.' "$URL" "$TAG")
DESCRIPTION=$(printf 'Read the full release note [here](%s).\n\nReopen your MAA client to get automatic updates.\nDownload MAA `%s` for your platform below.' "$URL" "$TAG")
PAYLOAD=$(jq -n \
--arg tag "$TAG" \
--arg description "$DESCRIPTION" \
--arg win_url "$WIN_URL" \
--arg win64_url "$WIN64_URL" \
--arg winarm_url "$WINARM_URL" \
--arg mac_url "$MAC_URL" \
--arg lin_url "$LIN_URL" \
--arg lin64_url "$LIN64_URL" \
--arg linarm_url "$LINARM_URL" \
'{
embeds: [{
title: ("🎉 New MAA Release: " + $tag),
description: $description,
color: 10246582,
fields: [
{ name: "Windows (x64)", value: ("[↗ Download](" + $win_url + ")"), inline: true },
{ name: "macOS (Universal, dmg)", value: ("[↗ Download](" + $mac_url + ")"), inline: true },
{ name: "Linux (amd64, tar.gz)", value: ("[↗ Download](" + $lin_url + ")"), inline: true }
{ name: "Windows", value: ("[x64](" + $win64_url + ") ❘ [ARM](" + $winarm_url + ")"), inline: true },
{ name: "macOS", value: ("[Universal](" + $mac_url + ")"), inline: true },
{ name: "Linux", value: ("[x64](" + $lin64_url + ") ❘ [ARM](" + $linarm_url + ")"), inline: true }
]
}]
}')

View File

@@ -13,7 +13,7 @@ on:
type: number
jobs:
copilot-analysis:
ai-analysis:
if: |
(github.event_name == 'issues' && github.event.action == 'opened') ||
github.event_name == 'workflow_dispatch' ||
@@ -22,44 +22,41 @@ jobs:
contains(github.event.comment.body, '@MaaArknightsBot') &&
github.event.comment.user.type != 'Bot')
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
issues: write
steps:
# 这个 action 只负责编排,分析质量仍依赖配套的 issue/log analysis skill。
# 分析质量仍依赖配套的 issue/log analysis skill。
# 详细使用文档https://github.com/MistEO/ai-issue-analysis
# 最佳实践参考:
# - https://github.com/MaaEnd/MaaEnd/blob/v2/.claude/skills/maaend-issue-log-analysis/SKILL.md
# - https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.claude/skills/maa-issue-log-analysis/SKILL.md
- name: Analyze issue with AI
id: analysis
uses: Misteo/ai-issue-analysis@main
continue-on-error: true
uses: MistEO/ai-issue-analysis@main
with:
agent: ${{ secrets.BOT_AI_AGENT }}
api-key: ${{ secrets.BOT_AI_API_KEY }}
api-base-url: ${{ secrets.BOT_AI_API_BASE_URL }}
model: ${{ secrets.BOT_AI_MODEL }}
github-token: ${{ secrets.MAA_BOT_TOKEN }}
copilot-github-token: ${{ secrets.COPILOT_GITHUB_TOKEN }}
bot-name: '@MaaArknightsBot'
initial-comment-body: |
🤖 **MaaBot 正在分析该 Issue...**
感谢您的反馈AI 正在自动分析该问题,预计耗时约 10 分钟。
prompt-template: |
分析 GitHub Issue {{issue_number}}。把最终结论写到 {{copilot_answer_file}}。
严格按照 .claude/skills/maa-issue-log-analysis/SKILL.md 中的规则,分析 GitHub Issue {{issue_number}}。把最终结论写到 {{answer_file}}。
extra-comment-content: |
<!-- Skip all labels -->
- name: 查看完整输入输出
if: always()
env:
ANALYSIS_PROMPT: ${{ steps.analysis.outputs.analysis-prompt }}
ISSUE_NUMBER: ${{ steps.analysis.outputs.issue-number }}
COMMENT_ID: ${{ steps.analysis.outputs.comment-id }}
COMMENT_URL: ${{ steps.analysis.outputs.comment-url }}
COPILOT_OUTPUT: ${{ steps.analysis.outputs.copilot-output }}
FINAL_CONCLUSION: ${{ steps.analysis.outputs.final-conclusion }}
run: |
printf '%s\n' "$ANALYSIS_PROMPT"
echo "issue_number=$ISSUE_NUMBER"
echo "comment_id=$COMMENT_ID"
echo "comment_url=$COMMENT_URL"
printf '%s\n' "$COPILOT_OUTPUT"
printf '%s\n' "$FINAL_CONCLUSION"
echo "(Full agent-output and final-conclusion are available in the uploaded artifacts)"

View File

@@ -31,12 +31,12 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
- name: Cache lychee responses
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: .lycheecache

View File

@@ -44,7 +44,7 @@ jobs:
- name: Checkout repository
if: steps.check_push.outputs.is_pr != 'True'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
persist-credentials: false
@@ -104,7 +104,7 @@ jobs:
- name: Push changes
if: steps.check_push.outputs.is_pr != 'True' && steps.commit_changes.outputs.have_commits == 'True' && github.repository_owner == 'MaaAssistantArknights'
uses: ad-m/github-push-action@master
uses: ad-m/github-push-action@881a6320fdb16eb5318c5054f31c218aec2b324c # v1.3.0
with:
github_token: ${{ secrets.MAA_RESOURCE_SYNC }}
branch: ${{ github.ref }}

View File

@@ -21,7 +21,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}
@@ -33,21 +33,29 @@ jobs:
- name: Determine tag name
id: extract_tag
env:
EVENT_NAME: ${{ github.event_name }}
PR_TITLE: ${{ github.event.pull_request.title }}
INPUT_TAG: ${{ inputs.tag }}
run: |
if ${{ github.event_name != 'workflow_dispatch' }}; then
tag_name=$(echo "${{ github.event.pull_request.title }}" | sed -E 's/(Release|release)//' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
if [ "$EVENT_NAME" != "workflow_dispatch" ]; then
tag_name=$(printf '%s' "$PR_TITLE" | sed -E 's/(Release|release)//' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
echo "tag_name=$tag_name" >> $GITHUB_OUTPUT
else
echo "tag_name=${{ inputs.tag }}" >> $GITHUB_OUTPUT
echo "tag_name=$INPUT_TAG" >> $GITHUB_OUTPUT
fi
- name: Create and push release tag
env:
TAG_NAME: ${{ steps.extract_tag.outputs.tag_name }}
run: |
git tag -a "${{ steps.extract_tag.outputs.tag_name }}" -m "${{ steps.extract_tag.outputs.tag_name }}" -f
git push origin "${{ steps.extract_tag.outputs.tag_name }}"
git tag -a "$TAG_NAME" -m "$TAG_NAME" -f
git push origin "$TAG_NAME"
- name: Merge tag into dev-v2 and push
env:
TAG_NAME: ${{ steps.extract_tag.outputs.tag_name }}
run: |
git switch dev-v2
git merge "${{ steps.extract_tag.outputs.tag_name }}"
git merge "$TAG_NAME"
git push origin dev-v2

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false
@@ -25,7 +25,7 @@ jobs:
- name: Commit and push changes
if: steps.pre-commit.outcome == 'failure' && github.repository_owner == 'MaaAssistantArknights'
uses: actions-js/push@master
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 # master as of 2026-05-06
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "chore: Auto update by pre-commit hooks

View File

@@ -28,7 +28,7 @@ jobs:
build-win-nightly:
name: Build Nightly for Windows
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: windows-latest
runs-on: windows-2025-vs2026
strategy:
matrix:
arch: [x64]
@@ -40,7 +40,7 @@ jobs:
changelog: ${{ steps.read_changelog.outputs.content }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
# repository: 'MaaAssistantArknights/MaaAssistantArknights'
#ref: ${{ inputs.ref }}
@@ -170,7 +170,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -218,7 +218,7 @@ jobs:
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -298,7 +298,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
fetch-depth: 0
@@ -329,7 +329,7 @@ jobs:
echo ${{ needs.build-win-nightly.outputs.tag }}
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
path: MaaAssistantArknights
token: ${{ secrets.MAARELEASE_RELEASE }}

View File

@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -102,7 +102,7 @@ jobs:
path: ./MaaReleaseConfig
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -111,7 +111,7 @@ jobs:
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
path: MaaAssistantArknights
@@ -139,15 +139,6 @@ jobs:
prerelease: ${{ fromJSON(needs.create-tag.outputs.prerelease) }}
overwrite: true
- name: Create issue on failure
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Failed to make OTA release for Windows"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
make-ota-mac:
name: Build and Upload OTA for macOS
needs: create-tag
@@ -192,15 +183,6 @@ jobs:
prerelease: ${{ fromJSON(needs.create-tag.outputs.prerelease) }}
overwrite: true
- name: Create issue on failure
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Failed to make OTA release for macOS"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
release:
name: Publish to Release Mirrors
needs:

View File

@@ -113,18 +113,53 @@ jobs:
env:
RELEASE_TAG: ${{ needs.meta.outputs.RELEASE_TAG }}
WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.MAABOT_WINGET_TOKEN }}
WINGET_CREATE_VERSION: 'v1.12.8.0'
WINGET_CREATE_SHA256: '8BD738851B524885410112678E3771B341C5C716DE60FBBECB88AB0A363ED85D'
steps:
- name: Upload MAA to WinGet
uses: vedantmgoyal9/winget-releaser@main
with:
identifier: MaaAssistantArknights.MaaAssistantArknights
version: ""
installers-regex: "-win-"
max-versions-to-keep: 0
release-tag: ${{ env.RELEASE_TAG }}
fork-user: MaaAssistantArknights
token: ${{ secrets.MAABOT_WINGET_TOKEN }}
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$RELEASE_TAG = "${{ env.RELEASE_TAG }}"
# Fetch the release assets from GitHub Releases API and resolve actual download URLs
$headers = @{
Accept = "application/vnd.github+json"
"X-GitHub-Api-Version" = "2026-03-10"
}
if ($env:WINGET_CREATE_GITHUB_TOKEN) {
$headers.Authorization = "Bearer $env:WINGET_CREATE_GITHUB_TOKEN"
}
$release = Invoke-RestMethod `
-Uri "https://api.github.com/repos/MaaAssistantArknights/MaaAssistantArknights/releases/tags/$RELEASE_TAG" `
-Headers $headers
$URL_x64 = $release.assets | Where-Object { $_.name -match "-win-x64.zip$" } | Select-Object -First 1 -ExpandProperty browser_download_url
$URL_arm64 = $release.assets | Where-Object { $_.name -match "-win-arm64.zip$" } | Select-Object -First 1 -ExpandProperty browser_download_url
if (-not $URL_x64 -or -not $URL_arm64) {
Write-Error "Failed to resolve release assets from GitHub API for tag '$RELEASE_TAG'."
exit 1
}
# Download winget-create
curl.exe -JLO "https://github.com/microsoft/winget-create/releases/download/$env:WINGET_CREATE_VERSION/wingetcreate.exe"
# Verify the hash of wingetcreate.exe
if ((Get-FileHash wingetcreate.exe).Hash -ne $env:WINGET_CREATE_SHA256) {
Write-Error "wingetcreate.exe hash does not match expected value. Aborting."
exit 1
}
# Update the package using wingetcreate
.\wingetcreate.exe update MaaAssistantArknights.MaaAssistantArknights `
--version $RELEASE_TAG.TrimStart('v') `
--urls "$URL_x64|x64" "$URL_arm64|arm64" `
--submit
maa_cos:
name: Upload to MAA COS

View File

@@ -7,93 +7,127 @@ on:
- reopened
- ready_for_review
workflow_dispatch:
inputs:
pr_number:
description: 'Release PR number for changelog generation'
required: false
type: number
jobs:
generate-changelog:
name: Generate Changelog
# startsWith 表达式不区分大小写
if: github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
if: |
(github.event_name == 'workflow_dispatch' && github.event.inputs.pr_number != '') ||
(github.event.pull_request.head.repo.full_name == github.repository &&
github.event.pull_request.draft == false &&
startsWith(github.event.pull_request.title, 'Release v'))
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Checkout dev-v2 with full history
uses: actions/checkout@v4
with:
ref: dev-v2
fetch-depth: 0
show-progress: false
- name: Extract release information
id: extract_tag
- name: Extract version from Release PR
id: version
env:
PR_BODY: ${{ format('{0}/{1}', runner.temp, 'output' ) }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number || github.event.inputs.pr_number }}
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
tag_name=$(echo "${{ github.event.pull_request.title }}" | sed -E 's/(Release|release)//' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
echo "tag_name=$tag_name" >> $GITHUB_OUTPUT
title="${PR_TITLE:-$(gh pr view "$PR_NUMBER" --json title -q .title)}"
version=$(echo "$title" | sed -E 's/[Rr]elease\s*//')
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "Release version: $version"
pr_title="docs: Auto Update Changelogs of "$tag_name
echo "pr_title=$pr_title" >> $GITHUB_OUTPUT
- name: Generate changelog with AI
id: analysis
continue-on-error: true
uses: MistEO/ai-issue-analysis@main
with:
agent: ${{ secrets.BOT_AI_AGENT }}
api-key: ${{ secrets.BOT_AI_API_KEY }}
api-base-url: ${{ secrets.BOT_AI_API_BASE_URL }}
model: ${{ secrets.BOT_AI_MODEL }}
github-token: ${{ secrets.MAA_BOT_TOKEN }}
issue-number: ${{ github.event.pull_request.number || github.event.inputs.pr_number }}
checkout-repository: false
initial-comment-body: |
🤖 **AI 正在生成 Changelog...**
latest_stable_tag=$(git tag -l 'v*' | grep -v '-' | sort -V | tail -n 1) # 上一个 stable 版本
newest_tag=$(git describe --tags --match "v*" --abbrev=0) # 最新版本
echo "latest_stable_tag=$latest_stable_tag" >> $GITHUB_OUTPUT
echo "newest_tag=$newest_tag" >> $GITHUB_OUTPUT
正在根据提交记录自动生成 Changelog预计耗时约 10 分钟。
prompt-template: |
你是 MAA 项目的 Changelog 生成专员。
if [[ $tag_name == *-* ]]; then # 判断新版本是否为 beta 版本
latest=$newest_tag # 若是,则将 latest 参数设置为最新版本
else
latest=$latest_stable_tag # 若否,则设置为上一个 stable 版本
当前 Release PR 编号为 #{{issue_number}}(仓库 {{repository}}),请从该 PR 标题中提取目标版本号。
严格按照 .claude/skills/changelog/SKILL.md 中的规则,分析 git 提交记录tag 间的 commit 及其 diff和现有 CHANGELOG.md
生成完整的新版本 Changelog Markdown 并写到 {{answer_file}}。
{{answer_file}} 的内容应当是可以直接替换 CHANGELOG.md 整个文件的完整内容(包含新版本和所有历史版本)。
details-summary: 点击此处展开生成过程
- name: Write CHANGELOG.md from AI output
if: steps.analysis.outcome == 'success'
run: |
if [ ! -f answer.md ] || [ ! -s answer.md ]; then
echo "::error::answer.md not found or empty, cannot update CHANGELOG.md"
exit 1
fi
echo "latest=$latest" >> $GITHUB_OUTPUT
cp answer.md CHANGELOG.md
echo "CHANGELOG.md updated from AI output ($(wc -l < CHANGELOG.md) lines)"
cat $GITHUB_OUTPUT
echo '======='
echo 'Target PR: ${{ github.event.pull_request.html_url }}' >> $PR_BODY
echo '' >> $PR_BODY
echo '<details><summary>Debug information</summary>' >> $PR_BODY
echo '' >> $PR_BODY
echo '```' >> $PR_BODY
sed 's/=/: /1' $GITHUB_OUTPUT >> $PR_BODY
echo '```' >> $PR_BODY
echo '' >> $PR_BODY
echo '</details>' >> $PR_BODY
cat $PR_BODY
- name: Generate changelog
run: |
git switch dev-v2
python3 tools/ChangelogGenerator/changelog_generator.py --tag "${{ steps.extract_tag.outputs.tag_name }}" --latest "${{ steps.extract_tag.outputs.latest }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit changes
run: |
git status
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
git add .
commit_msg="docs: Auto Generate Changelog of Release ""${{ steps.extract_tag.outputs.tag_name }}"
git commit -m "$commit_msg"
if git diff --quiet CHANGELOG.md 2>/dev/null; then
echo "::warning::AI output is identical to existing CHANGELOG.md, no PR will be created"
else
echo "Changes detected:"
git diff --stat CHANGELOG.md
fi
- name: Create changelog PR
if: steps.analysis.outcome == 'success'
uses: peter-evans/create-pull-request@v8
with:
sign-commits: true
token: ${{ secrets.GITHUB_TOKEN }}
title: ${{ steps.extract_tag.outputs.pr_title }}
body-path: ${{ format('{0}/{1}', runner.temp, 'output' ) }}
base: "dev-v2"
branch: "changelog"
commit-message: "docs: Auto Generate Changelog of Release ${{ steps.version.outputs.version }}"
sign-commits: true
title: "docs: Auto Update Changelogs of ${{ steps.version.outputs.version }}"
body: |
Auto-generated changelog for **${{ steps.version.outputs.version }}**.
Target Release PR: #${{ github.event.pull_request.number || github.event.inputs.pr_number }}
base: dev-v2
branch: changelog
delete-branch: true
add-paths: CHANGELOG.md
reviewers: |
AnnAngela
assignees: |
AnnAngela
- name: Show outputs
if: always()
env:
COMMENT_URL: ${{ steps.analysis.outputs.comment-url }}
run: |
echo "comment_url=$COMMENT_URL"
echo "(Full agent-output and final-conclusion are available in the uploaded artifacts)"
assign-release-reviewers:
name: Assign Reviewers to Release PR
if: github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Assign reviewers to release PR
uses: kentaro-m/auto-assign-action@v2.0.2
with:
@@ -101,7 +135,7 @@ jobs:
update-submodules:
name: Update Submodules
if: github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
if: github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
runs-on: ubuntu-latest
steps:
- name: Trigger submodule update workflow

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource for Official
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: yuanyan3060/ArknightsGameResource
@@ -49,7 +49,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource_Yostar for Overseas
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ArknightsAssets/ArknightsGamedata
@@ -92,7 +92,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone arknights-toolbox-update for Taiwan
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: arkntools/arknights-data-tw-for-maa
@@ -145,7 +145,7 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
# TL;DR https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9872#issuecomment-2251378371
# actions/checkout uses ${{ secrets.GITHUB_TOKEN }} by default, meaning all steps will inherit it
@@ -155,7 +155,7 @@ jobs:
- name: Restore ResourceUpdater from cache
id: resupd-cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v6
continue-on-error: true
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
@@ -171,7 +171,7 @@ jobs:
- name: Cache MaaDeps
if: steps.resupd-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -195,7 +195,7 @@ jobs:
- name: Save ResourceUpdater to cache
if: always() && steps.resupd-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
uses: actions/cache/save@v6
continue-on-error: true
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
@@ -306,7 +306,7 @@ jobs:
- name: Push changes
if: steps.add_files.outputs.have_commits == 'True'
uses: ad-m/github-push-action@master
uses: ad-m/github-push-action@881a6320fdb16eb5318c5054f31c218aec2b324c # v1.3.0
with:
branch: ${{ github.ref }}
github_token: ${{ secrets.MAA_RESOURCE_SYNC }}

View File

@@ -43,7 +43,7 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -56,7 +56,7 @@ jobs:
- name: Restore cache for Smoke Test
if: ${{ steps.cache_key.outputs.key != '' }}
id: smoke-cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v6
continue-on-error: true
with:
key: ${{ steps.cache_key.outputs.key }}
@@ -76,7 +76,7 @@ jobs:
- name: Cache MaaDeps
if: steps.smoke-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -107,7 +107,7 @@ jobs:
- name: Save cache for Smoke Test (only in dev-v2)
if: steps.smoke-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/dev-v2'
uses: actions/cache/save@v5
uses: actions/cache/save@v6
continue-on-error: true
with:
key: ${{ steps.cache_key.outputs.key }}

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -28,7 +28,7 @@ jobs:
git show -s
- name: Checkout MaaResource
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
repository: MaaAssistantArknights/MaaResource
show-progress: false

View File

@@ -28,7 +28,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false
@@ -105,7 +105,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false

View File

@@ -12,7 +12,7 @@ jobs:
if: github.repository_owner == 'MaaAssistantArknights'
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
submodules: true
@@ -21,7 +21,7 @@ jobs:
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
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 # master as of 2026-05-06
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "feat: Update Submodules MAAUnified, MaaMacGui, maa-cli

View File

@@ -35,7 +35,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false

View File

@@ -1,121 +1,87 @@
## v6.10.0
## v6.13.0
### Highlights
生息演算第二期来了!我们适配了重启锚点模式,同时优化了更新流程,让挂机更省心、版本升级更顺畅。
#### 6 星自动公招支持
#### 生息演算:重启锚点
新增可通过手动修改配置文件开启的 6 星自动公招功能,「是否招募」和「招募时间」选项移入常规设置,并优化了相关提示信息。
第二期上线,我们适配了重启锚点模式,支持 RA-1、RA-15 关卡,并提供了无需手动过关即可挂机刷代币与科技点的策略。其中 RA-15 策略尚未经充分完善,运行过程中可能遇到问题,将在后续版本逐步优化。
#### 通知不可用时自动回退
#### Mirror酱 增量包智能等待
系统通知无法显示时自动回退到软件内通知,避免用户错过重要提醒;启动时的通知检测提示也改为软件内弹窗,不再仅写入日志。
优化了 Mirror酱 更新流程现在新版本发布后若增量包尚未生成MAA 会自动等待其就绪后重试,省去手动下载完整包的麻烦。
#### 切换语言无需重启
#### 干员识别仓库识别升级
切换软件界面语言不再需要重启,干员识别仓库识别等界面同步支持动态切换。
干员识别和仓库识别新增 Json/Markdown/CSV 导出格式,界面布局统一优化,同时引入虚拟化大幅提高首次加载速度。
<details>
<summary><b>English</b></summary>
#### 小游戏界面重构
#### 6-Star Auto Recruitment Support
小游戏界面全面重构,新增分类支持与日志显示,优化选择逻辑,体验更加直观。
~~以及更名成了评论区中点赞数最多的名称~~
Added a 6-star auto recruitment feature that can be enabled through manual configuration file editing. The "Recruit" and "Recruitment Time" options have been moved to general settings, with improved tooltip hints.
----
#### Notification Fallback
The second season of Reclamation Algorithm is here! We've adapted the Relaunch Anchor mode while also improving the update flow for a smoother experience.
Automatically falls back to in-app notifications when system notifications are unavailable, ensuring users never miss important alerts. The startup notification availability check now shows an in-app Growl message instead of only logging to file.
#### Reclamation Algorithm: Relaunch Anchor
#### Switch Language Without Restart
The second season is live. We've adapted support for the Relaunch Anchor mode covering RA-1 and RA-15 stages, along with strategies that let you farm tokens and tech points without manual stage clears. The RA-15 strategy is still a work in progress and may encounter issues during execution; it will be progressively refined in future releases.
Switching the UI language no longer requires a restart; operator recognition, depot recognition, and other views now support dynamic switching.
#### MirrorChyan OTA Smart Retry
The MirrorChyan update flow has been improved. If the OTA package isn't ready right after a new release, MAA will wait and retry automatically — no need to manually grab the full package.
#### Operator & Depot Recognition Upgrade
Operator and depot recognition now support Json/Markdown/CSV export with a unified layout. Virtualization has been introduced to significantly improve initial load times.
#### Minigame UI Overhaul
The minigame interface has been renamed to Useful Tasks, now featuring category support, improved selection logic, and log display for a more intuitive experience.
</details>
----
以下是详细内容:
## v6.10.0
<details open>
<summary><b>v6.13.0 (2026-06-28)</b></summary>
### 新增 | New
* 初步支持生息演算:重启锚点 RA1/RA-15 关卡,支持新手刷代币与科技点 @ABA2396 @walkerljy @Daydreamer114 @SherkeyXD @hguandl
* 支持通过 Mirror酱 下载时若新版本无增量包则等待后重试 (#16656) @ABA2396
* 17 章导航 @ABA2396
* 便捷功能提示文本自适应大小 @ABA2396
* 仓库识别支持导出 Markdown/CSV优化导出按钮布局与交互 (#16543) @H2O-MERO @ABA2396
* 生息演算支持不同分辨率 @ABA2396
* 点击成就横幅跳转至成就设置,自动打开成就列表并筛选对应成就 (#16537) @H2O-MERO @ABA2396
* 任务日志输出停滞时发送通知,替换任务超时通知 (#16511) @H2O-MERO
* 为自动公招的输出日志增加已公招次数 (#16651) @H2O-MERO @ABA2396
* 干员识别支持导出 Json/Markdown/CSV优化导出按钮布局与交互 (#16635) @H2O-MERO
* support native android (#16179) @Aliothmoon
* Android OCR 推理引擎切换为 NCNN ([#17133](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17133)) @Aliothmoon
* 切换界面语言不再需要重启,干员识别、仓库识别等界面同步支持动态切换,并可单独设置干员名称显示语言 ([#17183](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17183)) @ABA2396
* 新增可通过手动修改配置文件开启 6 星自动公招,将「是否招募」和「招募时间」选项移入常规设置,优化 ToolTip 提示 ([#17154](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17154)) @ABA2396
* Custom Webhook 新增预置模板功能 ([#17081](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17081)) @pboymt
* 新增常驻关卡备选提示,当选中的关卡为常驻关卡或当前/上次时提示其后关卡不会被选中执行 @ABA2396
* 增加 DWM 被禁用与重复拖动异常的解决方案提示 @ABA2396
* 添加落叶逐火复刻关卡入口任务 @SherkeyXD
* Yostar 服新增 SSS#10 极寒自动战斗作业 ([#17137](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17137)) @Manicsteiner
### 改进 | Improved
* 优化生息演算木材数量与部署费用识别,支持开局自带木材快速完成任务,提升运行速度与稳定度 @ABA2396 @AnnAngela
* 生息演算策略逻辑重构 (#16680) @ABA2396
* 统一 LocalizationHelper GetStringFormat (#16658) @ABA2396
* 更新基建排班表243 高配三队简化、333 极限 3 队20260518 修订)(#16678) (#16679) @ntgmc
* 干员识别与仓库识别支持虚拟化,大幅提高首次加载速度 (#16486) @ABA2396
* 优化 masked TM_CCOEFF_NORMED 匹配性能 (#16593) @Aliothmoon
* 小游戏界面重构,添加分类并优化选择逻辑,添加日志显示 (#16499) @SherkeyXD @Constrat @momomochi987
* WPF 新配置修改日志记录等级提升至 Info @status102
* 自动战斗拆出导航 @status102
* 调整小工具-便捷任务布局,调整日志输出 @ABA2396
* RunningState 更新 (#16585) @status102
* 干员识别本地化导出表头,添加类型化枚举 @ABA2396
* 统一干员识别与仓库识别界面布局 @ABA2396
* 合并输出 @status102
* OCRer DEBUG 下绘制匹配结果 @status102
* 减少中间状态 @ABA2396
* 优化 CI 工作流:升级 actions/upload-artifact 至 v7设置压缩级别为 0改进 PR 提交检查评论逻辑 (#16671) @AnnAngela @ABA2396
* Reduce unnecessary allocations @status102
* YostarKR UR stage navigation @HX3N
* 统一任务队列与自动战斗的停止逻辑 ([#17087](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17087)) @ABA2396
* 无法显示系统通知时自动回退到软件内通知,启动时通知不可用提示改为软件内弹窗 ([#17165](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17165)) @ABA2396
* 优化成就 DLC 标识显示效果与提示,增加对应 DLC 上线时间提示 @ABA2396
* 调整繁中服 CharNameOcrReplace 替换规则 ([#17113](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17113)) @momomochi987
* 怪猎一期复刻 CF-EX-8、CF-S-1 关卡参数调整 @status102
* 移除依赖库安装脚本的提权操作 @ABA2396
* 调整日志超时提示 @ABA2396
* YostarKR crop JieGarden@Roguelike@StartAction.png to improve match score @HX3N
### 修复 | Fix
* 修复生息交付木材 ROI 错误 @Saratoga-Official
* 修复 PNS 配置项被意外恢复的问题 @ABA2396
* 修复 15 章之后的难度切换 @ABA2396
* 繼續調整繁中服部分幹員名稱 OCR (#16600) @momomochi987
* 修复理智药过期天数识别失败取消确认逻辑未生效 @status102
* 修复临期理智药天数缺省值 @status102
* 修复便捷功能列表滚动 @ABA2396
* 修复便捷功能 GroupStyle @ABA2396
* 修复理智药过期参数迁移输出 Warning 中参数名错误 @status102
*复 FFT 路径 masked TM_CCOEFF_NORMED 精度损失导致的误匹配 (#16652) @Aliothmoon
* 修复日志输出停滞功能在未开启外部通知时无法生效 @ABA2396
* 修复 build warning @ABA2396
* 修复 typo @ABA2396
* 界园深入探索模板 (#16626) @ZiyinLin @status102
* Various IS encounter Regex @Constrat
* TimesChange event @Constrat
### 文档 | Docs
* 修正嵌套容器说明 @Rbqwow
* 新增 DWM 相关问题处理知识文档 @ABA2396
* 补充 PC 客户端、多开与账号管理等知识文档 @ABA2396
* 补充 AddLog 缺失 param 介绍 @ABA2396
* 修复 NCNN OCR 引擎在小 ROI 下识别异常,对齐 fastdeploy 的 det 缩放与 rec 预处理 ([#17182](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17182)) @Aliothmoon
* 修复部分设备界园树洞"是非境"识别错误 ([#17181](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17181)) @Aliothmoon
* 修复自动战斗多作业模式无法进行关卡导航 @status102
* 修复自动战斗导航 retry 异常导致跳过作业的问题 @status102
* 修复肉鸽战斗结束后招募误入 StartExplore 的问题 @Saratoga-Official
* 修复水月肉鸽"大海的遗产"和"狗眼婆娑"事件名识别错误 @Saratoga-Official
* 修复肉鸽 GetDrop 未等待 LoadingText 导致的问题 @Saratoga-Official
* 修复 CloseEvent 和 CloseCollection 同时出现导致的异常 @Saratoga-Official
* 修复 MAA 更新检查 API 请求未遵循代理设置的问题 @status102
*正落叶逐火入口 OCR 文本 @SherkeyXD
* 修复复制任务时未保留原任务启用状态的问题 @ABA2396
* YostarEN fix future alter operators recognition and EnterEpisodeNew-Click @Constrat
* YostarKR correct ClickChapterNewDefaultProgress roi, expand training roi for wrapped operator names @HX3N
### 其他 | Other
*改 ai-issue-analysis @ABA2396
* 赛博道长 @ABA2396
* 调整图标阴影 @ABA2396
* 采用 System.Windows 的剪贴板 @ABA2396
* 调整输出格式 @ABA2396
* 统一符号 @ABA2396
* 调整干员识别提示换行 @ABA2396
* gitignore for C# dev kit vsc deo @Constrat
*复 MAAUnified CI 选错 ref 的问题 ([#17143](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17143)) @Halo
* 优化 Avalonia 构建工作流触发条件 ([#17139](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17139)) @Manicsteiner
* YostarEN/JP/KR update LoneTrail and JieGarden themes ([#17175](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17175)) @Constrat @Manicsteiner @HX3N
* YostarJP add episode new navigation and JieGarden theme recruit @Manicsteiner
* Update GitHub push action version comment ([#17124](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17124)) @AnnAngela
</details>

View File

@@ -217,11 +217,6 @@
"cacheVariables": {
"BUILD_WPF_GUI": "ON"
},
"$comment": [
"github actions only support Visual Studio 17 2022",
"see https://github.com/actions/runner-images/issues/13291"
],
"generator": "Visual Studio 17 2022",
"displayName": "Windows x64 Publish"
},
{
@@ -233,11 +228,6 @@
"cacheVariables": {
"BUILD_WPF_GUI": "ON"
},
"$comment": [
"github actions only support Visual Studio 17 2022",
"see https://github.com/actions/runner-images/issues/13291"
],
"generator": "Visual Studio 17 2022",
"displayName": "Windows arm64 Publish"
},
{

View File

@@ -130,7 +130,7 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
- [集成文档](https://docs.maa.plus/zh-cn/protocol/integration.html)
- [回调消息协议](https://docs.maa.plus/zh-cn/protocol/callback-schema.html)
- [任务流程协议](https://docs.maa.plus/zh-cn/protocol/task-schema.html)
- [自动抄作业协议](https://docs.maa.plus/zh-cn/protocol/copilot-schema.html)
- [自动战斗协议](https://docs.maa.plus/zh-cn/protocol/copilot-schema.html)
### 外服适配

View File

@@ -48,7 +48,7 @@ Accepted container types and their default titles are as follows:
- `warning` Warning
- `danger` Caution
- `details` Details
- `demo-wrapper` ==Special Container==
- `window` ==Special Container==
### Container Examples
@@ -76,7 +76,7 @@ This is a danger container
This is a details container
:::
::: demo-wrapper
::: window
This is a very special container
:::
@@ -117,7 +117,7 @@ You can use the `!!content!!{config (optional)}` syntax, and the default effect
The following configurations are available:
::: demo-wrapper
::: window
Input:
```markdown
@@ -194,7 +194,7 @@ We have wrapped an image container based on the functionality provided by the th
You can use the `<ImageGrid>` component in the markdown body to invoke this method. The specific syntax and effects are as follows:
::: demo-wrapper
::: window
This is the syntax:

View File

@@ -201,7 +201,7 @@ strategy = "merge" # or "first" (default)
# use all expiring medicine on Sunday night
[[tasks.variants]]
params = { expiring_medicine = 1000 }
params = { medicine_expire_days = 2 }
[tasks.variants.condition]
type = "And"
conditions = [

View File

@@ -26,6 +26,8 @@ Typical `16:9` resolutions include `3840x2160` (4K), `2560x1440` (2K), `1920x108
## Download and Run ADB Debug Tool to Connect Device
::: steps
1. Download [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and extract it.
2. Open the extracted folder, clear the address bar, type `cmd`, and press Enter.
3. In the command prompt window that appears, type `adb`. If you see extensive help text, the command ran successfully.
@@ -36,6 +38,8 @@ Typical `16:9` resolutions include `3840x2160` (4K), `2560x1440` (2K), `1920x108
adb devices
```
:::
- When executed successfully, it will show connected USB debugging devices.
- Example of a successful connection:
@@ -114,23 +118,25 @@ It is strongly recommended to revert these changes **before the next device rebo
## Automate Resolution Changes
::: steps
1. Create two text files in the MAA directory with the following content:
```bash
# Adjust resolution to 1080p
```bat
:: Adjust resolution to 1080p
adb -s <target device serial number> shell wm size 1080x1920
# Lower screen brightness (optional)
:: Lower screen brightness (optional)
adb -s <target device serial number> shell settings put system screen_brightness 1
```
```bash
# Restore resolution
```bat
:: Restore resolution
adb -s <target device serial number> shell wm size reset
# Increase screen brightness (optional)
:: Increase screen brightness (optional)
adb -s <target device serial number> shell settings put system screen_brightness 20
# Return to home screen (optional)
:: Return to home screen (optional)
adb -s <target device serial number> shell input keyevent 3
# Lock screen (optional)
:: Lock screen (optional)
adb -s <target device serial number> shell input keyevent 26
```
@@ -139,6 +145,8 @@ It is strongly recommended to revert these changes **before the next device rebo
3. In MAA's `Settings` - `Connection Settings`, set `Start Script` to `startup.bat` and `End Script` to `finish.bat`.
:::
## Connect to MAA
### Wired Connection
@@ -157,6 +165,8 @@ Wired connections don't need IP addresses or ports - just the device serial numb
#### Using `adb tcpip` for Wireless Debugging
::: steps
1. In the command prompt, enable wireless debugging:
```bash
@@ -171,12 +181,16 @@ Wired connections don't need IP addresses or ports - just the device serial numb
3. Enter `<IP>:5555` in MAA's `Settings` - `Connection Settings` - `Connection Address`, e.g., `192.168.1.2:5555`.
4. Link Start!
:::
#### Using `adb pair` for Wireless Debugging
::: tip
`adb pair` wireless pairing (available in Android 11 and later via Developer Options) allows connection without a physical USB connection, unlike `adb tcpip`.
:::
::: steps
1. On your phone, go to Developer Options, tap `Wireless Debugging` and enable it. Tap `Pair device with pairing code` and keep the popup open until pairing completes.
2. Complete the pairing:
@@ -187,11 +201,17 @@ Wired connections don't need IP addresses or ports - just the device serial numb
3. Enter the IP address and port shown on your device screen into MAA's `Settings` - `Connection Settings` - `Connection Address`, e.g., `192.168.1.2:11451`. **This is different from the address used for pairing**.
4. Link Start!
:::
#### Using Root to Enable Wireless ADB
~~If you have access to root, why do you need to read this document~~
1. Download, install [WADB](https://github.com/RikkaApps/WADB/releases) and grant it root privileges. 2.
2. Open WADB and start wireless adb. 3.
::: steps
1. Download, install [WADB](https://github.com/RikkaApps/WADB/releases) and grant it root privileges.
2. Open WADB and start wireless adb.
3. Put the IP address and port provided by WADB into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`.
4. Link Start!
:::

View File

@@ -19,7 +19,9 @@ The MAA WPF GUI can currently be run through Wine. MAA now uses self-contained d
#### Installation Steps
1. Install Visual C++ Redistributable:
:::: steps
1. Install Visual C++ Redistributable
Download and install [Visual C++ Redistributable](https://aka.ms/vc14/vc_redist.x64.exe):
@@ -31,7 +33,11 @@ The MAA WPF GUI can currently be run through Wine. MAA now uses self-contained d
`DependencySetup_依赖库安装.bat` relies on winget and Windows privilege escalation, which typically doesn't work properly in Wine, so manual installation of runtime libraries is required.
:::
2. Download the Windows version of MAA, extract it, and run `wine MAA.exe`.
2. Download MAA
Download the Windows version of MAA, extract it, and run `wine MAA.exe`.
::::
::: info Note
You need to set the ADB path to the [Windows version of `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) in the connection settings.
@@ -66,52 +72,52 @@ Place the `MaaDesktopIntegration.so` generated by MAA Wine Bridge in the same di
### Using Python
#### 1. Installing MAA Dynamic Library
:::: steps
1. Download and extract the Linux dynamic library from the [MAA website](https://maa.plus/), or install from a software repository:
- AUR: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights), follow the post-installation instructions
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
1. Install MAA Dynamic Library
1. Download and extract the Linux dynamic library from the [MAA website](https://maa.plus/), or install from a software repository:
- AUR: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights), follow the post-installation instructions
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
2. Navigate to `./MAA-v{version}-linux-{architecture}/Python/` and open the `sample.py` file
2. Navigate to `./MAA-v{version}-linux-{architecture}/Python/` and open the `sample.py` file
::: tip
The precompiled version includes dynamic libraries compiled on relatively new Linux distributions (Ubuntu 22.04). If your system has an older libstdc++ version, you might encounter ABI incompatibility issues.
You can refer to the [Linux Compilation Tutorial](../../develop/linux-tutorial.md) to recompile or use a container solution.
:::
::: tip
The precompiled version includes dynamic libraries compiled on relatively new Linux distributions (Ubuntu 22.04). If your system has an older libstdc++ version, you might encounter ABI incompatibility issues.
You can refer to the [Linux Compilation Tutorial](../../develop/linux-tutorial.md) to recompile or use a container solution.
:::
2. ADB Configuration
1. Find the line [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/b4fc3528decd6777441a8aca684c22d35d2b2574/src/Python/sample.py#L62)
2. ADB Tool Configuration
- If using `Android Studio`'s `AVD` emulator, it comes with ADB. You can directly specify the ADB path to replace `adb.exe`, typically found in `$HOME/Android/Sdk/platform-tools/`, for example:
#### 2. ADB Configuration
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator's ADB address"):
```
1. Find the line [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/b4fc3528decd6777441a8aca684c22d35d2b2574/src/Python/sample.py#L62)
- For other emulators, first install ADB: `$ sudo apt install adb`, then either specify the path or simply use `adb` if it's in your `PATH` environment variable.
2. ADB Tool Configuration
- If using `Android Studio`'s `AVD` emulator, it comes with ADB. You can directly specify the ADB path to replace `adb.exe`, typically found in `$HOME/Android/Sdk/platform-tools/`, for example:
3. Getting the Emulator's ADB Address
- Use the ADB tool directly: `$ adb_path devices`, for example:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator's ADB address"):
```
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
- For other emulators, first install ADB: `$ sudo apt install adb`, then either specify the path or simply use `adb` if it's in your `PATH` environment variable.
- The returned `emulator-5554` is the emulator's ADB address. Replace `127.0.0.1:5555` with it, for example:
3. Getting the Emulator's ADB Address
- Use the ADB tool directly: `$ adb_path devices`, for example:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
4. Now you can test with `$ python3 sample.py`. If it returns "Connection successful," you're ready to proceed.
- The returned `emulator-5554` is the emulator's ADB address. Replace `127.0.0.1:5555` with it, for example:
3. Task Configuration
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
Custom tasks: Refer to the [Integration Documentation](../../protocol/integration.md) and modify the [`# Task parameters can be found in docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) section in `sample.py`
4. Now you can test with `$ python3 sample.py`. If it returns "Connection successful," you're ready to proceed.
#### 3. Task Configuration
Custom tasks: Refer to the [Integration Documentation](../../protocol/integration.md) and modify the [`# Task parameters can be found in docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) section in `sample.py`
::::
## Emulator Support

View File

@@ -13,6 +13,8 @@ Experimental support. Please submit issues if you encounter problems, and includ
Note: Due to macOS system limitations, screenshot issues may occur when minimizing the game window, switching to other windows while in Stage Manager, or moving the window to other desktops/screens. Related issue: [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
::: steps
0. Requirements: MAA version v4.13.0-rc.1 or newer
1. Download and install the [forked version of PlayCover](https://github.com/hguandl/PlayCover/releases).
@@ -29,6 +31,8 @@ Note: Due to macOS system limitations, screenshot issues may occur when minimizi
7. Steps 3-5 only need to be done once. After that, just launch Arknights. After each Arknights client update, you'll need to repeat step 2.
:::
### ✅ [MuMu Emulator Pro](https://mumu.163.com/mac/)
Supported, but less thoroughly tested. Requires using a touch mode other than `MacPlayTools`. Related issue: [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)

View File

@@ -7,15 +7,53 @@ icon: solar:streets-map-point-linear
Currently, support for Reclamation Algorithm is still in early stages and unattended operation is not recommended, as stability cannot be guaranteed at this time.
## Default Mode
## Tales Within the Sand
### Default Mode
1. You need to start the task from the Reclamation Algorithm main interface (navigation not yet implemented)
2. Cannot be used when you already have an existing save file (delete the existing save to use)
3. Cannot be used when operators are present in the Reclamation Algorithm squad (clear the current squad, especially after completing a wave)
## Manufacturing Points Farm
### Manufacturing Points Farm
1. You need to start from the page where you can see the base camp after entering Reclamation Algorithm
2. If no item name is specified, Glow Sticks will be crafted by default
3. Prerequisite: It must be the first day after settlement, with no enemy raids entering the base camp for the next three days
4. If the manufacturable quantity is exactly a multiple of 99, the process may get stuck. You can use up a small amount before saving; this issue will be fixed in the future
## Relaunch Anchor
### RA-1
- Income reference: ~159 tokens + coordination points per run, ~2 min 10 sec per cycle
- Operator requirement: None
- Prerequisite: Complete RA-1 in the main storyline
- Open RA-1 on the world map, start the task when "Start Construction" appears in the bottom-right corner
- Note: If you have unlocked technologies that grant extra starting items, please remove facilities that cause this (e.g. Food Supply Station, Drink Supply Station, Large Beast Pen, etc.)
- Task flow: Automatically executes intensive farming, construction, resource delivery, and settlement loop
### RA-4
- Reward estimate: ~417 tokens + coordination points per run, ~1 min 40 sec per round
- Operator requirement: Wis'adel (support unit allowed)
- Prerequisite:
1. Advance the main story until RA-4 is cleared.
2. Unlock Strategy Planning Management.
3. If you have your own Wis'adel, manually enter the stage and form a team once, ensuring any 5 operators with lower DP cost than Wis'adel + Wis'adel, and Wis'adel is in the 6th slot (i.e., the last one selected). Then confirm recruitment, abandon the current construction, and start from "Start Construction".
4. If using a support Wis'adel, ensure that Wis'adel is on the front page of sniper support units (consider using a friend). Manually enter the stage and add any 5 operators with lower DP cost than Wis'adel, select support Wis'adel for the 6th slot, then confirm recruitment, abandon the current construction, and start from "Start Construction" (ensure the first five slots have operators and the 6th slot is empty).
- Open RA-4 on the world map, start the task when "Start Construction" appears in the bottom-right corner
- Note: If you have unlocked technologies that grant extra starting items, please remove facilities that cause this (e.g. Food Supply Station, Drink Supply Station, Large Beast Pen, etc.)
- Task flow: Use the Gold from Strategy Planning Management to unlock areas, and use Wis'adel to complete the boss elimination mission.
### RA-15
- Income reference: ~500 tokens + coordination points per run, ~3 min per cycle
- Operator requirement: Civilight Eterna (can use support unit)
- Prerequisites:
1. Complete RA-15 in the main storyline
2. If you own Civilight Eterna, manually open the stage and set up the squad once: 5 Vanguards (no level requirement) + Civilight Eterna in the 6th slot, then save and exit
3. If using support Civilight Eterna, ensure she appears on the first page of Caster supports
- Open RA-15 on the world map, start the task when "Start Construction" appears in the bottom-right corner
- Note: If you have unlocked technologies that grant extra starting items, please remove facilities that cause this (e.g. Food Supply Station, Drink Supply Station, Large Beast Pen, etc.)
- Task flow: Complete the 60-kill mission with Civilight Eterna

View File

@@ -11,10 +11,14 @@ Auto Recruitment and [Recruitment Recognition](./tools.md#recruitment-recognitio
Supports automatic use of `Expedited Plans`, allows setting maximum recruitment times per task, and can be combined with `Auto use Expedited Plans` to quickly use up all recruitment permits.
Pop-up notifications will appear when 1★, 5★, or 6★ tags are detected.
Pop-up notifications will appear when preserved tags, 5★ tags, or 6★ tags are detected.
Recruitment tag data is automatically uploaded to [Penguin Statistics](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/) when refreshing recruitment.
## Advanced Settings
`Auto confirm` means MAA automatically selects tags and performs recruitment, while `Manual confirm` means no automatic tag selection or recruitment is performed.
After enabling `Preferred 3★ tags`, you can choose which 3★ tags should be preferred. After enabling `Preserve selected tags`, you can choose which tags should keep the current slot untouched.
When any preserved tag is recognized, MAA skips the current recruitment slot and leaves it unchanged instead of confirming that recruitment.

View File

@@ -18,6 +18,7 @@ Only supports switching to already logged-in accounts, using the login name for
- Examples:
- Official server: `123****8901` can be entered as `123****8901`, `123`, `8901`, or `3****8`
- Bilibili server: `Zhang San` can be entered as `Zhang San`, `Zhang`, or `San`
- Traditional Chinese server: Email-based, e.g. `ab****01@gmail.com`. Entering the plain-text portion without asterisks is recommended, e.g. `01@gmail`
## Connection Settings

View File

@@ -11,26 +11,32 @@ Open the Recruitment tag interface and click Start Recognition to initiate.
If you have previously run Operator Recognition, potential data will be displayed after the recognized operator's name.
## Operator Recognition (Beta)
## Operator Recognition
Can recognize lists of both owned and unowned operators, and identify potential levels to provide data for Recruitment Recognition.
## Depot Recognition (Beta)
Currently supports the following export formats:
- Clipboard
- JSON
- Markdown table
- CSV table
## Depot Recognition
Supports automatically entering the depot from the main page. If automatic navigation fails, please manually switch to the `Upgrade Materials` screen and **scroll all the way to the left** before starting the function.
Currently supports exporting to [Penguin Statistics Planner](https://penguin-stats.io/planner), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/settings).
Currently supports the following export formats:
- [Penguin Statistics Planner](https://penguin-stats.io/planner) (ArkPlanner)
- [Arknights Toolbox](https://arkntools.app/#/material) (Lolicon)
- Markdown table
- CSV table
If you are the administrator of a data site, we welcome you to contact us to adapt your site's material JSON protocol!
More useful features may be added in the future. (Teaser)
## Task Video Recognition (Alpha)
Can recognize strategy videos and automatically generate operation files. Simply drag video files into the Auto Combat page to start.
Requires 16:9 aspect ratio with 720p or higher resolution, with no black borders, emulator frames, notched screen adaptations, or other interfering elements.
## Gacha
::: center
@@ -48,3 +54,15 @@ Want to see the world through MAA's eyes? Now you can!
MAA will attempt to take screenshots of the emulator at the target frame rate and display them in real-time in the window.
When the screenshot speed is significantly slower than the target frame rate, MAA will automatically reduce the target frame rate to match the screenshot speed. ~~Can be used as a stress test~~
## Mini Game
Used to automatically farm mini-games in events. Supports selecting names and switching between permanent and current limited-time activities in settings.
Built-in features include:
- Event shop exchange
- Green ticket shop exchange
- Yellow ticket shop exchange
- Reclamation Algorithm shop exchange
- Secret Front (supports selecting endings and event branches)

View File

@@ -137,6 +137,6 @@ Please note that JSON files do not support comments. The comments in this docume
## Example
[243_layout_3_times_a_day](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json)
[243_layout_3_times_a_day](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/243_layout_3_times_a_day.json)
[153_layout_3_times_a_day](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json)
[153_layout_3_times_a_day](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/153_layout_3_times_a_day.json)

View File

@@ -224,7 +224,7 @@ Todo
- `MedicineConfirm`
Use sanity potion
- `ExpiringMedicineConfirm`
Use sanity potion expiring within 48 hours
Use expiring sanity potion
- `StoneConfirm`
Use Originium Prime
- `RecruitRefreshConfirm`
@@ -355,6 +355,16 @@ Todo
}
```
- `RecruitPreservedTag`
Recruitment preserved tag detected
```json
// Corresponding details field example
{
"tag": "支援机械" // "Robot"
}
```
- `RecruitResult`
Recruitment recognition result

View File

@@ -64,6 +64,8 @@ Only supports switching to already logged-in accounts, using login name for iden
Official server: `123****4567`, can input `123****4567`, `4567`, `123`, or `3****4567`
<br>
Bilibili server: `Zhang San`, can input `Zhang San`, `Zhang`, or `San`
<br>
Traditional Chinese server: Email-based, e.g. `ab****01@gmail.com`. Entering the plain-text portion without asterisks is recommended, e.g. `01@gmail`
:::
::::
@@ -134,8 +136,11 @@ Currently supported stages for navigation include:
::: field name="medicine" type="number" optional default="0"
Maximum number of Sanity Potions used.
:::
::: field name="expiring_medicine" type="number" optional default="0"
Maximum number of Sanity Potions expiring within 48 hours.
::: field name="medicine_expire_days" type="number" optional default="0"
Use Sanity Potions that expire within the specified number of days. `0` means no expiring potions will be used.
:::
::: field name="expiring_medicine" type="number" optional default="0" deprecated
Deprecated since v6.8.0, please use `medicine_expire_days` instead.
:::
::: field name="stone" type="number" optional default="0"
Maximum number of Originite Prime used.
@@ -197,7 +202,7 @@ Currently supported stages for navigation include:
"enable": true,
"stage": "1-7",
"medicine": 1,
"expiring_medicine": 0,
"medicine_expire_days": 2,
"stone": 0,
"times": 10,
"series": 0,
@@ -259,7 +264,14 @@ Whether to use Expedited Plans.
Number of expedites, only effective when `expedite` is true. By default unlimited (until `times` limit is reached).
:::
::: field name="skip_robot" type="boolean" optional default="true"
Whether to skip when robot tag is recognized.
Deprecated and kept only for backward compatibility.
<br>
When `preserve_tags` is absent and this value is `true`, MAA skips on `支援机械` only; `元素` is no longer treated as the legacy 1★ tag.
:::
::: field name="preserve_tags" type="array<string>" optional
List of tag names that should preserve the current recruitment slot and skip this recruitment. Default is empty.
<br>
If any specified tag is recognized, MAA will keep that slot untouched and skip the current recruitment.
:::
::: field name="recruitment_time" type="object" optional
Tag ★ rarity (greater than or equal to 3) and corresponding desired recruitment time limit, in minutes, all default to 540 (i.e. 09:00:00).
@@ -300,7 +312,7 @@ Options: `CN` | `US` | `JP` | `KR`
"set_time": true,
"expedite": false,
"expedite_times": 0,
"skip_robot": true,
"preserve_tags": ["支援机械"],
"recruitment_time": {
"3": 540,
"4": 540
@@ -911,32 +923,44 @@ Whether to enable this task.
::: field name="enable" type="boolean" optional default="true"
Whether to enable this task.
:::
::: field name="theme" type="string" optional default="Fire"
::: field name="theme" type="string" optional default="Tales"
Theme.
<br>
`Fire` - _Fire Within the Sand_
`Fire` - _Fire Within the Sand_ (Closed)
<br>
`Tales` - _Tales Within the Sand_
<br>
`RelaunchAnchor` - _Relaunch Anchor_
:::
::: field name="mode" type="number" optional default="0"
Mode.
Mode. Supported modes vary by theme:
<br>
`0` - Farm badges & construction pts (exiting the stage immediately).
**Tales:**
<br>
`1` - Fire Within the Sand: Farm Crude Gold (forging Gold at headquarter after purchasing water); Tales Within the Sand: Automatically craft items and load to earn currency.
`0` - No save, farm prosperity points by entering and exiting stages.
<br>
`1` - With save, farm currency by crafting support items.
<br>
**RelaunchAnchor:**
<br>
`16` (`RA1`) - RA-1, automatically execute intensive farming, construction, resource delivery, and settlement loop.
<br>
`32` (`RA15`) - RA-15, complete the 60-kill mission with Civilight Eterna.
<br>
`48` (`RA4`) - RA-4, Use the Gold from Strategy Planning Management to unlock areas, and use Wis'adel to complete the boss elimination mission.
:::
::: field name="tools_to_craft" type="array<string>" optional default="[&quot;荧光棒&quot;]"
Automatically crafted items. Suggested to fill in the substring.
Automatically crafted items. Suggested to fill in the substring. Only effective for Tales theme.
:::
::: field name="increment_mode" type="number" optional default="0"
Click type.
Click type. Only effective for Tales theme.
<br>
`0` - Rapid Click
<br>
`1` - Long Press
:::
::: field name="num_craft_batches" type="number" optional default="16"
Maximum number of craft batches per session.
Maximum number of craft batches per session. Only effective for Tales theme.
:::
::::

View File

@@ -48,7 +48,7 @@ icon: jam:write-f
- `warning` 注意
- `danger` 警告
- `details` 詳細
- `demo-wrapper` ==特殊なコンテナ==
- `window` ==特殊なコンテナ==
### コンテナの例
@@ -76,7 +76,7 @@ icon: jam:write-f
これは詳細のコンテナです
:::
::: demo-wrapper
::: window
これは特殊なコンテナです
:::
@@ -117,7 +117,7 @@ MaaAssistantArknights は ==たくさんの豚== によって開発されまし
以下の設定が使用できます:
::: demo-wrapper
::: window
入力:
```markdown
@@ -194,7 +194,7 @@ MaaAssistantArknights は ==たくさんの豚== によって開発されまし
Markdown 本文で `<ImageGrid>` コンポーネントを使用してこのメソッドを呼び出すことができます。具体的な構文と効果は以下の通りです:
::: demo-wrapper
::: window
構文:

View File

@@ -199,7 +199,7 @@ strategy = "merge" # 或者 "first" (默认)
# 在周天晚上使用所有的将要过期的理智药
[[tasks.variants]]
params = { expiring_medicine = 1000 }
params = { medicine_expire_days = 2 }
[tasks.variants.condition]
type = "And"

View File

@@ -3,7 +3,7 @@ order: 4
icon: mingcute:android-fill
---
# 物理的な**Android**デバイス
# 物理的な Android デバイス
::: warning
この方法は ADB デバッグを伴い、さらに PC との接続が必要なため、**初心者には非推奨**です。
@@ -25,6 +25,8 @@ icon: mingcute:android-fill
## adbデバッグ・ツールをダウンロードして実行し、デバイスに接続する
::: steps
1. [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) をダウンロードし、解凍する。
2. 解凍したフォルダを開き、アドレスバーをクリアし`cmd` と入力しエンターキーを押します。
3. ポップアップしたコマンドプロンプトウィンドウに`adb`と入力し、英語のヘルプテキストがたくさん表示されれば、実行は成功です。
@@ -35,6 +37,8 @@ icon: mingcute:android-fill
adb devices
```
:::
- 実行に成功すると `USB デバッグ` デバイスが接続されたというメッセージが表示される。
- 成功した接続例:
@@ -113,31 +117,35 @@ icon: mingcute:android-fill
## 解像度の自動変更
::: steps
1. MAAディレクトリに2つの新しいテキストファイルを作成し、以下の内容で埋めてください。
```bash
```bat
:: 解像度を 1080p に調整する
adb -s <ターゲット・デバイスのシリアル番号> shell wm size 1080x1920
:: 画面の輝度を下げる(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell settings put system screen_brightness 1
```
```bash
```bat
:: 解像度の復元
adb -s <ターゲット・デバイスのシリアル番号>> shell wm size reset
adb -s <ターゲット・デバイスのシリアル番号> shell wm size reset
:: 画面の明るさを上げる(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell settings put system screen_brightness 20
:: ホームに戻る(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell input keyevent 3
:: ロック画面(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell input keyevent 26
adb -s <ターゲット・デバイスのシリアル番号> shell settings put system screen_brightness 20
:: ホームに戻る(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell input keyevent 3
:: ロック画面(オプション)
adb -s <ターゲット・デバイスのシリアル番号> shell input keyevent 26
```
2. 最初のファイルを `startup.bat` に、2番目のファイルを `finish.bat` にリネームする。
- リネーム後、拡張子を変更するための2回目の確認ダイアログボックスが表示されず、ファイルアイコンも変更されない場合は、Windowsでファイルの拡張子を表示する方法をご自身で検索してください。
- リネーム後、拡張子を変更するための2回目の確認ダイアログボックスが表示されず、ファイルアイコンも変更されない場合は、Windowsでファイルの拡張子を表示する方法をご自身で検索してください。
3. MAA の `設定` - `接続設定` - `スクリプトを使用して始めます` と `終了時にスクリプトを使用します` にそれぞれ `startup.bat` と `finish.bat` を記入してください。
:::
## MAAとの接続
### 有線接続
@@ -156,6 +164,8 @@ icon: mingcute:android-fill
#### `adb tcpip` を使用してワイヤレスポートをオンにします
::: steps
1. 先ほど開いたコマンドプロンプトウィンドウに以下のコマンドを入力し、ワイヤレスデバッグを有効にします。
```bash
@@ -170,12 +180,16 @@ icon: mingcute:android-fill
3. `<IP>:5555` を MAAの `設定` - `接続設定` - `接続先アドレス` に入力してください。例 `192.168.1.2:5555`。
4. Link Start!
:::
#### `adb pair` を使用してワイヤレスポートをオンにします
::: tip
`adb pair` ワイヤレス ペアリング、つまり Android 11 以降の開発者向けオプションで `ワイヤレスデバッグ` を使用すると、 `adb tcpip` と比較して有線接続が不要になります。
:::
::: steps
1. デバイスの開発者向けオプションに移動し、 `ワイヤレスデバッグ` をクリックしてオンにし、OKをクリックして、 `ペアリングコードでデバイスをペアリング` をクリックして、ペアリングが完了するまで表示されるポップアップウィンドウを閉じないでください。
2. ペアリングします。
@@ -186,11 +200,17 @@ icon: mingcute:android-fill
3. 現在のデバイス画面に表示される `<IP アドレスとポート>` を MAAの `設定` - `接続設定` - `接続アドレス` に入力します( `192.168.1.2:11451` など)、**さっき記入したものとは違うに違いない**。
4. Link Start!
:::
#### ルート権限でワイヤレスポートをオンにします
~~ルート権限を使用できますが、このドキュメントを読む必要がありますか~~
::: steps
1. [WADB](https://github.com/RikkaApps/WADB/releases) をダウンロードしてインストールし、ルート化します。
2. WADBを起動して、ワイヤレスadbを起動します。
3. WADBから提供された `<IP アドレスとポート>` を MAAの `設定` - `接続設定` - `接続アドレス` に入力します( `192.168.1.2:5555` など)。
4. Link Start!
:::

View File

@@ -19,7 +19,9 @@ MAA WPF GUI は現在 Wine を通じて実行できます。MAAは.NETランタ
#### インストール手順
1. Visual C++ Redistributable をインストールする:
:::: steps
1. Visual C++ Redistributable をインストールする
[Visual C++ 再頒布可能パッケージ](https://aka.ms/vc14/vc_redist.x64.exe) をダウンロードしてインストールします:
@@ -31,7 +33,11 @@ MAA WPF GUI は現在 Wine を通じて実行できます。MAAは.NETランタ
`DependencySetup_依赖库安装.bat` は winget と Windows の権限昇格機構に依存しているため、Wine では通常正常に動作しません。そのため、ランタイムライブラリは手動でインストールする必要があります。
:::
2. Windows 版 MAA をダウンロードし、解凍した後、`wine MAA.exe` を実行します。
2. MAA をダウンロード
Windows 版 MAA をダウンロードし、解凍した後、`wine MAA.exe` を実行します。
::::
::: info 注意
接続設定で ADB パスを [Windows 版 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) に設定する必要があります。
@@ -66,52 +72,52 @@ MAA Wine Bridge で生成された `MaaDesktopIntegration.so` を `MAA.exe` と
### Python を使用する
#### MAA 動的ライブラリのインストール
:::: steps
1. Linux ダイナミック ライブラリを [MAA ウェブサイト](https://maa.plus/) からダウンロードし、解凍します、または以下のソフトウェアリポジトリからインストールします:
- AUR[maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights)、インストール後のプロンプトに従ってファイルを編集します
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
1. MAA 動的ライブラリのインストール
1. Linux ダイナミック ライブラリを [MAA ウェブサイト](https://maa.plus/) からダウンロードし、解凍します、または以下のソフトウェアリポジトリからインストールします
- AUR[maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights)、インストール後のプロンプトに従ってファイルを編集します
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
2. `./MAA-v{バージョン}-linux-{アーキテクチャ}/Python/` ディレクトリに移動し、`sample.py` ファイルを開きます
2. `./MAA-v{バージョン}-linux-{アアーキテクチャ}/Python/` ディレクトリに移動し、`sample.py` ファイルを開きます
::: tip
プリコンパイル済みバージョンには、比較的新しいLinuxディストリビューション(Ubuntu 22.04)でコンパイルされた動的ライブラリが含まれており、システムに古いバージョンのlibstdc++がある場合、ABIの非互換性に遭遇する可能性があります。
[Linuxコンパイル・チュートリアル](../../develop/linux-tutorial.md) を参照して再コンパイルまたはコンテナを使用して実行できます。
:::
::: tip
プリコンパイル済みバージョンには、比較的新しいLinuxディストリビューション(Ubuntu 22.04)でコンパイルされた動的ライブラリが含まれており、システムに古いバージョンのlibstdc++がある場合、ABIの非互換性に遭遇する可能性があります。
[Linuxコンパイル・チュートリアル](../../develop/linux-tutorial.md) を参照して再コンパイルまたはコンテナを使用して実行できます。
:::
2. ADB 構成
1. [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48) セクションを見つける
2. `adb` ツール呼び出し
- エミュレータが `Android Studio` に `avd` を使用している場合は、 `adb` が付属します。 `adb.exe` の欄に直接 `adb` パスを記入することができ、一般的には `$HOME/Android/Sdk/platform-tools/` で見つけることができます。例:
#### ADB 構成
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "エミュレータの adb アドレス"):
```
1. [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48) セクションを見つける
- 他のエミュレータを使用する場合は、最初に `adb` をダウンロードして: `$ sudo apt install adb` 次に、パスを入力するか、 `PATH` 環境変数を使用して `adb` を直接入力します
2. `adb` ツール呼び出し
- エミュレータが `Android Studio` に `avd` を使用している場合は、 `adb` が付属します `adb.exe` の欄に直接 `adb` パスを記入することができ、一般的には `$HOME/Android/Sdk/platform-tools/` で見つけることができます。例:
3. エミュレータの `adb` パス取得
- adb ツールを直接使用できます `$ adbパス devices` 例:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "エミュレータの adb アドレス"):
```
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
- 他のエミュレータを使用する場合は、最初に `adb` をダウンロードして: `$ sudo apt install adb` 次に、パスを入力するか、 `PATH` 環境変数を使用して `adb` を直接入力します
- 返される `emulator-5554` はエミュレータのadbアドレスで、 `127.0.0.1:5555` を上書きします、例:
3. エミュレータの `adb` パス取得
- adb ツールを直接使用できます: `$ adbパス devices` ,例:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
4. この時点で、 `$ python3 sample.py` をテストでき、 `接続成功` が返されれば、基本的に成功です
- 返される `emulator-5554` はエミュレータのadbアドレスで、 `127.0.0.1:5555` を上書きします、例:
3. タスク構成
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
カスタムタスク:必要に応じて [統合ドキュメント](../../protocol/integration.md) を参照し、`sample.py` の [`# タスクとパラメーターについては docs/integration.md 参照`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 欄を変更します
4. この時点で、 `$ python3 sample.py` をテストでき、 `接続成功` が返されれば、基本的に成功です
#### タスク構成
カスタムタスク:必要に応じて [統合ドキュメント](../../protocol/integration.md) を参照し、`sample.py` の [`# タスクとパラメーターについては docs/integration.md 参照`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 欄を変更します
::::
## エミュレータのサポート

View File

@@ -17,6 +17,8 @@ icon: basil:apple-solid
注: `macOS` の仕組みにより、ゲームウィンドウを最小化したり、ステージマネージャーで別のウィンドウに切り替えたり、ウィンドウを別のデスクトップ/画面に移動したりすると、スクリーンショットに問題が発生し、正しく実行されなくなります。 👉🏻️ [issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512) を参照
::: steps
0. 要件: MAA バージョン v4.13.0-rc.1 以降
1. [PlayCover のフォークバージョン](https://github.com/hguandl/PlayCover/releases) をダウンロードしてインストールします。
@@ -33,6 +35,8 @@ icon: basil:apple-solid
7. ステップ 3-5 は一度だけ行う必要があり、その後はアークナイツをアクティブにするだけで済みます。アークナイツのクライアントを更新するたびに、手順2を再度実行する必要があります。
:::
### ✅ [MuMu エミューレータ Pro](https://mumu.163.com/mac/)
サポートされています、ただしテストは少なく、 `MacPlayTools` 以外のタッチモードが必要です。 関連する問題 [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)

View File

@@ -10,15 +10,53 @@ This page is outdated and maybe still in Simplified Chinese. Translation is need
:::
現在、生息演算のサポートはまだ初期段階にあり、自動攻略は推奨されず、現段階では安定性を保証できません。
## デフォルトモード
## 熱砂秘聞Tales
### デフォルトモード
1. 生息演算のメイン画面でタスクを開始する必要があります(ナビゲーションはまだ未実装)
2. すでにセーブデータがある状況では使用できません(既存のセーブデータを削除してください)
3. 生息演算の編成にオペレーターがいる状況では使用できません(生息演算の現在の編成をクリアしてください、特にウェーブを完了した後)
## 製造でポイント稼ぎ
### 製造でポイント稼ぎ
1. 生息演算内で駐屯地が見えるページから開始する必要があります
2. アイテム名が未記入の場合、デフォルトでグローライトを製造します
3. 前提条件現在が決算後の初日で、その後3日間敵襲による駐屯地への侵入がないこと
4. 製造可能数量がちょうど99の倍数の場合、フリーズします。セーブ前に少し使用することができます。これは後で修正予定です
## リローンチアンカーRelaunchAnchor
### RA-1
- 収益目安1周あたり約159トークン + 統籌ポイント、1周約2分10秒
- オペレーター要件:なし
- 前提条件ストーリーでRA-1をクリア済みであること
- ワールドマップでRA-1を開き、右下に「建設開始」が表示されたらタスクを開始すると自動ループします
- 注意:開始時に追加アイテムを持ち込むテクノロジーを解放している場合、該当施設(食品供給ステーション、飲料供給ステーション、大型獣檻など)を撤去してください
- タスクフロー:精耕細作→建設→資源納品→決算を自動ループ
### RA-4
- 収益目安1周あたり約417トークン + 統括ポイント、1周約1分40秒
- オペレーター要件:ヴィシャデル(サポート可)
- 前提条件:
1. メインストーリーを進めてRA-4をクリア済みの状態にする
2. 「計画経営」をアンロックする
3. 自分でヴィシャデルを持っている場合、手動でステージを開いて一度編成を行う。ヴィシャデルよりもコストが低い任意の5人のオペレーターヴィシャデルとし、ヴィシャデルを6番目最後に選択する枠に配置する。その後、勧誘を確定し、今回の建設を中止して「建設開始」から開始する。
4. サポートのヴィシャデルを使用する場合、ヴィシャデルがスナイパーサポートのトップページに表示されていることを確認するフレンドを考慮。手動でステージを開き、ヴィシャデルよりもコストが低い任意の5人のオペレーターを編成し、6番目にサポートのヴィシャデルを選択して勧誘を確定する。その後、今回の建設を中止して「建設開始」から開始する先頭5枠にオペレーターがおり、6番目が空いていることを確認する
- ワールドマップでRA-4を開き、右下に「建設開始」が表示されたらタスクを開始すると自動ループします
- 注意:開始時に追加アイテムを持ち込むテクノロジーを解放している場合、該当施設(食品供給ステーション、飲料供給ステーション、大型獣檻など)を撤去してください
- タスクフロー:「計画経営」で得た赤金を使ってエリアを解放し、ヴィシャデルでボス討伐を完了する
### RA-15
- 収益目安1周あたり約500トークン + 統籌ポイント、1周約3分
- オペレーター要件:シヴィライト・エテルナ(サポート可)
- 前提条件:
1. ストーリーでRA-15をクリア済みであること
2. シヴィライト・エテルナを所持している場合、手動でステージを開き編成を設定バンガード5体育成不要+ エテルナを6番目に配置、保存して退出
3. サポートのシヴィライト・エテルナを使用する場合、術士サポートの最初のページに表示されるよう調整
- ワールドマップでRA-15を開き、右下に「建設開始」が表示されたらタスクを開始すると自動ループします
- 注意:開始時に追加アイテムを持ち込むテクノロジーを解放している場合、該当施設を撤去してください
- タスクフローシヴィライト・エテルナで60撃破ミッションを達成

View File

@@ -11,10 +11,14 @@ icon: fluent:people-24-filled
`緊急招集票` の自動使用に対応し、1回のタスクあたりの最大募集回数を設定できます。`緊急招集票を自動的に使用` と併用すれば、一度に募集券を使い切ることができます。
1・5・6★タグを検出した場合は通知を表示します。
保留対象のタグ、5★タグ、6★タグを検出した場合は通知を表示します。
公開求人の更新時には、公開求人のタグデータを [ペンギン急便データ統計処理部門](https://penguin-stats.io/) と [ワンシート攻略](https://ark.yituliu.cn/) に自動アップロードします(**ご注意:「ワンシート攻略」は実質的に簡体字中国語のみのため、翻訳ツールと併用してください**)。
## 高度な設定
`自動的に確認する` は MAA が自動でタグを選択して募集を実行することを意味し、`手動的に確認する` は自動選択および自動募集を行わないことを意味します。
`3★タグ優先` を有効にすると、優先したい 3★タグを選択できます。`指定タグを保留` を有効にすると、保持したいタグを選択できます。
保留対象のタグを1つでも認識した場合、MAA はその公開求人枠を保持したまま今回の募集をスキップし、確認操作は行いません。

View File

@@ -18,6 +18,7 @@ icon: ic:round-rocket-launch
- 例:
- 公式サーバー:`123****8901` の場合、`123****8901``123``8901``3****8` のいずれでも可
- Bilibiliサーバー`张三` の場合、`张三``张``三` のいずれでも可
- 繁体字中国語サーバーEメール形式`ab****01@gmail.com`)。アスタリスクを含まない明文部分(例:`01@gmail`)の入力を推奨
## 接続設定

View File

@@ -15,12 +15,23 @@ icon: octicon:tools-16
所持/未所持のオペレーター一覧を認識し、潜在能力データを認識・保存して公開求人認識で表示に利用します。
現在、以下のエクスポート形式に対応しています:
- クリップボード
- JSON
- Markdown テーブル
- CSV テーブル
## 倉庫アイテム認識
ホーム画面から自動で倉庫へ移動できます。自動遷移に失敗した場合は、手動で倉庫の `素材` 画面へ切り替え、**いちばん左端までスワイプ** してから開始してください。
現在、MAAから以下のサイトへエクスポートに対応しています:
[ペンギン急便周回計画作成ツール](https://penguin-stats.io/planner)、[アークナイツツールボックス](https://arkntools.app/#/material)、[アークナイツ | 周回計画表](https://ark-nights.com/settings)。
現在、以下のエクスポート形式に対応しています:
- [ペンギン急便周回計画作成ツール](https://penguin-stats.io/planner)ArkPlanner
- [アークナイツツールボックス](https://arkntools.app/#/material)Lolicon
- Markdown テーブル
- CSV テーブル
データサイトを運営されている方は、貴サイトの素材JSON形式へのエクスポート対応についてもぜひご連絡ください。実装を検討いたします。
@@ -48,3 +59,15 @@ MAAの目を通して世界を見てみたいですか今、それが来ま
MAA が目標フレームレートに合わせてエミュレータのスクリーンショットを取得し、ウィンドウ中央にリアルタイム表示します。
スクショ取得速度が目標フレームレートに対して明らかに遅い場合、スクショ速度に合わせて目標フレームレートを自動で下げます。~~負荷テストにもどうぞ~~
## ミニゲーム
イベント内のミニゲームを自動的に周回します。名前の選択に対応し、設定で常設と当期限定イベントを切り替えられます。
内蔵機能:
- イベントショップ交換
- 緑チケットショップ交換
- 黄チケットショップ交換
- 生息演算ショップ交換
- シークレットフロント(エンディングとイベント分岐の選択に対応)

View File

@@ -147,6 +147,6 @@ JSONファイルはコメントをサポートしていません。テキスト
## サンプル
[243 有効率が最も高い 一日三回](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json)
[243 有効率が最も高い 一日三回](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/243_layout_3_times_a_day.json)
[153 有効率が最も高い 一日三回](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json)
[153 有効率が最も高い 一日三回](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/153_layout_3_times_a_day.json)

View File

@@ -227,7 +227,7 @@ Todo
- `MedicineConfirm`
理性回復剤使用確認
- `ExpiringMedicineConfirm`
48時間以内に期限切れ理性回復剤使用確認
期限切れ間近の理性回復剤使用確認
- `StoneConfirm`
純正源石使用確認
- `RecruitRefreshConfirm`
@@ -361,6 +361,16 @@ Todo
}
```
- `RecruitPreservedTag`
保留対象の公開求人タグの検出
```json
// 対応する詳細フィールドの例
{
"tag": "ロボット"
}
```
- `RecruitResult`
公開求人結果

View File

@@ -64,6 +64,8 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
Official`123****4567`、入力可能:`123****4567``4567``123``3****4567`
<br>
Bilibili`张三`、入力可能:`张三``张``三`
<br>
繁体字中国語サーバーEメール形式`ab****01@gmail.com`)。アスタリスクを含まない明文部分(例:`01@gmail`)の入力を推奨
:::
::::
@@ -134,8 +136,11 @@ Bilibili`张三`、入力可能:`张三`、`张`、`三`
::: field name="medicine" type="number" optional default="0"
理性回復剤の最大使用数。
:::
::: field name="expiring_medicine" type="number" optional default="0"
48 時間以内に期限切れになる理性回復剤の最大使用数
::: field name="medicine_expire_days" type="number" optional default="0"
指定日数以内に期限切れになる理性回復剤を使用します。`0` は期限切れの理性回復剤を使用しないことを意味します
:::
::: field name="expiring_medicine" type="number" optional default="0" deprecated
v6.8.0 で非推奨になりました。代わりに `medicine_expire_days` を使用してください。
:::
::: field name="stone" type="number" optional default="0"
純正源石の最大使用数。
@@ -197,7 +202,7 @@ Bilibili`张三`、入力可能:`张三`、`张`、`三`
"enable": true,
"stage": "1-7",
"medicine": 1,
"expiring_medicine": 0,
"medicine_expire_days": 2,
"stone": 0,
"times": 10,
"series": 0,
@@ -259,7 +264,14 @@ Bilibili`张三`、入力可能:`张三`、`张`、`三`
緊急招集の回数。`expedite` が true の場合のみ有効です。デフォルトは制限なし(`times` の上限まで)です。
:::
::: field name="skip_robot" type="boolean" optional default="true"
ロボット タグが認識されたときにスキップするかどうか
非推奨です。旧パラメータ互換のためにのみ残されています
<br>
`preserve_tags` が指定されておらず、この値が `true` の場合は `支援机械` を認識したときのみスキップします。`元素` は旧来の 1★ タグとしては扱われません。
:::
::: field name="preserve_tags" type="array<string>" optional
現在の公開求人枠を保持したまま今回の募集をスキップしたい Tag 名の一覧です。デフォルトは空です。
<br>
指定した Tag のいずれかを認識した場合、MAA はその枠を保持して今回の募集をスキップします。
:::
::: field name="recruitment_time" type="object" optional
タグレベル3 以上)と対応する希望採用時間(分単位)。デフォルト値は 540つまり 09:00:00です。
@@ -300,7 +312,7 @@ Bilibili`张三`、入力可能:`张三`、`张`、`三`
"set_time": true,
"expedite": false,
"expedite_times": 0,
"skip_robot": true,
"preserve_tags": ["支援机械"],
"recruitment_time": {
"3": 540,
"4": 540
@@ -910,32 +922,44 @@ Sarkaz テーマ、Investment モード、「破棘成金分隊」または「
::: field name="enable" type="boolean" optional default="true"
このタスクを有効にするかどうか。
:::
::: field name="theme" type="string" optional default="Fire"
::: field name="theme" type="string" optional default="Tales"
テーマ。
<br>
`Fire` - _砂中の火_
`Fire` - _砂中の火_(終了)
<br>
`Tales` - _熱砂秘聞_
`Tales` - _熱砂秘聞_
<br>
`RelaunchAnchor` - _リローンチアンカー_
:::
::: field name="mode" type="number" optional default="0"
モード。
モード。テーマごとにサポートするモードが異なります:
<br>
`0` - ポイント稼ぎと建造ポイント、戦闘に入って直接退出。
**Tales熱砂秘聞**
<br>
`1` - 沙中之火:赤金稼ぎ、連絡員から水購入後基地で鍛造;沙洲遗闻:支援アイテムを組み立てて生息ポイントを稼ぐ。
`0` - セーブなし、ステージ出入りで生息ポイントを稼ぐ。
<br>
`1` - セーブあり、支援アイテムを組み立てて生息ポイントを稼ぐ。
<br>
**RelaunchAnchorリローンチアンカー**
<br>
`16` (`RA1`) - RA-1、精耕細作→建設→資源納品→決算を自動ループ。
<br>
`32` (`RA15`) - RA-15、シヴィライト・エテルナで60撃破ミッションを達成。
<br>
`48` (`RA4`) - RA-4、「計画経営」で得た赤金を使ってエリアを解放し、ヴィシャデルでボス討伐を完了する。
:::
::: field name="tools_to_craft" type="array<string>" optional default="[&quot;荧光棒&quot;]"
自動製造品。サブストリング入力推奨。
自動製造品。サブストリング入力推奨。Tales テーマのみ有効。
:::
::: field name="increment_mode" type="number" optional default="0"
クリック型。
クリック型。Tales テーマのみ有効。
<br>
`0` - 連続クリック
<br>
`1` - 長押し
:::
::: field name="num_craft_batches" type="number" optional default="16"
単次最大製造バッチ数。
単次最大製造バッチ数。Tales テーマのみ有効。
:::
::::

View File

@@ -46,7 +46,7 @@ icon: jam:write-f
- `warning` 주의
- `danger` 경고
- `details` 세부 사항
- `demo-wrapper` ==특수 컨테이너==
- `window` ==특수 컨테이너==
### 컨테이너 예시
@@ -74,7 +74,7 @@ icon: jam:write-f
이것은 세부 사항 컨테이너입니다
:::
::: demo-wrapper
::: window
이것은 매우 특별한 컨테이너입니다
:::
@@ -115,7 +115,7 @@ MaaAssistantArknights는 ==많은 돼지들== 에 의해 개발되었습니다
다음과 같은 설정을 사용할 수 있습니다:
::: demo-wrapper
::: window
입력:
```markdown
@@ -192,7 +192,7 @@ MaaAssistantArknights는 ==많은 돼지들== 에 의해 개발되었습니다
마크다운 본문에서 `<ImageGrid>` 컴포넌트를 사용하여 이 메서드를 호출할 수 있으며, 구체적인 구문과 효과는 다음과 같습니다.
::: demo-wrapper
::: window
구문:
@@ -292,7 +292,7 @@ icon: jam:write-f
- `color` css 스타일 색상 값을 받습니다. 예: `#fff`, `red` 등 (이 옵션은 svg 아이콘에만 유효함)
- `size` css 스타일 크기 값을 받습니다. 예: `1rem`, `2em`, `100px` 등
::: demo-wrapper 예시
::: window 예시
입력:

View File

@@ -196,7 +196,7 @@ strategy = "merge" # 또는 "first" (기본값)
# 일요일 저녁에는 모든 만료 임박한 약물을 사용
[[tasks.variants]]
params = { expiring_medicine = 1000 }
params = { medicine_expire_days = 2 }
[tasks.variants.condition]
type = "And"

View File

@@ -26,6 +26,8 @@ icon: mingcute:android-fill
## adb 디버깅 도구 다운로드 및 장치 연결
::: steps
1. [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)를 다운로드하고 압축을 해제합니다.
2. 압축 해제한 폴더를 열고 주소 표시줄을 지우고 `cmd`를 입력한 후 Enter 키를 누릅니다.
3. 나타나는 명령 프롬프트 창에 `adb`를 입력하고 많은 영어 도움말 텍스트가 표시되면 실행이 성공한 것입니다.
@@ -36,6 +38,8 @@ icon: mingcute:android-fill
adb devices
```
:::
- 성공적으로 실행되면 연결된 `USB 디버깅` 장치 정보가 표시됩니다.
- 예시:
@@ -115,16 +119,18 @@ icon: mingcute:android-fill
## 해상도 자동 변경
::: steps
1. MAA 폴더 아래에 두 개의 텍스트 파일을 생성하고 다음 내용을 입력합니다.
```bash
```bat
:: 해상도를 1080p로 조정
adb -s <대상 장치 시리얼 번호> shell wm size 1080x1920
:: 화면 밝기 낮추기 (선택 사항)
adb -s <대상 장치 시리얼 번호> shell settings put system screen_brightness 1
```
```bash
```bat
:: 해상도 복원
adb -s <대상 장치 시리얼 번호> shell wm size reset
:: 화면 밝기 높이기 (선택 사항)
@@ -140,6 +146,8 @@ icon: mingcute:android-fill
3. MAA의 `설정` - `연결 설정` - `시작 전 스크립트` 및 `종료 후 스크립트`에 각각 `startup.bat`과 `finish.bat`을 입력합니다.
:::
## MAA에 연결하기
### 유선 연결
@@ -158,6 +166,8 @@ icon: mingcute:android-fill
#### `adb tcpip`를 사용하여 무선 포트를 엽니다
::: steps
1. 방금 열린 명령 프롬프트 창에 다음 명령을 입력하여 무선 디버깅을 활성화합니다.
```bash
@@ -172,12 +182,16 @@ icon: mingcute:android-fill
3. MAA `설정` - `연결 설정` - `연결 주소에` `<IP>:5555`와 같이 현재 장치의 IP 주소를 입력합니다. (예: `192.168.1.2:5555`)
4. Link Start!
:::
#### `adb pair`를 사용하여 무선 포트를 엽니다
::: tip
`adb pair`는 안드로이드 11 이상에서 개발자 옵션의 `무선 디버깅`을 사용하여 페어링한 후 연결하는 것으로, 유선 연결을 안할 수 있습니다.
:::
::: steps
1. 휴대폰의 개발자 옵션으로 이동하여 `무선 디버깅`을 클릭하여 활성화하고 확인을 클릭한 후 `페어링 코드로 디바이스 페어링`을 클릭하고 페어링이 완료될 때까지 나타나는 팝업을 닫지 마세요.
2. 페어링을 시작합니다.
@@ -188,11 +202,17 @@ icon: mingcute:android-fill
3. 현재 장치 화면에 나타나는 `<IP 주소 및 포트>`를 MAA `설정` - `연결 설정` - `연결 주소`에 입력합니다. (예: `192.168.1.2:11451`), **이전에 입력한 것과 반드시 다르게 입력하세요.**
4. Link Start!
:::
#### 루트 권한을 사용하여 무선 포트를 엽니다
~~root를 했으면 이 문서를 더이상 보지 않아도 됩니다~~
::: steps
1. [WADB](https://github.com/RikkaApps/WADB/releases)를 다운로드하고 루트 권한을 부여하여 설치합니다.
2. WADB를 열고 무선 adb를 시작합니다.
3. WADB에서 제공하는 IP 주소 및 포트를 MAA `설정` - `연결 설정` - `연결 주소`에 입력합니다. (예: `192.168.1.2:5555`)
4. Link Start!
:::

View File

@@ -19,7 +19,9 @@ MAA WPF GUI는 현재 Wine을 통해 실행할 수 있습니다. MAA는 .NET 런
#### 설치 단계
1. Visual C++ Redistributable 설치:
:::: steps
1. Visual C++ Redistributable 설치
[Visual C++ 재배포 가능 패키지](https://aka.ms/vc14/vc_redist.x64.exe)를 다운로드하고 설치합니다:
@@ -31,7 +33,11 @@ MAA WPF GUI는 현재 Wine을 통해 실행할 수 있습니다. MAA는 .NET 런
`DependencySetup_依赖库安装.bat`는 winget 및 Windows 권한 상승 메커니즘에 의존하므로 Wine에서 정상적으로 작동하지 않습니다. 따라서 런타임 라이브러리를 수동으로 설치해야 합니다.
:::
2. Windows용 MAA 다운로드하고 압축을 푼 후 `wine MAA.exe`를 실행합니다.
2. MAA 다운로드
Windows용 MAA를 다운로드하고 압축을 푼 후 `wine MAA.exe`를 실행합니다.
::::
::: info 주의
연결 설정에서 ADB 경로를 [Windows용 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)로 설정해야 합니다.

View File

@@ -13,9 +13,11 @@ icon: basil:apple-solid
참고: macOS 자체적인 문제로 인해 게임 창을 최소화하거나 배경으로 이동한 후 다른 창으로 전환하거나 창을 다른 데스크톱/화면으로 이동하는 경우 스크린샷이 문제가 발생하여 제대로 작동하지 않을 수 있습니다. 관련된 이슈 [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
::: steps
0. 요구 사항: MAA 버전 v4.13.0-rc.1 이상
1. [fork버전의 PlayCover](https://github.com/hguandl/PlayCover/releases)를 다운로드하고 설치하세요.
1. [fork 버전의 PlayCover](https://github.com/hguandl/PlayCover/releases)를 다운로드하고 설치하세요.
2. [복호화된 명일방주 설치 파일](https://decrypt.day/app/id1454663939)을 다운로드하고 PlayCover에 설치하세요.
@@ -29,6 +31,8 @@ icon: basil:apple-solid
7. 3-5 단계는 한 번만 수행하면 됩니다. 이후 명일방주를 다시 업데이트한 후에는 2단계를 다시 수행해야 합니다.
:::
### ✅ [MuMu 에뮬레이터 Pro](https://mumu.163.com/mac/)
지원됩니다. 그러나 테스트는 적고 `MacPlayTools` 이외의 터치 모드를 사용해야 합니다. 관련된 이슈 [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)

View File

@@ -7,15 +7,53 @@ icon: solar:streets-map-point-linear
현재 생존 연산 기능은 초기 단계이며, 현재 단계에서는 안정성을 보장할 수 없습니다.
## 기본 모드
## 사막 이야기Tales
### 기본 모드
1. 생존 연산 메인화면에서 시작해야합니다
2. 기존 데이터(진행사항)가 있으면 사용할 수 없습니다.
3. 생존 연산의 편성창에 오퍼레이터가 있으면 안됩니다.
## 도구 제조 모드
### 도구 제조 모드
1. 생존 연산 주둔지가 보이는 화면에서 시작해야합니다.
2. 제작할 도구 이름 미작성시, 기본적으로 형광봉을 만듭니다.
3. 결산 후 첫 번째 날이어야 하며, 이 후 3일 이내에 적의 침입이 없어야 합니다.
4. 제조 가능한 수량이 99의 배수일 경우 멈출 수 있습니다. 저장하기 전에 재료를 약간 사용한 후에 다시 시도하세요.
## 리런치 앵커RelaunchAnchor
### RA-1
- 수익 참고: 약 159 토큰 + 통합 포인트, 1회 약 2분 10초
- 오퍼레이터 요구사항: 없음
- 전제 조건: 메인 스토리에서 RA-1 클리어 상태
- 월드맵에서 RA-1을 열고, 우하단에 "건설 시작"이 나타나면 작업을 시작하면 자동 루프됩니다
- 주의: 시작 시 추가 아이템을 가져가는 기술을 해금한 경우, 해당 시설(식품 공급소, 음료 공급소, 대형 우리 등)을 제거해 주세요
- 작업 흐름: 정경세작→건설→자원 납품→결산 자동 루프
### RA-4
- 수익 참고: 약 417 토큰 + 통합 포인트, 1회 약 1분 40초
- 오퍼레이터 요구사항: 비샤델 (서포트 사용 가능)
- 사전 조건:
1. 메인 스토리를 진행하여 RA-4를 클리어한 상태로 만듭니다.
2. "전략 계획 경영"을 해금합니다.
3. 자신이 비샤델을 보유한 경우, 수동으로 스테이지를 열고 한 번 편성합니다. 비샤델보다 코스트가 낮은 임의의 5명의 오퍼레이터 + 비샤델로 하고, 비샤델을 6번째 슬롯(마지막으로 선택하는 자리)에 배치합니다. 그 후 모집을 확정하고, 이번 건설을 포기한 후 "건설 시작"에서 시작합니다.
4. 서포트 비샤델을 사용하는 경우, 비샤델이 스나이퍼 서포트 첫 페이지에 있는지 확인합니다(친구 고려). 수동으로 스테이지를 열어 비샤델보다 코스트가 낮은 임의의 5명의 오퍼레이터를 편성하고, 6번째 슬롯에 서포트 비샤델을 선택한 후 모집을 확정합니다. 그 후 이번 건설을 포기하고 "건설 시작"에서 시작합니다 (앞의 5개 슬롯에 오퍼레이터가 있고 6번째는 비어 있는지 확인).
- 월드맵에서 RA-4를 열고, 우하단에 "건설 시작"이 나타나면 작업을 시작하면 자동 루프됩니다
- 주의: 시작 시 추가 아이템을 가져가는 기술을 해금한 경우, 해당 시설(식품 공급소, 음료 공급소, 대형 우리 등)을 제거해 주세요
- 작업 흐름: "경영 계획"으로 얻은 적금을 사용하여 지역을 해금하고, 비샤델로 보스 처치 임무를 완료합니다。
### RA-15
- 수익 참고: 약 500 토큰 + 통합 포인트, 1회 약 3분
- 오퍼레이터 요구사항: 시빌라이트 에테르나 (서포트 사용 가능)
- 전제 조건:
1. 메인 스토리에서 RA-15 클리어 상태
2. 시빌라이트 에테르나를 보유한 경우, 수동으로 스테이지를 열고 편성 설정: 뱅가드 5기(육성 불필요) + 에테르나를 6번째에 배치, 저장 후 퇴장
3. 서포트 시빌라이트 에테르나 사용 시, 술사 서포트 첫 페이지에 표시되도록 조정
- 월드맵에서 RA-15를 열고, 우하단에 "건설 시작"이 나타나면 작업을 시작하면 자동 루프됩니다
- 주의: 시작 시 추가 아이템을 가져가는 기술을 해금한 경우, 해당 시설을 제거해 주세요
- 작업 흐름: 시빌라이트 에테르나로 60킬 미션 달성

View File

@@ -11,10 +11,14 @@ icon: fluent:people-24-filled
`즉시 완료 허가증` 자동 사용을 지원하며, 1회 실행 시 `최대 모집 횟수`를 설정할 수 있습니다. `즉시 완료 허가증 자동 사용`과 연계하여 모집권을 한 번에 모두 소모할 수도 있습니다.
1★, 5★, 6★ 나오면 알림이 표시됩니다.
보류 대상으로 지정한 태그, 5★ 태그, 6★ 태그가 나오면 알림이 표시됩니다.
공개모집이 될 때마다 공채 태그 데이터가 자동으로 [펭귄 물류](https://penguin-stats.cn/) 및 [Yituliu](https://ark.yituliu.cn/)에 업로드 됩니다.
## 고급 설정
`자동 모집`은 MAA가 태그를 자동으로 선택하고 모집을 진행합니다. `수동 모집`은 자동 선택 및 모집을 하지 않습니다.
`3★ 태그 우선`을 켜면 선호하는 3★ 태그를 추가로 고를 수 있습니다. `선택한 태그 보류`를 켜면 유지하고 싶은 태그를 고를 수 있습니다.
보류 대상으로 지정한 태그 중 하나라도 인식되면 MAA는 현재 공개모집 슬롯을 유지한 채 이번 모집을 건너뛰며, 확인을 진행하지 않습니다.

View File

@@ -11,13 +11,14 @@ icon: ic:round-rocket-launch
## 계정 전환
**글로벌 서버는 지원하지 않습니다. (CN만 가능)**
이 기능은 설정 전환 또는 정기 실행과 함께 사용해야 하며, `로그인` 작업이 실행될 때마다 계정 전환 작업이 수행됩니다.
이미 로그인된 계정으로만 전환할 수 있습니다. 로그인 이름으로 검색되므로 입력 내용이 모든 로그인된 계정에서 고유하도록 해주세요.
예시: `123****8901``123****8901`, `123`, `8901`, `3****8`로 입력될 수 있습니다.
- 예시:
- 공식 서버: `123****8901``123****8901`, `123`, `8901`, `3****8`로 입력될 수 있습니다.
- Bilibili 서버: `张三``张三`, `张`, `三`로 입력될 수 있습니다.
- 번체 중국어 서버: 계정은 Email 형식이며(예: `ab****01@gmail.com`), 별표가 없는 평문 부분(예: `01@gmail`) 입력을 권장합니다.
## 연결 설정

View File

@@ -11,26 +11,32 @@ icon: octicon:tools-16
이전에 오퍼레이터 인식을 실행한 경우 인식이 완료된 오퍼레이터의 잠재력 데이터가 표시됩니다.
## 오퍼레이터 인식 (Beta)
## 오퍼레이터 인식
보유한 및 보유하지 않은 오퍼레이터 목록을 인식하고 공개모집 인식에 표시될 잠재력 데이터를 인식하여 저장할 수 있습니다.
## 창고 인식 (Beta)
현재 다음과 같은 내보내기 형식을 지원합니다:
- 클립보드
- JSON
- Markdown 표
- CSV 표
## 창고 인식
메인 페이지에서 자동으로 창고 화면으로 이동하는 기능을 지원합니다. 자동으로 이동하는데 실패하면 수동으로 `육성 재료` 화면으로 전환하고 왼쪽 끝까지 슬라이드하여 기능을 시작하세요.
현재 [펭귄 물류](https://penguin-stats.cn/planner), [Arknights Toolbox](https://arkntools.app/#/material), [Arknights | Planner](https://ark-nights.com/settings)로 내보내기 기능을 지원합니다.
현재 다음과 같은 내보내기 형식을 지원합니다:
- [펭귄 물류](https://penguin-stats.io/planner) (ArkPlanner)
- [Arknights Toolbox](https://arkntools.app/#/material) (Lolicon)
- Markdown 표
- CSV 표
JSON 프로토콜과 통합을 희망하는 경우 언제든지 문의해주세요.
앞으로 더 유용한 기능이 추가될 **가능성**이 있습니다.
## 영상 인식 (Alpha)
전술 비디오를 인식하고 자동으로 자동지휘 파일을 생성할 수 있습니다. 비디오 파일을 자동지휘 탭 페이지로 끌어다 놓으면 시작됩니다.
가로세로 비율이 16:9 이고 720p 이상의 해상도를 갖는 비디오만 지원됩니다. 비디오 내용에는 검은 테두리, 왜곡 보정, 에뮬레이터 테두리 또는 기타 요소가 없어야 합니다.
## 헤드헌팅 (가챠)
::: center
@@ -48,3 +54,15 @@ MAA의 눈을 통해 세상을 보고 싶나요? 이제 그것이 왔습니다!
MAA는 목표 프레임 레이트로 에뮬레이터에서 스크린샷을 시도하고, 실시간으로 창에 스크린샷을 표시합니다.
스크린샷 속도가 목표 프레임 레이트에 비해 현저히 느릴 때, MAA는 스크린샷 속도에 맞추기 위해 목표 프레임 레이트를 자동으로 낮춥니다. ~~스트레스 테스트로 사용할 수 있습니다~~
## 미니게임
이벤트의 미니게임을 자동으로 반복합니다. 이름 선택을 지원하며, 설정에서 상설과 현재 한정 이벤트를 전환할 수 있습니다.
내장 기능:
- 이벤트 상점 교환
- 초록 티켓 상점 교환
- 노란 티켓 상점 교환
- 생식연산 상점 교환
- 시크릿 프론트 (엔딩과 이벤트 분기 선택 지원)

View File

@@ -137,6 +137,6 @@ JSON 파일은 주석을 지원하지 않으므로, 텍스트 내의 주석은
## 예시
[243 극한 효율, 하루 3회 교대](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json)
[243 극한 효율, 하루 3회 교대](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/243_layout_3_times_a_day.json)
[153 극한 효율, 하루 3회 교대](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json)
[153 극한 효율, 하루 3회 교대](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/153_layout_3_times_a_day.json)

View File

@@ -265,7 +265,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
- `MedicineConfirm`
이성 회복제 사용 확인
- `ExpiringMedicineConfirm`
48시간 내 만료되는 이성 회복제 사용 확인
만료 임박한 이성 회복제 사용 확인
- `StoneConfirm`
오리지늄 사용 확인
- `RecruitRefreshConfirm`
@@ -364,6 +364,15 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
:::
::::
- `RecruitPreservedTag`
공개모집에서 보류 대상으로 설정된 태그를 식별했습니다. `details` 필드 내용은 다음과 같습니다:
:::: field-group
::: field name="tag" type="string" required
보류를 트리거한 태그 명칭, 예: `지원 기계`
:::
::::
- `RecruitResult`
공개모집 식별 결과. `details` 필드 구조는 다음과 같습니다:
- `tags` (array, required): 식별된 모든 태그, 현재 5개로 고정

View File

@@ -64,6 +64,8 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
공식 서버: `123****4567`인 경우 `123****4567`, `4567`, `123`, `3****4567` 입력 가능
<br>
Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
<br>
번체 중국어 서버: 계정은 Email 형식이며(예: `ab****01@gmail.com`), 별표가 없는 평문 부분(예: `01@gmail`) 입력을 권장합니다
:::
::::
@@ -128,8 +130,11 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
::: field name="medicine" type="number" optional default="0"
이성 회복제 최대 사용 개수
:::
::: field name="expiring_medicine" type="number" optional default="0"
48시간 내 만료되는 이성 회복제 최대 사용 개수
::: field name="medicine_expire_days" type="number" optional default="0"
지정된 일수 이내에 만료되는 이성 회복제를 사용합니다. `0`은 만료 임박 이성 회복제를 사용하지 않음을 의미합니다.
:::
::: field name="expiring_medicine" type="number" optional default="0" deprecated
v6.8.0부터 폐기됨. 대신 `medicine_expire_days`를 사용하세요.
:::
::: field name="stone" type="number" optional default="0"
오리지늄 최대 사용 개수
@@ -184,7 +189,7 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
"enable": true,
"stage": "1-7",
"medicine": 1,
"expiring_medicine": 0,
"medicine_expire_days": 2,
"stone": 0,
"times": 10,
"series": 0,
@@ -248,7 +253,14 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
즉시 완료 사용 횟수, `expedite`가 true일 때만 유효. 기본값은 무제한(즉 `times` 상한까지)
:::
::: field name="skip_robot" type="boolean" optional default="true"
로봇 태그 인식 시 건너뛸지 여부
폐기 예정이며 구형 파라미터 호환용으로만 유지됩니다.
<br>
`preserve_tags`가 없고 이 값이 `true`이면 `支援机械` 인식 시에만 건너뜁니다. `元素`는 더 이상 구형 1★ 태그로 취급하지 않습니다.
:::
::: field name="preserve_tags" type="array<string>" optional
현재 공개모집 슬롯을 유지한 채 이번 모집을 건너뛸 Tag 이름 목록입니다. 기본값은 빈 배열입니다.
<br>
지정한 Tag 중 하나라도 인식되면 MAA는 해당 슬롯을 유지하고 이번 모집을 건너뜁니다.
:::
::: field name="recruitment_time" type="object" optional
태그 등급(3 이상)과 대응하는 희망 모집 시간(분 단위), 기본값은 모두 540(즉 09:00:00)
@@ -289,7 +301,7 @@ Yituliu 전송 ID, 기본값 비어 있음. `report_to_yituliu`가 true일 때
"set_time": true,
"expedite": false,
"expedite_times": 0,
"skip_robot": true,
"preserve_tags": ["支援机械"],
"recruitment_time": {
"3": 540,
"4": 540
@@ -899,32 +911,44 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
::: field name="enable" type="boolean" optional default="true"
본 작업 활성화 여부
:::
::: field name="theme" type="string" optional default="Fire"
::: field name="theme" type="string" optional default="Tales"
테마
<br>
`Fire` - _모래 속의 불_
`Fire` - _모래 속의 불_(종료)
<br>
`Tales` - _사막 이야기_
`Tales` - _사막 이야기_
<br>
`RelaunchAnchor` - _리런치 앵커_
:::
::: field name="mode" type="number" optional default="0"
모드
모드. 테마마다 지원하는 모드가 다릅니다:
<br>
`0` - 점수 및 건설 포인트 파밍, 전투 진입 후 바로 포기
**Tales사막 이야기):**
<br>
`1` - 모래 속의 불: 적금 파밍, 연락원에게 물 구매 후 기지에서 주조; 사막 이야기: 자동 아이템 제작 및 로드 반복으로 화폐 파밍
`0` - 세이브 없음, 스테이지 반복으로 번영의 선물 획득。
<br>
`1` - 세이브 있음, 도구 제작으로 번영의 선물 획득。
<br>
**RelaunchAnchor리런치 앵커):**
<br>
`16` (`RA1`) - RA-1, 정경세작→건설→자원 납품→결산 자동 루프。
<br>
`32` (`RA15`) - RA-15, 시빌라이트 에테르나로 60킬 미션 달성。
<br>
`48` (`RA4`) - RA-4, "경영 계획"으로 얻은 적금을 사용하여 지역을 해금하고, 비샤델로 보스 처치 임무를 완료합니다。
:::
::: field name="tools_to_craft" type="array<string>" optional default="[&quot;荧光棒&quot;]"
자동 제작 아이템, 부분 문자열 입력 권장
자동 제작 아이템, 부분 문자열 입력 권장. Tales 테마에서만 유효
:::
::: field name="increment_mode" type="number" optional default="0"
클릭 유형
클릭 유형. Tales 테마에서만 유효
<br>
`0` - 연타
<br>
`1` - 꾹 누르기
:::
::: field name="num_craft_batches" type="number" optional default="16"
1회 최대 제작 배치 수
1회 최대 제작 배치 수. Tales 테마에서만 유효
:::
::::

View File

@@ -46,7 +46,7 @@ icon: jam:write-f
- `warning` 注意
- `danger` 警告
- `details` 详情
- `demo-warpper` ==特殊容器==
- `window` ==特殊容器==
### 容器示例
@@ -74,7 +74,7 @@ icon: jam:write-f
这是详情容器
:::
::: demo-wrapper
::: window
这是一个很特殊的容器
:::
@@ -115,7 +115,7 @@ MaaAssistantArknights 是由 ==很多猪== 开发的
有以下配置可以使用
::: demo-wrapper
::: window
输入:
```markdown
@@ -192,7 +192,7 @@ MaaAssistantArknights 是由 ==很多猪== 开发的
你可以在 markdown 正文中使用 `<ImageGrid>` 组件来调用该方法,具体的语法和效果如下
::: demo-wrapper
::: window
这是语法:
@@ -292,7 +292,7 @@ icon: jam:write-f
- `color` 接受 css 风格的颜色值,如 `#fff``red` 等(该选项仅对 svg 图标有效)
- `size` 接受 css 风格的大小,如 `1rem``2em``100px` 等
::: demo-wrapper 案例
::: window 案例
输入:

View File

@@ -195,7 +195,7 @@ strategy = "merge" # 或者 "first" (默认)
# 在周天晚上使用所有的将要过期的理智药
[[tasks.variants]]
params = { expiring_medicine = 1000 }
params = { medicine_expire_days = 2 }
[tasks.variants.condition]
type = "And"

View File

@@ -26,6 +26,8 @@ icon: mingcute:android-fill
## 下载、运行 ADB 调试工具并连接设备
::: steps
1. 下载 [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 并解压。
2. 打开解压后的文件夹,清空地址栏并输入 `cmd` 后回车。
3. 在弹出的命令提示符窗口中输入 `adb` ,若给出大量英文帮助文本则运行成功。
@@ -36,6 +38,8 @@ icon: mingcute:android-fill
adb devices
```
:::
- 成功执行后会给出已连接 `USB 调试` 设备的信息。
- 连接成功的例子:
@@ -114,23 +118,25 @@ icon: mingcute:android-fill
## 自动化更改分辨率
::: steps
1. 在 MAA 目录下新建两个文本文件,分别在其中填入以下内容。
```bash
# 调整分辨率为 1080p
```bat
:: 调整分辨率为 1080p
adb -s <目标设备序列号> shell wm size 1080x1920
# 降低屏幕亮度(可选)
:: 降低屏幕亮度(可选)
adb -s <目标设备序列号> shell settings put system screen_brightness 1
```
```bash
# 还原分辨率
```bat
:: 还原分辨率
adb -s <目标设备序列号> shell wm size reset
# 提高屏幕亮度(可选)
:: 提高屏幕亮度(可选)
adb -s <目标设备序列号> shell settings put system screen_brightness 20
# 返回桌面(可选)
:: 返回桌面(可选)
adb -s <目标设备序列号> shell input keyevent 3
# 锁屏(可选)
:: 锁屏(可选)
adb -s <目标设备序列号> shell input keyevent 26
```
@@ -139,6 +145,8 @@ icon: mingcute:android-fill
3. 在 MAA 的 `设置` - `连接设置` - `开始前脚本` 和 `结束后脚本` 中分别填入 `startup.bat` 和 `finish.bat`。
:::
## 连接 MAA
### 有线连接
@@ -157,6 +165,8 @@ icon: mingcute:android-fill
#### 使用 `adb tcpip` 开启无线端口
::: steps
1. 在刚刚的命令提示符窗口中输入以下命令以开启无线调试。
```bash
@@ -171,12 +181,16 @@ icon: mingcute:android-fill
3. 将 `<IP>:5555` 填入 MAA `设置` - `连接设置` - `连接地址` 中,如 `192.168.1.2:5555`。
4. Link Start!
:::
#### 使用 `adb pair` 开启无线端口
::: tip
`adb pair` 无线配对,即使用安卓 11 及更新版本中开发者选项内的 `无线调试` 进行配对后连接,与 `adb tcpip` 相比可以避免有线连接。
:::
::: steps
1. 进入手机开发者选项,点击 `无线调试` 并开启,点击确定,点击 `使用配对码配对设备`,在配对完成前不要关闭出现的弹窗。
2. 进行配对。
@@ -187,11 +201,17 @@ icon: mingcute:android-fill
3. 将当前设备屏幕上给出的 `<IP 地址和端口>` 填入 MAA `设置` - `连接设置` - `连接地址` 中,如 `192.168.1.2:11451`**一定和刚刚填写的不一样**。
4. Link Start!
:::
#### 使用 root 权限开启无线端口
~~都接触到 root 了还用得着看这段文档吗~~
::: steps
1. 下载、安装 [WADB](https://github.com/RikkaApps/WADB/releases) 并授予其 root 权限。
2. 打开 WADB启动无线 adb。
3. 将 WADB 提供的 IP 地址及端口填入 MAA `设置` - `连接设置` - `连接地址` 中,如 `192.168.1.2:5555`。
4. Link Start!
:::

View File

@@ -19,7 +19,9 @@ MAA WPF GUI 当前可以通过 Wine 运行。MAA 已采用自包含部署方式
#### 安装步骤
1. 安装 Visual C++ Redistributable
:::: steps
1. 安装 Visual C++ Redistributable
下载并安装 [Visual C++ 可再发行程序包](https://aka.ms/vc14/vc_redist.x64.exe)
@@ -31,7 +33,11 @@ MAA WPF GUI 当前可以通过 Wine 运行。MAA 已采用自包含部署方式
`DependencySetup_依赖库安装.bat` 基于 winget 和 Windows 提权机制,通常无法在 Wine 中正常工作,因此需要手动安装运行库。
:::
2. 下载 Windows 版 MAA解压后运行 `wine MAA.exe`。
2. 下载 MAA
下载 Windows 版 MAA解压后运行 `wine MAA.exe`。
::::
::: info 注意
需要在连接设置中将 ADB 路径设置为 [Windows 版 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)。
@@ -109,7 +115,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。MAA 已采用自包含部署方式
3. 任务配置
自定义任务: 根据需要参考 [集成文档](../../protocol/integration.md) 对 `sample.py` 的 [`# 任务及参数请参考 docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏进行修改
自定义任务: 根据需要参考 [集成文档](../../protocol/integration.md) 对 `sample.py` 的 [`# 任务及参数请参考 docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏进行修改
::::

View File

@@ -13,6 +13,8 @@ icon: basil:apple-solid
注意:由于 `macOS` 本身机制的问题,将游戏窗口最小化、台前调度状态下切换到别的窗口、将窗口移动到别的桌面/屏幕之后,截图会出现问题,导致无法正确运行。相关 Issue [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
::: steps
0. 要求MAA 版本 v4.13.0-rc.1 以上
1. 下载 [fork 版本的 PlayCover](https://github.com/hguandl/PlayCover/releases) 并安装。
@@ -29,6 +31,8 @@ icon: basil:apple-solid
7. 3-5 步骤只需要做一次,之后只需要启动明日方舟即可。在明日方舟每次更新客户端之后,需要重新做第 2 步。
:::
### ✅ [MuMu 模拟器 Pro](https://mumu.163.com/mac/)
支持,但测试较少,需使用除 `MacPlayTools` 以外的触控模式。相关 Issue [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)

View File

@@ -7,15 +7,53 @@ icon: solar:streets-map-point-linear
目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。
## 默认模式
## 沙洲遗闻Tales
### 默认模式
1. 需要在生息演算主界面开始任务(导航还没写)
2. 不能在已经有存档的情况下使用(删除现有存档即可)
3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后)
## 制造刷点数
### 制造刷点数
1. 需要在进入生息演算中能看到驻扎地的页面开始
2. 若未填写道具名称,则默认制造荧光棒
3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地
4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修
## 重启锚点RelaunchAnchor
### RA-1
- 收益参考:每把约 159 代币 + 统筹点数,单轮耗时约 2 分 10 秒
- 干员要求:无
- 前置步骤:推进主线至 RA-1 已通关状态
- 在大地图打开 RA-1右下角出现「开启建设」时启动任务即可自动循环
- 注意:如果已解锁开局额外携带物品的相关科技,请将基地内会导致开局额外携带物品的设施拆除,如食品供给站、饮品供给站、兽栏等
- 任务流程:自动执行精耕细作、建设、交付资源、结算循环
### RA-4
- 收益参考:每把约 417 代币 + 统筹点数,单轮耗时约 1 分 40 秒
- 干员要求:维什戴尔(可以借助战)
- 前置步骤:
1. 推进主线至 RA-4 已通关状态
2. 解锁策略筹划经营
3. 如果自己有维什戴尔,请手动打开关卡并配队一次,保证为任意 5 个费用比维什戴尔低的干员+ 维什戴尔,且维什戴尔位于六号位即最后一个选的人,然后确认招募,放弃本次建设并在开始建设处开始
4. 如果使用助战维什戴尔,请保证维什戴尔在狙击助战首页(考虑挚友),请手动打开关卡编入任意 5 个费用比维什戴尔低的干员,六号位选择维什戴尔助战后确认招募,放弃本次建设并在开始建设处开始(保证队伍前五位有人且六号位为空)
- 在大地图打开 RA-4右下角出现「开启建设」时启动任务即可自动循环
- 注意:如果已解锁开局额外携带物品的相关科技,请将基地内会导致开局额外携带物品的设施拆除,如食品供给站、饮品供给站、兽栏等
- 任务流程:使用筹划经营策略给予的赤金解锁区域,使用维什戴尔完成击杀 boss 任务
### RA-15
- 收益参考:每把约 500 代币 + 统筹点数,单轮耗时约 3 分钟
- 干员要求:圣聆初雪(可以借助战)
- 前置步骤:
1. 推进主线至 RA-15 已通关状态
2. 如果自己有圣聆初雪,请手动打开关卡并配队一次,保证为五先锋(无练度要求)+ 初雪,且初雪位于六号位即最后一个选的人,然后保存配队并退出关卡
3. 如果使用助战圣聆初雪,请保证圣聆初雪在术士助战首页(考虑挚友)
- 在大地图打开 RA-15右下角出现「开启建设」时启动任务即可自动循环
- 注意:如果已解锁开局额外携带物品的相关科技,请将基地内会导致开局额外携带物品的设施拆除,如食品供给站、饮品供给站、兽栏等
- 任务流程:用圣聆初雪完成 60 杀任务

View File

@@ -11,10 +11,14 @@ icon: fluent:people-24-filled
支持自动使用 `加急许可`,支持设置单次任务最大招募次数,可配合 `自动使用加急许可` 一次性刷光招募券。
当识别到出现 1、5、6 星标签会弹出通知提示。
当识别到保留词条、5 星标签或 6 星标签会弹出通知提示。
公招刷新时会自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。
## 高级设置
`自动确认` 即 MAA 自动选择标签并进行招募,`手动确认` 即不进行自动选择与招募。
勾选 `3 星 tag 倾向` 后,可进一步选择首选的 3 星 Tag勾选 `保留指定词条` 后,可选择需要保留的 Tag。
当识别到任一保留词条时MAA 会跳过当前公招槽位并保留该栏位,不会继续确认本次招募。

View File

@@ -18,6 +18,7 @@ icon: ic:round-rocket-launch
- 例子:
- 官服:`123****8901`,可输入 `123****8901``123``8901``3****8`
- B 服:`张三`,可输入 `张三``张``三`
- 繁中服:账号为 Email`ab****01@gmail.com`,建议填不含星号的明文片段,如 `01@gmail`
## 连接设置

View File

@@ -11,26 +11,32 @@ icon: octicon:tools-16
如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。
## 干员识别 (Beta)
## 干员识别
可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。
## 仓库识别 (Beta)
目前支持以下导出格式:
- 剪贴板
- JSON
- Markdown 表格
- CSV 表格
## 仓库识别
支持从首页自动进入仓库。若自动跳转失败,请手动切换到仓库 `养成材料` 界面并**滑动到最左侧**后开始功能。
目前支持导出到[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 干员培养表](https://ark-nights.com/settings)。
目前支持以下导出格式:
- [企鹅物流刷图规划器](https://penguin-stats.cn/planner)ArkPlanner
- [明日方舟工具箱](https://arkntools.app/#/material)Lolicon
- Markdown 表格
- CSV 表格
如您是某个数据站的站长,也欢迎联系我们适配贵站的材料 JSON 协议~
也许后面可能会用来做一些更实用的功能。(画饼
## 视频识别 (Alpha)
可识别攻略视频,并自动生成作业文件,在自动战斗页面拖入视频文件即可启动。
要求 16:9 画幅 720p 及以上画质,无黑边、模拟器边框、异形屏适配等干扰因素。
## 牛牛抽卡
::: center
@@ -48,3 +54,15 @@ icon: octicon:tools-16
MAA 会尝试以目标帧率对模拟器进行截图,并将截图实时显示在窗口中。
在截图速度相对目标帧率来说明显过慢时MAA 会主动降低目标帧率以匹配截图速度。~~可以拿来当压力测试~~
## 牛杂
用于自动刷活动中的小游戏。支持选择名称,并可在设置中切换常驻与当期限时活动。
内置功能包括:
- 活动商店兑换
- 绿票商店兑换
- 黄票商店兑换
- 生息演算商店兑换
- 秘密前线(支持选择结局和事件分支)

View File

@@ -137,6 +137,6 @@ icon: material-symbols:view-quilt-rounded
## 举例
[243 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json)
[243 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/243_layout_3_times_a_day.json)
[153 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json)
[153 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/153_layout_3_times_a_day.json)

View File

@@ -265,7 +265,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
- `MedicineConfirm`
使用理智药
- `ExpiringMedicineConfirm`
使用 48 小时内过期的理智药
使用即将过期的理智药
- `StoneConfirm`
碎石
- `RecruitRefreshConfirm`
@@ -364,6 +364,15 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
:::
::::
- `RecruitPreservedTag`
公招识别到了已配置为保留的 Tag。`details` 字段内容如下:
:::: field-group
::: field name="tag" type="string" required
触发保留的 Tag 名称,例如 `支援机械`。
:::
::::
- `RecruitResult`
公招识别结果。`details` 字段结构如下:
- `tags` (array, required): 所有识别到的 tags目前固定为 5 个。

View File

@@ -64,6 +64,8 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
官服:`123****4567`,可输入 `123****4567``4567``123``3****4567`
<br>
B服`张三`,可输入 `张三``张``三`
<br>
繁中服:账号为 Email`ab****01@gmail.com`,建议填不含星号的明文片段,如 `01@gmail`
:::
::::
@@ -134,8 +136,11 @@ B服`张三`,可输入 `张三`、`张`、`三`
::: field name="medicine" type="number" optional default="0"
最大使用理智药数量。
:::
::: field name="expiring_medicine" type="number" optional default="0"
最大使用 48 小时内过期理智药数量
::: field name="medicine_expire_days" type="number" optional default="0"
使用过期时间在指定天数内的理智药0 表示不使用过期理智药。
:::
::: field name="expiring_medicine" type="number" optional default="0" deprecated
已弃用,自 v6.8.0 起请使用 `medicine_expire_days` 代替。
:::
::: field name="stone" type="number" optional default="0"
最大吃石头数量。
@@ -197,7 +202,7 @@ B服`张三`,可输入 `张三`、`张`、`三`
"enable": true,
"stage": "1-7",
"medicine": 1,
"expiring_medicine": 0,
"medicine_expire_days": 2,
"stone": 0,
"times": 10,
"series": 0,
@@ -259,7 +264,14 @@ B服`张三`,可输入 `张三`、`张`、`三`
加急次数,仅在 `expedite` 为 true 时有效。默认无限使用(直到 `times` 达到上限)。
:::
::: field name="skip_robot" type="boolean" optional default="true"
是否在识别到小车词条时跳过
已废弃,仅用于兼容旧参数
<br>
当未提供 `preserve_tags` 且该值为 `true` 时,会在识别到 `支援机械` 时跳过;`元素` 不再视为旧版 1 星词条。
:::
::: field name="preserve_tags" type="array<string>" optional
需要保留并跳过当前公招槽位的 Tag 名称列表。默认为空。
<br>
当识别到任一指定 Tag 时MAA 会保留该槽位并跳过本次招募。
:::
::: field name="recruitment_time" type="object" optional
Tag 等级(大于等于 3和对应的希望招募时限单位为分钟默认值都为 540即 09:00:00
@@ -300,7 +312,7 @@ Tag 等级(大于等于 3和对应的希望招募时限单位为分钟
"set_time": true,
"expedite": false,
"expedite_times": 0,
"skip_robot": true,
"preserve_tags": ["支援机械"],
"recruitment_time": {
"3": 540,
"4": 540
@@ -910,32 +922,44 @@ Tag 等级(大于等于 3和对应的希望招募时限单位为分钟
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="theme" type="string" optional default="Fire"
::: field name="theme" type="string" optional default="Tales"
主题。
<br>
`Fire` - _沙中之火_
`Fire` - _沙中之火_(已关闭)
<br>
`Tales` - _沙洲遗闻_
`Tales` - _沙洲遗闻_
<br>
`RelaunchAnchor` - _重启锚点_
:::
::: field name="mode" type="number" optional default="0"
模式。
模式。不同主题支持的模式不同:
<br>
`0` - 刷分与建造点,进入战斗直接退出。
**Tales沙洲遗闻**
<br>
`1` - 沙中之火:刷赤金,联络员买水后基地锻造;沙洲遗闻:自动制造物品并读档刷货币。
`0` - 无存档,通过进出关卡刷生息点数。
<br>
`1` - 有存档,通过组装支援道具刷生息点数。
<br>
**RelaunchAnchor重启锚点**
<br>
`16` (`RA1`) - RA-1自动执行精耕细作、建设、交付资源、结算循环。
<br>
`32` (`RA15`) - RA-15用圣聆初雪完成 60 杀任务。
<br>
`48` (`RA4`) - RA-4使用筹划经营策略给予的赤金解锁区域使用维什戴尔完成击杀 boss 任务。
:::
::: field name="tools_to_craft" type="array<string>" optional default="[&quot;荧光棒&quot;]"
自动制造的物品,建议填写子串。
自动制造的物品,建议填写子串。仅 Tales 主题有效。
:::
::: field name="increment_mode" type="number" optional default="0"
点击类型。
点击类型。仅 Tales 主题有效。
<br>
`0` - 连点
<br>
`1` - 长按
:::
::: field name="num_craft_batches" type="number" optional default="16"
单次最大制造轮数。
单次最大制造轮数。仅 Tales 主题有效。
:::
::::

View File

@@ -117,7 +117,7 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
- [集成文档](./protocol/integration.md)
- [回调消息协议](./protocol/callback-schema.md)
- [任务流程协议](./protocol/task-schema.md)
- [自动抄作业协议](./protocol/copilot-schema.md)
- [自动战斗协议](./protocol/copilot-schema.md)
### 外服适配

View File

@@ -46,7 +46,7 @@ icon: jam:write-f
- `warning` 注意
- `danger` 警告
- `details` 詳情
- `demo-warpper` ==特殊容器==
- `window` ==特殊容器==
### 容器範例
@@ -74,7 +74,7 @@ icon: jam:write-f
這是詳情容器
:::
::: demo-wrapper
::: window
這是一個很特殊的容器
:::
@@ -115,7 +115,7 @@ MaaAssistantArknights 是由 ==很多豬== 開發的
有以下配置可以使用:
::: demo-wrapper
::: window
輸入:
```markdown
@@ -192,7 +192,7 @@ MaaAssistantArknights 是由 ==很多豬== 開發的
您可以在 Markdown 正文中使用 `<ImageGrid>` 元件來呼叫該方法,具體的語法和效果如下:
::: demo-wrapper
::: window
這是語法:
@@ -292,7 +292,7 @@ icon: jam:write-f
- `color` 接受 CSS 風格的顏色值,如 `#fff``red` 等(該選項僅對 SVG 圖示有效)。
- `size` 接受 CSS 風格的大小,如 `1rem``2em``100px` 等。
::: demo-wrapper 範例
::: window 範例
輸入:

View File

@@ -195,7 +195,7 @@ strategy = "merge" # 或者 "first" (預設)
# 在週日晚上使用所有將要過期的理智藥
[[tasks.variants]]
params = { expiring_medicine = 1000 }
params = { medicine_expire_days = 2 }
[tasks.variants.condition]
type = "And"

View File

@@ -26,6 +26,8 @@ icon: mingcute:android-fill
## 下載、執行 ADB 除錯工具並連線設備
::: steps
1. 下載 [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 並解壓縮。
2. 開啟解壓縮後的資料夾,清空位址列並輸入 `cmd` 後按下 Enter。
3. 在彈出的命令提示字元視窗中輸入 `adb`,若出現大量英文說明文字則表示執行成功。
@@ -36,6 +38,8 @@ icon: mingcute:android-fill
adb devices
```
:::
- 成功執行後會顯示已連線 `USB 除錯` 設備的資訊。
- 連線成功的例子:
@@ -114,23 +118,25 @@ icon: mingcute:android-fill
## 自動化更改解析度
::: steps
1. 在 MAA 目錄下新建兩個文字檔案,分別在其中填入以下內容:
```bash
# 調整解析度為 1080p
```bat
:: 調整解析度為 1080p
adb -s <目標設備序號> shell wm size 1080x1920
# 降低螢幕亮度(選填)
:: 降低螢幕亮度(選填)
adb -s <目標設備序號> shell settings put system screen_brightness 1
```
```bash
# 還原解析度
```bat
:: 還原解析度
adb -s <目標設備序號> shell wm size reset
# 提高螢幕亮度(選填)
:: 提高螢幕亮度(選填)
adb -s <目標設備序號> shell settings put system screen_brightness 20
# 返回桌面(選填)
:: 返回桌面(選填)
adb -s <目標設備序號> shell input keyevent 3
# 鎖定螢幕(選填)
:: 鎖定螢幕(選填)
adb -s <目標設備序號> shell input keyevent 26
```
@@ -139,6 +145,8 @@ icon: mingcute:android-fill
3. 在 MAA 的 `設定 - 連線設定 - 開始前腳本` 和 `結束後腳本` 中分別填入 `startup.bat` 和 `finish.bat`。
:::
## 連線 MAA
### 有線連線
@@ -157,6 +165,8 @@ icon: mingcute:android-fill
#### 使用 `adb tcpip` 開啟無線連接埠
::: steps
1. 在剛才的命令提示字元視窗中輸入以下指令以開啟無線除錯:
```bash
@@ -172,12 +182,16 @@ icon: mingcute:android-fill
4. Link Start!
:::
#### 使用 `adb pair` 開啟無線連接埠
::: tip
`adb pair` 無線配對,即使用 Android 11 及更新版本中開發者選項內的 `無線偵錯` 進行配對後連線,與 `adb tcpip` 相比可以避免有線連線。
:::
::: steps
1. 進入手機開發者選項,點選 `無線偵錯` 並開啟,點選確定,點選 `使用配對碼配對設備`,在配對完成前不要關閉出現的彈窗。
2. 進行配對。
@@ -185,15 +199,21 @@ icon: mingcute:android-fill
2. 輸入 `<設備彈窗提供的六位配對碼>`,按下 Enter。
3. 視窗出現 `Successfully paired to <IP:連接埠>` 等內容,同時設備上的彈窗自動消失,底部已配對的設備中出現電腦名稱。
3. 將目前設備螢幕上顯示的 <`IP 位址和連接埠>` 填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:11451`,請注意**一定與剛才填寫的位址不同**。
3. 將目前設備螢幕上顯示的 `<IP 位址和連接埠>` 填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:11451`,請注意**一定與剛才填寫的位址不同**。
4. Link Start!
:::
#### 使用 root 權限開啟無線連接埠
~~都接觸到 Root 了還需要看這段文件嗎~~
::: steps
1. 下載、安裝 [WADB](https://github.com/RikkaApps/WADB/releases) 並授予其 Root 權限。
2. 開啟 WADB啟動無線 ADB。
3. 將 WADB 提供的 IP 位址及連接埠填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:5555`。
4. Link Start!
:::

View File

@@ -19,7 +19,9 @@ MAA WPF GUI 當前可以透過 Wine 執行。MAA 已採用自包含部署方式
#### 安裝步驟
1. 安裝 Visual C++ Redistributable
:::: steps
1. 安裝 Visual C++ Redistributable
下載並安裝 [Visual C++ 可再發行套件](https://aka.ms/vc14/vc_redist.x64.exe)
@@ -31,7 +33,11 @@ MAA WPF GUI 當前可以透過 Wine 執行。MAA 已採用自包含部署方式
`DependencySetup_依赖库安装.bat` 基於 winget 和 Windows 提權機制,通常無法在 Wine 中正常工作,因此需要手動安裝執行庫。
:::
2. 下載 Windows 版 MAA解壓縮後執行 `wine MAA.exe`。
2. 下載 MAA
下載 Windows 版 MAA解壓縮後執行 `wine MAA.exe`。
::::
::: info 注意
需要在連線設定中將 ADB 路徑設定為 [Windows 版 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)。

View File

@@ -13,6 +13,8 @@ icon: basil:apple-solid
請注意:由於 `macOS` 本身機制的限制,將遊戲視窗最小化、幕前排程 (Stage Manager) 狀態下切換到其他視窗、或將視窗移動到其他桌面 / 螢幕後,截圖會出現問題,導致無法正確執行。相關 Issue [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
::: steps
0. 要求MAA 版本 v4.13.0-rc.1 以上
1. 下載 [fork 版本的 PlayCover](https://github.com/hguandl/PlayCover/releases) 並安裝。
@@ -29,6 +31,8 @@ icon: basil:apple-solid
7. 3-5 步驟只需要做一次,之後只需要啟動《明日方舟》即可。在《明日方舟》每次更新客戶端之後,需要重新執行第 2 步。
:::
### ✅ [MuMu 模擬器 Pro](https://mumu.163.com/mac/)
支援,但測試較少,需使用除 `MacPlayTools` 以外的觸控模式。相關 Issue [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)

View File

@@ -7,15 +7,53 @@ icon: solar:streets-map-point-linear
目前生息演算的支援仍處於早期階段,暫不推薦無人看守執行,現階段無法保證穩定性。
## 預設模式
## 沙洲遺聞Tales
### 預設模式
1. 需要在生息演算主介面開始任務(導航功能尚未開發)。
2. 不能在已有存檔的情況下使用(刪除現有存檔即可)。
3. 不能在生息演算的編隊中有幹員的情況下使用(將生息演算中的目前編隊清空即可,特別是打完浪潮之後)。
## 製造刷點數
### 製造刷點數
1. 需要在進入生息演算中能看到駐紮地的頁面開始。
2. 若未填寫道具名稱,則預設製造螢光棒。
3. 前置條件:目前為結算後的第一天,且後續三天沒有敵襲進入駐紮地。
4. 如果能製造的數量剛好是 99 的倍數會卡住,在存檔前可以先用掉一點,這個問題之後會再修正。
## 重啟錨點RelaunchAnchor
### RA-1
- 收益參考:每把約 159 代幣 + 統籌點數,單輪耗時約 2 分 10 秒
- 幹員要求:無
- 前置步驟:推進主線至 RA-1 已通關狀態
- 在大地圖打開 RA-1右下角出現「開啟建設」時啟動任務即可自動循環
- 注意:如果已解鎖開局額外攜帶物品的相關科技,請將基地內會導致開局額外攜帶物品的設施拆除,如食品供給站、飲品供給站、大型獸欄等
- 任務流程:自動執行精耕細作、建設、交付資源、結算循環
### RA-4
- 收益參考:每把約 417 代幣 + 統籌點數,單輪耗時約 1 分 40 秒
- 幹員要求:維什戴爾(可借助戰)
- 前置步驟:
1. 推進主線至 RA-4 已通關狀態
2. 解鎖策略籌劃經營
3. 如果自己有維什戴爾,請手動打開關卡並配隊一次,保證為任意 5 個費用比維什戴爾低的幹員+ 維什戴爾,且維什戴爾位於六號位即最後一個選的人,然後確認招募,放棄本次建設並在開始建設處開始
4. 如果使用助戰維什戴爾,請保證維什戴爾在狙擊助戰首頁(考慮摯友),請手動打開關卡編入任意 5 個費用比維什戴爾低的幹員,六號位選擇維什戴爾助戰後確認招募,放棄本次建設並在開始建設處開始(保證隊伍前五位有人且六號位為空)
- 在大地圖打開 RA-4右下角出現「開啟建設」時啟動任務即可自動循環
- 注意:如果已解鎖開局額外攜帶物品的相關科技,請將基地內會導致開局額外攜帶物品的設施拆除,如食品供給站、飲品供給站、大型獸欄等
- 任務流程:使用籌劃經營策略給予的赤金解鎖區域,使用維什戴爾完成擊殺 boss 任務
### RA-15
- 收益參考:每把約 500 代幣 + 統籌點數,單輪耗時約 3 分鐘
- 幹員要求:聖聆初雪(可以借助戰)
- 前置步驟:
1. 推進主線至 RA-15 已通關狀態
2. 如果自己有聖聆初雪,請手動打開關卡並配隊一次,保證為五先鋒(無練度要求)+ 初雪,且初雪位於六號位即最後一個選的人,然後保存配隊並退出關卡
3. 如果使用助戰聖聆初雪,請保證聖聆初雪在術士助戰首頁(考慮摯友)
- 在大地圖打開 RA-15右下角出現「開啟建設」時啟動任務即可自動循環
- 注意:如果已解鎖開局額外攜帶物品的相關科技,請將基地內會導致開局額外攜帶物品的設施拆除,如食品供給站、飲品供給站、大型獸欄等
- 任務流程:用聖聆初雪完成 60 殺任務

View File

@@ -11,10 +11,14 @@ icon: fluent:people-24-filled
支援自動使用 `加急許可`,支援設定單次任務最大招募次數,可配合 `自動使用加急許可` 一次性刷光招募券。
當辨識到出現 1、5、6 星 Tag 都會彈出通知提示。
當辨識到保留 Tag、5 星 Tag 或 6 星 Tag 都會彈出通知提示。
公招重新整理時會自動將公招 Tag 數據上傳到 [企鵝物流數據統計](https://penguin-stats.io/) 和 [一圖流](https://ark.yituliu.cn/)。
## 進階設定
`自動確認` 即 MAA 自動選擇 Tag 並進行招募,`手動確認` 即不進行自動選擇與招募。
勾選 `3 星 tag 傾向` 後,可進一步選擇偏好的 3 星 Tag勾選 `保留指定詞條` 後,可選擇需要保留的 Tag。
當辨識到任一保留 Tag 時MAA 會跳過目前的公招欄位並保留該欄位,不會繼續確認本次招募。

View File

@@ -18,6 +18,7 @@ icon: ic:round-rocket-launch
- 範例:
- 官服:`123****8901`,可輸入 `123****8901``123``8901``3****8`
- B 服:`張三`,可輸入 `張三``張``三`
- 繁中服:帳號為 Email`ab****01@gmail.com`,建議填不含星號的明文片段,如 `01@gmail`
## 連線設定

View File

@@ -11,26 +11,32 @@ icon: octicon:tools-16
如果之前執行過幹員辨識,在辨識結束的幹員名稱後還會顯示潛能數據。
## 幹員辨識 (Beta)
## 幹員辨識
可辨識持有與未持有的幹員名單,並辨識且儲存潛能數據供公招辨識顯示。
## 倉庫辨識 (Beta)
目前支援以下匯出格式:
- 剪貼簿
- JSON
- Markdown 表格
- CSV 表格
## 倉庫辨識
支援從首頁自動進入倉庫。若自動跳轉失敗,請手動切換到倉庫 `養成材料` 介面並**滑動到最左側**後開始功能。
目前支援匯出到 [企鵝物流刷圖規劃器](https://penguin-stats.io/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 幹員培養表](https://ark-nights.com/settings)。
目前支援以下匯出格式:
- [企鵝物流刷圖規劃器](https://penguin-stats.io/planner)ArkPlanner
- [明日方舟工具箱](https://arkntools.app/#/material)Lolicon
- Markdown 表格
- CSV 表格
如果您是某個數據站的站長,也歡迎聯絡我們適配貴站的材料 json 協定~
也許之後可能會用來做一些更實用的功能。(畫大餅)
## 影片辨識 (Alpha)
可辨識攻略影片,並自動產生作業檔案,在自動戰鬥頁面拖入影片檔案即可啟動。
要求 16:9 比例、720p 以上畫質,且無黑邊、模擬器邊框、異形螢幕調整等干擾因素。
## 牛牛抽卡
::: center
@@ -48,3 +54,15 @@ icon: octicon:tools-16
MAA 會嘗試以目標影格率 (FPS) 對模擬器進行截圖,並將截圖即時顯示在視窗中。
在截圖速度相對目標幀率來說明顯過慢時MAA 會主動降低 FPS 以匹配截圖速度。~~可以拿來當壓力測試~~
## 牛雜
用於自動刷活動中的小遊戲。支援選擇名稱,並可在設定中切換常駐與當期限時活動。
內建功能包括:
- 活動商店兌換
- 綠票商店兌換
- 黃票商店兌換
- 生息演算商店兌換
- 秘密前線(支援選擇結局和事件分支)

View File

@@ -137,6 +137,6 @@ icon: material-symbols:view-quilt-rounded
## 範例檔案
[243 極限效率,一天三換](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json)
[243 極限效率,一天三換](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/243_layout_3_times_a_day.json)
[153 極限效率,一天三換](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json)
[153 極限效率,一天三換](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master-v2/resource/custom_infrast/153_layout_3_times_a_day.json)

View File

@@ -265,7 +265,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
- `MedicineConfirm`
使用理智藥
- `ExpiringMedicineConfirm`
使用 48 小時內過期的理智藥
使用即將過期的理智藥
- `StoneConfirm`
碎石
- `RecruitRefreshConfirm`
@@ -364,6 +364,15 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
:::
::::
- `RecruitPreservedTag`
公招辨識到了已設定為保留的 Tag。`details` 欄位內容如下:
:::: field-group
::: field name="tag" type="string" required
觸發保留的 Tag 名稱,例如 `支援機械`。
:::
::::
- `RecruitResult`
公招辨識結果。`details` 欄位結構如下:
- `tags` (array, required):所有辨識到的 tags目前固定為 5 個。

View File

@@ -64,6 +64,8 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
官服:`123****4567`,可輸入 `123****4567``4567``123``3****4567`
<br>
B 服:`張三`,可輸入 `張三``張``三`
<br>
繁中服:帳號為 Email`ab****01@gmail.com`,建議填不含星號的明文片段,如 `01@gmail`
:::
::::
@@ -135,8 +137,11 @@ B 服:`張三`,可輸入 `張三`、`張`、`三`
::: field name="medicine" type="number" optional default="0"
理智藥最大使用量。
:::
::: field name="expiring_medicine" type="number" optional default="0"
48 小時內過期理智藥最大使用量
::: field name="medicine_expire_days" type="number" optional default="0"
使用過期時間在指定天數內的理智藥0 表示不使用過期理智藥
:::
::: field name="expiring_medicine" type="number" optional default="0" deprecated
已棄用,自 v6.8.0 起請使用 `medicine_expire_days` 代替。
:::
::: field name="stone" type="number" optional default="0"
碎石最大數量。
@@ -197,7 +202,7 @@ B 服:`張三`,可輸入 `張三`、`張`、`三`
"enable": true,
"stage": "1-7",
"medicine": 1,
"expiring_medicine": 0,
"medicine_expire_days": 2,
"stone": 0,
"times": 10,
"series": 0,
@@ -259,7 +264,14 @@ B 服:`張三`,可輸入 `張三`、`張`、`三`
加急次數,僅在 `expedite``true` 時有效。預設無限次使用(直到 `times` 達到上限)。
:::
::: field name="skip_robot" type="boolean" optional default="true"
是否在辨識到小車 Tag 時跳過
已棄用,僅用於相容舊參數
<br>
當未提供 `preserve_tags` 且其值為 `true` 時,會在辨識到 `支援机械` 時跳過;`元素` 不再視為舊版 1 星 Tag。
:::
::: field name="preserve_tags" type="array<string>" optional
需要保留並跳過目前公招欄位的 Tag 名稱清單。預設為空。
<br>
當辨識到任一指定 Tag 時MAA 會保留該欄位並跳過本次招募。
:::
::: field name="recruitment_time" type="object" optional
Tag 等級(大於等於 3對應的期望招募時限單位分鐘。預設皆為 540 分鐘(即 09:00:00
@@ -300,7 +312,7 @@ Tag 等級(大於等於 3對應的期望招募時限單位分鐘
"set_time": true,
"expedite": false,
"expedite_times": 0,
"skip_robot": true,
"preserve_tags": ["支援机械"],
"recruitment_time": {
"3": 540,
"4": 540
@@ -910,32 +922,44 @@ Tag 等級(大於等於 3對應的期望招募時限單位分鐘
::: field name="enable" type="boolean" optional default="true"
是否啟用本任務。
:::
::: field name="theme" type="string" optional default="Fire"
::: field name="theme" type="string" optional default="Tales"
主題。
<br>
`Fire` - _沙中之火_
`Fire` - _沙中之火_(已關閉)
<br>
`Tales` - _沙洲遺聞_
`Tales` - _沙洲遺聞_
<br>
`RelaunchAnchor` - _重啟錨點_
:::
::: field name="mode" type="number" optional default="0"
模式。
模式。不同主題支援的模式不同:
<br>
`0`:刷分與建造點,進入戰鬥直接退出。
**Tales沙洲遺聞**
<br>
`1`:沙中之火 - 與聯絡員買水後,返回基地鍛造;沙洲遺聞 - 自動製造物品並透過讀檔刷取貨幣。
`0` - 無存檔,透過進出關卡刷生息點數。
<br>
`1` - 有存檔,透過組裝支援道具刷生息點數。
<br>
**RelaunchAnchor重啟錨點**
<br>
`16` (`RA1`) - RA-1自動執行精耕細作、建設、交付資源、結算循環。
<br>
`32` (`RA15`) - RA-15用聖聆初雪完成 60 殺任務。
<br>
`48` (`RA4`) - RA-4使用籌劃經營策略給予的赤金解鎖區域使用維什戴爾完成擊殺 boss 任務。
:::
::: field name="tools_to_craft" type="array<string>" optional default="[&quot;荧光棒&quot;]"
自動製造的物品清單。建議填寫名稱關鍵字即可。
自動製造的物品清單。建議填寫名稱關鍵字即可。僅 Tales 主題有效。
:::
::: field name="increment_mode" type="number" optional default="0"
點擊類型。
點擊類型。僅 Tales 主題有效。
<br>
`0`:連點
<br>
`1`:長按
:::
::: field name="num_craft_batches" type="number" optional default="16"
單次製造輪數上限。
單次製造輪數上限。僅 Tales 主題有效。
:::
::::

View File

@@ -0,0 +1,859 @@
{
"code": "PF-1",
"height": 9,
"levelId": "activities/act1football/level_act1football_01",
"name": "揭幕之战",
"stageId": "act1football_01",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-2",
"height": 9,
"levelId": "activities/act1football/level_act1football_02",
"name": "把握良机",
"stageId": "act1football_02",
"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": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"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": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"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": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": false,
"tileKey": "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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-3",
"height": 9,
"levelId": "activities/act1football/level_act1football_03",
"name": "渐入佳境",
"stageId": "act1football_03",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-4",
"height": 9,
"levelId": "activities/act1football/level_act1football_04",
"name": "客场连战",
"stageId": "act1football_04",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-5",
"height": 9,
"levelId": "activities/act1football/level_act1football_05",
"name": "争分夺球",
"stageId": "act1football_05",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-6",
"height": 9,
"levelId": "activities/act1football/level_act1football_06",
"name": "胜负难分",
"stageId": "act1football_06",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-7",
"height": 9,
"levelId": "activities/act1football/level_act1football_07",
"name": "出线之争",
"stageId": "act1football_07",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-EX-1",
"height": 9,
"levelId": "activities/act1football/level_act1football_ex01",
"name": "球风对撞",
"stageId": "act1football_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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 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_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-EX-2",
"height": 9,
"levelId": "activities/act1football/level_act1football_ex02",
"name": "先声夺人",
"stageId": "act1football_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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-EX-3",
"height": 9,
"levelId": "activities/act1football/level_act1football_ex03",
"name": "小心脚下",
"stageId": "act1football_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": 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": 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": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-EX-4",
"height": 9,
"levelId": "activities/act1football/level_act1football_ex04",
"name": "冠军之路",
"stageId": "act1football_ex04",
"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": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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"
},
{
"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": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-S-1",
"height": 9,
"levelId": "activities/act1football/level_act1football_sub-1-1",
"name": "耐力拉练",
"stageId": "act1football_s01",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"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": 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": 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": true,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_enemygoal"
}
],
[
{
"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": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 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": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 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": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 13
}

View File

@@ -0,0 +1,859 @@
{
"code": "PF-S-2",
"height": 9,
"levelId": "activities/act1football/level_act1football_sub-1-2",
"name": "盘带练习",
"stageId": "act1football_s02",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"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": 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": 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": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_allygoal"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 3,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_football"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_enemygoal"
}
],
[
{
"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": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 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": true,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"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": 13
}

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