From 485d751683573f0e2992b00349d5c0a6b7a3f92f Mon Sep 17 00:00:00 2001 From: dannylin0711 Date: Sun, 5 Nov 2023 07:50:10 +0800 Subject: [PATCH 1/5] Fix licensed characters --- sdvx@asphyxia/data/exg.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index de1bf6a..be3d1bf 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -42,7 +42,8 @@ export const EVENT6 = [ 'BEGINNER_MUSIC_FOLDER', 'PLAYER_RADAR_ENABLE', 'SINGLE_BATTLE_ENABLE', - // 'USE_CUDA_VIDEO_PRESENTER' + // 'USE_CUDA_VIDEO_PRESENTER', + 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143' ]; export const COURSES6 = [ From b2a5c631638ad14004e476b31dd9994a261e7fc4 Mon Sep 17 00:00:00 2001 From: dannylin0711 Date: Tue, 12 Dec 2023 18:55:41 +0800 Subject: [PATCH 2/5] [1205] Enable HEXA OVERDRIVE --- sdvx@asphyxia/data/exg.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index be3d1bf..cc7dae7 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -43,7 +43,8 @@ export const EVENT6 = [ 'PLAYER_RADAR_ENABLE', 'SINGLE_BATTLE_ENABLE', // 'USE_CUDA_VIDEO_PRESENTER', - 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143' + 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143', + 'HEXA_OVERDRIVE_ENABLE\t1,2,3,4,5,6,7,8,9', ]; export const COURSES6 = [ From 8891f2b22257027ddf7112202a5b71cdbcaa9142 Mon Sep 17 00:00:00 2001 From: LatoWolf Date: Sat, 20 Jan 2024 14:16:40 +0800 Subject: [PATCH 3/5] Update exg.ts --- sdvx@asphyxia/data/exg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index cc7dae7..6c7de98 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -44,7 +44,7 @@ export const EVENT6 = [ 'SINGLE_BATTLE_ENABLE', // 'USE_CUDA_VIDEO_PRESENTER', 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143', - 'HEXA_OVERDRIVE_ENABLE\t1,2,3,4,5,6,7,8,9', + 'HEXA_OVERDRIVE_ENABLE\t8', ]; export const COURSES6 = [ From 06e7a067dee76ebcbf28bd95132d18e50b199178 Mon Sep 17 00:00:00 2001 From: dannylin0711 Date: Fri, 4 Oct 2024 20:41:15 +0800 Subject: [PATCH 4/5] SDVX EG update --- sdvx@asphyxia/data/exg.ts | 51 +++- sdvx@asphyxia/handlers/common.ts | 26 +- sdvx@asphyxia/handlers/profiles.ts | 12 + sdvx@asphyxia/handlers/webui.ts | 230 +++++++++++++++++- sdvx@asphyxia/index.ts | 14 +- sdvx@asphyxia/templates/booth/common.pug | 16 -- sdvx@asphyxia/templates/booth/load.pug | 23 -- .../templates/infiniteinfection/common.pug | 38 --- .../templates/infiniteinfection/load.pug | 105 -------- .../templates/infiniteinfection/score.pug | 14 -- 10 files changed, 301 insertions(+), 228 deletions(-) delete mode 100644 sdvx@asphyxia/templates/booth/common.pug delete mode 100644 sdvx@asphyxia/templates/booth/load.pug delete mode 100644 sdvx@asphyxia/templates/infiniteinfection/common.pug delete mode 100644 sdvx@asphyxia/templates/infiniteinfection/load.pug delete mode 100644 sdvx@asphyxia/templates/infiniteinfection/score.pug diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index 6c7de98..8ef12c4 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -1,4 +1,5 @@ -export const EVENT6 = [ +export let EVENT6 = [ + 'SERIALCODE_JP', 'DEMOGAME_PLAY', 'MATCHING_MODE', 'MATCHING_MODE_FREE_IP', @@ -39,15 +40,25 @@ export const EVENT6 = [ 'SUBBG_DISABLE', 'NEMSYS_DISABLE', 'S_PUC_EFFECT_ENABLE', - 'BEGINNER_MUSIC_FOLDER', + 'BEGINNER_MUSIC_FOLDER\t56,78,80,86,87,91,111,135,128,134,275,278,180,469,697,770,769,779,842,948,940,1057', + 'BEGINNER_MUSIC_FOLDER\t1056,1096,1062,932,1222,1136,1341,1297,1441,1472,1446,1455,1469,1475,1454,1449,1448,1540,1453,1456,1447,1451,1452,1480,1458,1457,1450,1657,1649,1471', + 'BEGINNER_MUSIC_FOLDER\t1735,1658,1756,1757,1754,1755,1758,1753,1749,1812,1820,1817,1741,1739,1740,1867,1871,1866,1872,1861,1858,1860,1862,1857,1903,1904,1859,1863,1856,1864,1865,1911,1916,1917,1914,1915,1918,1960', 'PLAYER_RADAR_ENABLE', 'SINGLE_BATTLE_ENABLE', - // 'USE_CUDA_VIDEO_PRESENTER', - 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143', - 'HEXA_OVERDRIVE_ENABLE\t8', + // 'SUBMONITOR_VSYNC_ENABLE', + 'USE_CUDA_VIDEO_PRESENTER', + 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143,149,160,162,163', + 'SUBBG_IGNORE_DISABLE\t166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311', + 'SUBBG_IGNORE_DISABLE\t312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,369,370,371,372,373,374,375,376,377,378,379,380,381,419,420,421', + 'SUBBG_IGNORE_DISABLE\t422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482', + 'STAMP_IGNORE_DISABLE\t273~312,773~820,993~1032,1245~1284,1469~1508', + 'HEXA_OVERDRIVE_ENABLE\t1,2,3,4,5,6,7,8,9,10,11,12', + 'TAMAADV_ENABLE', + 'CAMERA_CALIBRATION_TEST_MENU_ENABLE', + 'APRIL_RAINBOW_LINE_ACTIVE' ]; -export const COURSES6 = [ +export let COURSES6 = [ { id: 1, name: 'SKILL ANALYZER 第1回 Aコース', @@ -2820,7 +2831,7 @@ export const COURSES6 = [ } ]; -export const SDVX_AUTOMATION_SONGS = [ +export let SDVX_AUTOMATION_SONGS = [ 1, 2, 3, @@ -2895,6 +2906,7 @@ export const SDVX_AUTOMATION_SONGS = [ 228, 229, 239, + 241, 247, 250, 251, @@ -2942,6 +2954,7 @@ export const SDVX_AUTOMATION_SONGS = [ 376, 377, 381, + 390, 393, 398, 408, @@ -3053,7 +3066,7 @@ export const SDVX_AUTOMATION_SONGS = [ 787, ]; -export const SDVX_AUTOMATION_SONGS_2 = [ +export let SDVX_AUTOMATION_SONGS_2 = [ 788, 789, 790, @@ -3286,7 +3299,7 @@ export const SDVX_AUTOMATION_SONGS_2 = [ 1280, ] -const SDVX_AUTOMATION_SONGS_3 = [ +export let SDVX_AUTOMATION_SONGS_3 = [ 1281, 1282, 1300, @@ -3506,8 +3519,7 @@ const SDVX_AUTOMATION_SONGS_3 = [ 99004, ] - -export const EXTENDS6 = [ +export let EXTENDS6 = [ { id: 91, type: 17, @@ -3555,9 +3567,26 @@ export const EXTENDS6 = [ '', '', ], + }, + { + id: 94, + type: 20, + params: [ + 0, + 0, + 0, + 0, + 0, + '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19', + '', + '', + '', + '', + ], } ]; + var ITEM_TYPE_CREW = 11 var ITEM_TYPE_APPEAL = 15 var ITEM_TYPE_STAMP = 17 diff --git a/sdvx@asphyxia/handlers/common.ts b/sdvx@asphyxia/handlers/common.ts index 0a1db11..6b63e27 100644 --- a/sdvx@asphyxia/handlers/common.ts +++ b/sdvx@asphyxia/handlers/common.ts @@ -1,5 +1,6 @@ import { EVENT6, COURSES6, EXTENDS6, VALGENE6 } from '../data/exg'; import {getVersion, getRandomIntInclusive} from '../utils'; +import fs from 'fs'; export const informationString = `[sz:120] [olc:555555][ol:4][c:ff3333,3333ff,77ff77]Asphyxia @@ -32,17 +33,15 @@ export const common: EPR = async (info, data, send) => { let courses = []; let extend = []; console.log("Calling common function"); - - const version = parseInt(info.model.split(":")[4]); + let exg_data_json = JSON.parse(fs.readFileSync('./plugins/sdvx@asphyxia/data/exg_data.json', 'utf8')); + + events = EVENT6; + courses = COURSES6; + // EXTENDS6.forEach(val => extend.push(Object.assign({}, val))); + extend = EXTENDS6; + extend = extend.concat(exg_data_json.extends_data); + // extend = extend.concat(exg_data.extends_data); - switch (info.method) { - case 'sv6_common': { - events = EVENT6; - courses = COURSES6; - EXTENDS6.forEach(val => extend.push(Object.assign({}, val))); - break; - } - } let songs = []; if (U.GetConfig('unlock_all_songs')) { @@ -258,8 +257,8 @@ export const common: EPR = async (info, data, send) => { season: K.ITEM('s32',3), rule: K.ITEM('s32',0), rank_match_target: K.ARRAY('s32', [ - 1,1,1,1, - 1,1,1,1, + 2,2,2,2, + 2,2,2,2, 1,1,1,1, 1,1,1,1, 0,0,0,0, @@ -286,6 +285,9 @@ export const common: EPR = async (info, data, send) => { item_type: K.ITEM('s32', c.item_type), item_id: K.ITEM('s32', c.item_id), })), + }, + invest:{ + limit_date: K.ITEM('u64',BigInt(newTime)), } }, { encoding: 'utf8' } diff --git a/sdvx@asphyxia/handlers/profiles.ts b/sdvx@asphyxia/handlers/profiles.ts index 08928bd..39c7914 100644 --- a/sdvx@asphyxia/handlers/profiles.ts +++ b/sdvx@asphyxia/handlers/profiles.ts @@ -19,6 +19,7 @@ function unlockNavigators(items: Partial[]) { console.log("Unlocking Navigators"); // 10 genesis card for MITSURU's voice items.push({ type: 4, id: 599, param: 10 }); + // items.push({ type: 21, id: 1, param: 1 }); return items; } @@ -29,6 +30,16 @@ function unlockAppealCards(items: Partial[]) { return items; } +function unlock_all_valkgen(items: Partial[]) { + // for (let i = 0; i < 500; ++i) items.push({ type: 17, id: i, param: 1 }); // stamp + // for (let i = 0; i < 600; ++i) items.push({ type: 18, id: i, param: 1 }); // subbg + // for (let i = 0; i < 100; ++i) items.push({ type: 19, id: i, param: 1 }); // bgm + // for (let i = 0; i < 100; ++i) items.push({ type: 20, id: i, param: 1 }); // nemsys + // for (let i = 0; i < 30; ++i) items.push({ type: 21, id: i, param: 1 }); // mainbg + + return items; +} + export const loadScore: EPR = async (info, data, send) => { console.log("Now loading score"); const version = Math.abs(getVersion(info)); @@ -364,6 +375,7 @@ export const load: EPR = async (info, data, send) => { let tempItem = U.GetConfig('unlock_all_navigators') ? unlockNavigators(items) : items; tempItem = U.GetConfig('unlock_all_appeal_cards') ? unlockAppealCards(tempItem) : tempItem; + tempItem = unlock_all_valkgen(tempItem); // Make generator power always 100%, for (let i = 0; i < 50; i++) { diff --git a/sdvx@asphyxia/handlers/webui.ts b/sdvx@asphyxia/handlers/webui.ts index 2ba26d8..5b34f6d 100644 --- a/sdvx@asphyxia/handlers/webui.ts +++ b/sdvx@asphyxia/handlers/webui.ts @@ -6,6 +6,8 @@ import { Mix } from '../models/mix'; import { fstat } from 'fs'; import { error } from 'console'; import { setMaxIdleHTTPParsers } from 'http'; +import { unpackS3P } from '../s3p'; +import { secureHeapUsed } from 'crypto'; export const updateProfile = async (data: { refid: string; @@ -203,7 +205,7 @@ export const deleteMix = async (data: { code: string }) => { export const make_hexa_easier = async(data:{ refid:string; -}) => { +}, send: WebUISend) => { let all_hexa = await DB.Find(data.refid, { collection: 'item' ,type:16 }) let playedNum = [] // Prevent previous unlocked hexa from being locked again all_hexa.forEach((item:Item)=>{ @@ -213,7 +215,7 @@ export const make_hexa_easier = async(data:{ } }); - for(let i = 1; i <= 50; i++){ // Hexa Diver 7, up to id = 50 + for(let i = 1; i <= 71; i++){ // Hexa Diver 7, up to id = 50 if(!playedNum.includes(i)){ await DB.Upsert( data.refid, @@ -222,19 +224,29 @@ export const make_hexa_easier = async(data:{ ) } } + + send.json({status:"ok"}) } +export const converted_received = async (data: { zip_file:any }, send: WebUISend) => { + +} + + export const import_assets = async (data: { path: string }, send: WebUISend) => { + + // await init(wasmUrl); + // let ffmpeg = await Wasmer.fromRegistry("wasmer/ffmpeg"); + let Admzip = require('../../_shared/lib/adm-zip') let path = data.path console.log(path) let fs = require('fs') if (!fs.existsSync(path + '/data/graphics/')) { - console.log('Path does not exist.') - send.error(400,'Path does not exist.') + console.log('Path for Graphics does not exist.') + send.error(400,'Path for Graphics does not exist.') return } - await fs.promises.cp(path + "/data/graphics/ap_card", './plugins/sdvx@asphyxia/webui/asset/ap_card', {recursive: true}).catch((err: any) => { console.log(err) }) @@ -247,6 +259,210 @@ export const import_assets = async (data: { path: string }, send: WebUISend) => await fs.promises.cp(path + "/data/graphics/submonitor_bg", './plugins/sdvx@asphyxia/webui/asset/submonitor_bg', {recursive: true}).catch((err: any) => { console.log(err) }) - console.log('Assets imported.') - send.json({status:"ok"}) + + if (!fs.existsSync(path + '/data/sound/')) { + console.log('Path for sound does not exist.') + send.error(400,'Path for sound does not exist.') + return + } + + let zip = new Admzip() + await fs.promises.readdir(path + "/data/sound/custom").then((files: any) => { + // let file = files[0] + console.log(files) + + for(let i in files){ + let file = files[i] + if(file.endsWith('.s3p')){ + fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/temp/'+file, { recursive: true }); + // fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9), { recursive: true }); + unpackS3P('./plugins/sdvx@asphyxia/webui/asset/temp/'+file, path + "/data/sound/custom/" + file, {}) + // fs.promises.readFileSync('./plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/0.wma').then(async (data: any) => { + // const instance = await ffmpeg.entrypoint.run({ + // args: ["-i", "-", "-f", "wav", "-"], + // stdin: new Uint8Array(data), + // }); + // const { stdout } = await instance.wait(); + // fs.writeFileSync('./plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9)+'/0.wav', stdout); + + // }) + // exec(shell([ffmpeg, '-i', './plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/0.wma', './plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9)+'/0.mp3']), (err: any, stdout: any, stderr: any) => { + // console.log(err) + // }) + + // exec(shell([ffmpeg, '-i', './plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/1.wma', './plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9)+'/1.mp3']), (err: any, stdout: any, stderr: any) => { + // console.log(err) + // }) + + // if(fs.existsSync('./plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/2.wma')){ + // exec(shell([ffmpeg, '-i', './plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/2.wma', './plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9)+'/2.mp3']), (err: any, stdout: any, stderr: any) => { + // console.log(err) + // }) + // } + } + } + + + + + }).finally(() => { + + zip.addLocalFolder('./plugins/sdvx@asphyxia/webui/asset/temp', 'temp') + zip.writeZip('./plugins/sdvx@asphyxia/webui/asset/temp.zip') + }) + + await fs.promises.rm('./plugins/sdvx@asphyxia/webui/asset/temp', { recursive: true, force: true }).catch((err: any) => { + console.log(err) + }) + + + + + + console.log('Assets imported. Now converting audio files on browser...') + send.file('webui/asset/temp.zip') + + // fs.promises.rm('./plugins/sdvx@asphyxia/webui/asset/temp.zip', { force: true }).catch((err: any) => { + // console.log(err) + // }) + // send.json({status:"ok"}) }; + +export const update_webui_nemsys_data = async (data: any, send: WebUISend) => { + let string = data.file + let nemsys_xml = U.parseXML(string) + + const fs = require('fs') + const filename = "../webui/asset/json/data.json" + const datajson = require(filename) + + nemsys_xml.custom_nemsys_data.info.filter((e: any) => e.id != 8 && e.id != 9 && e.id != 10 && e.id != 11).forEach((item: any) => { + if(datajson.nemsys.filter((e: any) => e.value == item.id).length == 0){ + datajson.nemsys.push({ + value: item.id, + name: item.texture_name + }) + } + }) + + fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/data.json", JSON.stringify(datajson, null, 2)) + send.json({status:"ok"}) +} + +export const update_webui_stamp_data = async (data: any, send: WebUISend) => { + let string = data.file + let chat_stamp_xml = U.parseXML(string) + + const fs = require('fs') + const filename = "../webui/asset/json/data.json" + const datajson = require(filename) + + chat_stamp_xml.chat_stamp_data.info.forEach((item: any) => { + if(datajson.stamp.filter((e: any) => e.value == item.id).length == 0){ + let addition = "" + if(item.filename != ""){ + addition = item.filename.substring(item.filename.length - 2) + } + + datajson.stamp.push({ + value: item.id, + name: item.title + " " +addition + }) + } + }) + + fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/data.json", JSON.stringify(datajson, null, 2)) + send.json({status:"ok"}) +} + +export const update_webui_subbg_data = async (data: any, send: WebUISend) => { + const fs = require('fs') + const filename = "../webui/asset/json/data.json" + const datajson = require(filename) + + let subbg_folder = fs.readdirSync("./plugins/sdvx@asphyxia/webui/asset/submonitor_bg") + let subbg_entry = {} + subbg_folder.forEach((item: any) => { + if(item.endsWith(".png")||item.endsWith(".mp4")){ + if(subbg_entry[item.substring(6, 10)] == undefined){ + subbg_entry[item.substring(6, 10)] = {"count":1, "video":false} + }else{ + subbg_entry[item.substring(6, 10)]["count"] += 1 + } + } + if(item.endsWith(".mp4")){ + subbg_entry[item.substring(6, 10)]["video"] = true + } + }) + + console.log(JSON.stringify(subbg_entry, null, 2)) + + Object.keys(subbg_entry).forEach((item: any) => { + if(datajson.subbg.filter((e: any) => e.value == item).length == 0){ + if(subbg_entry[item]["video"]){ + datajson.subbg.push({ + value: parseInt(item), + name: "SubBG "+ item, + video: true, + }) + }else if(subbg_entry[item]["count"] > 1){ + datajson.subbg.push({ + value: parseInt(item), + name: "SubBG "+ item, + multi: true, + }) + }else{ + datajson.subbg.push({ + value: parseInt(item), + name: "SubBG "+ item, + }) + } + }else{ + if(subbg_entry[item]["video"]){ + datajson.subbg.forEach((e: any) => { + if(e.value == parseInt(item)){ + e.video = true + } + }) + }else if(subbg_entry[item]["count"] > 1){ + datajson.subbg.forEach((e: any) => { + if(e.value == parseInt(item)){ + e.multi = true + } + }) + } + } + }) + + fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/data.json", JSON.stringify(datajson, null, 2)) + send.json({status:"ok"}) +} + +export const update_webui_bgm_data = async (data: any, send: WebUISend) => { + const fs = require('fs') + const filename = "../webui/asset/json/data.json" + const datajson = require(filename) + + let bgm_folder = fs.readdirSync("./plugins/sdvx@asphyxia/webui/asset/audio") + let bgm_entry = [] + + bgm_folder.forEach((item: any) => { + if(item.substring(0, 6) == "custom"){ + bgm_entry.push(parseInt(item.substring(item.length - 2))) + } + }) + + console.log(bgm_entry) + + bgm_entry.forEach((item: any) => { + if(datajson.bgm.filter((e: any) => e.value == item).length == 0){ + datajson.bgm.push({ + value: parseInt(item), + name: "BGM "+ item, + }) + } + }) + + fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/data.json", JSON.stringify(datajson, null, 2)) + send.json({status:"ok"}) +} \ No newline at end of file diff --git a/sdvx@asphyxia/index.ts b/sdvx@asphyxia/index.ts index d9873d8..c1281ed 100644 --- a/sdvx@asphyxia/index.ts +++ b/sdvx@asphyxia/index.ts @@ -9,7 +9,11 @@ import { importMix, deleteMix, make_hexa_easier, - import_assets + import_assets, + update_webui_nemsys_data, + update_webui_stamp_data, + update_webui_subbg_data, + update_webui_bgm_data // sendImg, // sendImgWithID, // getScore, @@ -59,7 +63,7 @@ export function register() { R.Config('use_asphyxia_gameover',{ type: 'boolean', default: true, name:'Use Asphyxia Gameover', desc:'Enable the Asphyxia gameover message after ending the game.'}) R.Config('use_blasterpass',{ type: 'boolean', default: true, name:'Use Blaster Pass', desc:'Enable Blaster Pass for VW and EG'}); R.Config('new_year_special',{ type: 'boolean', default: true, name:'Use New Year Special', desc:'Enable New Year Special BGM for login'}); - R.Config('music_count',{ type: 'integer', default: 2200, name:'Music Count', desc:'The total number of music in the game.'}); + R.Config('music_count',{ type: 'integer', default: 2200, name:'Music Count', desc:'The maximum id of music in the game.'}); R.WebUIEvent('updateProfile', updateProfile); R.WebUIEvent('updateMix', updateMix); @@ -67,6 +71,10 @@ export function register() { R.WebUIEvent('deleteMix', deleteMix); R.WebUIEvent('easyHexa', make_hexa_easier); R.WebUIEvent('import_assets', import_assets); + R.WebUIEvent('update_webui_nemsys', update_webui_nemsys_data); + R.WebUIEvent('update_webui_chat_stamp', update_webui_stamp_data); + R.WebUIEvent('update_webui_subbg', update_webui_subbg_data); + R.WebUIEvent('update_webui_bgm', update_webui_bgm_data); const MultiRoute = (method: string, handler: EPR | boolean) => { R.Route(`game.sv6_${method}`, handler); @@ -127,6 +135,8 @@ export function register() { //logerrlevel: K.ITEM('s32', 0), //evtidnosendflg: K.ITEM('s32', 0) })); + + R.Unhandled(); diff --git a/sdvx@asphyxia/templates/booth/common.pug b/sdvx@asphyxia/templates/booth/common.pug deleted file mode 100644 index 6882290..0000000 --- a/sdvx@asphyxia/templates/booth/common.pug +++ /dev/null @@ -1,16 +0,0 @@ -- let music = 0; -- let event = 0; -- let catalog = 0; - -game - limited - while music < 200 - music(id=music++, flag=2) - - event - while event < 16 - info(id=event++) - - catalog - while catalog < 256 - info(id=catalog++, currency=1, price=1) diff --git a/sdvx@asphyxia/templates/booth/load.pug b/sdvx@asphyxia/templates/booth/load.pug deleted file mode 100644 index 3562737..0000000 --- a/sdvx@asphyxia/templates/booth/load.pug +++ /dev/null @@ -1,23 +0,0 @@ -game - name(__type="str") #{name} - code(__type="str") #{code} - gamecoin_packet(__type="u32") #{packets} - gamecoin_block(__type="u32") #{blocks} - exp_point(__type="u32") #{expPoint ? expPoint : 0} - m_user_cnt(__type="u32") #{mUserCnt ? mUserCnt : 0} - have_item(__type="bool" __count=512) #{Array(512).fill(1).join(" ")} - have_note(__type="bool" __count=512) #{Array(512).fill(1).join(" ")} - - last( - music_id=musicID, - music_type=musicType, - sort_type=sortType, - headphone=headphone, - hispeed=hiSpeed, - appeal_id=appeal, - frame0=boothFrame ? boothFrame[0] : 0, - frame1=boothFrame ? boothFrame[1] : 0, - frame2=boothFrame ? boothFrame[2] : 0, - frame3=boothFrame ? boothFrame[3] : 0, - frame4=boothFrame ? boothFrame[4] : 0, - ) diff --git a/sdvx@asphyxia/templates/infiniteinfection/common.pug b/sdvx@asphyxia/templates/infiniteinfection/common.pug deleted file mode 100644 index fc92bf9..0000000 --- a/sdvx@asphyxia/templates/infiniteinfection/common.pug +++ /dev/null @@ -1,38 +0,0 @@ -- let music = 0; -- let event = 0; -- let catalog = 0; - - -game - music_limited - while music < 23 - each type in [0,1,2,3] - info - music_id(__type="s32") #{music++} - music_type(__type="u8") #{type} - limited(__type="u8") 3 - - event - while event < 41 - info - event_id(__type="u32") #{event++} - - skill_course - each course in courses - info - course_id(__type="s16") #{course.id} - level(__type="s16") #{course.level} - season_id(__type="s16") #{course.season_id} - season_name(__type="str") #{course.season_name} - season_new_flg(__type="bool") #{course.new_flg} - course_name(_type="str") #{course.name} - course_type(__type="s16") #{course.type} - skill_name_id(__type="s16") #{course.name_id} - matching_assist(__type="bool") #{course.matching_assist} - guage_type(__type="s16") #{course.guage_type} - paseli_type(type="s16") #{course.paseli_type} - each trackinfo in course.tracks - track - track_no(__type="s16") #{trackinfo.no} - music_id(__type="s32") #{trackinfo.id} - music_type(__type="s8") #{trackinfo.type} \ No newline at end of file diff --git a/sdvx@asphyxia/templates/infiniteinfection/load.pug b/sdvx@asphyxia/templates/infiniteinfection/load.pug deleted file mode 100644 index b16f835..0000000 --- a/sdvx@asphyxia/templates/infiniteinfection/load.pug +++ /dev/null @@ -1,105 +0,0 @@ -game - result(__type="u8") 0 - name(__type="str") #{name} - code(__type="str") #{code} - sdvx_id(__type="str") #{code} - gamecoin_packet(__type="u32") #{packets} - gamecoin_block(__type="u32") #{blocks} - - - last - music_id(__type="s32") #{musicID} - music_type(__type="u8") #{musicType} - sort_type(__type="u8") #{sortType} - comment_id(__type="u16") 0 - appeal_id(__type="u16") #{appeal} - headphone(__type="u8") #{headphone} - narrow_down(__type="u8") #{narrowDown} - gauge_option(__type="u8") #{gaugeOption} - blaster_energy(__type="u32") #{blasterEnergy} - blaster_count(__type="u32") #{blasterCount} - extrack_energy(__type="u16") #{extrackEnergy} - - hispeed(__type="s32") #{hiSpeed} - lanespeed(__type="u32") #{laneSpeed} - - ars_option(__type="u8") #{arsOption} - notes_option(__type="u8") #{notesOption} - early_late_disp(__type="u8") #{earlyLateDisp} - draw_adjust(__type="s32") #{drawAdjust} - eff_c_left(__type="u8") #{effCLeft} - eff_c_right(__type="u8") #{effCRight} - - - kac_id(__type="str") #{name} - - skill_level(__type="s16") #{skill.level} - skill_base_id(__type="s16") #{skill.base} - skill_name_id(__type="s16") #{skill.name} - - ea_shop - packet_booster(__type="s32") 1 - if version < 5 - block_booster(__type="s32") 1 - if version >= 5 - blaster_pass_enable(__type="bool") 1 - blaster_pass_limit_date(__type="u64") #{currentTime} - - eaappli - relation(__type="s8") 1 - cloud - relation(__type="s8") 1 - block_no(__type="s32") 0 - - skill - course - each course in courses - d - ssnid(__type="s16") #{course.sid} - crsid(__type="s16") #{course.cid} - sc(__type="s32") #{course.score} - ex(__type="s32") 0 - ct(__type="s16") #{course.clear} - gr(__type="s16") #{course.grade} - ar(__type="s16") #{course.rate} - cnt(__type="s16") #{course.count} - course_total - each course in courses - d - ssnid(__type="s16") #{course.sid} - crsid(__type="s16") #{course.cid} - sc(__type="s32") #{course.score} - ex(__type="s32") 0 - ct(__type="s16") #{course.clear} - gr(__type="s16") #{course.grade} - ar(__type="s16") #{course.rate} - cnt(__type="s16") #{course.count} - course_all - each course in courses - d - ssnid(__type="s16") #{course.sid} - crsid(__type="s16") #{course.cid} - sc(__type="s32") #{course.score} - ex(__type="s32") 0 - ct(__type="s16") #{course.clear} - gr(__type="s16") #{course.grade} - ar(__type="s16") #{course.rate} - cnt(__type="s16") #{course.count} - - item - each item in tempItem - info - type(__type="u8") #{item.type} - id(__type="u32") #{item.id} - param(__type="u32") #{item.param} - - - play_count(__type="u32") 1001 - day_count(__type="u32") 301 - today_count(__type="u32") 21 - play_chain(__type="u32") 31 - max_play_chain(__type="u32") 31 - week_count(__type="u32") 9 - week_play_count(__type="u32") 101 - week_chain(__type="u32") 31 - max_week_chain(__type="u32") 31 \ No newline at end of file diff --git a/sdvx@asphyxia/templates/infiniteinfection/score.pug b/sdvx@asphyxia/templates/infiniteinfection/score.pug deleted file mode 100644 index 78acb76..0000000 --- a/sdvx@asphyxia/templates/infiniteinfection/score.pug +++ /dev/null @@ -1,14 +0,0 @@ -game - new - each music in temp - music - music_id (__type="u32")#{music.mid} - music_type (__type="u32")#{music.type} - score (__type="u32")#{music.score} - cnt (__type="u32")1 - clear_type (__type="u32")#{music.clear} - score_grade (__type="u32")#{music.grade} - btn_rate (__type="u32")#{music.buttonRate} - long_rate (__type="u32")#{music.longRate} - vol_rate (__type="u32")#{music.volRate} - old \ No newline at end of file From fd9866d483faa1d087f713472d638aec32d02b40 Mon Sep 17 00:00:00 2001 From: dannylin0711 Date: Mon, 21 Oct 2024 13:06:34 +0800 Subject: [PATCH 5/5] Create exg_data.json --- sdvx@asphyxia/data/exg_data.json | 3522 ++++++++++++++++++++++++++++++ 1 file changed, 3522 insertions(+) create mode 100644 sdvx@asphyxia/data/exg_data.json diff --git a/sdvx@asphyxia/data/exg_data.json b/sdvx@asphyxia/data/exg_data.json new file mode 100644 index 0000000..d76b632 --- /dev/null +++ b/sdvx@asphyxia/data/exg_data.json @@ -0,0 +1,3522 @@ +{ + "extends_data":[ + { + "id":4, + "type":4, + "params":[ + 0, + 1, + 0, + 0, + 0, + "", + "13,-1, 天 晴,[sz:40][sx:120][pos:0,2],[sz:40][sx:120][pos:0,2]", + "", + "", + "" + ] + }, + { + "id":5, + "type":4, + "params":[ + 0, + 1, + 0, + 0, + 0, + "", + "14,-1,詠鰤琉,[sz:40][sx:120][pos:10,2],[sz:40][sx:120][pos:10,2]", + "", + "", + "" + ] + }, + { + "id":6, + "type":4, + "params":[ + 0, + 1, + 0, + 0, + 0, + "", + "15,-1,Red Bull,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", + "", + "", + "" + ] + }, + { + "id":7, + "type":4, + "params":[ + 0, + 1, + 0, + 0, + 0, + "", + "16,-1, 完 喰,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", + "", + "", + "" + ] + } + ], + "automation_songs":[ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 21, + 22, + 23, + 24, + 30, + 36, + 39, + 47, + 60, + 63, + 71, + 73, + 75, + 86, + 87, + 88, + 89, + 90, + 91, + 94, + 101, + 109, + 115, + 116, + 117, + 118, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 128, + 130, + 131, + 134, + 135, + 151, + 165, + 166, + 180, + 183, + 198, + 208, + 211, + 213, + 214, + 216, + 220, + 221, + 223, + 228, + 229, + 239, + 247, + 250, + 251, + 252, + 253, + 255, + 256, + 258, + 259, + 267, + 269, + 271, + 272, + 282, + 289, + 295, + 299, + 304, + 324, + 332, + 333, + 339, + 341, + 342, + 344, + 348, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 372, + 373, + 374, + 375, + 376, + 377, + 381, + 393, + 398, + 408, + 413, + 414, + 418, + 420, + 432, + 437, + 444, + 459, + 479, + 495, + 499, + 506, + 507, + 508, + 510, + 522, + 525, + 529, + 532, + 535, + 537, + 538, + 540, + 542, + 543, + 546, + 547, + 548, + 550, + 551, + 553, + 581, + 583, + 587, + 597, + 598, + 600, + 606, + 607, + 610, + 615, + 623, + 625, + 626, + 629, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 673, + 679, + 680, + 681, + 689, + 692, + 693, + 694, + 698, + 699, + 704, + 708, + 709, + 715, + 716, + 717, + 718, + 720, + 722, + 725, + 730, + 731, + 733, + 735, + 740, + 741, + 743, + 746, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 823, + 825, + 827, + 828, + 829, + 830, + 831, + 837, + 842, + 866, + 883, + 888, + 889, + 895, + 900, + 902, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 925, + 927, + 929, + 939, + 961, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 977, + 978, + 979, + 982, + 983, + 985, + 986, + 992, + 993, + 994, + 995, + 998, + 999, + 1000, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1015, + 1017, + 1018, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1052, + 1055, + 1072, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1117, + 1121, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1152, + 1158, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1220, + 1221, + 1226, + 1228, + 1230, + 1231, + 1235, + 1237, + 1238, + 1239, + 1240, + 1243, + 1244, + 1246, + 1247, + 1248, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1257, + 1258, + 1260, + 1261, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1300, + 1301, + 1302, + 1304, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1329, + 1345, + 1346, + 1347, + 1348, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1388, + 1389, + 1397, + 1402, + 1416, + 1433, + 1434, + 1435, + 1436, + 1437, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1490, + 1491, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1509, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1901, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1933, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1946, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 99001, + 99002, + 99003, + 99004 + ], + "skill_courses":[ + { + "id":1, + "name":"SKILL ANALYZER 第1回 Aコース", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1383, + "mty":0 + }, + { + "no":1, + "mid":334, + "mty":1 + }, + { + "no":2, + "mid":774, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":74, + "mty":0 + }, + { + "no":1, + "mid":771, + "mty":1 + }, + { + "no":2, + "mid":1125, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":784, + "mty":1 + }, + { + "no":1, + "mid":1126, + "mty":1 + }, + { + "no":2, + "mid":1075, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":505, + "mty":1 + }, + { + "no":1, + "mid":1403, + "mty":1 + }, + { + "no":2, + "mid":609, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":630, + "mty":1 + }, + { + "no":1, + "mid":1598, + "mty":1 + }, + { + "no":2, + "mid":1475, + "mty":1 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1154, + "mty":2 + }, + { + "no":1, + "mid":1238, + "mty":2 + }, + { + "no":2, + "mid":590, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1606, + "mty":2 + }, + { + "no":1, + "mid":834, + "mty":2 + }, + { + "no":2, + "mid":820, + "mty":4 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":183, + "mty":2 + }, + { + "no":1, + "mid":1602, + "mty":2 + }, + { + "no":2, + "mid":173, + "mty":2 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1418, + "mty":4 + }, + { + "no":1, + "mid":469, + "mty":2 + }, + { + "no":2, + "mid":1413, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1596, + "mty":4 + }, + { + "no":1, + "mid":1649, + "mty":4 + }, + { + "no":2, + "mid":229, + "mty":2 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1651, + "mty":4 + }, + { + "no":1, + "mid":1105, + "mty":4 + }, + { + "no":2, + "mid":1152, + "mty":4 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1664, + "mty":4 + }, + { + "no":1, + "mid":1528, + "mty":4 + }, + { + "no":2, + "mid":1185, + "mty":4 + } + ] + } + ] + }, + { + "id":2, + "name":"SKILL ANALYZER 第1回 Bコース", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1066, + "mty":0 + }, + { + "no":1, + "mid":1054, + "mty":1 + }, + { + "no":2, + "mid":1055, + "mty":0 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":768, + "mty":1 + }, + { + "no":1, + "mid":948, + "mty":1 + }, + { + "no":2, + "mid":755, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":401, + "mty":1 + }, + { + "no":1, + "mid":1320, + "mty":1 + }, + { + "no":2, + "mid":485, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":295, + "mty":1 + }, + { + "no":1, + "mid":255, + "mty":1 + }, + { + "no":2, + "mid":1029, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1420, + "mty":1 + }, + { + "no":1, + "mid":1001, + "mty":2 + }, + { + "no":2, + "mid":1611, + "mty":1 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1338, + "mty":2 + }, + { + "no":1, + "mid":79, + "mty":2 + }, + { + "no":2, + "mid":1151, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1047, + "mty":2 + }, + { + "no":1, + "mid":982, + "mty":2 + }, + { + "no":2, + "mid":1042, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":664, + "mty":2 + }, + { + "no":1, + "mid":1370, + "mty":2 + }, + { + "no":2, + "mid":838, + "mty":2 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":624, + "mty":2 + }, + { + "no":1, + "mid":1113, + "mty":4 + }, + { + "no":2, + "mid":1629, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1595, + "mty":4 + }, + { + "no":1, + "mid":1657, + "mty":4 + }, + { + "no":2, + "mid":658, + "mty":2 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1647, + "mty":4 + }, + { + "no":1, + "mid":1587, + "mty":4 + }, + { + "no":2, + "mid":333, + "mty":3 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1363, + "mty":4 + }, + { + "no":1, + "mid":692, + "mty":3 + }, + { + "no":2, + "mid":1270, + "mty":4 + } + ] + } + ] + }, + { + "id":3, + "name":"SKILL ANALYZER 第1回 Cコース", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1376, + "mty":0 + }, + { + "no":1, + "mid":564, + "mty":1 + }, + { + "no":2, + "mid":87, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":34, + "mty":1 + }, + { + "no":1, + "mid":932, + "mty":1 + }, + { + "no":2, + "mid":945, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1132, + "mty":1 + }, + { + "no":1, + "mid":1549, + "mty":1 + }, + { + "no":2, + "mid":380, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":130, + "mty":1 + }, + { + "no":1, + "mid":1204, + "mty":1 + }, + { + "no":2, + "mid":1424, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":48, + "mty":2 + }, + { + "no":1, + "mid":565, + "mty":2 + }, + { + "no":2, + "mid":1109, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1534, + "mty":2 + }, + { + "no":1, + "mid":1398, + "mty":2 + }, + { + "no":2, + "mid":1312, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":962, + "mty":2 + }, + { + "no":1, + "mid":1560, + "mty":2 + }, + { + "no":2, + "mid":357, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":965, + "mty":2 + }, + { + "no":1, + "mid":906, + "mty":2 + }, + { + "no":2, + "mid":579, + "mty":2 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":332, + "mty":2 + }, + { + "no":1, + "mid":36, + "mty":2 + }, + { + "no":2, + "mid":1476, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1533, + "mty":4 + }, + { + "no":1, + "mid":1597, + "mty":4 + }, + { + "no":2, + "mid":1541, + "mty":4 + } + ] + } + ] + }, + { + "id":4, + "name":"BEMANI MASTER KOREA 2021", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"BEMANI MASTER KOREA 2021 ENJOY COURSE", + "level":0, + "nameID":13, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1641, + "mty":1 + }, + { + "no":1, + "mid":1646, + "mty":1 + }, + { + "no":2, + "mid":1642, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"BEMANI MASTER KOREA 2021 ENTRY COURSE", + "level":0, + "nameID":13, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1641, + "mty":4 + }, + { + "no":1, + "mid":1646, + "mty":4 + }, + { + "no":2, + "mid":1642, + "mty":4 + } + ] + } + ] + }, + { + "id":5, + "name":"SKILL ANALYZER 第2回", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1374, + "mty":0 + }, + { + "no":1, + "mid":936, + "mty":1 + }, + { + "no":2, + "mid":314, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1221, + "mty":0 + }, + { + "no":1, + "mid":169, + "mty":1 + }, + { + "no":2, + "mid":254, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1429, + "mty":1 + }, + { + "no":1, + "mid":462, + "mty":1 + }, + { + "no":2, + "mid":237, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":449, + "mty":1 + }, + { + "no":1, + "mid":329, + "mty":1 + }, + { + "no":2, + "mid":1293, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":486, + "mty":2 + }, + { + "no":1, + "mid":920, + "mty":2 + }, + { + "no":2, + "mid":1318, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1288, + "mty":2 + }, + { + "no":1, + "mid":256, + "mty":2 + }, + { + "no":2, + "mid":1445, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1129, + "mty":2 + }, + { + "no":1, + "mid":1349, + "mty":2 + }, + { + "no":2, + "mid":1608, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":492, + "mty":2 + }, + { + "no":1, + "mid":930, + "mty":4 + }, + { + "no":2, + "mid":651, + "mty":2 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1607, + "mty":2 + }, + { + "no":1, + "mid":1240, + "mty":2 + }, + { + "no":2, + "mid":510, + "mty":2 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1251, + "mty":4 + }, + { + "no":1, + "mid":1540, + "mty":4 + }, + { + "no":2, + "mid":1712, + "mty":4 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1143, + "mty":4 + }, + { + "no":1, + "mid":1298, + "mty":4 + }, + { + "no":2, + "mid":1619, + "mty":4 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1639, + "mty":4 + }, + { + "no":1, + "mid":1496, + "mty":4 + }, + { + "no":2, + "mid":1766, + "mty":4 + } + ] + } + ] + }, + { + "id":6, + "name":"SKILL ANALYZER 第3回", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1718, + "mty":0 + }, + { + "no":1, + "mid":144, + "mty":1 + }, + { + "no":2, + "mid":568, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1659, + "mty":0 + }, + { + "no":1, + "mid":739, + "mty":1 + }, + { + "no":2, + "mid":561, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1110, + "mty":1 + }, + { + "no":1, + "mid":1513, + "mty":1 + }, + { + "no":2, + "mid":732, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":174, + "mty":1 + }, + { + "no":1, + "mid":1217, + "mty":1 + }, + { + "no":2, + "mid":617, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1564, + "mty":1 + }, + { + "no":1, + "mid":1679, + "mty":1 + }, + { + "no":2, + "mid":285, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":545, + "mty":2 + }, + { + "no":1, + "mid":1563, + "mty":2 + }, + { + "no":2, + "mid":916, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":866, + "mty":2 + }, + { + "no":1, + "mid":330, + "mty":2 + }, + { + "no":2, + "mid":669, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":399, + "mty":2 + }, + { + "no":1, + "mid":1166, + "mty":2 + }, + { + "no":2, + "mid":1305, + "mty":4 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":882, + "mty":4 + }, + { + "no":1, + "mid":1759, + "mty":4 + }, + { + "no":2, + "mid":993, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1644, + "mty":4 + }, + { + "no":1, + "mid":1331, + "mty":4 + }, + { + "no":2, + "mid":1625, + "mty":4 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1550, + "mty":3 + }, + { + "no":1, + "mid":1366, + "mty":4 + }, + { + "no":2, + "mid":1722, + "mty":4 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":495, + "mty":3 + }, + { + "no":1, + "mid":1464, + "mty":4 + }, + { + "no":2, + "mid":1767, + "mty":4 + } + ] + } + ] + }, + { + "id":8, + "name":"SKILL ANALYZER 第4回 Aコース", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":271, + "mty":0 + }, + { + "no":1, + "mid":209, + "mty":1 + }, + { + "no":2, + "mid":1083, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1088, + "mty":1 + }, + { + "no":1, + "mid":973, + "mty":1 + }, + { + "no":2, + "mid":22, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":157, + "mty":1 + }, + { + "no":1, + "mid":1039, + "mty":1 + }, + { + "no":2, + "mid":972, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1395, + "mty":1 + }, + { + "no":1, + "mid":238, + "mty":2 + }, + { + "no":2, + "mid":1342, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":283, + "mty":2 + }, + { + "no":1, + "mid":1551, + "mty":1 + }, + { + "no":2, + "mid":573, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1565, + "mty":2 + }, + { + "no":1, + "mid":1409, + "mty":2 + }, + { + "no":2, + "mid":202, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1250, + "mty":2 + }, + { + "no":1, + "mid":434, + "mty":2 + }, + { + "no":2, + "mid":690, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":460, + "mty":2 + }, + { + "no":1, + "mid":772, + "mty":2 + }, + { + "no":2, + "mid":891, + "mty":4 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":234, + "mty":2 + }, + { + "no":1, + "mid":886, + "mty":4 + }, + { + "no":2, + "mid":1716, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1760, + "mty":4 + }, + { + "no":1, + "mid":730, + "mty":2 + }, + { + "no":2, + "mid":1405, + "mty":4 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1776, + "mty":4 + }, + { + "no":1, + "mid":1365, + "mty":4 + }, + { + "no":2, + "mid":911, + "mty":3 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1364, + "mty":4 + }, + { + "no":1, + "mid":1661, + "mty":4 + }, + { + "no":2, + "mid":1099, + "mty":4 + } + ] + } + ] + }, + { + "id":9, + "name":"SKILL ANALYZER 第4回 Bコース", + "isNew":0, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1526, + "mty":0 + }, + { + "no":1, + "mid":84, + "mty":1 + }, + { + "no":2, + "mid":76, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":171, + "mty":1 + }, + { + "no":1, + "mid":474, + "mty":1 + }, + { + "no":2, + "mid":18, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":281, + "mty":1 + }, + { + "no":1, + "mid":1254, + "mty":1 + }, + { + "no":2, + "mid":997, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":417, + "mty":1 + }, + { + "no":1, + "mid":1572, + "mty":1 + }, + { + "no":2, + "mid":539, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1701, + "mty":1 + }, + { + "no":1, + "mid":523, + "mty":2 + }, + { + "no":2, + "mid":477, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1412, + "mty":2 + }, + { + "no":1, + "mid":1417, + "mty":2 + }, + { + "no":2, + "mid":1081, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":315, + "mty":2 + }, + { + "no":1, + "mid":861, + "mty":4 + }, + { + "no":2, + "mid":1303, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":484, + "mty":2 + }, + { + "no":1, + "mid":905, + "mty":2 + }, + { + "no":2, + "mid":1539, + "mty":4 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1019, + "mty":4 + }, + { + "no":1, + "mid":943, + "mty":4 + }, + { + "no":2, + "mid":1208, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":786, + "mty":2 + }, + { + "no":1, + "mid":837, + "mty":2 + }, + { + "no":2, + "mid":1200, + "mty":4 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":979, + "mty":3 + }, + { + "no":1, + "mid":1459, + "mty":4 + }, + { + "no":2, + "mid":1774, + "mty":4 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":914, + "mty":3 + }, + { + "no":1, + "mid":376, + "mty":3 + }, + { + "no":2, + "mid":1362, + "mty":4 + } + ] + } + ] + }, + { + "id":10, + "name":"SKILL ANALYZER 第5回 Aコース", + "isNew":1, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1441, + "mty":0 + }, + { + "no":1, + "mid":274, + "mty":1 + }, + { + "no":2, + "mid":569, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1057, + "mty":1 + }, + { + "no":1, + "mid":865, + "mty":1 + }, + { + "no":2, + "mid":721, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":673, + "mty":1 + }, + { + "no":1, + "mid":954, + "mty":1 + }, + { + "no":2, + "mid":1867, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":461, + "mty":1 + }, + { + "no":1, + "mid":538, + "mty":2 + }, + { + "no":2, + "mid":1510, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1300, + "mty":1 + }, + { + "no":1, + "mid":1697, + "mty":2 + }, + { + "no":2, + "mid":476, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1115, + "mty":2 + }, + { + "no":1, + "mid":1425, + "mty":2 + }, + { + "no":2, + "mid":756, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":411, + "mty":2 + }, + { + "no":1, + "mid":990, + "mty":4 + }, + { + "no":2, + "mid":514, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":778, + "mty":2 + }, + { + "no":1, + "mid":1727, + "mty":2 + }, + { + "no":2, + "mid":1127, + "mty":4 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":737, + "mty":2 + }, + { + "no":1, + "mid":1485, + "mty":2 + }, + { + "no":2, + "mid":1262, + "mty":4 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":832, + "mty":2 + }, + { + "no":1, + "mid":1749, + "mty":4 + }, + { + "no":2, + "mid":633, + "mty":2 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":725, + "mty":2 + }, + { + "no":1, + "mid":1201, + "mty":4 + }, + { + "no":2, + "mid":654, + "mty":2 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":704, + "mty":3 + }, + { + "no":1, + "mid":1176, + "mty":4 + }, + { + "no":2, + "mid":1889, + "mty":4 + } + ] + } + ] + }, + { + "id":11, + "name":"SKILL ANALYZER 第5回 Aコース", + "isNew":1, + "courses":[ + { + "id":1, + "type":0, + "name":"SKILL ANALYZER Level.01", + "level":1, + "nameID":1, + "assist":0, + "tracks":[ + { + "no":0, + "mid":698, + "mty":0 + }, + { + "no":1, + "mid":159, + "mty":1 + }, + { + "no":2, + "mid":671, + "mty":1 + } + ] + }, + { + "id":2, + "type":0, + "name":"SKILL ANALYZER Level.02", + "level":2, + "nameID":2, + "assist":0, + "tracks":[ + { + "no":0, + "mid":388, + "mty":1 + }, + { + "no":1, + "mid":1084, + "mty":1 + }, + { + "no":2, + "mid":1755, + "mty":1 + } + ] + }, + { + "id":3, + "type":0, + "name":"SKILL ANALYZER Level.03", + "level":3, + "nameID":3, + "assist":0, + "tracks":[ + { + "no":0, + "mid":854, + "mty":1 + }, + { + "no":1, + "mid":321, + "mty":1 + }, + { + "no":2, + "mid":512, + "mty":1 + } + ] + }, + { + "id":4, + "type":0, + "name":"SKILL ANALYZER Level.04", + "level":4, + "nameID":4, + "assist":0, + "tracks":[ + { + "no":0, + "mid":412, + "mty":1 + }, + { + "no":1, + "mid":992, + "mty":1 + }, + { + "no":2, + "mid":1315, + "mty":1 + } + ] + }, + { + "id":5, + "type":0, + "name":"SKILL ANALYZER Level.05", + "level":5, + "nameID":5, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1085, + "mty":2 + }, + { + "no":1, + "mid":1229, + "mty":2 + }, + { + "no":2, + "mid":212, + "mty":2 + } + ] + }, + { + "id":6, + "type":0, + "name":"SKILL ANALYZER Level.06", + "level":6, + "nameID":6, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1616, + "mty":2 + }, + { + "no":1, + "mid":1815, + "mty":2 + }, + { + "no":2, + "mid":813, + "mty":2 + } + ] + }, + { + "id":7, + "type":0, + "name":"SKILL ANALYZER Level.07", + "level":7, + "nameID":7, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1719, + "mty":2 + }, + { + "no":1, + "mid":344, + "mty":2 + }, + { + "no":2, + "mid":1322, + "mty":2 + } + ] + }, + { + "id":8, + "type":0, + "name":"SKILL ANALYZER Level.08", + "level":8, + "nameID":8, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1410, + "mty":2 + }, + { + "no":1, + "mid":1761, + "mty":2 + }, + { + "no":2, + "mid":63, + "mty":2 + } + ] + }, + { + "id":9, + "type":0, + "name":"SKILL ANALYZER Level.09", + "level":9, + "nameID":9, + "assist":0, + "tracks":[ + { + "no":0, + "mid":96, + "mty":2 + }, + { + "no":1, + "mid":976, + "mty":3 + }, + { + "no":2, + "mid":801, + "mty":2 + } + ] + }, + { + "id":10, + "type":0, + "name":"SKILL ANALYZER Level.10", + "level":10, + "nameID":10, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1729, + "mty":4 + }, + { + "no":1, + "mid":985, + "mty":4 + }, + { + "no":2, + "mid":900, + "mty":3 + } + ] + }, + { + "id":11, + "type":0, + "name":"SKILL ANALYZER Level.11", + "level":11, + "nameID":11, + "assist":0, + "tracks":[ + { + "no":0, + "mid":1517, + "mty":4 + }, + { + "no":1, + "mid":1335, + "mty":4 + }, + { + "no":2, + "mid":367, + "mty":2 + } + ] + }, + { + "id":12, + "type":0, + "name":"SKILL ANALYZER Level.∞", + "level":12, + "nameID":12, + "assist":0, + "tracks":[ + { + "no":0, + "mid":273, + "mty":3 + }, + { + "no":1, + "mid":1581, + "mty":4 + }, + { + "no":2, + "mid":1888, + "mty":4 + } + ] + } + ] + } + ], + "valk_generators":{ + + } + } \ No newline at end of file