User:在咕咕咕的咕子/世界地图格式

来自Arcaea中文维基
< User:在咕咕咕的咕子
在咕咕咕的咕子讨论 | 贡献2023年3月12日 (日) 11:55的版本 (创建页面,内容为“{{技术型}} __NOINDEX__ {{Usercheck}} *'''本页保持孤立!''' ==阅前提示== *此处详细解析的是在服务端处存储的地图中的各语句。 *地图使用的是较为严格的json格式,请注意是否有没有漏符号或多出符号 *地图文件理应当被存放在对应服务器的地图文件夹内 ==详细解析== 此处的是普通地图: <syntaxhighlight lang="json"> { "map_id": "example", //地图ID string //如…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)


在您查看以下内容之前,我们需要您回答我们提供的问题。
ABA型的三字符songid是?
已确认。

  • 本页保持孤立!

阅前提示

  • 此处详细解析的是在服务端处存储的地图中的各语句。
  • 地图使用的是较为严格的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这个解锁条件,如果complete0,则不会解锁,如果不存在对应解锁条件则默认不解锁
      //如果达成条件会自动解锁,未达成则会使地图半透明化,点击会显示一个标题为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,
        //请确保最后一格的capture0

        "items": [{"type": "world_song", "id": "shadesoflight3"
        }]
    }]
}