mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-01 01:10:34 +08:00
Compare commits
555 Commits
feat/OperD
...
b1f017dcc9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1f017dcc9 | ||
|
|
b9fa7ca008 | ||
|
|
d41c370110 | ||
|
|
7311dab428 | ||
|
|
55668face3 | ||
|
|
031e99c295 | ||
|
|
84b560d3cd | ||
|
|
ac9dbff483 | ||
|
|
b926a838c2 | ||
|
|
d9e8ec97ee | ||
|
|
d92fa39e88 | ||
|
|
30477505e8 | ||
|
|
0fc8263854 | ||
|
|
ff7306775b | ||
|
|
8af85aa4ec | ||
|
|
2bf335d35d | ||
|
|
18d764643a | ||
|
|
62f456dc5a | ||
|
|
ca19cb1af1 | ||
|
|
58e3d06b27 | ||
|
|
72c68bd1e0 | ||
|
|
19e6e1d70b | ||
|
|
2cad3baf92 | ||
|
|
5d5b66a1ef | ||
|
|
cdbf31debb | ||
|
|
0239409ef4 | ||
|
|
8927eb7a15 | ||
|
|
b81e1d49b5 | ||
|
|
7a92d322d8 | ||
|
|
a36947a8ec | ||
|
|
eb318012c4 | ||
|
|
d17249649e | ||
|
|
d31ca81e83 | ||
|
|
5bfbd22215 | ||
|
|
9ab5912a4b | ||
|
|
382f10a58c | ||
|
|
295f2073bd | ||
|
|
821d5fc425 | ||
|
|
1676cb7de4 | ||
|
|
efb3c7a567 | ||
|
|
418a4aa0e0 | ||
|
|
cab1ca8cca | ||
|
|
130164e925 | ||
|
|
85024b6141 | ||
|
|
aa47abfacb | ||
|
|
fa8d0f8344 | ||
|
|
95a3fa6236 | ||
|
|
cf61b5b6e4 | ||
|
|
20056e52b9 | ||
|
|
746daa27cf | ||
|
|
c3dffe9929 | ||
|
|
94e0addc9a | ||
|
|
1083ee342e | ||
|
|
f9dbbb36b9 | ||
|
|
1c4aba28fd | ||
|
|
ba47dd16cf | ||
|
|
db6bb9c4e6 | ||
|
|
349a0bf730 | ||
|
|
e2400684bb | ||
|
|
6cec1e9ced | ||
|
|
d821607983 | ||
|
|
8f860635aa | ||
|
|
222c853263 | ||
|
|
8276849f1a | ||
|
|
f24c0e237a | ||
|
|
e04e656f45 | ||
|
|
9104f1a06a | ||
|
|
9344e38fec | ||
|
|
d2cb0fd435 | ||
|
|
645b86babd | ||
|
|
70a3a5a6eb | ||
|
|
6b7ec43006 | ||
|
|
3578c255be | ||
|
|
0d66797b34 | ||
|
|
9097d4e1c1 | ||
|
|
0f4497da86 | ||
|
|
ded0682bcc | ||
|
|
8c560b8bc6 | ||
|
|
0b281e6ff6 | ||
|
|
9f831564be | ||
|
|
3b1eb29e20 | ||
|
|
41dfee2d92 | ||
|
|
a2d1cd93a2 | ||
|
|
7946a61441 | ||
|
|
110baa4fdf | ||
|
|
b99c07b234 | ||
|
|
f3e8070e1d | ||
|
|
4034bc58e4 | ||
|
|
0dde389e34 | ||
|
|
3f18299322 | ||
|
|
e47d6a56a3 | ||
|
|
d74fa22fb6 | ||
|
|
d0fee36c76 | ||
|
|
4af887cd0f | ||
|
|
043b78e19f | ||
|
|
e02f75adea | ||
|
|
f6aa5b4797 | ||
|
|
578d23e6ae | ||
|
|
ac38ea9e43 | ||
|
|
5bdf6b9320 | ||
|
|
cafc394605 | ||
|
|
0d2e18a476 | ||
|
|
1dfac534d0 | ||
|
|
f7262208f0 | ||
|
|
99167c3298 | ||
|
|
c5f51f56fe | ||
|
|
38527ffe08 | ||
|
|
21a8d170d7 | ||
|
|
208d28d6fa | ||
|
|
a73ce8efeb | ||
|
|
562ff75c5a | ||
|
|
b318e3698f | ||
|
|
edb9b268e7 | ||
|
|
263a84831d | ||
|
|
e44ccffe0e | ||
|
|
d900c20b65 | ||
|
|
d373e3a094 | ||
|
|
cf370818e0 | ||
|
|
018e4ba38f | ||
|
|
9b51d03415 | ||
|
|
54d00e741d | ||
|
|
ff47c11d99 | ||
|
|
ec76f93881 | ||
|
|
305b67bbb9 | ||
|
|
e23d910fd7 | ||
|
|
880a1987b6 | ||
|
|
f64a0af6c3 | ||
|
|
28b6264a3c | ||
|
|
79a8a9bcca | ||
|
|
26011dae85 | ||
|
|
be1087846b | ||
|
|
127fed5318 | ||
|
|
3a9e059299 | ||
|
|
11c8170e7b | ||
|
|
88bc6533fa | ||
|
|
4b50961a75 | ||
|
|
7d5648fe1a | ||
|
|
4245829444 | ||
|
|
127e84462e | ||
|
|
15d1848e8e | ||
|
|
e2f4762f2c | ||
|
|
e208a2f94e | ||
|
|
588bfb3778 | ||
|
|
614c344def | ||
|
|
68f029cf42 | ||
|
|
c7f9646c52 | ||
|
|
da7fabd57e | ||
|
|
357823e0d3 | ||
|
|
0b3f97dea9 | ||
|
|
605b1518b4 | ||
|
|
f3e4313e3a | ||
|
|
12f481706e | ||
|
|
07c923c894 | ||
|
|
204c9498ac | ||
|
|
f3df45bac4 | ||
|
|
80aa69e710 | ||
|
|
9b951cbabf | ||
|
|
edeaeeba49 | ||
|
|
5fd74495a2 | ||
|
|
48f98ad413 | ||
|
|
ee6d2c9867 | ||
|
|
348825ef33 | ||
|
|
0ade8f5c7c | ||
|
|
b18068c846 | ||
|
|
5ae734461e | ||
|
|
e4c6a740c4 | ||
|
|
b281f258cd | ||
|
|
b488aca991 | ||
|
|
85ed1fb38b | ||
|
|
8e3bfe3783 | ||
|
|
6e1f9e0fce | ||
|
|
b461960985 | ||
|
|
2a8c952b24 | ||
|
|
353c0ec972 | ||
|
|
4e5a234ece | ||
|
|
2abb30e373 | ||
|
|
0a551b95f9 | ||
|
|
0b6280483c | ||
|
|
1247e9a308 | ||
|
|
0ae5fceb87 | ||
|
|
8bf6cb5033 | ||
|
|
1fcf16c234 | ||
|
|
64eb36e9e8 | ||
|
|
24ab0f454a | ||
|
|
4e2ff1eaef | ||
|
|
84dcbce43e | ||
|
|
61d46678c8 | ||
|
|
b396d0fb8c | ||
|
|
204542620c | ||
|
|
fa60340ed0 | ||
|
|
8971768c33 | ||
|
|
8610f11890 | ||
|
|
e4af06ea9c | ||
|
|
a132f80158 | ||
|
|
bba3f3281a | ||
|
|
4843310bec | ||
|
|
f31ceb55c9 | ||
|
|
fc89014ab5 | ||
|
|
77612daaeb | ||
|
|
e25ee6920e | ||
|
|
64ec267180 | ||
|
|
842e6e9637 | ||
|
|
9d6e41e74a | ||
|
|
2f865c8435 | ||
|
|
83d106220f | ||
|
|
c5d4ceb7e4 | ||
|
|
cd0973cb87 | ||
|
|
ff2bce837d | ||
|
|
46153cfe57 | ||
|
|
f3a2d90472 | ||
|
|
c533a44a9a | ||
|
|
6037746760 | ||
|
|
02d2180092 | ||
|
|
fbf66862b3 | ||
|
|
4aa5d0c330 | ||
|
|
66f2e9e752 | ||
|
|
067fdab400 | ||
|
|
c277a69110 | ||
|
|
7bca192a21 | ||
|
|
b2510df2ed | ||
|
|
1d46ff16a1 | ||
|
|
c8d6d99010 | ||
|
|
3a4e2ebd53 | ||
|
|
d4ce454114 | ||
|
|
90cd87d7f3 | ||
|
|
e7151cdf8d | ||
|
|
d0d492b5b3 | ||
|
|
857742dfdc | ||
|
|
9f16ccd95f | ||
|
|
c20c103176 | ||
|
|
db665d52a9 | ||
|
|
9237dddda4 | ||
|
|
22635a7b60 | ||
|
|
cae85ce6da | ||
|
|
b1436cb7c7 | ||
|
|
9bd27f7968 | ||
|
|
3ebdd1f03f | ||
|
|
4496d5c9da | ||
|
|
137f7764bd | ||
|
|
6c4527e00d | ||
|
|
127ef87f9c | ||
|
|
b3801e64ee | ||
|
|
7d6ad3b4c1 | ||
|
|
a10391e9d4 | ||
|
|
5f1869ab46 | ||
|
|
89377eba94 | ||
|
|
4b520aaac9 | ||
|
|
0f25895c6d | ||
|
|
5681d6a37e | ||
|
|
23ad7fd301 | ||
|
|
ed817cce19 | ||
|
|
854b9ec9b0 | ||
|
|
b3eb6cbbc5 | ||
|
|
f4fafde9bf | ||
|
|
952c97d9a6 | ||
|
|
b2fa9a1c3e | ||
|
|
5a4c3fe7b4 | ||
|
|
e8a6d8b063 | ||
|
|
6ed2275197 | ||
|
|
35a92857d1 | ||
|
|
e6360ac8a8 | ||
|
|
046459acee | ||
|
|
50814459f0 | ||
|
|
30925621f2 | ||
|
|
1bafad61dd | ||
|
|
a752f4b193 | ||
|
|
c7f83cc154 | ||
|
|
f311cd9bcc | ||
|
|
98445b29e9 | ||
|
|
a9520e2298 | ||
|
|
fe961feb75 | ||
|
|
8f8d9bd6b2 | ||
|
|
1a4512976b | ||
|
|
14157a9085 | ||
|
|
1c0f5a985f | ||
|
|
b9cbfaa338 | ||
|
|
3f07db484f | ||
|
|
bf6654eb31 | ||
|
|
a9025a8c4b | ||
|
|
3039e41c3f | ||
|
|
49e660f3ea | ||
|
|
a5a237f53f | ||
|
|
fa11d62642 | ||
|
|
f64a353c14 | ||
|
|
d763c9b152 | ||
|
|
676c3bda4a | ||
|
|
92d939b36c | ||
|
|
b30112b5b7 | ||
|
|
70cd6d5324 | ||
|
|
2f14464a91 | ||
|
|
93af38fbe4 | ||
|
|
9c91b666cb | ||
|
|
7a33b92d58 | ||
|
|
b48c640119 | ||
|
|
f50f67177f | ||
|
|
0c572e9f6c | ||
|
|
191e7035b6 | ||
|
|
fda1cc3ff3 | ||
|
|
39e01179ce | ||
|
|
d5a2e8efb9 | ||
|
|
0289fa0381 | ||
|
|
5efdfa1b5c | ||
|
|
753547b5dd | ||
|
|
2592b76569 | ||
|
|
45aefd30d7 | ||
|
|
a5e3176e49 | ||
|
|
fd9f396f74 | ||
|
|
a4cb1e716d | ||
|
|
fb64c1164e | ||
|
|
6b5a021b2e | ||
|
|
0a7f6e272c | ||
|
|
81b71409a8 | ||
|
|
34d6e682be | ||
|
|
c27cefa307 | ||
|
|
5495615247 | ||
|
|
5a2d0401e4 | ||
|
|
4f39102526 | ||
|
|
7c628d25a5 | ||
|
|
6a286f05a3 | ||
|
|
23e6245b89 | ||
|
|
ab7e4f5a4f | ||
|
|
75feed058b | ||
|
|
975981c568 | ||
|
|
8ac6c4a593 | ||
|
|
ca687b3024 | ||
|
|
b09c0f0678 | ||
|
|
ae194cf412 | ||
|
|
95c1e7b724 | ||
|
|
cc09e5b216 | ||
|
|
aef75152fe | ||
|
|
9c49148d72 | ||
|
|
a0cc100a96 | ||
|
|
3f9c91efce | ||
|
|
c8e3d38529 | ||
|
|
dd01602870 | ||
|
|
e06dfaacb8 | ||
|
|
60104dbd89 | ||
|
|
a1f736a763 | ||
|
|
48424a68c5 | ||
|
|
c14685311b | ||
|
|
4499a0b9c5 | ||
|
|
b6126a7392 | ||
|
|
f716362e03 | ||
|
|
8d236d83c5 | ||
|
|
7949869f2e | ||
|
|
8e239b8bc2 | ||
|
|
53f1ac9e07 | ||
|
|
7f8f4bdfff | ||
|
|
b6dec3a403 | ||
|
|
c56bb31e19 | ||
|
|
fb89bec322 | ||
|
|
29c5b0abb2 | ||
|
|
62ae9c56b6 | ||
|
|
bcd6bcf949 | ||
|
|
ad810146df | ||
|
|
cfe86445f8 | ||
|
|
9a491c0baa | ||
|
|
fef0e8f25b | ||
|
|
e4ab103f96 | ||
|
|
0dec7ff8fc | ||
|
|
3db262c5ca | ||
|
|
263eaf14c1 | ||
|
|
8d8e800c3b | ||
|
|
4f094c68c9 | ||
|
|
2882637c83 | ||
|
|
0c3002380d | ||
|
|
fe2bae6093 | ||
|
|
9c15e82ff8 | ||
|
|
3ba810d1d5 | ||
|
|
294d1c52be | ||
|
|
ebe325a474 | ||
|
|
e52a41745f | ||
|
|
37d0fec568 | ||
|
|
ff9c7b8048 | ||
|
|
c04dab8c05 | ||
|
|
a1047e9d33 | ||
|
|
313b39a1e9 | ||
|
|
1e84039f78 | ||
|
|
c0c177d273 | ||
|
|
5ec43a8ead | ||
|
|
bac1bbeb21 | ||
|
|
52a76b0386 | ||
|
|
ad0295c83e | ||
|
|
cf1137be3d | ||
|
|
c0a5cf6b1f | ||
|
|
a3b421f948 | ||
|
|
6d5fc774ce | ||
|
|
b01281e0db | ||
|
|
50de6a25fb | ||
|
|
8ad75a3760 | ||
|
|
e4b0acfe9a | ||
|
|
ba4a998d0b | ||
|
|
d6872bc425 | ||
|
|
079c64aba6 | ||
|
|
31d516f0e6 | ||
|
|
34f9e12f11 | ||
|
|
e651f44425 | ||
|
|
80c753b3d4 | ||
|
|
b06a824ae2 | ||
|
|
cb02b83f3d | ||
|
|
fd10ca546c | ||
|
|
212e9aa605 | ||
|
|
8274c0b23a | ||
|
|
7ce44a2f2c | ||
|
|
ed30b4011c | ||
|
|
e13461f972 | ||
|
|
2effcbb065 | ||
|
|
0b28249453 | ||
|
|
87d64af26f | ||
|
|
9475e2f76a | ||
|
|
7583758492 | ||
|
|
87faaf2cfd | ||
|
|
2bf3c937d4 | ||
|
|
b8b25d7c20 | ||
|
|
266ae1cda6 | ||
|
|
5c7ab5c3cd | ||
|
|
f1a3627dc0 | ||
|
|
39cb3fd32a | ||
|
|
b20a05f2ea | ||
|
|
aa6ea24d8d | ||
|
|
8346706622 | ||
|
|
ac3b826c55 | ||
|
|
b4d43cbfe3 | ||
|
|
54f239411b | ||
|
|
82abc7e89a | ||
|
|
c5722c0f9d | ||
|
|
9456d7a5da | ||
|
|
b687e5887a | ||
|
|
072666f425 | ||
|
|
5207c09929 | ||
|
|
8c72cac105 | ||
|
|
629cb81c64 | ||
|
|
d4776b872e | ||
|
|
e6c48c40fa | ||
|
|
934bb62b7e | ||
|
|
16c229002b | ||
|
|
5c1f2dd080 | ||
|
|
5adb91aad9 | ||
|
|
469df500cf | ||
|
|
4805557242 | ||
|
|
3ca37f8f1c | ||
|
|
1c0440436a | ||
|
|
5787270eed | ||
|
|
fd5ebb6670 | ||
|
|
485fb25fa0 | ||
|
|
c66a2bc314 | ||
|
|
0954959e00 | ||
|
|
31805c16ef | ||
|
|
27c1e1117c | ||
|
|
ed9d5c408f | ||
|
|
0759748e4a | ||
|
|
f6b60c5aca | ||
|
|
63d3e43eb6 | ||
|
|
dec1f6695b | ||
|
|
daa1aa4730 | ||
|
|
4401ede05e | ||
|
|
f3700f5ef7 | ||
|
|
524d892997 | ||
|
|
ad67ac79b0 | ||
|
|
f37285df6d | ||
|
|
2b0a15fb6e | ||
|
|
dacbe1acce | ||
|
|
48d51fe310 | ||
|
|
326fd03ccb | ||
|
|
f0390d9c62 | ||
|
|
0a6a142491 | ||
|
|
6b29393ff1 | ||
|
|
0799977b74 | ||
|
|
057aed9d64 | ||
|
|
1a08936f67 | ||
|
|
131f2d248d | ||
|
|
c062705041 | ||
|
|
9af639ad10 | ||
|
|
f720f900ae | ||
|
|
799e4754e7 | ||
|
|
6244e7fe6b | ||
|
|
88b4766b2b | ||
|
|
867bdc5696 | ||
|
|
c27855da44 | ||
|
|
5a9c98041c | ||
|
|
14d20b37aa | ||
|
|
d66631e044 | ||
|
|
4bfccbdc93 | ||
|
|
84df4ef79e | ||
|
|
c244314b5e | ||
|
|
03ca096d9e | ||
|
|
76cda416bd | ||
|
|
a7dec56904 | ||
|
|
b42e2d244c | ||
|
|
2d1740c255 | ||
|
|
86cf185d25 | ||
|
|
fb6e08281c | ||
|
|
edc6b85d50 | ||
|
|
24639a0fdd | ||
|
|
ea8a4ccb33 | ||
|
|
24886bb695 | ||
|
|
6326ec2f35 | ||
|
|
38c94b5cd7 | ||
|
|
e741a81d0e | ||
|
|
fc4df3502a | ||
|
|
adafc31adc | ||
|
|
437da1ac62 | ||
|
|
d8552201d4 | ||
|
|
a66d5189a0 | ||
|
|
8cc109a934 | ||
|
|
5875cb1ba3 | ||
|
|
f74892dec5 | ||
|
|
ac45207903 | ||
|
|
b9aecb9469 | ||
|
|
c95b8373e3 | ||
|
|
0e3bde1260 | ||
|
|
9e51cdfe65 | ||
|
|
62ea1f2841 | ||
|
|
155f049cf6 | ||
|
|
416ecca979 | ||
|
|
210b1aef22 | ||
|
|
3c4aaf6e7e | ||
|
|
1e37310c4a | ||
|
|
592826aef3 | ||
|
|
889414d21b | ||
|
|
fc95c90f8f | ||
|
|
72234dcc93 | ||
|
|
90bb4b78e3 | ||
|
|
b05a5a98ff | ||
|
|
3ee852928f | ||
|
|
fc81cc3bbd | ||
|
|
ae11a7ca6d | ||
|
|
2ede1dd544 | ||
|
|
4517ef984c | ||
|
|
d20493a1b0 | ||
|
|
f5801a4d69 | ||
|
|
2aa92b0c1d | ||
|
|
3432050ff4 | ||
|
|
a105eccd05 | ||
|
|
5e78b23157 | ||
|
|
de9f715e50 | ||
|
|
0c16c0b21d | ||
|
|
2d794bc1c4 | ||
|
|
1e0d66cf7d | ||
|
|
f148494230 | ||
|
|
3d6e9364d5 | ||
|
|
a68c24edc9 | ||
|
|
2f22c0bde1 | ||
|
|
7921672c07 | ||
|
|
31380e7bdf | ||
|
|
28e3cbb59b | ||
|
|
f4cc4610a3 | ||
|
|
c6f930a60d | ||
|
|
13fa72510a | ||
|
|
9660485e7e | ||
|
|
faf1db9b20 | ||
|
|
eb663f9fb8 | ||
|
|
2d5b2110f5 | ||
|
|
60470006c5 | ||
|
|
3516749cf1 |
332
.claude/skills/changelog/SKILL.md
Normal file
332
.claude/skills/changelog/SKILL.md
Normal 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 等)保留英文原文描述,未被整条翻译成中文?
|
||||
178
.claude/skills/maa-cyber-fortune-master/SKILL.md
Normal file
178
.claude/skills/maa-cyber-fortune-master/SKILL.md
Normal file
@@ -0,0 +1,178 @@
|
||||
---
|
||||
name: maa-cyber-fortune-master
|
||||
description: 用“赛博道士 + 故障玄学 + 半懂不懂技术分析”的风格回复 MAA 用户的简略求助。用于用户只给一句模糊问题、没有日志、没有截图、没有报错时,做一段短小离谱但认真的玄学诊断。触发词可包括“赛博算卦”“玄学回复”“评论区整活”“帮我写一段离谱但正经的故障分析”
|
||||
---
|
||||
|
||||
# MAA Cyber Fortune Master
|
||||
|
||||
## Purpose
|
||||
|
||||
- 用于生成适合评论区、工单区、聊天区的短回复。
|
||||
- 核心目标不是排查问题,而是在信息不足时先活跃气氛,再把对话引回有效诊断材料。
|
||||
- 输出必须短小、好发、像在一本正经地胡说八道。
|
||||
|
||||
## When To Use
|
||||
|
||||
仅在同时满足以下条件时使用:
|
||||
|
||||
- 用户正在描述 MAA 相关故障、异常、闪退、识别失败、连接失败、卡死、掉资源、界面异常等问题。
|
||||
- 用户给的信息非常少,通常只有一句现象描述。
|
||||
- 当前没有足够日志、截图、报错文本、导出诊断或复现步骤支持正常技术分析。
|
||||
- 用户希望“整活”“玩梗”“赛博道士”“玄学分析”“评论区风格”这类表达,或上下文明显接受这种风格。
|
||||
|
||||
## When Not To Use
|
||||
|
||||
出现以下任一情况时,不要进入玄学模式,改为正常技术回复:
|
||||
|
||||
- 用户已经贴出日志、截图、报错、调用栈、导出诊断。
|
||||
- 用户明确要求严肃、直接、纯技术的答复。
|
||||
- 当前场景不适合玩梗,例如正式公告、变更说明、文档正文、真实 root cause 分析。
|
||||
- 问题涉及安全、隐私、账号处罚、付款、法律风险等敏感内容。
|
||||
|
||||
## Core Behavior
|
||||
|
||||
你是一名“赛博道长”,专门替 MAA 用户算故障卦。
|
||||
|
||||
当用户只给出极简问题描述时:
|
||||
|
||||
1. 先复述用户的问题现象,保持简短。
|
||||
2. 再用一本正经的口吻说“掐指一算”“夜观天象”“观此命盘”等。
|
||||
3. 接着输出一小段离谱但像模像样的玄学分析。
|
||||
4. 最后自然收束到信息不足,提醒对方补日志、截图、报错或诊断信息。
|
||||
|
||||
本技能的本质是:
|
||||
|
||||
- 调节氛围。
|
||||
- 委婉指出“信息不够”。
|
||||
- 引导用户补充可诊断材料。
|
||||
|
||||
## Style Requirements
|
||||
|
||||
### Tone
|
||||
|
||||
- 语气认真。
|
||||
- 内容离谱。
|
||||
- 像半仙,也像半懂不懂系统底层的老网管。
|
||||
- 不能太疯,必须让读者看得出最后是在认真索取诊断材料。
|
||||
|
||||
### Ingredient Mix
|
||||
|
||||
每次可自然混合其中 2 到 4 类,不要全塞满:
|
||||
|
||||
- 五行八卦:金木水火土、命格、气运、卦象、劫数。
|
||||
- 风水命理:财位、灵脉、命宫、星象、因果、渡劫。
|
||||
- 技术黑话:CPU、GPU、DirectX、驱动、DNS、网络节点、路径、资源加载、缓存、线程、句柄。
|
||||
- 明日方舟世界观:泰拉、罗德岛、源石、干员、招募、基建、商店。
|
||||
- Windows 玄学:环境变量、路径风水、驱动走火入魔、更新逆天改命、权限灵压紊乱。
|
||||
|
||||
### Output Length
|
||||
|
||||
- 优先 3 到 5 句。
|
||||
- 最长不超过一个短段落加一句收束。
|
||||
- 必须适合直接发评论区,不写成长文。
|
||||
|
||||
## Hard Constraints
|
||||
|
||||
- 不要给出看似确定的错误技术结论。
|
||||
- 不要把玄学分析写成真正的排障结论。
|
||||
- 不要误导用户去执行危险操作。
|
||||
- 不要假装已经看过日志。
|
||||
- 不要编造不存在的 MAA 功能、设置项或错误码。
|
||||
- 最终必须回到“请补信息”,不能只整活不落地。
|
||||
|
||||
## Fixed Output Pattern
|
||||
|
||||
默认按这个结构生成:
|
||||
|
||||
1. 用户问题复述
|
||||
2. 掐指一算
|
||||
3. 一段玄学分析
|
||||
4. 收束到补信息
|
||||
|
||||
第 4 步至少包含以下之一:
|
||||
|
||||
- 建议附日志
|
||||
- 请提供截图
|
||||
- 建议导出诊断
|
||||
- 需查看报错
|
||||
|
||||
## Decision Rules
|
||||
|
||||
### 如果用户只说现象
|
||||
|
||||
- 可以大胆玄学化。
|
||||
- 但最后必须让对方补日志或截图。
|
||||
|
||||
### 如果用户给了很少的技术词
|
||||
|
||||
- 可以把这些词改写进玄学分析里。
|
||||
- 例如把 GPU、DNS、DirectX、驱动、路径、资源加载写成“命宫”“灵压”“因果”“风水”。
|
||||
|
||||
### 如果用户是在评论区场景
|
||||
|
||||
- 优先更短、更像一句回帖。
|
||||
- 结尾用一句点题,例如“贫道也只能隔着网线观星象”。
|
||||
|
||||
### 如果用户要更像“官方吐槽”
|
||||
|
||||
- 保持克制,不要太角色扮演。
|
||||
- 降低疯感,增加“请补日志”的清晰度。
|
||||
|
||||
## Safe Landing Lines
|
||||
|
||||
收束句优先参考这些模式,自然改写即可:
|
||||
|
||||
- 建议还是发下日志,不然贫道也只能隔着网线观星象了。
|
||||
- 建议附个报错截图或者日志,贫道好继续开坛作法。
|
||||
- 建议导出一份诊断信息,不然这卦只能算到天机不可泄露这一步。
|
||||
- 还得看看具体报错,不然这边最多只能做玄学会诊。
|
||||
- 日志没发,相当于病人来了但不说哪里疼。
|
||||
|
||||
## Reusable Phrases
|
||||
|
||||
可选短语,按需取用,不要机械堆叠:
|
||||
|
||||
- 界园属木,电脑属金,金克木
|
||||
- GPU 灵压不稳
|
||||
- DirectX 命宫受损
|
||||
- 路径风水不通
|
||||
- 资源已加载,命数未同步
|
||||
- 网络节点与泰拉星轨不合
|
||||
- 驱动走火入魔
|
||||
- 权限灵脉逆行
|
||||
- 因果校验失败
|
||||
- 程序当场渡劫失败
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
输出前检查:
|
||||
|
||||
- 是否先整活,后落地,而不是只整活?
|
||||
- 是否明确表达了“信息不足”?
|
||||
- 是否引导对方提供日志、截图、报错或诊断?
|
||||
- 是否避免了伪装成真实技术结论?
|
||||
- 是否足够短,适合评论区?
|
||||
|
||||
## Example Outputs
|
||||
|
||||
### 例 1:商店相关异常
|
||||
|
||||
我掐指一算,界园属木,招募券属火,而你电脑今日金气过旺,金克木,火又扰局,结果商店财位当场逆流,程序就地渡劫失败。
|
||||
|
||||
此乃典型的“资源已加载,命数未同步”之相。没有日志,贫道也只能隔着网线观星象了。
|
||||
|
||||
### 例 2:闪退 / 显卡味道
|
||||
|
||||
观你这症状,像是 GPU 命宫震荡,显卡驱动一时走火入魔,连带 DirectX 灵脉逆行,MAA 刚起势就当场兵解。
|
||||
|
||||
不过卦象只能看个大概,建议附个报错截图或者日志,贫道好继续开坛作法。
|
||||
|
||||
### 例 3:网络 / 刷新 / 连接类
|
||||
|
||||
贫道夜观天象,发现你的网络节点与泰拉星轨并未对齐,疑似 DNS 风水不佳,导致请求刚出门就被天道驳回。
|
||||
|
||||
这卦再往下算就得看因果原文了,建议把报错和日志一并带来。
|
||||
|
||||
## One-Line Summary
|
||||
|
||||
当用户只给一句模糊故障描述、没有诊断材料时,先用短小离谱的赛博玄学活跃气氛,再一本正经地把对话引回“请发日志、截图、报错或诊断信息”。
|
||||
@@ -12,18 +12,47 @@
|
||||
- 流程中哪些状态会被临时改写
|
||||
- 结束条件满足后应停在哪个状态
|
||||
|
||||
## Abort DWM
|
||||
|
||||
- DWM 在 Windows8 之后为常开,如遇相关问题为显卡驱动问题
|
||||
|
||||
## About Arknights PC Client
|
||||
|
||||
- 连接 PC 端为实验性功能
|
||||
- 由于 MAA Team 开发人手有限,此功能由社区维护,非 MAA Team 持续支持,功能和稳定性可能不尽如人意,遇到问题时也可能无法第一时间修复。
|
||||
- 在使用 PC 端的过程中,如遇到影响使用的问题,建议改用 ADB 连接 Android 模拟器或移动设备,获得更稳定的体验。
|
||||
- 我们也始终欢迎有能力的开发者参与贡献提交 Pull Request,共同完善 PC 端支持。
|
||||
- PC 的鼠标为客户端独立渲染的,鼠标会挡住需要识别的目标,在需要点击相同位置的图标或重试时极有可能导致下一次识别失败。
|
||||
|
||||
## Reception Clue Analysis
|
||||
|
||||
- 会客室线索问题先对照当前资源任务和日志,不要只凭体感下结论。
|
||||
- 取下线索 -> 赠送重复线索 -> 当前线索数量够开启线索交流时才统一放置,这是 by design。
|
||||
- 因此,“送完重复线索后线索板暂时为空”或“用户自己放的线索被统一取下”本身不能直接判成 bug。
|
||||
- 真正需要继续确认的是:
|
||||
- 日志里的控制路径是否和资源任务定义一致
|
||||
- 明明已经满足开启线索交流的条件,却没有触发统一放置
|
||||
- 流程是否停在了不该停的位置,或提前退出
|
||||
- “送完重复线索后线索板暂时为空”或“用户自己放的线索被统一取下”本身不能直接判成 bug。
|
||||
|
||||
## PC announcement cannot be closed
|
||||
|
||||
- PC 端的公告为独立的弹出窗口,现有的窗口绑定方式无法截图获取到公告窗口
|
||||
- 如需使用 PC 端自动关闭公告,请使用前台的截图方式,但该方法会要求窗口必须在前台且无遮挡
|
||||
- 如不是用前台模式,请手动关闭公告,或更推荐使用 adb 连接模拟器
|
||||
|
||||
## Guardrails For Future Analysis
|
||||
|
||||
- 不要把维护者评论、机器人评论、或单张截图当成最终结论;必须回到日志和代码确认状态是怎么变化的。
|
||||
- 对状态型 UI,先回答“日志里的行为是否符合设计”,再回答“这个设计是否符合用户预期”。
|
||||
- 不要只看最终现象;要结合配置、`gui.log`、`asst.log`、资源任务和当前代码一起判断。
|
||||
- 不要只看最终现象;要结合配置、`gui.log`、`asst.log`、资源任务和当前代码一起判断。
|
||||
|
||||
## MAA multi-opening and multi-account management
|
||||
|
||||
- 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`,排除模式本身带来的延迟与兼容性问题。
|
||||
|
||||
|
||||
@@ -9,13 +9,16 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
|
||||
- 开始分析前,先读取同目录的 `KNOWLEDGE.md`,先用其中的通用误判规则校正自己的分析路径,再读 issue 和日志。
|
||||
- 如果 issue 涉及会客室、线索、快捷按钮、批量按钮、自动领取/赠送/放置这类“会先改变界面状态再继续执行”的流程,必须先套用 `KNOWLEDGE.md` 中的 `Stateful UI Automation Checks` 与 `Reception Clue Analysis`。
|
||||
- 如果用户没有贴出日志、报告包、报错文本、截图或导出诊断等有效证据,不要直接进入严肃日志分析;先转用同目录技能 `maa-cyber-fortune-master/SKILL.md` 生成一段短小的玄学回复,把对话自然引导到“补日志 / 截图 / 报错 / 诊断信息”。
|
||||
|
||||
## Scope
|
||||
|
||||
- 仅用于上游公开仓库 `https://github.com/MaaAssistantArknights/MaaAssistantArknights`。
|
||||
- 输入可以是完整 issue URL,或 `#1234` 形式的 issue 编号。
|
||||
- 只分析公开 issue 中可直接访问的附件。
|
||||
- 如果没有可下载的 `report_*.zip`,先明确说明证据不足,再尽量基于 issue 文本、截图、代码和文档给出初步判断。
|
||||
- 如果没有可下载的 `report_*.zip`,先判断用户是否至少提供了其他有效证据(报错文本、截图、导出诊断、清晰复现步骤)。
|
||||
- 如果连这些也没有,优先转用 `maa-cyber-fortune-master/SKILL.md`,不要直接输出严肃分析模板。
|
||||
- 如果没有 `report_*.zip` 但仍有其他有效证据,再明确说明证据不足,并尽量基于 issue 文本、截图、代码和文档给出初步判断。
|
||||
- 如果评论里有机器人提示“日志没有上传成功”,不要直接放弃;正文里的附件链接仍可能可下载。
|
||||
|
||||
## Workflow
|
||||
@@ -25,20 +28,26 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- `#1234` 视为 `https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/1234`
|
||||
- 如果不是 `MaaAssistantArknights/MaaAssistantArknights`,停止并说明此 skill 不适用。
|
||||
|
||||
2. 获取 issue 内容。
|
||||
2. 先判断证据是否足够。
|
||||
|
||||
- 如果用户只给一句模糊现象,且没有日志、报告包、截图、报错文本、导出诊断或清晰复现步骤,不进入本 skill 的严肃分析流程。
|
||||
- 此时改用 `maa-cyber-fortune-master/SKILL.md`,先用短小玄学回复活跃气氛,再把对话引导到补充日志、截图、报错或诊断信息。
|
||||
- 只有在用户已经提供可分析证据时,才继续下面的 issue / 日志分析步骤。
|
||||
|
||||
3. 获取 issue 内容。
|
||||
|
||||
- 读取正文和评论。
|
||||
- 提取这些信息:UI/Core/Resource 版本、资源时间、模拟器类型、分辨率、截图增强、GPU 推理、任务名、关卡名、是否有 `-hard`、用户现象、复现步骤、维护者或机器人评论。
|
||||
- 不要把评论结论当成唯一证据;仍要用日志和代码自行验证。
|
||||
- 如果 issue 文本或评论里已经有人下了“这是游戏设计 / 不是 bug / 本来就这样”的结论,先暂存,不要直接复述成最终判断;先核对日志、资源任务和当前代码是否真的支持这个结论。
|
||||
|
||||
3. 提取报告附件。
|
||||
4. 提取报告附件。
|
||||
|
||||
- 关注 `report_*.zip`。
|
||||
- 附件可能同时出现在正文和评论。
|
||||
- 按 `report_MM-dd_HH-mm-ss` 分组,同一时间戳下的 `part01`、`part02`、`part03` 是独立 zip,不是需要先拼接的分卷压缩包。
|
||||
|
||||
4. 先看 `part01`,再决定是否看 `part02+`。
|
||||
5. 先看 `part01`,再决定是否看 `part02+`。
|
||||
|
||||
- 根据 WPF 打包逻辑,`part01` 一定优先,通常包含:
|
||||
- `debug/asst.log`
|
||||
@@ -56,7 +65,7 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- `debug/dumps/*`
|
||||
- `part02+` 可能是空包,也可能只包含图片;不要默认里面一定有文本日志。
|
||||
|
||||
5. 建立时间线。
|
||||
6. 建立时间线。
|
||||
|
||||
- 先用 `gui.log` 找用户点击、所选关卡、任务链开始、报错时间。
|
||||
- 再用 `asst.log` 还原底层行为。
|
||||
@@ -71,7 +80,7 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- 后续进入下一步或恢复终态由哪个条件控制
|
||||
- 条件不满足时流程是停止、跳过,还是按设计停在别的状态
|
||||
|
||||
6. 区分 issue 当时环境和当前分支。
|
||||
7. 区分 issue 当时环境和当前分支。
|
||||
|
||||
- 先以报告包中的 `config/` 与 `cache/resource/` 还原用户当时实际运行的配置和资源。
|
||||
- 再对照当前仓库代码,判断该问题是当前仍存在,还是当时存在但现在已修复。
|
||||
@@ -279,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
|
||||
|
||||
@@ -379,7 +388,46 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
|
||||
## Output Format
|
||||
|
||||
最终回答用这个结构:
|
||||
先做输出分流,不要无论什么情况都套完整模板。
|
||||
|
||||
### 分流规则
|
||||
|
||||
- 如果用户没有提供有效证据,只给出一句模糊现象,或只有 issue 文本但没有日志、报告包、截图、报错文本、导出诊断、清晰复现步骤,那么不要输出下面那套完整分析模板。
|
||||
- 这类场景直接改用 `maa-cyber-fortune-master/SKILL.md` 的风格回复,并把“赛博算一卦”放在开头。
|
||||
- 此时输出必须足够短,通常 2 到 4 句即可。
|
||||
- 这类短回复里不要再展开:
|
||||
- `Issue 概要`
|
||||
- `关键证据`
|
||||
- `根因判断`
|
||||
- `修复方案`
|
||||
- `English translation`
|
||||
- “点击此处展开”这类折叠块
|
||||
- 本质要求是:先用玄学接住气氛,再用一句话明确要求补日志、截图、报错或诊断信息。
|
||||
|
||||
### 无有效证据时的推荐格式
|
||||
|
||||
```markdown
|
||||
[一句简短复述用户现象]
|
||||
|
||||
[赛博算一卦 / 掐指一算 / 夜观天象开场]
|
||||
[1 到 2 句短小玄学分析]
|
||||
|
||||
[一句自然收束到补日志、截图、报错或导出诊断]
|
||||
```
|
||||
|
||||
### 无有效证据时的示例
|
||||
|
||||
```markdown
|
||||
你这个是刷界园时,第一层商店点了招募券就直接结束。
|
||||
|
||||
赛博算一卦,界园属木,招募券属火,如今商店财位一震,像是招募灵脉和界园卦象临时撞了车,程序当场收摊回府。
|
||||
|
||||
不过这卦现在只有天象,没有脉案。建议补一份复现当次的日志或报错截图,不然贫道也只能隔着网线观星象。
|
||||
```
|
||||
|
||||
### 有有效证据时
|
||||
|
||||
最终回答再用这个完整结构:
|
||||
|
||||
```markdown
|
||||
## Issue 概要
|
||||
@@ -455,6 +503,8 @@ Translate the complete conclusion directly into English and paste it here. Note
|
||||
|
||||
## Reminders
|
||||
|
||||
- 如果用户没有贴出日志、报告包、截图、报错文本或导出诊断,不要硬套本 skill 的完整分析模板;优先改用 `maa-cyber-fortune-master/SKILL.md`,先把气氛接住,再把话题引回补证据。
|
||||
- 如果是“无有效证据”分支,赛博算卦段落应该放在最开头,并直接结束在“请补证据”;不要再追加长篇的 Issue 摘要、猜测性根因、修复方案或英文翻译。
|
||||
- 不要只看 `gui.log` 下结论。
|
||||
- 不要把 issue 评论或机器人提示当成唯一证据。
|
||||
- 不要把当前分支资源直接当成 issue 当时的真实环境;先看报告包里的 `cache/resource`。
|
||||
|
||||
262
.cursor/skills/code-review-report/SKILL.md
Normal file
262
.cursor/skills/code-review-report/SKILL.md
Normal 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 条件编译)
|
||||
- MaaWineBridge:Wine/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 Unit(3-5 个并行)
|
||||
第二批:P1 Unit(5-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 ` 格式
|
||||
4
.github/workflows/blame-ignore.yml
vendored
4
.github/workflows/blame-ignore.yml
vendored
@@ -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 }}
|
||||
|
||||
24
.github/workflows/ci-avalonia.yml
vendored
24
.github/workflows/ci-avalonia.yml
vendored
@@ -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
|
||||
|
||||
111
.github/workflows/ci.yml
vendored
111
.github/workflows/ci.yml
vendored
@@ -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: |
|
||||
@@ -208,6 +210,7 @@ jobs:
|
||||
with:
|
||||
name: MAAComponent-DebugSymbol-win-${{ matrix.arch }}
|
||||
path: install/MAAComponent-DebugSymbol-${{ needs.meta.outputs.tag }}-win-${{ matrix.arch }}.zip
|
||||
compression-level: 0
|
||||
|
||||
- name: Organize install files
|
||||
shell: bash
|
||||
@@ -230,6 +233,7 @@ jobs:
|
||||
with:
|
||||
name: MAA-win-${{ matrix.arch }}
|
||||
path: install/MAA-*.zip
|
||||
compression-level: 0
|
||||
|
||||
ubuntu:
|
||||
name: Build for Ubuntu
|
||||
@@ -241,7 +245,7 @@ jobs:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
@@ -251,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
|
||||
@@ -348,6 +352,80 @@ jobs:
|
||||
path: |
|
||||
release/*.AppImage
|
||||
release/*.tar.gz
|
||||
compression-level: 0
|
||||
|
||||
android:
|
||||
name: Build for Android
|
||||
needs: meta
|
||||
runs-on: macos-26
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [arm64, x64]
|
||||
fail-fast: false
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
- name: Fetch submodules
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
|
||||
- name: Cache MaaDeps
|
||||
id: cache-maadeps
|
||||
uses: actions/cache@v6
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ./src/MaaUtils/MaaDeps
|
||||
key: ${{ runner.os }}-${{ matrix.arch }}-android-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
|
||||
|
||||
- name: Bootstrap MaaDeps
|
||||
if: steps.cache-maadeps.outputs.cache-hit != 'true'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
python3 tools/maadeps-download.py ${{ matrix.arch }}-android
|
||||
|
||||
- name: Setup Android NDK
|
||||
id: setup-ndk
|
||||
uses: nttld/setup-ndk@v1
|
||||
with:
|
||||
ndk-version: r29
|
||||
|
||||
- name: Configure, build and install
|
||||
run: |
|
||||
cmake -B build --preset 'android-publish-${{ matrix.arch }}' \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake \
|
||||
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build build --parallel $(sysctl -n hw.logicalcpu)
|
||||
cmake --install build --prefix install
|
||||
|
||||
- name: Download MaaFramework
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
latest: true
|
||||
fileName: "*android-${{ matrix.arch == 'arm64' && 'aarch64' || 'x86_64' }}*.zip"
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Copy MaaAndroidNativeControlUnit
|
||||
run: |
|
||||
cp MaaFramework-temp/bin/libMaaAndroidNativeControlUnit.so install/
|
||||
|
||||
- name: Tar files
|
||||
run: |
|
||||
cd install
|
||||
tar czvf $GITHUB_WORKSPACE/MAAComponent-${{ needs.meta.outputs.tag }}-android-${{ matrix.arch }}.tar.gz .
|
||||
|
||||
- name: Upload MAA to GitHub
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: MAAComponent-android-${{ matrix.arch }}
|
||||
path: MAAComponent-*.tar.gz
|
||||
compression-level: 0
|
||||
|
||||
macOS-Core:
|
||||
name: Build Core for macOS
|
||||
@@ -359,7 +437,7 @@ jobs:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
@@ -374,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
|
||||
@@ -417,7 +495,7 @@ jobs:
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
@@ -488,6 +566,8 @@ jobs:
|
||||
with:
|
||||
name: MAA-macos-runtime-universal
|
||||
path: runtime/MAA-${{ needs.meta.outputs.tag }}-macos-runtime-universal.zip
|
||||
compression-level: 0
|
||||
|
||||
|
||||
- name: Build XCFramework
|
||||
run: |
|
||||
@@ -574,7 +654,7 @@ jobs:
|
||||
release:
|
||||
name: Publish Release
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
needs: [meta, windows, ubuntu, macOS-Core, macOS-GUI]
|
||||
needs: [meta, windows, ubuntu, android, macOS-Core, macOS-GUI]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download MAA from GitHub
|
||||
@@ -591,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: |
|
||||
@@ -614,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 }}
|
||||
|
||||
@@ -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 }
|
||||
]
|
||||
}]
|
||||
}')
|
||||
|
||||
25
.github/workflows/issue-ai-analysis.yml
vendored
25
.github/workflows/issue-ai-analysis.yml
vendored
@@ -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)"
|
||||
|
||||
4
.github/workflows/markdown-checker.yml
vendored
4
.github/workflows/markdown-checker.yml
vendored
@@ -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
|
||||
|
||||
4
.github/workflows/optimize-templates.yml
vendored
4
.github/workflows/optimize-templates.yml
vendored
@@ -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 }}
|
||||
|
||||
22
.github/workflows/pr-auto-tag.yml
vendored
22
.github/workflows/pr-auto-tag.yml
vendored
@@ -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
|
||||
|
||||
81
.github/workflows/pr-checker.yml
vendored
81
.github/workflows/pr-checker.yml
vendored
@@ -10,24 +10,6 @@ jobs:
|
||||
if: ${{ !github.event.pull_request.merged && github.base_ref != 'master-v2' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clean up previous comment
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const { data: comments } = await github.rest.issues.listComments({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number
|
||||
});
|
||||
|
||||
const previousComment = comments.find(comment => comment.user.login === 'github-actions[bot]' && comment.body.includes('invalid commit(s)'));
|
||||
if (previousComment) {
|
||||
await github.rest.issues.deleteComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
comment_id: previousComment.id
|
||||
});
|
||||
}
|
||||
- name: Check commits
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
@@ -40,20 +22,59 @@ jobs:
|
||||
});
|
||||
|
||||
const regex = /^((build|chore|ci|docs?|feat!?|fix|perf|refactor|rft|style|test|i18n|typo|debug)[\:\.\(\,]|[Rr]evert|[Rr]elease|[Rr]eapply)/;
|
||||
const invalidCommits = commits.filter(commit => !regex.test(commit.commit.message) || commit.parents.length > 1);
|
||||
const badTitleCommits = commits.filter(commit => !regex.test(commit.commit.message) && commit.parents.length <= 1);
|
||||
const mergeCommits = commits.filter(commit => commit.parents.length > 1);
|
||||
const allInvalid = [...badTitleCommits, ...mergeCommits];
|
||||
|
||||
console.log(`Checked ${commits.length} commit(s)`);
|
||||
console.log(`Checked ${commits.length} commit(s), ${badTitleCommits.length} bad title(s), ${mergeCommits.length} merge commit(s)`);
|
||||
|
||||
if (invalidCommits.length > 0) {
|
||||
const invalidCommitNames = invalidCommits.map(commit => commit.commit.message);
|
||||
const invalidCommitInfoList = invalidCommits.map(commit => `- ${commit.commit.message.split("\n")[0]} [\`${commit.sha.substring(0, 7)}\`](${commit.html_url})`).join("\n");
|
||||
const { data: comments } = await github.rest.issues.listComments({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number
|
||||
});
|
||||
|
||||
github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
body: `## ⚠️ Found ${invalidCommits.length} invalid commit(s):\n\n${invalidCommitInfoList}\n\n---\nPlease follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format, and **DO NOT** use merge commits.\n请遵循 [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) 格式,以及**不要**使用Merge Commit(修改 Commit Message 无法绕过检测)。`
|
||||
});
|
||||
const previousComment = comments.find(comment => comment.user.login === 'github-actions[bot]' && comment.body.includes('invalid commit(s)'));
|
||||
|
||||
core.setFailed(`Found ${invalidCommits.length} invalid commit(s):\n${invalidCommitNames.join("\n-------------------\n")}`);
|
||||
if (allInvalid.length > 0) {
|
||||
const formatList = (list) => list.map(commit => `- ${commit.commit.message.split("\n")[0]} [\`${commit.sha.substring(0, 7)}\`](${commit.html_url})`).join("\n");
|
||||
|
||||
let bodySections = [];
|
||||
if (badTitleCommits.length > 0) {
|
||||
bodySections.push(`### 不合规提交名 | Invalid Commit Title(s):\n\n${formatList(badTitleCommits)}`);
|
||||
}
|
||||
if (mergeCommits.length > 0) {
|
||||
bodySections.push(`### 不应使用 Merge Commit | Merge Commit(s) Detected:\n\n${formatList(mergeCommits)}`);
|
||||
}
|
||||
|
||||
const newBody = `## ⚠️ 发现 ${allInvalid.length} 个不合规提交 | Found ${allInvalid.length} invalid commit(s):\n\n${bodySections.join("\n\n")}\n\n---\n请遵循 [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) 格式,以及**不要**使用Merge Commit(修改 Commit Message 无法绕过检测)。\nPlease follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format, and **DO NOT** use merge commits.`;
|
||||
|
||||
if (previousComment && previousComment.body === newBody) {
|
||||
console.log("Invalid commits unchanged, skipping comment update");
|
||||
} else {
|
||||
if (previousComment) {
|
||||
await github.rest.issues.deleteComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
comment_id: previousComment.id
|
||||
});
|
||||
}
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
body: newBody
|
||||
});
|
||||
}
|
||||
|
||||
const allInvalidNames = allInvalid.map(commit => commit.commit.message);
|
||||
core.setFailed(`Found ${allInvalid.length} invalid commit(s):\n${allInvalidNames.join("\n-------------------\n")}`);
|
||||
} else {
|
||||
if (previousComment) {
|
||||
await github.rest.issues.deleteComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
comment_id: previousComment.id
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
4
.github/workflows/pre-commit-scheduled.yml
vendored
4
.github/workflows/pre-commit-scheduled.yml
vendored
@@ -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
|
||||
|
||||
12
.github/workflows/release-nightly-ota.yml
vendored
12
.github/workflows/release-nightly-ota.yml
vendored
@@ -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 }}
|
||||
|
||||
24
.github/workflows/release-ota.yml
vendored
24
.github/workflows/release-ota.yml
vendored
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
152
.github/workflows/release-preparation.yml
vendored
152
.github/workflows/release-preparation.yml
vendored
@@ -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
|
||||
|
||||
16
.github/workflows/res-update-game.yml
vendored
16
.github/workflows/res-update-game.yml
vendored
@@ -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 }}
|
||||
|
||||
8
.github/workflows/smoke-testing.yml
vendored
8
.github/workflows/smoke-testing.yml
vendored
@@ -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 }}
|
||||
|
||||
4
.github/workflows/sync-resource.yml
vendored
4
.github/workflows/sync-resource.yml
vendored
@@ -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
|
||||
|
||||
4
.github/workflows/unit-tests.yml
vendored
4
.github/workflows/unit-tests.yml
vendored
@@ -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
|
||||
|
||||
|
||||
4
.github/workflows/update-submodules.yml
vendored
4
.github/workflows/update-submodules.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/website-workflow.yml
vendored
2
.github/workflows/website-workflow.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
timeout-minutes: 20
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -416,6 +416,7 @@ FodyWeavers.xsd
|
||||
# !.vscode/launch.json
|
||||
# !.vscode/extensions.json
|
||||
*.code-workspace
|
||||
*.csproj.lscache
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
@@ -486,3 +487,4 @@ install-*
|
||||
|
||||
# CMake user presets
|
||||
CMakeUserPresets.json
|
||||
.ace-tool/
|
||||
|
||||
256
CHANGELOG.md
256
CHANGELOG.md
@@ -1,225 +1,87 @@
|
||||
## v6.9.4
|
||||
|
||||
### 许愿墙前挂满愿签,牛牛顺手把更新器、作战流程和海外服体验都打磨了一遍 | Highlights
|
||||
|
||||
这一版的重点仍然是把日常使用体验打磨得更顺手、更稳定。我们一边补齐周年活动与海外服适配,一边继续清理那些会打断长时间挂机流程的细碎问题。
|
||||
|
||||
#### 启动流程与更新可视化
|
||||
|
||||
MAA 现在会在重复启动时直接唤起已经打开的主窗口,不再额外弹出警告打断操作。与此同时,更新器补上了暗色模式、进度条与控制台输出,避免后台更新时因看不到进度而被重复打开,进一步降低更新流程出问题的概率。
|
||||
|
||||
#### 自动作战更稳,也更懂得何时停下
|
||||
|
||||
这一版为关卡未解锁、剿灭未启用全权代理等场景补上了提前停止检查,也支持保存代理指挥记录,并在合成玉 0 掉落时自动结束任务。针对 5.1 七周年版本更新后理智上限调整带来的影响,本次还修复了理智汇报与代理倍率选择异常;此前生息演算容易卡住的问题,同样也是由 5.1 更新后的变更引起,现在也已一并处理。
|
||||
|
||||
技能识别准确率也在这一版中大幅提升。默认情况下,MAA 会在 debug/skill_ready 下仅保留最近 50 次技能识别结果;如果你在自动战斗中遇到技能识别错误,欢迎及时携带日志和截图反馈。若根目录下存在 DEBUG_skill_ready.txt,则会无限保存相关截图;如果你愿意帮助我们训练技能识别模型,可以创建该文件,将错误分类的文件放入 对应标签_err 文件夹后发送至 uye[at]maa-org.net。
|
||||
|
||||
#### 七周年与海外服内容继续补齐
|
||||
|
||||
本次更新适配了七周年许愿墙、“重构”界面主题与争锋频道「绿藤城」,也补齐了 Yostar JP、EN、KR 小游戏相关的 SPA、资源与模板优化,让活动期间和海外服环境下的使用体验更完整。
|
||||
|
||||
----
|
||||
## v6.13.0
|
||||
|
||||
### Highlights
|
||||
|
||||
This release continues to focus on making everyday use smoother and more reliable. Alongside support for anniversary content and overseas servers, we kept cleaning up the small but disruptive issues that can break long unattended runs.
|
||||
#### 6 星自动公招支持
|
||||
|
||||
#### Better Launch Flow and Update Visibility
|
||||
新增可通过手动修改配置文件开启的 6 星自动公招功能,「是否招募」和「招募时间」选项移入常规设置,并优化了相关提示信息。
|
||||
|
||||
MAA now re-activates the existing main window on repeated launches instead of interrupting users with an extra warning dialog. The updater also gains dark mode, a progress bar, and console output, helping users avoid reopening it while an update is still running in the background without visible feedback.
|
||||
#### 通知不可用时自动回退
|
||||
|
||||
#### More Reliable Automation, with Smarter Stop Conditions
|
||||
系统通知无法显示时自动回退到软件内通知,避免用户错过重要提醒;启动时的通知检测提示也改为软件内弹窗,不再仅写入日志。
|
||||
|
||||
This version adds early-stop checks for locked stages and annihilation runs without proxy enabled, and it can now save auto-command records while ending runs automatically when 0 Orundum is detected. It also fixes incorrect sanity reporting and proxy multiplier selection caused by the sanity cap changes introduced in the 5.1 anniversary update. The Reclamation Algorithm freeze issue was caused by the same 5.1 update and has been fixed as well.
|
||||
#### 切换语言无需重启
|
||||
|
||||
Skill recognition accuracy has also been significantly improved. By default, MAA keeps only the most recent 50 skill-recognition results under debug/skill_ready. If you encounter incorrect skill recognition during auto-battle, please report it together with the relevant logs and screenshots. If DEBUG_skill_ready.txt exists in the root directory, related screenshots will be saved without limit. If you would like to help train the skill-recognition model, you can create that file, move misclassified files into the corresponding label_err folder, and send them to uye[at]maa-org.net.
|
||||
切换软件界面语言不再需要重启,干员识别、仓库识别等界面同步支持动态切换。
|
||||
|
||||
#### Continued Anniversary and Overseas Server Coverage
|
||||
<details>
|
||||
<summary><b>English</b></summary>
|
||||
|
||||
This update adapts to the 7th anniversary wishing wall, the “Reclamation” interface theme, and the Green Vine channel in SSS. It also rounds out Yostar JP, EN, and KR minigame SPA support together with related resource and template optimizations, making event-period and overseas-server usage more complete.
|
||||
#### 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
|
||||
|
||||
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.
|
||||
|
||||
#### Switch Language Without Restart
|
||||
|
||||
Switching the UI language no longer requires a restart; operator recognition, depot recognition, and other views now support dynamic switching.
|
||||
|
||||
</details>
|
||||
|
||||
----
|
||||
|
||||
以下是详细内容:
|
||||
|
||||
## v.6.9.4
|
||||
<details open>
|
||||
<summary><b>v6.13.0 (2026-06-28)</b></summary>
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 手动输入关卡名支持使用 -Normal/-Hard 切换 常规/险地 难度 @ABA2396
|
||||
* use v2 version of icons (#16556) @Constrat @ABA2396
|
||||
* 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
|
||||
|
||||
* optimize templates @Constrat
|
||||
* 统一任务队列与自动战斗的停止逻辑 ([#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
|
||||
|
||||
* 調整繁中服部分幹員名稱 OCR (#16561) @momomochi987
|
||||
* 繁中服肉鴿薩卡滋事件辨識 聚思成塔 (#16541) @CC-creator2026
|
||||
* LogWarn 等宏在 Release 下依旧输出 scope 导致额外间隔 @status102
|
||||
* 修复通宝交换/投钱任务链以适配交换通宝/投钱后获得藏品的情况 (#16553) @travellerse
|
||||
* 外部通知设置界面调整 (#16552) @2436238575
|
||||
* 界园肉鸽投资模式也启用通宝插件 (#16551) @travellerse
|
||||
* 修复窗体关闭过程中再次启动时报“关闭期间无法设置可见性或调用 Show/Close”的异常 @ABA2396
|
||||
* 繁中服肉鴿辨識 (#16535) @CC-creator2026
|
||||
* 修复删除 debug 截图时因文件被占用导致应用闪退的问题 @ABA2396
|
||||
* 远程控制启动任务未记录开始时间 (#16522) @March7th-OvO
|
||||
* 部分成就分期错误 @ABA2396
|
||||
* IS6 encounter trailing `o` and `-` fix #16525 @Constrat
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 更新 wiki 文档,增强内容结构与描述 @AnnAngela
|
||||
* update zh-tw preview image (#16517) @momomochi987
|
||||
* 修复 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
|
||||
|
||||
* 繁中服「快速放入線索」與「一鍵贈送重複線索」 (#16562) @momomochi987
|
||||
* Lucky 的概率改为 0.0799% @ABA2396
|
||||
* 使用 PC 端时不传账号 @ABA2396
|
||||
* 增加 issue 分析知识库 @ABA2396
|
||||
* 修改手动输入关卡名的悬浮描述 @ABA2396
|
||||
* 生成日志压缩包时的缓存目录改为本地 reports 目录 @ABA2396
|
||||
* 提前最小截图间隔的检查,小于间隔时跳过识别 @ABA2396
|
||||
* 繁中服界園肉鴿 DLC1 & sss 9 炭火安保派駐 (#16516) @momomochi987
|
||||
* 繁中服「界園」主題與「齊聚」主題 (#16515) @momomochi987
|
||||
* restore JP StageAnnihilation.png @Manicsteiner
|
||||
* YostarKR PV minigame @HX3N
|
||||
* fix JP time ocr (#16557) @Manicsteiner
|
||||
* YostarJP PV templates and ocr (#16505) @Manicsteiner
|
||||
* EN PV minigame @Constrat
|
||||
* Add context7.json with URL and public key @AnnAngela
|
||||
* 修复 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
|
||||
|
||||
## v6.9.3
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 优先使用更新包中的 updater @ABA2396
|
||||
* 添加因为缺少 MAA.Updater.exe 导致更新失败的弹窗提示 @ABA2396
|
||||
* 更新 153-4 基建作业 @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 自动战斗结束增加LoadingIcon等待项 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* Analyzer执行前未检查 m_roi 是否未空 @status102
|
||||
* 修复小游戏界面的开始按钮在连接模拟器失败时仍然发送开始信号 @ABA2396
|
||||
* 自动战斗进入等待过长 @status102
|
||||
* OF-1 战斗后等待过长导致部分后续流程失败 @status102
|
||||
* 修复部分成就判断条件错误 @ABA2396
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* update JP preview image (#16485) @Manicsteiner
|
||||
* 更新 README 预览图片 @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* local-install 使用 ci 同款处理方法 @ABA2396
|
||||
|
||||
## v6.9.2
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 剿灭入口检测支持代理卡耗尽情况 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 开始唤醒流程 @status102
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 添加 DLL 注入问题解决方案并优化 FAQ 描述 (#16404) @ocsin1
|
||||
|
||||
## v6.9.1
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 新增完整包更新时的强制提示,安装在根目录或部分特殊目录根目录时禁止启动与更新 (#16435) @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 支持沙盘战斗结束识别,重构战斗失败识别逻辑 (#16449) @status102
|
||||
* 修正应用宝连接时额外的 ClientType 设置 @status102 @ABA2396
|
||||
* 优化自动编队在 Elite 图标匹配失败或无精英化干员时的判定 @status102 @ABA2396
|
||||
* 临期理智药到期时间 OCR 与处理逻辑进一步优化,遇到时效识别失败时会取消本次吃药 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 修复部分场景下无法自动启动游戏,以及开始唤醒后过早切换账号的问题 (#16422) @1b2c @status102
|
||||
* 修复临期理智药库存位数、日期前缀与剩余时间输出等识别问题,并移除不再生效的日服 ROI 覆盖 @status102
|
||||
* 修复绿票商店稳定性问题,并调整信用商店识别区域以支持 4 位数信用识别 (#16369) @Roland125 @ABA2396 @ZiyinLin
|
||||
* 修复剿灭入口图片资源与结算合成玉基线识别问题 (#16458) (#16460) @Roland125
|
||||
* 修复凯尔希与 GALLUS² 识别问题 @Saratoga-Official
|
||||
* 修复设置指引中连接设置“每次重新检测”提示块隐藏错误 @ABA2396
|
||||
* 修复自动战斗多作业模式导航 retry_time 异常 @status102
|
||||
* 修复公招计数返回值,适配更精细的招募计数 (#16355) (#16371) @Roland125
|
||||
* 修复若干正确性问题(含肉鸽投资存款校验、pixel analyzer 灰度阈值、rect 越界裁剪、肉鸽招募时间解析、密文板识别等) @status102 @FireflySentinel
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 补全连接阶段的 ClientType 参数说明 @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* PC 端连接跳过数据上报 @ABA2396
|
||||
|
||||
## v6.9.0
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 重复启动时通过跨进程事件激活主窗口,替代弹窗警告提示 (#16363) @ABA2396
|
||||
* 新增关卡未解锁代理或剿灭未启用全权代理时的错误停止检查 (#16357) @ABA2396
|
||||
* 新增保存代理指挥记录功能,并支持合成玉掉落检查,0 掉落时自动结束任务 (#16356) @Roland125
|
||||
* 掉落物识别额外输出剿灭进度信息 @status102
|
||||
* 适配“重构”界面主题 (#16349) @SherkeyXD
|
||||
* 支持腾讯应用宝 5.10.56.xx (#16292) @srdr0p
|
||||
* 新增 updater 暗色模式支持 @ABA2396
|
||||
* 新增 updater 进度条与控制台输出支持 @ABA2396
|
||||
* 支持 PC 端 `完成后退出明日方舟` (#16351) @glimmertouch
|
||||
* 新增争锋频道「绿藤城」支持 (#16345) @Daydreamer114
|
||||
* 适配七周年许愿墙 @Copilot
|
||||
* YostarJP/EN/KR MiniGame SPA @Manicsteiner @Constrat @HX3N
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 统一 CheckComboBox 样式 @ABA2396
|
||||
* 大幅提升技能就绪识别准确率,优化技能截图保存策略 (#16393) @ABA2396
|
||||
* 合并并简化任务状态逻辑 @status102
|
||||
* 统一 ProcessTask 匹配命中状态更新逻辑 @status102
|
||||
* 优化 1 星词条选项操作描述 @status102
|
||||
* 理智上限提升至 210 @status102
|
||||
* 调整完整后 `无其他 MAA` 选项绑定逻辑,不再强制勾选退出模拟器 @ABA2396
|
||||
* 调整选项 `IsEnabled` 逻辑 @ABA2396
|
||||
* 使用 PC 端连接方式时,自动禁用不支持的完成后操作 @ABA2396
|
||||
* optimize templates yostarkr SPA @Constrat
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 修复 3 星 tag 标题显示异常 @ABA2396
|
||||
* 修复 CheckComboBox 不显示标题的问题 @ABA2396
|
||||
* 修复生息演算 5.1 更新后无法使用无存档刷分的问题 (#16402) @ABA2396
|
||||
* 修复剿灭后出现升级界面导致任务无法继续的问题 (#16255) (#16370) @Roland125
|
||||
* 修复干员仓储识别中升变阿米娅的识别问题 @status102
|
||||
* 修复若干正确性问题(含 null check / race / clamp / retry 等 9 处) (#16332) @FireflySentinel
|
||||
* 修复干员仓储识别未跳过数据查找失败干员的问题 @status102
|
||||
* 修复 EN IS6 trail 正则匹配问题 @Constrat
|
||||
* 修复月度小队隐藏分队选择的问题 @SherkeyXD
|
||||
* 修复小游戏列表中下拉框偶现无法展开的问题 @ABA2396
|
||||
* 修复蓝叠模拟器关闭失败的问题 (#16388) @lengyanyu258
|
||||
* 升级结算时闪退 @ABA2396
|
||||
* lower YoStarJP office mini threshold (#16390) @Rememorio
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 更新部分代码注释 (#16215) @JasonHuang79
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* 任务排序支持 JSONC @ABA2396
|
||||
* 调整资源更新环境 @ABA2396
|
||||
* 修改 issue template @ABA2396
|
||||
* 更新周年月卡相关文本 @SherkeyXD
|
||||
</details>
|
||||
|
||||
@@ -49,6 +49,13 @@ if(BUILD_WPF_GUI)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ANDROID)
|
||||
add_library(stdc++fs INTERFACE)
|
||||
add_compile_options(-Wno-unused-parameter)
|
||||
add_compile_options(-ffunction-sections -fdata-sections)
|
||||
add_link_options(-Wl,--gc-sections)
|
||||
endif()
|
||||
|
||||
if(INSTALL_PYTHON)
|
||||
install(DIRECTORY src/Python DESTINATION .)
|
||||
endif()
|
||||
|
||||
@@ -158,6 +158,39 @@
|
||||
"CMAKE_OSX_ARCHITECTURES": "x86_64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "android-base",
|
||||
"hidden": true,
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"$comment": [
|
||||
"Base for Android presets; cross-compilation via NDK toolchain",
|
||||
"CMAKE_TOOLCHAIN_FILE must be passed externally pointing to NDK's android.toolchain.cmake"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"CMAKE_SYSTEM_NAME": "Android",
|
||||
"ANDROID_PLATFORM": "android-28",
|
||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "android-arm64",
|
||||
"inherits": "android-base",
|
||||
"displayName": "Android arm64",
|
||||
"cacheVariables": {
|
||||
"ANDROID_ABI": "arm64-v8a",
|
||||
"MAADEPS_TRIPLET": "maa-arm64-android"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "android-x64",
|
||||
"inherits": "android-base",
|
||||
"displayName": "Android x64",
|
||||
"cacheVariables": {
|
||||
"ANDROID_ABI": "x86_64",
|
||||
"MAADEPS_TRIPLET": "maa-x64-android"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "publish-base",
|
||||
"$comment": [
|
||||
@@ -184,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"
|
||||
},
|
||||
{
|
||||
@@ -200,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"
|
||||
},
|
||||
{
|
||||
@@ -239,6 +262,22 @@
|
||||
],
|
||||
"displayName": "macOS arm64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "android-publish-arm64",
|
||||
"inherits": ["publish-base", "android-arm64"],
|
||||
"displayName": "Android arm64 Publish",
|
||||
"cacheVariables": {
|
||||
"INSTALL_PYTHON": "OFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "android-publish-x64",
|
||||
"inherits": ["publish-base", "android-x64"],
|
||||
"displayName": "Android x64 Publish",
|
||||
"cacheVariables": {
|
||||
"INSTALL_PYTHON": "OFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "smoke-test",
|
||||
"$comment": [
|
||||
@@ -400,6 +439,16 @@
|
||||
"configurePreset": "macos-publish-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "android-publish-arm64",
|
||||
"displayName": "Build Android arm64 Publish",
|
||||
"configurePreset": "android-publish-arm64"
|
||||
},
|
||||
{
|
||||
"name": "android-publish-x64",
|
||||
"displayName": "Build Android x64 Publish",
|
||||
"configurePreset": "android-publish-x64"
|
||||
},
|
||||
{
|
||||
"name": "smoke-test",
|
||||
"displayName": "Build macOS arm64 Smoke Test",
|
||||
|
||||
@@ -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)
|
||||
|
||||
### 外服适配
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@ Our documentation is built on [vuepress](https://github.com/vuejs/vuepress) and
|
||||
|
||||
This theme provides support for custom containers such as tips, notes, info, warnings, alerts, and details. We can utilize this feature to emphasize certain content.
|
||||
|
||||
Note that if containers are nested within containers, the parent container should use one more colon `:` than the child container to differentiate them.
|
||||
|
||||
Usage of containers:
|
||||
|
||||
```markdown
|
||||
@@ -31,6 +33,13 @@ Content you want to write
|
||||
:::
|
||||
```
|
||||
|
||||
Or use GitHub-style syntax:
|
||||
|
||||
```markdown
|
||||
> [!Container Type]
|
||||
> Content you want to write
|
||||
```
|
||||
|
||||
Accepted container types and their default titles are as follows:
|
||||
|
||||
- `tip` Tips
|
||||
@@ -39,6 +48,7 @@ Accepted container types and their default titles are as follows:
|
||||
- `warning` Warning
|
||||
- `danger` Caution
|
||||
- `details` Details
|
||||
- `window` ==Special Container==
|
||||
|
||||
### Container Examples
|
||||
|
||||
@@ -66,6 +76,190 @@ This is a danger container
|
||||
This is a details container
|
||||
:::
|
||||
|
||||
::: window
|
||||
This is a very special container
|
||||
:::
|
||||
|
||||
## Markers
|
||||
|
||||
You can use the marker syntax to highlight content and emphasize key points.
|
||||
|
||||
Usage: Use `==content=={color (optional)}` syntax to mark text. Note that spaces are required on both sides of the marks.
|
||||
|
||||
**Input:**
|
||||
|
||||
```markdown
|
||||
MaaAssistantArknights is developed by ==many pigs==
|
||||
```
|
||||
|
||||
**Output:**
|
||||
|
||||
MaaAssistantArknights is developed by ==many pigs==
|
||||
|
||||
The theme also has the following built-in color schemes:
|
||||
|
||||
- **default**: `==Default==` - ==Default==
|
||||
- **info**: `==Info=={.info}` - ==Info=={.info}
|
||||
- **note**: `==Note=={.note}` - ==Note=={.note}
|
||||
- **tip**: `==Tip=={.tip}` - ==Tip=={.tip}
|
||||
- **warning**: `==Warning=={.warning}` - ==Warning=={.warning}
|
||||
- **danger**: `==Danger=={.danger}` - ==Danger=={.danger}
|
||||
- **caution**: `==Caution=={.caution}` - ==Caution=={.caution}
|
||||
- **important**: `==Important=={.important}` - ==Important=={.important}
|
||||
|
||||
## Hidden Text
|
||||
|
||||
For some reason, you may need to temporarily black out a section of the document. In this case, you can use the hidden text feature.
|
||||
|
||||
You can use the `!!content!!{config (optional)}` syntax, and the default effect is as follows:
|
||||
|
||||
!!I always feel like I'm reading MoeGirl (strikethrough!!
|
||||
|
||||
The following configurations are available:
|
||||
|
||||
::: window
|
||||
Input:
|
||||
|
||||
```markdown
|
||||
+ Mask effect + Mouse hover: !!Mouse hover to see me!!{.mask .hover}
|
||||
+ Mask effect + Click: !!Click to see me!!{.mask .click}
|
||||
+ Text blur effect + Mouse hover: !!Mouse hover to see me!!{.blur .hover}
|
||||
+ Text blur effect + Click: !!Click to see me!!{.blur .click}
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
- Mask effect + Mouse hover: !!Mouse hover to see me!!{.mask .hover}
|
||||
- Mask effect + Click: !!Click to see me!!{.mask .click}
|
||||
- Text blur effect + Mouse hover: !!Mouse hover to see me!!{.blur .hover}
|
||||
- Text blur effect + Click: !!Click to see me!!{.blur .click}
|
||||
|
||||
:::
|
||||
|
||||
## Steps
|
||||
|
||||
When writing a step-by-step tutorial, ordered lists may lose their hierarchy due to nesting. In this case, the `steps` container is the best choice.
|
||||
|
||||
Input:
|
||||
|
||||
````markdown
|
||||
:::: steps
|
||||
1. Step 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. Step 2
|
||||
|
||||
Here is the content related to Step 2
|
||||
|
||||
3. Step 3
|
||||
|
||||
::: tip
|
||||
Tip container
|
||||
:::
|
||||
|
||||
4. End
|
||||
::::
|
||||
````
|
||||
|
||||
Output:
|
||||
|
||||
:::: steps
|
||||
|
||||
1. Step 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. Step 2
|
||||
|
||||
Here is the content related to Step 2
|
||||
|
||||
3. Step 3
|
||||
|
||||
::: tip
|
||||
Tip container
|
||||
:::
|
||||
|
||||
4. End
|
||||
|
||||
::::
|
||||
|
||||
## Smart Image Container
|
||||
|
||||
We have wrapped an image container based on the functionality provided by the theme. This container can automatically display the corresponding image in light and dark themes, while supporting automatic layout.
|
||||
|
||||
You can use the `<ImageGrid>` component in the markdown body to invoke this method. The specific syntax and effects are as follows:
|
||||
|
||||
::: window
|
||||
|
||||
This is the syntax:
|
||||
|
||||
```markdown
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/3-light.png',
|
||||
dark: 'images/zh-cn/readme/3-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/4-light.png',
|
||||
dark: 'images/zh-cn/readme/4-dark.png'
|
||||
}
|
||||
]" />
|
||||
```
|
||||
|
||||
This is the rendered result:
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
}
|
||||
]" />
|
||||
|
||||
:::
|
||||
|
||||
## Field Container
|
||||
|
||||
This syntax is more complex. Please refer to the [official documentation](https://theme-plume.vuejs.press/guide/markdown/field/) for usage.
|
||||
|
||||
The effects are as follows:
|
||||
|
||||
:::: field-group
|
||||
::: field name="theme" type="ThemeConfig" required default="{ base: '/' }"
|
||||
Theme configuration
|
||||
:::
|
||||
|
||||
::: field name="enabled" type="boolean" optional default="true"
|
||||
Whether to enable
|
||||
:::
|
||||
|
||||
::: field name="callback" type="(...args: any[]) => void" optional default="() => {}"
|
||||
<Badge type="tip" text="Added in v1.0.0" />
|
||||
Callback function
|
||||
:::
|
||||
|
||||
::: field name="other" type="string" deprecated
|
||||
<Badge type="danger" text="Deprecated in v0.9.0" />
|
||||
Deprecated property
|
||||
:::
|
||||
::::
|
||||
|
||||
## Icons
|
||||
|
||||
This theme provides icon support, where you can use icons in the following places:
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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!
|
||||
|
||||
:::
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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="["荧光棒"]"
|
||||
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.
|
||||
:::
|
||||
::::
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@ icon: jam:write-f
|
||||
|
||||
このテーマでは、ヒント、ノート、情報、注意、警告、詳細などのカスタムコンテナをサポートしており、これらの機能を利用して特定のコンテンツを強調することができます。
|
||||
|
||||
コンテナ内にコンテナをネストする場合、親コンテナは子コンテナよりもコロン `:` を1つ多く記述する必要があります。
|
||||
|
||||
コンテナの使用方法:
|
||||
|
||||
```markdown
|
||||
@@ -31,6 +33,13 @@ icon: jam:write-f
|
||||
:::
|
||||
```
|
||||
|
||||
または GitHub スタイルの構文を使用する方法:
|
||||
|
||||
```markdown
|
||||
> [!コンテナの種類]
|
||||
> 書きたい内容
|
||||
```
|
||||
|
||||
受け入れられるコンテナの内容とデフォルトのタイトルは次のとおりです:
|
||||
|
||||
- `tip` ヒント
|
||||
@@ -39,6 +48,7 @@ icon: jam:write-f
|
||||
- `warning` 注意
|
||||
- `danger` 警告
|
||||
- `details` 詳細
|
||||
- `window` ==特殊なコンテナ==
|
||||
|
||||
### コンテナの例
|
||||
|
||||
@@ -66,6 +76,190 @@ icon: jam:write-f
|
||||
これは詳細のコンテナです
|
||||
:::
|
||||
|
||||
::: window
|
||||
これは特殊なコンテナです
|
||||
:::
|
||||
|
||||
## マーカー
|
||||
|
||||
マーカー構文を使用して、強調したい内容にマークを付けることができます。
|
||||
|
||||
使用方法:`==マーカーの内容=={マーカーの色(オプション)}` の構文でマークを付けます。両端にスペースが必要な点に注意してください。
|
||||
|
||||
**入力:**
|
||||
|
||||
```markdown
|
||||
MaaAssistantArknights は ==たくさんの豚== によって開発されました
|
||||
```
|
||||
|
||||
**出力:**
|
||||
|
||||
MaaAssistantArknights は ==たくさんの豚== によって開発されました
|
||||
|
||||
テーマには以下のカラースキームが組み込まれています:
|
||||
|
||||
- **default**: `==Default==` - ==Default==
|
||||
- **info**: `==Info=={.info}` - ==Info=={.info}
|
||||
- **note**: `==Note=={.note}` - ==Note=={.note}
|
||||
- **tip**: `==Tip=={.tip}` - ==Tip=={.tip}
|
||||
- **warning**: `==Warning=={.warning}` - ==Warning=={.warning}
|
||||
- **danger**: `==Danger=={.danger}` - ==Danger=={.danger}
|
||||
- **caution**: `==Caution=={.caution}` - ==Caution=={.caution}
|
||||
- **important**: `==Important=={.important}` - ==Important=={.important}
|
||||
|
||||
## 隠しテキスト
|
||||
|
||||
何らかの理由でドキュメントの一部を一時的に隠す必要がある場合、隠しテキスト機能を使用できます。
|
||||
|
||||
`!!隠したい内容!!{設定(オプション)}` の構文で使用でき、デフォルトの効果は以下の通りです:
|
||||
|
||||
!!なんかニコニコ大百科(仮)を読んでる気がする(取り消し線!!
|
||||
|
||||
以下の設定が使用できます:
|
||||
|
||||
::: window
|
||||
入力:
|
||||
|
||||
```markdown
|
||||
+ マスクエフェクト + マウスホバー:!!マウスホバーで見えます!!{.mask .hover}
|
||||
+ マスクエフェクト + クリック:!!クリックで見えます!!{.mask .click}
|
||||
+ テキストぼかしエフェクト + マウスホバー:!!マウスホバーで見えます!!{.blur .hover}
|
||||
+ テキストぼかしエフェクト + クリック:!!クリックで見えます!!{.blur .click}
|
||||
```
|
||||
|
||||
出力:
|
||||
|
||||
- マスクエフェクト + マウスホバー:!!マウスホバーで見えます!!{.mask .hover}
|
||||
- マスクエフェクト + クリック:!!クリックで見えます!!{.mask .click}
|
||||
- テキストぼかしエフェクト + マウスホバー:!!マウスホバーで見えます!!{.blur .hover}
|
||||
- テキストぼかしエフェクト + クリック:!!クリックで見えます!!{.blur .click}
|
||||
|
||||
:::
|
||||
|
||||
## ステップ
|
||||
|
||||
ステップバイステップのチュートリアルを書くとき、番号付きリストはネストによって階層感を失うことがあります。そのような場合、`steps` コンテナが最善の選択です。
|
||||
|
||||
入力:
|
||||
|
||||
````markdown
|
||||
:::: steps
|
||||
1. ステップ 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. ステップ 2
|
||||
|
||||
ステップ 2 の関連内容はこちら
|
||||
|
||||
3. ステップ 3
|
||||
|
||||
::: tip
|
||||
ヒントコンテナ
|
||||
:::
|
||||
|
||||
4. 終わり
|
||||
::::
|
||||
````
|
||||
|
||||
出力:
|
||||
|
||||
:::: steps
|
||||
|
||||
1. ステップ 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. ステップ 2
|
||||
|
||||
ステップ 2 の関連内容はこちら
|
||||
|
||||
3. ステップ 3
|
||||
|
||||
::: tip
|
||||
ヒントコンテナ
|
||||
:::
|
||||
|
||||
4. 終わり
|
||||
|
||||
::::
|
||||
|
||||
## スマート画像コンテナ
|
||||
|
||||
テーマが提供する機能をベースに画像コンテナをラッパーしました。このコンテナはライト/ダークテーマに応じて対応する画像を自動的に表示し、自動レイアウトをサポートします。
|
||||
|
||||
Markdown 本文で `<ImageGrid>` コンポーネントを使用してこのメソッドを呼び出すことができます。具体的な構文と効果は以下の通りです:
|
||||
|
||||
::: window
|
||||
|
||||
構文:
|
||||
|
||||
```markdown
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/3-light.png',
|
||||
dark: 'images/zh-cn/readme/3-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/4-light.png',
|
||||
dark: 'images/zh-cn/readme/4-dark.png'
|
||||
}
|
||||
]" />
|
||||
```
|
||||
|
||||
レンダリング結果:
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
}
|
||||
]" />
|
||||
|
||||
:::
|
||||
|
||||
## フィールドコンテナ
|
||||
|
||||
この構文はやや複雑なため、[公式ドキュメント](https://theme-plume.vuejs.press/guide/markdown/field/)を参照して使用してください。
|
||||
|
||||
効果は以下の通りです:
|
||||
|
||||
:::: field-group
|
||||
::: field name="theme" type="ThemeConfig" required default="{ base: '/' }"
|
||||
テーマ設定
|
||||
:::
|
||||
|
||||
::: field name="enabled" type="boolean" optional default="true"
|
||||
有効かどうか
|
||||
:::
|
||||
|
||||
::: field name="callback" type="(...args: any[]) => void" optional default="() => {}"
|
||||
<Badge type="tip" text="v1.0.0 追加" />
|
||||
コールバック関数
|
||||
:::
|
||||
|
||||
::: field name="other" type="string" deprecated
|
||||
<Badge type="danger" text="v0.9.0 廃止" />
|
||||
廃止されたプロパティ
|
||||
:::
|
||||
::::
|
||||
|
||||
## アイコン
|
||||
|
||||
このテーマではアイコンがサポートされており、次の場所でアイコンを使用できます:
|
||||
|
||||
@@ -199,7 +199,7 @@ strategy = "merge" # 或者 "first" (默认)
|
||||
|
||||
# 在周天晚上使用所有的将要过期的理智药
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
params = { medicine_expire_days = 2 }
|
||||
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
|
||||
@@ -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!
|
||||
|
||||
:::
|
||||
|
||||
@@ -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) 欄を変更します
|
||||
::::
|
||||
|
||||
## エミュレータのサポート
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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撃破ミッションを達成
|
||||
|
||||
@@ -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 はその公開求人枠を保持したまま今回の募集をスキップし、確認操作は行いません。
|
||||
|
||||
@@ -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`)の入力を推奨
|
||||
|
||||
## 接続設定
|
||||
|
||||
|
||||
@@ -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 が目標フレームレートに合わせてエミュレータのスクリーンショットを取得し、ウィンドウ中央にリアルタイム表示します。
|
||||
|
||||
スクショ取得速度が目標フレームレートに対して明らかに遅い場合、スクショ速度に合わせて目標フレームレートを自動で下げます。~~負荷テストにもどうぞ~~
|
||||
|
||||
## ミニゲーム
|
||||
|
||||
イベント内のミニゲームを自動的に周回します。名前の選択に対応し、設定で常設と当期限定イベントを切り替えられます。
|
||||
|
||||
内蔵機能:
|
||||
|
||||
- イベントショップ交換
|
||||
- 緑チケットショップ交換
|
||||
- 黄チケットショップ交換
|
||||
- 生息演算ショップ交換
|
||||
- シークレットフロント(エンディングとイベント分岐の選択に対応)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -227,7 +227,7 @@ Todo
|
||||
- `MedicineConfirm`
|
||||
理性回復剤使用確認
|
||||
- `ExpiringMedicineConfirm`
|
||||
48時間以内に期限が切れる理性回復剤使用確認
|
||||
期限切れ間近の理性回復剤使用確認
|
||||
- `StoneConfirm`
|
||||
純正源石使用確認
|
||||
- `RecruitRefreshConfirm`
|
||||
@@ -361,6 +361,16 @@ Todo
|
||||
}
|
||||
```
|
||||
|
||||
- `RecruitPreservedTag`
|
||||
保留対象の公開求人タグの検出
|
||||
|
||||
```json
|
||||
// 対応する詳細フィールドの例
|
||||
{
|
||||
"tag": "ロボット"
|
||||
}
|
||||
```
|
||||
|
||||
- `RecruitResult`
|
||||
公開求人結果
|
||||
|
||||
|
||||
@@ -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="["荧光棒"]"
|
||||
自動製造品。サブストリング入力推奨。
|
||||
自動製造品。サブストリング入力推奨。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 テーマのみ有効。
|
||||
:::
|
||||
::::
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ icon: jam:write-f
|
||||
|
||||
이 테마는 팁, 주석, 정보, 주의, 경고 및 세부 정보를 사용자 정의하는 컨테이너를 지원합니다. 이 기능을 사용하여 내용을 강조할 수 있습니다.
|
||||
|
||||
컨테이너 안에 컨테이너가 중첩된 경우, 부모 컨테이너는 자식 컨테이너보다 콜론 `:` 을 하나 더 작성해야 합니다. 예: [단계(Steps) 컨테이너](#단계-steps)
|
||||
|
||||
컨테이너 사용 방법:
|
||||
|
||||
```markdown
|
||||
@@ -44,7 +46,7 @@ icon: jam:write-f
|
||||
- `warning` 주의
|
||||
- `danger` 경고
|
||||
- `details` 세부 사항
|
||||
- `demo-wrapper` ==특수 컨테이너==
|
||||
- `window` ==특수 컨테이너==
|
||||
|
||||
### 컨테이너 예시
|
||||
|
||||
@@ -72,7 +74,7 @@ icon: jam:write-f
|
||||
이것은 세부 사항 컨테이너입니다
|
||||
:::
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
이것은 매우 특별한 컨테이너입니다
|
||||
:::
|
||||
|
||||
@@ -113,7 +115,7 @@ MaaAssistantArknights는 ==많은 돼지들== 에 의해 개발되었습니다
|
||||
|
||||
다음과 같은 설정을 사용할 수 있습니다:
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
입력:
|
||||
|
||||
```markdown
|
||||
@@ -136,8 +138,6 @@ MaaAssistantArknights는 ==많은 돼지들== 에 의해 개발되었습니다
|
||||
|
||||
단계별 튜토리얼을 작성할 때, 순서가 있는 목록은 중첩으로 인해 계층 구조가 불분명해질 수 있습니다. 이럴 때 `steps` 컨테이너가 최고의 선택입니다.
|
||||
|
||||
이 컨테이너는 일반적인 컨테이너와 달리 시작과 끝을 표시하기 위해 4개의 콜론을 사용합니다.
|
||||
|
||||
입력:
|
||||
|
||||
````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 예시
|
||||
|
||||
입력:
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ strategy = "merge" # 또는 "first" (기본값)
|
||||
|
||||
# 일요일 저녁에는 모든 만료 임박한 약물을 사용
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
params = { medicine_expire_days = 2 }
|
||||
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
|
||||
@@ -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!
|
||||
|
||||
:::
|
||||
|
||||
@@ -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)로 설정해야 합니다.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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킬 미션 달성
|
||||
|
||||
@@ -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는 현재 공개모집 슬롯을 유지한 채 이번 모집을 건너뛰며, 확인을 진행하지 않습니다.
|
||||
|
||||
@@ -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`) 입력을 권장합니다.
|
||||
|
||||
## 연결 설정
|
||||
|
||||
|
||||
@@ -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는 스크린샷 속도에 맞추기 위해 목표 프레임 레이트를 자동으로 낮춥니다. ~~스트레스 테스트로 사용할 수 있습니다~~
|
||||
|
||||
## 미니게임
|
||||
|
||||
이벤트의 미니게임을 자동으로 반복합니다. 이름 선택을 지원하며, 설정에서 상설과 현재 한정 이벤트를 전환할 수 있습니다.
|
||||
|
||||
내장 기능:
|
||||
|
||||
- 이벤트 상점 교환
|
||||
- 초록 티켓 상점 교환
|
||||
- 노란 티켓 상점 교환
|
||||
- 생식연산 상점 교환
|
||||
- 시크릿 프론트 (엔딩과 이벤트 분기 선택 지원)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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개로 고정
|
||||
|
||||
@@ -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="["荧光棒"]"
|
||||
자동 제작 아이템, 부분 문자열 입력 권장
|
||||
자동 제작 아이템, 부분 문자열 입력 권장. 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 테마에서만 유효
|
||||
:::
|
||||
::::
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ icon: jam:write-f
|
||||
|
||||
该主题提供了关于提示、注释、信息、注意、警告和详情自定义容器的支持,我们可以利用这一特性来强调部分内容
|
||||
|
||||
需要注意的是,如果容器中嵌套了容器,则父级容器应比子集容器多写一个冒号 `:` 以进行区分,例如[步骤容器](#步骤)
|
||||
|
||||
容器的使用方法:
|
||||
|
||||
```markdown
|
||||
@@ -44,7 +46,7 @@ icon: jam:write-f
|
||||
- `warning` 注意
|
||||
- `danger` 警告
|
||||
- `details` 详情
|
||||
- `demo-warpper` ==特殊容器==
|
||||
- `window` ==特殊容器==
|
||||
|
||||
### 容器示例
|
||||
|
||||
@@ -72,7 +74,7 @@ icon: jam:write-f
|
||||
这是详情容器
|
||||
:::
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
这是一个很特殊的容器
|
||||
:::
|
||||
|
||||
@@ -113,7 +115,7 @@ MaaAssistantArknights 是由 ==很多猪== 开发的
|
||||
|
||||
有以下配置可以使用
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
输入:
|
||||
|
||||
```markdown
|
||||
@@ -136,8 +138,6 @@ MaaAssistantArknights 是由 ==很多猪== 开发的
|
||||
|
||||
当你正在写一个步骤化的教程时,有序列表可能会因为嵌套失去层次感,这种时候 `steps` 容器就是最好的选择
|
||||
|
||||
注意该容器用四个冒号来标记开始和结束,与常规的容器不同
|
||||
|
||||
输入:
|
||||
|
||||
````markdown
|
||||
@@ -188,11 +188,11 @@ 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 案例
|
||||
|
||||
输入:
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ strategy = "merge" # 或者 "first" (默认)
|
||||
|
||||
# 在周天晚上使用所有的将要过期的理智药
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
params = { medicine_expire_days = 2 }
|
||||
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
|
||||
@@ -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!
|
||||
|
||||
:::
|
||||
|
||||
@@ -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) 一栏进行修改
|
||||
|
||||
::::
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 杀任务
|
||||
|
||||
@@ -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 会跳过当前公招槽位并保留该栏位,不会继续确认本次招募。
|
||||
|
||||
@@ -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`
|
||||
|
||||
## 连接设置
|
||||
|
||||
|
||||
@@ -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 会主动降低目标帧率以匹配截图速度。~~可以拿来当压力测试~~
|
||||
|
||||
## 牛杂
|
||||
|
||||
用于自动刷活动中的小游戏。支持选择名称,并可在设置中切换常驻与当期限时活动。
|
||||
|
||||
内置功能包括:
|
||||
|
||||
- 活动商店兑换
|
||||
- 绿票商店兑换
|
||||
- 黄票商店兑换
|
||||
- 生息演算商店兑换
|
||||
- 秘密前线(支持选择结局和事件分支)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 个。
|
||||
|
||||
@@ -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="["荧光棒"]"
|
||||
自动制造的物品,建议填写子串。
|
||||
自动制造的物品,建议填写子串。仅 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 主题有效。
|
||||
:::
|
||||
::::
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
|
||||
- [集成文档](./protocol/integration.md)
|
||||
- [回调消息协议](./protocol/callback-schema.md)
|
||||
- [任务流程协议](./protocol/task-schema.md)
|
||||
- [自动抄作业协议](./protocol/copilot-schema.md)
|
||||
- [自动战斗协议](./protocol/copilot-schema.md)
|
||||
|
||||
### 外服适配
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ icon: jam:write-f
|
||||
|
||||
該主題提供了關於提示、註釋、資訊、注意、警告和詳情自定義容器的支援,我們可以利用這一特性來強調部分內容。
|
||||
|
||||
需要注意的是,如果容器中嵌套了容器,則父級容器應比子集容器多寫一個冒號 `:` 以進行區分,例如[步驟容器](#步驟)
|
||||
|
||||
容器的使用方法:
|
||||
|
||||
```markdown
|
||||
@@ -44,7 +46,7 @@ icon: jam:write-f
|
||||
- `warning` 注意
|
||||
- `danger` 警告
|
||||
- `details` 詳情
|
||||
- `demo-warpper` ==特殊容器==
|
||||
- `window` ==特殊容器==
|
||||
|
||||
### 容器範例
|
||||
|
||||
@@ -72,7 +74,7 @@ icon: jam:write-f
|
||||
這是詳情容器
|
||||
:::
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
這是一個很特殊的容器
|
||||
:::
|
||||
|
||||
@@ -113,7 +115,7 @@ MaaAssistantArknights 是由 ==很多豬== 開發的
|
||||
|
||||
有以下配置可以使用:
|
||||
|
||||
::: demo-wrapper
|
||||
::: window
|
||||
輸入:
|
||||
|
||||
```markdown
|
||||
@@ -136,8 +138,6 @@ MaaAssistantArknights 是由 ==很多豬== 開發的
|
||||
|
||||
當您正在撰寫一個步驟化的教學時,有序列表可能會因為嵌套而失去層次感,這種時候 `steps` 容器就是最好的選擇。
|
||||
|
||||
注意該容器用四個冒號來標記開始和結束,與常規的容器不同。
|
||||
|
||||
輸入:
|
||||
|
||||
````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 範例
|
||||
|
||||
輸入:
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ strategy = "merge" # 或者 "first" (預設)
|
||||
|
||||
# 在週日晚上使用所有將要過期的理智藥
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
params = { medicine_expire_days = 2 }
|
||||
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
|
||||
@@ -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!
|
||||
|
||||
:::
|
||||
|
||||
@@ -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)。
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 殺任務
|
||||
|
||||
@@ -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 會跳過目前的公招欄位並保留該欄位,不會繼續確認本次招募。
|
||||
|
||||
@@ -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`
|
||||
|
||||
## 連線設定
|
||||
|
||||
|
||||
@@ -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 以匹配截圖速度。~~可以拿來當壓力測試~~
|
||||
|
||||
## 牛雜
|
||||
|
||||
用於自動刷活動中的小遊戲。支援選擇名稱,並可在設定中切換常駐與當期限時活動。
|
||||
|
||||
內建功能包括:
|
||||
|
||||
- 活動商店兌換
|
||||
- 綠票商店兌換
|
||||
- 黃票商店兌換
|
||||
- 生息演算商店兌換
|
||||
- 秘密前線(支援選擇結局和事件分支)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 個。
|
||||
|
||||
@@ -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="["荧光棒"]"
|
||||
自動製造的物品清單。建議填寫名稱關鍵字即可。
|
||||
自動製造的物品清單。建議填寫名稱關鍵字即可。僅 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 主題有效。
|
||||
:::
|
||||
::::
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user