User:在咕咕咕的咕子/世界地图格式
此页面本页面为技术型隐藏页面 |
已确认。
- 本页保持孤立!
阅前提示
- 此处详细解析的是在服务端处存储的地图中的各语句。
- 地图使用的是较为严格的json格式,请注意是否有没有漏符号或多出符号
- 地图文件理应当被存放在对应服务器的地图文件夹内
详细解析
此处的是普通地图:
{
"map_id": "example",
//地图ID string
//如果要正确使用该地图配置,请确保文件名和map_id相同
"is_legacy": false,
//是否启用Legacy地图机制 boolean
"is_beyond": false,
//是否启用Beyond地图机制 boolean
"beyond_health": 100,
//Beyond地图的总百分比 int
//与is_beyond语句相连,只有前置语句启用时才能发挥作用
"character_affinity": [],
//Beyond地图的相性契合搭档 [int]
//与is_beyond语句和affinity_multiplier语句相连,只有前置语句启用或填写完数据才能完整使用
//与affinity_multiplier的应用关系为前后照应(如果此处第一个填写为0,那么affinity_multiplier的第一个浮点数就应用到0上)
//例:[0, 1] 或 [0]
"affinity_multiplier": [],
//Beyond地图的相性契合加成 [float]
//与is_beyond语句和character_affinity语句相连,只有前置语句启用或填写完数据才能完整使用
//与character_affinity的应用关系是前后照应
//例:[1.0, 1.5]或[1.0]
"chapter": 0,
//地图章节 int
//可以填写客户端内无对应章节的数(同等于不显示)
//地图章节(4.3.2):
//0 活动
//1 失落的世界
//2 谜域的界外
//3 聚合的塔尖
//4 沉眠的回声
//5 无央的决裂
//6 遗忘的构念
//7 回首的天际
//1001 Beyond
"available_from": -1,
//从X时开始可用 int
//与available_to语句相连,只有前置语句填写完数据才能完整使用
//填写指定时间戳,用来控制地图什么时候开始可用,-1表示一直可用
"available_to": 2106124800000,
//从X时持续到X时后关闭 int
//与available_from语句相连,只有前置语句填写完数据才能完整使用
//填写指定时间戳,用来控制地图什么时候关闭,-1表示一直不关闭
"is_repeatable": true,
//是否启用无限地图机制 boolean
"require_localunlock_songid": "",
//需要本地解锁XXX歌曲 string
//填写指定歌曲ID,用来判断本地是否解锁了指定歌曲的任意难度
//如果达成条件会自动解锁,未达成则会使地图半透明化,点击会显示一个标题为Locked的窗口,解锁条件为???
"require_localunlock_challengeid": "",
//需要本地通过XXX异象 string
//填写指定异象歌曲ID,用来判断本地是否通过了指定歌曲的异象
//其实是这样判断的:查找[对应歌曲ID]_challenge|0|102这个解锁条件,如果complete为0,则不会解锁,如果不存在对应解锁条件则默认不解锁
//如果达成条件会自动解锁,未达成则会使地图半透明化,点击会显示一个标题为Locked的窗口,解锁条件为???
"require_id": "",
//解锁时需要开启的对应物品ID string
//与require_type语句相连,只有前置语句填写到指定数据后才能发挥作用
//疑似还能使用 [string] 的格式(4.2.0新增)
"require_type": "",
//解锁时所需物品的类型 string
//与require_id语句或require_value语句相连,只有本语句填写到指定数据后,填写对应前置语句后才能完整使用
//解锁类型(4.3.2):
//pack 曲包(配合require_id使用)
//character 角色(616似乎没用过,我猜配合require_id使用)
//single 单曲(配合require_id使用)
//fragment 残片(配合require_value使用)
//chart_unlock 解锁谱面(配合require_id使用,格式为songid+ratingClass)
//chapter_step 章节步数(配合require_value使用)
"require_value": 0,
//解锁时需要花费的对应物品的数量 int
//与require_type语句相连,只有前置语句填写到指定数据后才能发挥作用
"coordinate": "0,0",
//地图在对应章节应用的X/Y坐标 string
//前者代表X,后者代表Y
//X为正数时向右,为负数时向左
//Y为正数时向上,为负数时向下
"step_count": 20,
//地图总步数 int
//与is_beyond语句相连,只有在前置语句关闭时才能发挥作用
//被用来控制地图是否COMPLETE,如果步数超出step_count,达到step_count的指定步数后会一直在奖励上显示COMPLETE的贴图
//可以随便填,要配置正确的步数的话,请数出steps内有多少个position(如果你按0~X去排列position,那么最后一个position+1即可)
"custom_bg": "",
//地图所使用的背景 string
//与is_beyond语句相连,只有在前置语句关闭时才能发挥作用
//如果不填写,则默认使用章节背景,填写后必须在img/world中存放着对应string名称的.jpg图片
"stamina_cost": 2,
//在该地图内游玩一次所需要的体力 int
//会影响到Legacy地图的体力花费,比如此处改为2,则Legacy地图使用Play+的x6体力时,会消耗12体力
//无论你如何更改此语句,Legacy地图的Play+依然只会按照原体力进行判断,然而游玩时依旧会像上述的例子一样消耗体力
//修改此处也可以达成这种情况;到达体力上限时,你可以通过游玩按钮使其弹出补充体力窗口,然后就能实现无限充体力的效果
"chain_info": 0,
//Beyond地图的连锁设置 int
//暂时未知功能和作用(我没有高版本api破解方法)
"curr_position": 0,
"curr_capture": 0,
"is_locked": false,
//以上三句对于地图来讲没用,在服务端倒是用来存储数据用的
"steps": [{
"position": 0,
//台阶的点位 int
//可以不按0-1-2…的顺序排
"capture": 5
//台阶的步数 int
}, { //分隔符
"position": 1,
"capture": 5,
"items": []
//奖励 [XXX]
}, {
"position": 2,
"capture": 5,
"items": [{"id": "0", "type": "character"}]
//角色 id-str type-str
//id对应角色ID
}, {
"position": 3,
"capture": 5,
"items": [{"id": "shadesoflight", "type": "world_song"}]
//需要世界解锁的歌曲/难度 id-str type-str
//id对应歌曲ID,难度直接在末尾加上对应ratingClass数字即可
}, {
"position": 4,
"capture": 5,
"items": [{"type": "fragment", "amount": 616}]
//残片 type-str amount-int
}, {
"position": 5,
"capture": 5,
"items": [{"type": "memory", "amount": 616}]
//记忆源点 type-str amount-int
}, {
"position": 6,
"capture": 5,
"items": [{"type": "core", "id": "core_generic", "amount": 1}]
//核心 type-str id-str amount-int
//核心种类(4.3.2):
//core_generic 以太之滴
//core_hollow 中空核心
//core_desolate 荒芜核心
//core_chunithm CHUNITHM 核心
//core_crimson 深红核心
//core_ambivalent 悖异核心
//core_scarlet 绯红核心
//core_groove 音炫核心
//core_binary 双生核心
//core_colorful 缤纷核心
//core_umbral 暗影核心
//core_course_skip_purchase 次元结晶
}, {
"position": 7,
"capture": 5,
"items": [{"id": "scenery_chap1", "type": "world_unlock"}]
//背景 id-str type-str
//章节背景(4.3.2):
//scenery_chap1 失落的世界
//scenery_chap2 谜域的界外
//scenery_chap3 聚合的塔尖
//scenery_chap4 沉眠的回声
//scenery_chap5 无央的决裂
//scenery_chap6 遗忘的构念
//scenery_chap7 回首的天际
}, {
"position": 8,
"capture": 5,
"items": [{"type": "anni5tix", "amount": 1}]
//五周年兑换券 type-str amount-int
}, {
"position": 9,
"capture": 5,
"restrict_id": "shadesoflight",
"restrict_type": "song_id"
//限制游玩指定曲目
}, {
"position": 10,
"capture": 5,
"restrict_ids": ["shadesoflight", "sayonarahatsukoi"],
"restrict_type": "song_id"
//限制游玩指定的多首曲目
}, {
"position": 11,
"capture": 5,
"restrict_id": "base",
"restrict_type": "pack_id"
//限制游玩指定曲包
}, {
"position": 12,
"capture": 5,
"restrict_difficulty": 2
//限制游玩指定难度
}, {
"position": 13,
"capture": 5,
"step_type": ["randomsong"]
//随机曲目
}, {
"position": 14,
"capture": 5,
"step_type": ["speedlimit"],
"speed_limit_value": 65
//限制速度 speed_limit_value-int
//speed_limit_value为指定流速x10的数字
}, {
"position": 15,
"capture": 5,
"step_type": ["plusstamina"],
"plus_stamina_value": 12
//体力格 plus_stamina_value-int
//plus_stamina_value设置了多少就加多少体力
}, {
"position": 16,
"capture": 5,
"items": [{"type": "fragment", "amount": 616}, {"type": "memory", "amount": 616}]
//设置两个奖励的例子,不过只会显示第一个奖励
}, {
"position": 17,
"capture": 5,
"restrict_id": "base",
"restrict_type": "pack_id",
"step_type": ["randomsong"]
//限制曲包+随机曲目的例子
}, {
"position": 18,
"capture": 5,
"restrict_id": "vs",
"restrict_type": "pack_id",
"step_type": ["randomsong", "plusstamina", "speedlimit"],
"plus_stamina_value": 2,
"speed_limit_value": 25,
"items": [{"type": "fragment", "amount": 2000}]
//限制曲包+随机+体力+限速+奖励的例子
}, {
"position": 19,
"capture": 0,
"items": [{"type": "core", "id": "core_generic", "amount": 5
//最后一格请设置奖励
}]
}]
}
此处是Beyond地图:
{
"map_id": "example",
"is_legacy": false,
"is_beyond": true,
//是否启用Beyond地图机制 boolean
"beyond_health": 150,
//Beyond地图的总百分比 int
"character_affinity": [0, 1],
//Beyond地图的相性契合搭档 [int]
"affinity_multiplier": [1.0, 1.5],
//Beyond地图的相性契合加成 [float]
"chapter": 1001,
//地图章节 int
"available_from": -1,
"available_to": 2106124800000,
"is_repeatable": false,
"require_id": "shadesoflight2",
"require_type": "chart_unlock",
"require_value": 0,
"coordinate": "0,0",
"step_count": 5,
//地图总步数 int
"custom_bg": "",
"stamina_cost": 3,
//在该地图内游玩一次所需要的体力 int
"curr_position": 0,
"curr_capture": 0,
"is_locked": false,
"steps": [{ //正常地图语句,如果要看Beyond的steps解析请从结尾往上看
"position": 0,
//此处标记为开头
"capture": 50
//请确保capture全部加起来等于beyond_health
}, {
"position": 1,
//此处标记为第三个点
"capture": 25,
//此处跟第二个点同理,本点从50%开始
"items": [{"type": "fragment", "amount": 616}]
}, {
"position": 2,
//此处标记为第二个点
"capture": 25,
//此处的capture作为减数,跟上一个点开始的位置相减,得出本点的百分比
//上一个点是从100%开始,那么本点就是在75%开始
"items": [{"type": "core", "id": "core_generic", "amount": 1}]
//奖励只会在本点开始时获得
}, {
"position": 3,
//此处标记为第一个点
"capture": 50,
//此处的capture作为减数,用来与beyond_health相减得出本点开始的百分比
//这个地图的beyond_health为150,那么本点就是在从100%开始
"restrict_id": "shadesoflight",
"restrict_type": "song_id"
//限制条件会一直持续到下一个点的位置
}, {
"position": 4,
//此处作为奖励点
"capture": 0,
//请确保最后一格的capture为0
"items": [{"type": "world_song", "id": "shadesoflight3"
}]
}]
}