貌似网上能搜到一篇讲解,不管了,把之前写的整理一下扔出来
Client Version: 4.1.9
Overview
目前还是用着JSON文件直接读取的办法,以后的事以后再说(
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{
"map_id": "test", // Unique name of the map
"is_legacy": false, // Legacy style map
"is_beyond": false, // Beyond challenge style map
"beyond_health": 200, // The total percentage of a beyond map
"character_affinity": [], // e.g. [0, 1]
"affinity_multiplier": [], // e.g. [1.5, 2.0]
"chapter": 0,
"available_from": -1,
"available_to": 2106124800000,
"is_repeatable": true, // Repeatable map
"require_id": "",
"require_type": "",
"require_value": 0,
"require_localunlock_songid": "",
"require_localunlock_challengeid": "",
"chain_info": {},
"coordinate": "0,0", // Location coordinates in the chapter
"step_count": 12, // Total steps (unused)
"custom_bg": "", // Background picture
"stamina_cost": 2, // Stamina cost per time
"curr_position": 0, // (unused)
"curr_capture": 0, // (unused)
"is_locked": false, // (unused)
"steps": [{
"position": 0, // Step position, starting from 0, must be continuous
"capture": 10 // Progress required to crawl a step
}, {
"position": 1,
"capture": 20,
"items": [{
"type": "fragment",
"amount": 1000
}]
}, {
"position": 2,
"capture": 10,
"restrict_id": "base",
"restrict_type": "pack_id"
}, {
"position": 3,
"capture": 10,
"restrict_id": "base",
"restrict_type": "pack_id",
"step_type": ["randomsong"]
}, {
"position": 4,
"capture": 10,
"items": [{
"type": "core",
"id": "core_generic",
"amount": 1
}]
}, {
"position": 5,
"capture": 10,
"step_type": ["speedlimit"],
"speed_limit_value": 20
}, {
"position": 6,
"capture": 10
}, {
"position": 7,
"capture": 10,
"step_type": ["plusstamina"],
"plus_stamina_value": 2
}, {
"position": 8,
"capture": 10
}, {
"position": 9,
"capture": 10,
"items": [{
"type": "fragment",
"amount": 125
}]
}, {
"position": 10,
"capture": 10000,
"step_type": ["plusstamina","speedlimit"],
"plus_stamina_value": 2,
"speed_limit_value": 5,
"restrict_id": "fractureray",
"restrict_type": "song_id",
"restrict_difficulty" : 2
}, {
"position": 11,
"capture": 0,
"items": [{
"type": "core",
"id": "core_crimson",
"amount": 500
}, {
"type": "fragment",
"amount": 125
},{
"type": "character",
"id": "2"
}
]
}]
}
Details
The following is in Chinese, and I’m too lazy to translate.
list:array,dict:object,int&float:number,str:string
Chapter
chapter: int是章节ID,0是event章节,1是第一章,后面以此类推,特别有1001是beyond章节
Character Affinity
搭档契合,character_affinity: list[int]和affinity_multiplier: list[float]是一一对应的,前者是搭档列表,后者是对应搭档的进度倍数列表
Chain Info
chain_info: dict里只有id: str和index: intid一致的就是一组图,index是各个图的顺序,从1开始- 只对 Beyond 图有效,代表了一个链式的解锁顺序,前一张图未完成是看不到下一张图的信息的
- 可参考官方的那个五连环
Available Time
限时地图,一般出现在 event 章节中,请注意available_from: int和available_to: int都是毫秒时间戳,应当有13位
Map Require
require_type: str只能其中一个:pack,character,single,fragment,chart_unlock,chapter_steprequire_id: str | list[str]可以是list!解锁条件只显示第一个未解锁的,且require_type相同(目前只见过chart_unlock)chart_unlock似乎只在beyond图中生效,普通图会无曲绘,注意此时require_id是song_id + difficulty- 当类型为
character时,请注意require_id一定是字符串,也就是说如果是搭档,就会出现'require_id': '2'的情况 - 当类型为
chapter_step和fragment时,require_id被忽略,需要require_value: int作为数值 require_localunlock_songid: str是隐藏式本地歌曲解锁,会出现”???”的提示(目前只见过fractureray和grievouslady)require_localunlock_challengeid: str是隐藏式本地挑战解锁,会出现”???”的提示(目前只见过singularity,tempestissimo,testify)- 其实还有个
requires: list[dict],但目前并无作用
Step Items
items: list[dict],请注意最后一格需要有奖励,而且一般来说capture为0- 对于每一个item,
type: str和id: str是必须的,amount: int是可选的,即物品数量 - 请注意
id一定是字符串,也就是说如果是搭档,就会出现'id': '2'的情况 - item都有啥,不是此文重点,懒得说了……
Step Type
step_type: list[str]是台阶类型,可以同时是多种类型,可选值有:plusstamina,randomsong,speedlimit- 当类型中有
plusstamina时,即为体力格,plus_stamina_value: int就是增加的体力值 - 当类型中有
speedlimit时,即为限速格,speed_limit_value: int就是最大允许速度值,是游戏中实际速度值的10倍 - 当类型中有
randomsong时,即为随机格,必须有下面的Step Restrict来限制随机范围
Step Restrict
restrict_type: str是前提,没有这项将不会有限制,只有两个可选值:song_id和pack_idrestrict_ids: list[str]优先于restrict_id: str,有前者则后者失效,前者是多个值的列表,后者是单个值restrict_difficulty: int是可选的,只能是0, 1, 2, 3的其中一个
PREVIOUSNo File Buffer