IIDX: Initial support added for EPOLIS

IIDX: Bug fixes and Enhancements
This commit is contained in:
duel0213 2024-10-09 11:23:39 +09:00
parent 5750f8f464
commit 844dd6c4d1
33 changed files with 1966 additions and 598 deletions

View File

@ -1,6 +1,6 @@
# beatmaniaIIDX
Plugin Version: **v0.1.15**
Plugin Version: **v0.1.16**
---
@ -22,6 +22,7 @@ Supported Versions
- beatmaniaIIDX 28 BISTROVER (2021091500)
- beatmaniaIIDX 29 CastHour (2022082400)
- beatmaniaIIDX 30 RESIDENT (2023090500)
- beatmaniaIIDX 31 EPOLIS (2024082600)
---
@ -29,10 +30,11 @@ Features
- STEP UP (Partial)
- SKILL ANALYZER
- EVENT (Partial)
- ARENA (Partial)
- ARENA (LOCAL only)
- RANDOME LANE TICKET
- FAVORITE/SONG SELECTION NOTES (Partial)
- EXTRA FAVORITE does not support yet
- ORIGINAL FILTER
---
@ -40,9 +42,11 @@ Known Issues
- Clear Lamps may display invalid lamps due to missing conversion code
- DJ LEVEL folders are broken in ~ DJ TROOPERS due to missing rank\_id
- LEGGENDARIA play records before HEROIC VERSE may not display on higher version due to missing conversion code
- SUPER FUTURE 2323 play records doesn't display on other version due to missing conversion code
- ONE MORE EXTRA STAGE progress won't save (can't test this due to skill issue)
- Some of licensed songs are locked behind due to missing license element (needs to be verified)
- Badges aren't saving in RESIDENT ~ (needs to figure out name to id)
- Some of badges aren't saving in RESIDENT ~ (needs to figure out name to id)
- QPRO may have wrong item if you equipped item from STEP UP result (this probably caused by qpro\_secret\_flg being -1)
---
@ -136,10 +140,17 @@ Changelogs
- Added Initial support for GOLD
- Added Disable Beginner Option
- Added Experimental Badge saving support
- Added Experimental score Import/Export
- Fixed where plugin may fail to register due to missing types in dev mode
- Added Experimental score import/export
- Fixed where plugin may fail to register due to missing types in dev mode (invalid setup for dev, just enough to get around)
- Fixed where pacemaker isn't working as intended due to malformed ghost data on music.appoint response (~ DJ TROOPERS)
- Fixed where unable to login after first-play (SPADA, SINOBUZ, Rootage)
- Fixed where pacemaker isn't working as intented due to wrong condition check (HEROIC VERSE ~)
- Fixed where pacemaker sub-type isn't load correctly (HEROIC VERSE ~)
- Fixed where QPRO doesn't get saved in WebUI
- Fixed where QPRO data doesn't get saved in WebUI
**v0.1.16**
- Added Initial support for EPOLIS
- Added music\_open on gameSystem.systemInfo response
- Fixed where lightning settings doesn't get saved on logout
- Fixed where Disable Music Preview, Disable HCN Color, VEFX Lock settings doesn't reflect
- WebUI is now display values of corresponding version

View File

@ -0,0 +1,40 @@
{
"31": {
"0": {
"15": {
"music_id": [ 25090, 23068, 19004, 29045 ],
"class_id": [ 3, 3, 3, 3 ]
},
"16": {
"music_id": [ 23005, 27078, 22065, 27060 ],
"class_id": [ 3, 3, 3, 3 ]
},
"17": {
"music_id": [ 29007, 26108, 19002, 18004 ],
"class_id": [ 3, 3, 3, 3 ]
},
"18": {
"music_id": [ 25007, 18032, 16020, 12004 ],
"class_id": [ 3, 3, 3, 3 ]
}
},
"1": {
"15": {
"music_id": [ 15032, 29033, 27092, 30020 ],
"class_id": [ 3, 3, 3, 3 ]
},
"16": {
"music_id": [ 10028, 26070, 28091, 23075 ],
"class_id": [ 3, 3, 3, 3 ]
},
"17": {
"music_id": [ 26012, 28002, 17017, 28005 ],
"class_id": [ 3, 3, 3, 3 ]
},
"18": {
"music_id": [ 28008, 15001, 19002, 9028 ],
"class_id": [ 3, 3, 3, 3 ]
}
}
}
}

View File

@ -0,0 +1,60 @@
{
"26": {
"26002": { "kind": 0 },
"26006": { "kind": 0 },
"26022": { "kind": 0 },
"26045": { "kind": 0 }
},
"27": {
"27070": { "kind": 0 },
"27071": { "kind": 0 },
"27073": { "kind": 0 }
},
"28": {
"28001": { "kind": 0 },
"28036": { "kind": 0 },
"28038": { "kind": 0 },
"28072": { "kind": 0 },
"28074": { "kind": 0 }
},
"29": {
"29071": { "kind": 0 },
"29072": { "kind": 0 },
"29075": { "kind": 0 },
"29081": { "kind": 0 },
"29082": { "kind": 0 },
"29085": { "kind": 0 },
"29101": { "kind": 0 },
"29102": { "kind": 0 },
"29103": { "kind": 0 }
},
"30": {
"30038": { "kind": 0 },
"30082": { "kind": 0 },
"30083": { "kind": 0 },
"30084": { "kind": 0 },
"30085": { "kind": 0 },
"30101": { "kind": 0 },
"30102": { "kind": 0 },
"30104": { "kind": 0 },
"30105": { "kind": 0 }
},
"31": {
"31021": { "kind": 0 },
"31022": { "kind": 0 },
"31023": { "kind": 0 },
"31024": { "kind": 0 },
"31025": { "kind": 0 },
"31065": { "kind": 0 },
"31066": { "kind": 0 },
"31097": { "kind": 0 },
"31098": { "kind": 0 },
"31099": { "kind": 0 },
"31100": { "kind": 0 },
"31101": { "kind": 0 },
"31102": { "kind": 0 },
"31110": { "kind": 0 },
"31112": { "kind": 0 },
"31113": { "kind": 0 }
}
}

View File

@ -16,6 +16,64 @@ export const gssysteminfo: EPR = async (info, data, send) => {
arena_cpu_define: [],
}
// following datas are made up needs to figure out correct way to do it //
let music_open = JSON.parse(await IO.ReadFile("data/music_open.json"));
if (!_.isNil(music_open[version])) {
result = {
...result,
music_open: [],
}
Object.keys(music_open).forEach(v => {
Object.keys(music_open[v]).forEach(m => {
if (parseInt(v) > version) return;
result.music_open.push({
music_id: K.ITEM("s32", parseInt(m)),
kind: K.ITEM("s32", music_open[v][m].kind),
});
});
});
}
if (version >= 31) {
result.arena_schedule = {
...result.arena_schedule,
rule_type: K.ITEM("u8", 0),
}
result = {
...result,
grade_course: [],
}
// following datas are made up needs to figure out correct way to do it //
let grade = JSON.parse(await IO.ReadFile("data/grade.json"));
if (!_.isNil(grade[version])) {
Object.keys(grade[version]).forEach(s => {
Object.keys(grade[version][s]).forEach(c => {
result.grade_course.push({
play_style: K.ITEM("s32", parseInt(s)),
grade_id: K.ITEM("s32", parseInt(c)),
is_valid: K.ITEM("bool", true),
music_id_0: K.ITEM("s32", grade[version][s][c].music_id[0]),
class_id_0: K.ITEM("s32", grade[version][s][c].class_id[0]),
music_id_1: K.ITEM("s32", grade[version][s][c].music_id[1]),
class_id_1: K.ITEM("s32", grade[version][s][c].class_id[1]),
music_id_2: K.ITEM("s32", grade[version][s][c].music_id[2]),
class_id_2: K.ITEM("s32", grade[version][s][c].class_id[2]),
music_id_3: K.ITEM("s32", grade[version][s][c].music_id[3]),
class_id_3: K.ITEM("s32", grade[version][s][c].class_id[3]),
index: K.ITEM("s32", result.grade_course.length),
cube_num: K.ITEM("s32", 0),
kind: K.ITEM("s32", 0),
});
});
});
}
}
// arena_music_difficult //
for (let s = 0; s < 2; ++s) {
for (let c = 0; c < 20; ++c) {
result.arena_music_difficult.push({
@ -72,6 +130,23 @@ export const gssysteminfo: EPR = async (info, data, send) => {
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
}
break;
case 31:
result = {
...result,
CommonBossPhase: K.ATTR({ val: String(3) }),
Event1Value: K.ATTR({ val: String(U.GetConfig("ep_event")) }),
Event1Phase: K.ATTR({ val: String(U.GetConfig("ep_event1")) }),
Event2Phase: K.ATTR({ val: String(U.GetConfig("ep_event2")) }),
ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("ep_extraboss")) }),
isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }),
isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
UnlockLeggendaria: K.ATTR({ val: String(1) }),
BPLSerialCodePhase: K.ATTR({ val: String(0) }),
Event1AllPlayerTotalGetMetron: K.ATTR({ val: String(2500) }),
}
break;
default:
break;

View File

@ -24,8 +24,8 @@ export const graderaised: EPR = async (info, data, send) => {
if (version >= 23) cflg = parseInt($(data).attr().cstage);
const isTDJ = !(_.isNil($(data).element("lightning_play_data"))); // lightning model //
const hasEiseiData = (!(_.isNil($(data).element("eisei_data"))) || !(_.isNil($(data).element("eisei_grade_data"))));;
const isTDJ = !_.isNil($(data).element("lightning_play_data")); // lightning model //
const hasEiseiData = (!_.isNil($(data).element("eisei_data")) || !_.isNil($(data).element("eisei_grade_data")) || !_.isNil($(data).element("kiwami_data")));
if (isTDJ && hasEiseiData) {
let eisei_clear_type: number;
let eisei_grade_id: number;
@ -38,35 +38,52 @@ export const graderaised: EPR = async (info, data, send) => {
let eisei_max_past_achievement: number[];
let eisei_max_past_selected_course: number[];
if (version == 27) {
eisei_clear_type = parseInt($(data).attr("eisei_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_data").stage_num);
switch (version) {
case 27:
eisei_clear_type = parseInt($(data).attr("eisei_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_data").stage_num);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement");
} if (version >= 30) {
eisei_clear_type = parseInt($(data).element("eisei_data").attr().clear_type);
eisei_grade_id = parseInt($(data).element("eisei_data").attr().grade_id);
eisei_grade_type = parseInt($(data).element("eisei_data").attr().grade_type);
eisei_stage_num = parseInt($(data).element("eisei_data").attr().stage_num);
eisei_option = parseInt($(data).element("eisei_data").attr().option);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement");
break;
case 30:
eisei_clear_type = parseInt($(data).element("eisei_data").attr().clear_type);
eisei_grade_id = parseInt($(data).element("eisei_data").attr().grade_id);
eisei_grade_type = parseInt($(data).element("eisei_data").attr().grade_type);
eisei_stage_num = parseInt($(data).element("eisei_data").attr().stage_num);
eisei_option = parseInt($(data).element("eisei_data").attr().option);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_data").numbers("past_selected_course");
eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement");
eisei_max_past_selected_course = $(data).element("eisei_data").numbers("max_past_selected_course");
} else {
eisei_clear_type = parseInt($(data).attr("eisei_grade_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_grade_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_grade_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_grade_data").stage_num);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_data").numbers("past_selected_course");
eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement");
eisei_max_past_selected_course = $(data).element("eisei_data").numbers("max_past_selected_course");
break;
case 31:
eisei_clear_type = parseInt($(data).attr("kiwami_data").clear_type);
eisei_grade_id = parseInt($(data).attr("kiwami_data").grade_id);
eisei_grade_type = parseInt($(data).attr("kiwami_data").grade_type);
eisei_stage_num = parseInt($(data).attr("kiwami_data").stage_num);
eisei_option = parseInt($(data).attr("kiwami_data").option);
eisei_past_achievement = $(data).element("eisei_grade_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_grade_data").numbers("past_selected_course");
eisei_max_past_achievement = $(data).element("eisei_grade_data").numbers("max_past_achievement");
eisei_max_past_selected_course = $(data).element("eisei_grade_data").numbers("max_past_selected_course");
eisei_past_achievement = $(data).element("kiwami_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("kiwami_data").numbers("past_selected_course");
eisei_max_past_achievement = $(data).element("kiwami_data").numbers("max_past_achievement");
eisei_max_past_selected_course = $(data).element("kiwami_data").numbers("max_past_selected_course");
break;
default:
eisei_clear_type = parseInt($(data).attr("eisei_grade_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_grade_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_grade_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_grade_data").stage_num);
eisei_past_achievement = $(data).element("eisei_grade_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_grade_data").numbers("past_selected_course");
eisei_max_past_achievement = $(data).element("eisei_grade_data").numbers("max_past_achievement");
eisei_max_past_selected_course = $(data).element("eisei_grade_data").numbers("max_past_selected_course");
break;
}
await DB.Upsert<eisei_grade>(

View File

@ -568,7 +568,8 @@ export const musicreg: EPR = async (info, data, send) => {
scores[tmp_clid] = exscore;
clflgs[tmp_clid] = cflg;
}
} else {
}
else {
names = score_top.names;
scores = score_top.scores;
clflgs = score_top.clflgs;

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@ import { profile } from "../models/profile";
import { rival } from "../models/rival";
import { custom } from "../models/custom";
import { score, old_score } from "../models/score";
import { lightning_custom } from "../models/lightning";
export const updateRivalSettings = async (data) => {
let update_array = [];
@ -238,18 +239,20 @@ export const updateCustomSettings = async (data) => {
rival_played_folder: StoB(data.rival_played_folder),
hide_iidxid: StoB(data.hide_iidxid),
disable_beginner_option: StoB(data.disable_beginner_option),
qpro_head: parseInt(data.qpro_head),
qpro_hair: parseInt(data.qpro_hair),
qpro_face: parseInt(data.qpro_face),
qpro_hand: parseInt(data.qpro_hand),
qpro_body: parseInt(data.qpro_body),
qpro_back: parseInt(data.qpro_back),
}
await DB.Upsert<custom>(data.refid, {
collection: "custom",
version: parseInt(data.version)
}, {
},
{
$set: customize
});
@ -263,14 +266,39 @@ export const updateCustomSettings = async (data) => {
}
});
}
if (data.version > 27) {
await DB.Upsert<lightning_custom>(data.refid, {
collection: "lightning_custom",
version: parseInt(data.version)
},
{
$set: {
premium_skin: parseInt(data.lm_skin),
premium_bg: parseInt(data.lm_bg),
}
});
}
};
export const importScoreData = async (data) => {
if (_.isEmpty(data.data)) return;
export const importScoreData = async (data, send: WebUISend) => {
if (_.isEmpty(data.data)) {
console.error("[Score Importer] Supplied data is empty");
return send.error(400, "Empty data");
}
let content = JSON.parse(data.data);
let version = content.version;
let count = content.count;
let content = null;
let version = 0;
let count = 0;
try {
content = JSON.parse(data.data);
version = content.version;
count = content.count;
}
catch {
console.error("[Score Importer] Invaild data has been supplied");
return send.error(400, "Invalid data");
}
switch (version) {
case 1:
@ -352,7 +380,8 @@ export const importScoreData = async (data) => {
break;
default:
break;
console.error("[Score Importer] Unregistered score data version");
return send.error(400, "Invalid data version");
}
}
@ -361,6 +390,8 @@ export const exportScoreData = async (data, send: WebUISend) => {
collection: "score"
});
if (score == null) return send.error(400, "No data");
let result = {
version: 2,
count: score.length,

View File

@ -99,8 +99,8 @@ export function register() {
default: "http://localhost/"
});
R.Config("Eisei", {
name: "Eisei Dan Courses",
desc: "Enable EISEI DAN Courses",
name: "Eisei Grade Courses",
desc: "Enable EISEI/KIWAMI Grade Courses",
type: "boolean",
default: true,
});
@ -458,11 +458,63 @@ export function register() {
default: 3,
});
// TODO:: Reflect data when version dropdown menu has been changed //
R.WebUIEvent("updateIIDXRival", updateRivalSettings);
R.WebUIEvent("updateIIDXCustom", updateCustomSettings);
R.WebUIEvent("importScoreData", importScoreData);
R.WebUIEvent("exportScoreData", exportScoreData);
// EPOLIS //
R.Config("ep_event", {
name: "Event Phase (EP)",
desc: "MY POLIS DESIGNER / EPOLIS RESTORATION",
type: "integer",
default: 2,
});
R.Config("ep_event1", {
name: "MY POLIS DESIGNER",
desc: "MY POLIS DESIGNER Phase",
type: "integer",
default: 3,
});
R.Config("ep_event2", {
name: "EPOLIS RESTORATION",
desc: "EPOLIS RESTORATION Phase",
type: "integer",
default: 3,
});
R.Config("ep_extraboss", {
name: "EPOLIS SINGULARITY",
desc: "EPOLIS SINGULARITY Phase",
type: "integer",
default: 3,
});
// TODO:: Make a list of customize items //
R.WebUIEvent("iidxGetProfile", async (data, send: WebUISend) => {
const pcdata = await DB.FindOne(data.refid, {
collection: "pcdata",
version: parseInt(data.version),
});
return send.json({
pcdata,
});
});
R.WebUIEvent("iidxGetSetting", async (data, send: WebUISend) => {
const custom = await DB.FindOne(data.refid, {
collection: "custom",
version: parseInt(data.version),
});
const lm_custom = await DB.FindOne(data.refid, {
collection: "lightning_custom",
version: parseInt(data.version),
});
return send.json({
custom,
lm_custom,
});
});
R.WebUIEvent("iidxUpdateRival", updateRivalSettings);
R.WebUIEvent("iidxUpdateCustom", updateCustomSettings);
R.WebUIEvent("iidxImportScoreData", importScoreData);
R.WebUIEvent("iidxExportScoreData", exportScoreData);
const MultiRoute = (method: string, handler: EPR | boolean) => {
R.Route(`${method}`, handler);
@ -476,6 +528,7 @@ export function register() {
R.Route(`IIDX28${method}`, handler);
R.Route(`IIDX29${method}`, handler);
R.Route(`IIDX30${method}`, handler);
R.Route(`IIDX31${method}`, handler);
};
MultiRoute("pc.common", pccommon);

View File

@ -25,6 +25,10 @@ export interface custom {
skin_customize_flg: number[];
note_size: number; // epolis //
lift_cover: number;
note_beam_size: number;
// appendsettings
rank_folder: boolean;
clear_folder: boolean;
@ -46,6 +50,7 @@ export interface custom {
qpro_face: number;
qpro_hand: number;
qpro_body: number;
qpro_back: number; // epolis //
// qpro_secret (heroic verse) //
qpro_secret_head: string[];
@ -53,6 +58,7 @@ export interface custom {
qpro_secret_face: string[];
qpro_secret_hand: string[];
qpro_secret_body: string[];
qpro_secret_back: string[]; // epolis //
}
export const default_custom = {
@ -77,6 +83,10 @@ export const default_custom = {
skin_customize_flg: Array<number>(3).fill(-1),
note_size: 0,
lift_cover: 0,
note_beam_size: 0,
rank_folder: true,
clear_folder: true,
diff_folder: true,
@ -96,10 +106,12 @@ export const default_custom = {
qpro_face: 0,
qpro_hand: 0,
qpro_body: 0,
qpro_back: 0,
qpro_secret_head: Array<string>(7).fill("-1"),
qpro_secret_hair: Array<string>(7).fill("-1"),
qpro_secret_face: Array<string>(7).fill("-1"),
qpro_secret_hand: Array<string>(7).fill("-1"),
qpro_secret_body: Array<string>(7).fill("-1"),
qpro_secret_back: Array<string>(7).fill("-1"),
}

View File

@ -12,7 +12,10 @@ export interface lightning_settings {
slider: number[];
light: number[];
concentration: number;
};
keyboard_kind: number; // epolis //
brightness: number;
}
export interface lightning_playdata {
collection: "lightning_playdata";
@ -21,7 +24,15 @@ export interface lightning_playdata {
sp_num: number;
dp_num: number;
};
}
export interface lightning_custom {
collection: "lightning_custom";
version: number;
premium_skin: number;
premium_bg: number;
}
export interface eisei_grade {
collection: "eisei_grade";
@ -84,6 +95,27 @@ export interface musicmemo_data_new {
music_ids: number[];
}
export interface lightning_musicfilter {
collection: "lightning_musicfilter";
version: number;
play_style: number;
folder_id: number;
filter_id: number;
is_valid: boolean;
value0: number;
value1: number;
}
export interface musicfilter_data {
play_style: number;
folder_id: number;
filter_id: number;
is_valid: boolean;
value0: number;
value1: number;
}
export const lm_playdata = {
sp_num: 0,
dp_num: 0,
@ -113,4 +145,12 @@ export const lm_settings_new = {
slider: [7, 7, 7, 7, 7, 15, 15],
light: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
concentration: 0,
keyboard_kind: 10, // epolis //
brightness: 2,
}
export const lm_customdata = {
premium_skin: 0, // Icons //
premium_bg: 0, // Background (epolis) //
}

View File

@ -33,6 +33,7 @@ export interface pcdata {
fcombo: number[];
ngrade: number; // attribute (BISTROVER) //
rtype: number; // attribute (Heroic Verse) //
player_kind: number; // attribute (EPOLIS) //
gpos: number;
s_sorttype: number;
@ -89,13 +90,15 @@ export interface pcdata {
d_timing_split: number;
s_visualization: number;
d_visualization: number;
s_classic_hispeed: number; // EPOLIS //
d_classic_hispeed: number;
secret_flg1: string[]; // secret (Heroic Verse) //
secret_flg2: string[];
secret_flg3: string[];
secret_flg4: string[];
leggendaria_flg1: string[]; // leggendaria (bistrover) //
leggendaria_flg1: string[]; // leggendaria (BISTROVER) //
dr_sprank: number[]; // djrank (Heroic Verse) //
dr_sppoint: number[];
@ -113,9 +116,9 @@ export interface pcdata {
achi_weeklynum: number;
achi_trophy: string[]; // for somewhat reason save throws lots of elements but sending it as-is throws error //
deller: number; // in-game currency (heroic verse) //
orb: number;
present_orb: number;
deller: number; // in-game currency (Lincle) //
orb: number; // v-disc (SPADA) //
present_orb: number; // v-disc but not sure what it does (Rootage) //
sgid: number; // grade //
dgid: number;
@ -128,9 +131,9 @@ export interface pcdata {
jewel_bnum: number[];
party: number[];
jpoint: number; // jpoint (lincle) //
jpoint: number; // jpoint (Lincle) //
st_sp_ach: number; // step (lincle) //
st_sp_ach: number; // step (Lincle) //
st_sp_dif: number;
st_dp_ach: number;
st_dp_dif: number;
@ -195,6 +198,7 @@ export interface pcdata {
event_last_select_type: number; // CastHour //
event_story_prog: number; // BISTROVER //
event_failed_num: number;
event_skip: boolean;
type: number[]; // history (Lincle) //
time: number[];
@ -1301,11 +1305,6 @@ export const IIDX29_pcdata = {
leggendaria_flg1: Array<string>(3).fill("-1"),
dr_sprank: Array<number>(15).fill(0),
dr_sppoint: Array<number>(15).fill(0),
dr_dprank: Array<number>(15).fill(0),
dr_dppoint: Array<number>(15).fill(0),
nr_spradar: Array<number>(6).fill(0),
nr_dpradar: Array<number>(6).fill(0),
@ -1457,3 +1456,118 @@ export const IIDX30_pcdata = {
event_play_num: 0,
event_last_select_id: -1,
}
export const IIDX31_pcdata = {
version: 31,
spnum: 0,
dpnum: 0,
sach: 0,
dach: 0,
mode: 0,
pmode: 0,
ngrade: 0,
rtype: 0,
player_kind: 0,
sp_opt: 0,
dp_opt: 0,
dp_opt2: 0,
gpos: 0,
s_sorttype: 0,
d_sorttype: 0,
s_pace: 0,
d_pace: 0,
s_gno: 0,
d_gno: 0,
s_sub_gno: 0,
d_sub_gno: 0,
s_gtype: 0,
d_gtype: 0,
s_sdlen: 0,
d_sdlen: 0,
s_sdtype: 0,
d_sdtype: 0,
s_timing: 0,
d_timing: 0,
s_notes: 0,
d_notes: 0,
s_judge: 0,
d_judge: 0,
s_judgeAdj: 0,
d_judgeAdj: 0,
s_hispeed: 0,
d_hispeed: 0,
s_liflen: 0,
d_liflen: 0,
s_disp_judge: 0,
d_disp_judge: 0,
s_opstyle: 0,
d_opstyle: 0,
s_graph_score: 0,
d_graph_score: 0,
s_auto_scrach: 0,
d_auto_scrach: 0,
s_gauge_disp: 0,
d_gauge_disp: 0,
s_lane_brignt: 0,
d_lane_brignt: 0,
s_camera_layout: 0,
d_camera_layout: 0,
s_ghost_score: 0,
d_ghost_score: 0,
s_tsujigiri_disp: 0,
d_tsujigiri_disp: 0,
s_auto_adjust: 0,
d_auto_adjust: 0,
s_timing_split: 0,
d_timing_split: 0,
s_visualization: 0,
d_visualization: 0,
s_classic_hispeed: 0,
d_classic_hispeed: 0,
secret_flg1: Array<string>(3).fill("-1"),
secret_flg2: Array<string>(3).fill("-1"),
secret_flg3: Array<string>(3).fill("-1"),
secret_flg4: Array<string>(3).fill("-1"),
leggendaria_flg1: Array<string>(3).fill("-1"),
tourism_secret_flg1: Array<string>(3).fill("-1"),
tourism_secret_flg2: Array<string>(3).fill("-1"),
nr_spradar: Array<number>(6).fill(0),
nr_dpradar: Array<number>(6).fill(0),
st_enemy_damage: 0,
st_progress: 0,
st_total_point: 0,
st_enemy_defeat_flg: 0,
st_is_track_ticket: false,
st_sp_level: 0,
st_dp_level: 0,
st_sp_fluctuation: 0,
st_dp_fluctuation: 0,
st_mission_clear_num: 0,
st_sp_mplay: 0,
st_dp_mplay: 0,
st_tips_read_list: 0,
sgid: -1,
dgid: -1,
achi_lastweekly: 0,
achi_pack: 0,
achi_packcomp: 0,
achi_rivalcrush: 0,
achi_visitflg: 0,
achi_weeklynum: 0,
deller: 0,
orb: 0,
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_skip: false,
}

View File

@ -36,4 +36,4 @@ export interface old_score {
option_1: number;
option_2: number;
}
}

View File

@ -4,7 +4,7 @@ pc(status="0")
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
ex
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -21,7 +21,7 @@ IIDX21pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -21,7 +21,7 @@ IIDX22pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -22,7 +22,7 @@ IIDX23pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -23,7 +23,7 @@ IIDX24pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="17") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0 0 0 0
skin(__type="s16" __count="17") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0 0 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -23,7 +23,7 @@ IIDX25pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -24,7 +24,7 @@ IIDX26pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -28,7 +28,7 @@ IIDX27pc(status="0")
detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type)
past(__type="s32" __count="5") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} #{ed.past[3]} #{ed.past[4]}
max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{custom.disable_musicpreview} #{custom.pacemaker_cover} #{custom.vefx_lock} #{custom.effect} #{custom.bomb_size} #{custom.disable_hcn_color} #{custom.first_note_preview}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview}
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -1,7 +1,7 @@
IIDX28pc(status="0")
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 gpos=pcdata.gpos s_sorttype=pcdata.s_sorttype d_sorttype=pcdata.d_sorttype s_pace=pcdata.s_pace d_pace=pcdata.d_pace s_gno=pcdata.s_gno d_gno=pcdata.d_gno s_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_gno s_gtype=pcdata.s_gtype d_gtype=pcdata.d_gtype s_sdlen=pcdata.s_sdlen d_sdlen=pcdata.d_sdlen s_sdtype=pcdata.s_sdtype d_sdtype=pcdata.d_sdtype s_timing=pcdata.s_timing d_timing=pcdata.d_timing s_notes=pcdata.s_notes d_notes=pcdata.d_notes s_judge=pcdata.s_judge d_judge=pcdata.d_judge s_judgeAdj=pcdata.s_judgeAdj d_judgeAdj=pcdata.d_judgeAdj s_hispeed=pcdata.s_hispeed d_hispeed=pcdata.d_hispeed s_liflen=pcdata.s_liflen d_liflen=pcdata.d_liflen s_disp_judge=pcdata.s_disp_judge d_disp_judge=pcdata.d_disp_judge s_opstyle=pcdata.s_opstyle d_opstyle=pcdata.d_opstyle s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp)
lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num)
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0="0" flg_skin_0="-1")
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1")
slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]}
light(__type="bool" __count="6") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]}
concentration(__type="bool") #{lm_settings.concentration}
@ -35,7 +35,7 @@ IIDX28pc(status="0")
selected_course(__type="s32" __count="5") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} #{ed.selected_course[3]} #{ed.selected_course[4]}
max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]}
max_selected_course(__type="s32" __count="5") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} #{ed.max_selected_course[3]} #{ed.max_selected_course[4]}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{custom.disable_musicpreview} #{custom.pacemaker_cover} #{custom.vefx_lock} #{custom.effect} #{custom.bomb_size} #{custom.disable_hcn_color} #{custom.first_note_preview}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview}
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -1,7 +1,7 @@
IIDX29pc(status="0")
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 gpos=pcdata.gpos s_sorttype=pcdata.s_sorttype d_sorttype=pcdata.d_sorttype s_pace=pcdata.s_pace d_pace=pcdata.d_pace s_gno=pcdata.s_gno d_gno=pcdata.d_gno s_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_gno s_gtype=pcdata.s_gtype d_gtype=pcdata.d_gtype s_sdlen=pcdata.s_sdlen d_sdlen=pcdata.d_sdlen s_sdtype=pcdata.s_sdtype d_sdtype=pcdata.d_sdtype s_timing=pcdata.s_timing d_timing=pcdata.d_timing s_notes=pcdata.s_notes d_notes=pcdata.d_notes s_judge=pcdata.s_judge d_judge=pcdata.d_judge s_judgeAdj=pcdata.s_judgeAdj d_judgeAdj=pcdata.d_judgeAdj s_hispeed=pcdata.s_hispeed d_hispeed=pcdata.d_hispeed s_liflen=pcdata.s_liflen d_liflen=pcdata.d_liflen s_disp_judge=pcdata.s_disp_judge d_disp_judge=pcdata.d_disp_judge s_opstyle=pcdata.s_opstyle d_opstyle=pcdata.d_opstyle s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust)
lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num)
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0="0" flg_skin_0="-1")
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1")
slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]}
light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]}
concentration(__type="bool") #{lm_settings.concentration}
@ -35,7 +35,7 @@ IIDX29pc(status="0")
selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]}
max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]}
max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{custom.disable_musicpreview} #{custom.pacemaker_cover} #{custom.vefx_lock} #{custom.effect} #{custom.bomb_size} #{custom.disable_hcn_color} #{custom.first_note_preview}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview}
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -1,14 +1,13 @@
IIDX30pc(status="0")
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 gpos=pcdata.gpos s_sorttype=pcdata.s_sorttype d_sorttype=pcdata.d_sorttype s_pace=pcdata.s_pace d_pace=pcdata.d_pace s_gno=pcdata.s_gno d_gno=pcdata.d_gno s_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_gno s_gtype=pcdata.s_gtype d_gtype=pcdata.d_gtype s_sdlen=pcdata.s_sdlen d_sdlen=pcdata.d_sdlen s_sdtype=pcdata.s_sdtype d_sdtype=pcdata.d_sdtype s_timing=pcdata.s_timing d_timing=pcdata.d_timing s_notes=pcdata.s_notes d_notes=pcdata.d_notes s_judge=pcdata.s_judge d_judge=pcdata.d_judge s_judgeAdj=pcdata.s_judgeAdj d_judgeAdj=pcdata.d_judgeAdj s_hispeed=pcdata.s_hispeed d_hispeed=pcdata.d_hispeed s_liflen=pcdata.s_liflen d_liflen=pcdata.d_liflen s_disp_judge=pcdata.s_disp_judge d_disp_judge=pcdata.d_disp_judge s_opstyle=pcdata.s_opstyle d_opstyle=pcdata.d_opstyle s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust s_timing_split=pcdata.s_timing_split d_timing_split=pcdata.d_timing_split s_visualization=pcdata.s_visualization d_visualization=pcdata.d_visualization)
lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num)
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0="0" flg_skin_0="-1")
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1")
slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]}
light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]}
concentration(__type="bool") #{lm_settings.concentration}
spdp_rival(flg="-1")
bind_eaappli
ea_premium_course
enable_qr_reward
secret
flg1(__type="s64" __count="3") -1 -1 -1
flg2(__type="s64" __count="3") -1 -1 -1
@ -36,7 +35,7 @@ IIDX30pc(status="0")
selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]}
max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]}
max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{custom.disable_musicpreview} #{custom.pacemaker_cover} #{custom.vefx_lock} #{custom.effect} #{custom.bomb_size} #{custom.disable_hcn_color} #{custom.first_note_preview}
skin(__type="s16" __count="20") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview}
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -0,0 +1,108 @@
IIDX31pc(status="0" qproback=custom.qpro_back)
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype player_kind=pcdata.player_kind sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 gpos=pcdata.gpos s_sorttype=pcdata.s_sorttype d_sorttype=pcdata.d_sorttype s_pace=pcdata.s_pace d_pace=pcdata.d_pace s_gno=pcdata.s_gno d_gno=pcdata.d_gno s_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_gno s_gtype=pcdata.s_gtype d_gtype=pcdata.d_gtype s_sdlen=pcdata.s_sdlen d_sdlen=pcdata.d_sdlen s_sdtype=pcdata.s_sdtype d_sdtype=pcdata.d_sdtype s_timing=pcdata.s_timing d_timing=pcdata.d_timing s_notes=pcdata.s_notes d_notes=pcdata.d_notes s_judge=pcdata.s_judge d_judge=pcdata.d_judge s_judgeAdj=pcdata.s_judgeAdj d_judgeAdj=pcdata.d_judgeAdj s_hispeed=pcdata.s_hispeed d_hispeed=pcdata.d_hispeed s_liflen=pcdata.s_liflen d_liflen=pcdata.d_liflen s_disp_judge=pcdata.s_disp_judge d_disp_judge=pcdata.d_disp_judge s_opstyle=pcdata.s_opstyle d_opstyle=pcdata.d_opstyle s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust s_timing_split=pcdata.s_timing_split d_timing_split=pcdata.d_timing_split s_visualization=pcdata.s_visualization d_visualization=pcdata.d_visualization s_classic_hispeed=pcdata.s_classic_hispeed d_classic_hispeed=pcdata.d_classic_hispeed)
lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num)
lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right keyboard_kind=lm_settings.keyboard_kind brightness=lm_settings.brightness)
slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]}
light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]}
concentration(__type="bool") #{lm_settings.concentration}
spdp_rival(flg="-1")
bind_eaappli
ea_premium_course
secret
flg1(__type="s64" __count="3") -1 -1 -1
flg2(__type="s64" __count="3") -1 -1 -1
flg3(__type="s64" __count="3") -1 -1 -1
flg4(__type="s64" __count="3") -1 -1 -1
leggendaria
flg1(__type="s64" __count="3") -1 -1 -1
music_memo
- for (let m of mArray)
folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name)
music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]}
music_filter
- for (let f of fArray)
folder(play_style=f.play_style folder_id=f.folder_id filter_id=f.filter_id value0=f.value0 value1=f.value1)
is_valid(__type="bool") #{f.is_valid}
qpro_secret
head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]}
hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]}
face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]}
body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]}
hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]}
back(__type="s64" __count="7") #{custom.qpro_secret_back[0]} #{custom.qpro_secret_back[1]} #{custom.qpro_secret_back[2]} #{custom.qpro_secret_back[3]} #{custom.qpro_secret_back[4]} #{custom.qpro_secret_back[5]} #{custom.qpro_secret_back[6]}
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
kiwami_data
- for (let ed of eArray)
detail(grade_type=ed.grade_type grade_id=ed.grade_id option=ed.option stage_num=ed.stage_num clear_type=ed.clear_type)
past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]}
selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]}
max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]}
max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]}
skin(__type="s32" __count="20") #{appendsettings} #{custom.note_burst} #{custom.bomb_size} #{custom.turntable} #{custom.judge_font} #{custom.note_skin} #{custom.note_size} #{Number(custom.disable_musicpreview)} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.menu_music} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} #{custom.lane_cover} #{custom.pacemaker_cover} #{custom.lift_cover} #{custom.note_beam} #{custom.note_beam_size} #{custom.full_combo_splash} #{custom.frame}
tdjskin(__type="s16" __count="4") #{lm_custom.premium_skin} #{lm_custom.premium_bg} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)
rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pcdata[0] dg=rd.pcdata[1] sa=rd.pcdata[2] da=rd.pcdata[3])
is_robo(__type="bool") 0
qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1] back=rd.qprodata[5])
shop(name=shop_data.opname)
notes_radar(style="0")
radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]}
notes_radar(style="1")
radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]}
visitor(anum="10" snum="10" pnum="10" vs_flg="1")
step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress total_point=pcdata.st_total_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_fluctuation=pcdata.st_sp_fluctuation dp_fluctuation=pcdata.st_dp_fluctuation mission_clear_num=pcdata.st_mission_clear_num sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list)
is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket}
packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1")
achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum)
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
old_linkage_secret_flg(bemani_mixup="-1" ccj_linkage="-1" triple_tribe="-1")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20")
achieve_data(play_style="0" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0")
achieve_data(play_style="1" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0")
cube_data(cube="0" season_id="0")
chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4")
is_chat_0(__type="bool") 1
is_chat_1(__type="bool") 1
is_chat_2(__type="bool") 1
is_chat_3(__type="bool") 1
skin_customize_flg(skin_frame_flg="-1" skin_turntable_flg="-1" skin_bomb_flg="-1" skin_bgm_flg="-1" skin_lane_flg0="-1" skin_lane_flg1="-1" skin_lane_flg2="-1" skin_lane_flg3="-1" skin_lane_flg4="-1" skin_lane_flg5="-1" skin_notes_flg="-1" skin_fullcombo_flg="-1" skin_keybeam_flg="-1" skin_judgestring_flg="-1")
tdjskin_customize_flg(skin_submonitor_flg="-1" skin_subbg_flg="-1")
event_1(event_play_num=pcdata.event_play_num last_select_map_id=pcdata.event_last_select_id)
if pcdata.event_skip == true
is_skip
- for (let evt of evtArray)
map_data(map_id=evt.map_id play_num=evt.play_num play_num_uc=evt.play_num_uc last_select_pos=evt.last_select_pos map_prog=evt.map_prog gauge=evt.gauge tile_num=evt.tile_num metron_total_get=evt.metron_total_get metron_total_use=evt.metron_total_use bank_date=evt.bank_date grade_bonus=evt.grade_bonus end_bonus=evt.end_bonus carryover_use=evt.carryover_use)
- for (let evt2 of evtArray2)
building_data(map_id=evt2.map_id pos=evt2.pos building=evt2.building use_tile=evt2.use_tile)
- for (let evt3 of evtArray3)
shop_data(map_id=evt3.map_id reward_id=evt3.reward_id prog=evt3.prog)
if epo_res != null
event_2(event_play_num=epo_res.event_play_num after_play_num=epo_res.after_play_num last_select_system_id=epo_res.last_select_system_id gate_key=epo_res.gate_key after_gauge=epo_res.after_gauge last_select_erosion_level=epo_res.last_select_erosion_level pack="-1" erosion_play_num="10" erosion5_clear12_num="10")
- for (let data of epo_res_sub)
system_data(system_id=data.system_id play_num=data.play_num unlock_prog=data.unlock_prog system_prog=data.system_prog gauge=data.gauge)
ultimate_mobile_link(music_list="-1")
link_flag
valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1")
ccj_linkage(music_list="-1")
triple_tribe_2(music_list="-1")
language_setting(language=profile.language)
movie_agreement(agreement_version="1")
movie_setting
hide_name(__type="bool") 0
world_tourism
- for (let wd of wArray)
tour_data(tour_id=wd.tour_id progress=wd.progress)
world_tourism_secret_flg
flg1(__type="s64" __count="3") -1 -1 -1
flg2(__type="s64" __count="3") -1 -1 -1
world_tourism_setting
booster(__type="bool") 1
bpl_s4_music_unlock
badge
- for (let b of bArray)
badge_data(category_id=b.id badge_flg_id=b.flg_id badge_flg=b.flg)

View File

@ -13,7 +13,7 @@ pc(status="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{Number(custom.disable_musicpreview)} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)

View File

@ -106,7 +106,7 @@ export function HextoBase64(hex: string) {
let i = 0;
for (let i = 0; i < hex.length; i += 2) {
const hexByte = hex.substr(i, 2);
const hexByte = hex.slice(i, i + 2);
const byteValue = parseInt(hexByte, 16);
buffer.push(byteValue);
}
@ -144,7 +144,7 @@ export function NumArrayToString(bits: number[], numArray: number[]): string {
let result = "";
let numIdx = 0;
if (numArray != null && !_.isNaN(numArray[0])) {
if (!_.isNil(numArray) && !_.isNaN(numArray[0])) {
let numArrayIdx = 0;
if (numArray.length > 0) {
let combined = 0;
@ -181,7 +181,7 @@ export function NumArrayToString(bits: number[], numArray: number[]): string {
export function GetVersion(info: EamuseInfo) {
let version = -1;
switch (info.model.substring(0, 3)) {
switch (info.model.slice(0, 3)) {
case "GLD": return 14;
case "HDD": return 15;
case "I00": return 16;
@ -189,7 +189,7 @@ export function GetVersion(info: EamuseInfo) {
case "JDZ": return 18;
case "KDZ": return 19;
case "LDJ":
version = parseInt(info.module.substring(4, 6));
version = parseInt(info.module.slice(4, 6));
if (_.isNaN(version)) version = 20;
break;
}
@ -305,17 +305,30 @@ export async function ReftoQPRO(refid: string, version: number) {
});
let qpro_data = [];
try {
qpro_data = [
custom.qpro_hair,
custom.qpro_head,
custom.qpro_face,
custom.qpro_body,
custom.qpro_hand,
];
switch (version) {
case 31:
qpro_data = [
custom.qpro_hair,
custom.qpro_head,
custom.qpro_face,
custom.qpro_body,
custom.qpro_hand,
custom.qpro_back,
];
break;
default:
qpro_data = [
custom.qpro_hair,
custom.qpro_head,
custom.qpro_face,
custom.qpro_body,
custom.qpro_hand,
];
break;
}
} catch {
qpro_data = [0, 0, 0, 0, 0];
qpro_data = [0, 0, 0, 0, 0, 0];
}
return qpro_data;

View File

@ -0,0 +1,31 @@
$("#version").on("change", function () {
$.ajax({
type: "post",
url: "/emit/iidxGetProfile",
data: {
refid: refid,
version: this.value,
},
dataType: "text",
success: function (result) {
let data = JSON.parse(result);
if (data["pcdata"] == null) {
alert("Theres no profile data available on this version!");
return;
}
let sp_grade = data["pcdata"].sgid;
let dp_grade = data["pcdata"].dgid;
if (sp_grade == -1) sp_grade = "----";
if (dp_grade == -1) dp_grade = "----";
$("#sp_grade").text(sp_grade);
$("#dp_grade").text(dp_grade);
},
error: function () {
alert("Unable to process data");
}
});
});

View File

@ -0,0 +1,80 @@
$("#version").on("change", function () {
$.ajax({
type: "post",
url: "/emit/iidxGetSetting",
data: {
refid: refid,
version: this.value,
},
dataType: "text",
success: function (result) {
let data = JSON.parse(result);
if (data["custom"] == null) {
alert("Theres no customize data available on this version!");
return;
}
$("#frame").val(data["custom"].frame);
$("#turntable").val(data["custom"].turntable);
$("#note_burst").val(data["custom"].note_burst);
$("#menu_music").val(data["custom"].menu_music);
$("#lane_cover").val(data["custom"].lane_cover);
$("#category_vox").val(data["custom"].category_vox);
$("#note_skin").val(data["custom"].note_skin);
$("#full_combo_splash").val(data["custom"].full_combo_splash);
$("#note_beam").val(data["custom"].note_beam);
$("#judge_font").val(data["custom"].judge_font);
$("#disable_musicpreview").prop("checked", data["custom"].disable_musicpreview);
$("#pacemaker_cover").val(data["custom"].pacemaker_cover);
$("#vefx_lock").prop("checked", data["custom"].vefx_lock);
$("#effect").val(data["custom"].effect);
$("#bomb_size").val(data["custom"].bomb_size);
$("#disable_hcn_color").prop("checked", data["custom"].disable_hcn_color);
$("#first_note_preview").val(data["custom"].first_note_preview);
if (data["custom"].note_size == undefined) $("#note_size").val(0);
else $("#note_size").val(data["custom"].note_size);
if (data["custom"].lift_cover == undefined) $("#lift_cover").val(0);
else $("#lift_cover").val(data["custom"].lift_cover);
if (data["custom"].note_beam_size == undefined) $("#note_beam_size").val(0);
else $("#note_beam_size").val(data["custom"].note_beam_size);
$("#rank_folder").prop("checked", data["custom"].rank_folder);
$("#clear_folder").prop("checked", data["custom"].clear_folder);
$("#diff_folder").prop("checked", data["custom"].diff_folder);
$("#alpha_folder").prop("checked", data["custom"].alpha_folder);
$("#rival_folder").prop("checked", data["custom"].rival_folder);
$("#rival_battle_folder").prop("checked", data["custom"].rival_battle_folder);
$("#rival_info").prop("checked", data["custom"].rival_info);
$("#hide_playcount").prop("checked", data["custom"].hide_playcount);
$("#disable_graph_cutin").prop("checked", data["custom"].disable_graph_cutin);
$("#class_hispeed").prop("checked", data["custom"].class_hispeed);
$("#rival_played_folder").prop("checked", data["custom"].rival_played_folder);
$("#hide_iidxid").prop("checked", data["custom"].hide_iidxid);
if (data["custom"].disable_beginner_option == undefined) $("#disable_beginner_option").prop("checked", false);
else $("#disable_beginner_option").prop("checked", data["custom"].disable_beginner_option);
$("#qpro_head").val(data["custom"].qpro_head);
$("#qpro_hair").val(data["custom"].qpro_hair);
$("#qpro_hand").val(data["custom"].qpro_hand);
$("#qpro_face").val(data["custom"].qpro_face);
$("#qpro_body").val(data["custom"].qpro_body);
if (data["custom"].qpro_back == undefined) $("#qpro_back").val(0);
else $("#qpro_back").val(data["custom"].qpro_back);
if (data["lm_custom"] == null) {
$("#lm_skin").val(0);
$("#lm_bg").val(0);
} else {
$("#lm_skin").val(data["lm_custom"].premium_skin);
$("#lm_bg").val(data["lm_custom"].premium_bg);
}
},
error: function () {
alert("Unable to process data");
}
});
});

View File

@ -20,7 +20,8 @@
27,
28,
29,
30
30,
31
];
div
@ -36,30 +37,31 @@ div
.ver-select
.control
.select
select(name="version")
select(id="version")
each i in version
option(selected=(i==pcdata.version)) #{i}
.field
label.label Name
.body
body #{profile.name}
p(id="name") #{profile.name}
.field
label.label IIDX ID
.body
body #{profile.idstr}
p(id="iidxid") #{profile.idstr}
.field
label.label SP Grade
.body
- const a = pcdata.sgid
if a==-1
body ----
p(id="sp_grade") ----
else
body #{pcdata.sgid}
p(id="sp_grade") #{pcdata.sgid}
.field
label.label DP Grade
.body
- const b = pcdata.dgid
if b==-1
body ----
p(id="dp_grade") ----
else
body #{pcdata.dgid}
p(id="dp_grade") #{pcdata.dgid}
script(src="static/asset/js/detail.js")

View File

@ -2,6 +2,7 @@
profile: DB.FindOne(refid, { collection: "profile" })
pcdata: DB.FindOne(refid, { collection: "pcdata" })
custom: DB.FindOne(refid, { collection: "custom" })
lm_custom: DB.FindOne(refid, { collection: "lightning_custom" })
-
const version = [
@ -21,7 +22,8 @@
27,
28,
29,
30
30,
31
];
div
@ -32,7 +34,7 @@ div
i.mdi.mdi-account-edit
| Settings
.card-content
form(method="post" action="/emit/updateIIDXCustom")
form(method="post" action="/emit/iidxUpdateCustom")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label IIDX ID
@ -42,161 +44,197 @@ div
label.label Version
.control
.select
select(name="version")
select(name="version", id="version")
each i in version
option(selected=(i==pcdata.version)) #{i}
.field
label.label Name
.control
input.input(type="text" name="name", value=profile.name)
input.input(type="text" name="name", id="name", value=profile.name)
//- SKIN
.field
label.label Frame
.control
input.input(type="number" name="frame", value=custom.frame)
input.input(type="number" name="frame", id="frame", value=custom.frame)
.field
label.label Turntable
.control
input.input(type="number" name="turntable", value=custom.turntable)
input.input(type="number" name="turntable", id="turntable", value=custom.turntable)
.field
label.label Note Burst
.control
input.input(type="number" name="note_burst", value=custom.note_burst)
input.input(type="number" name="note_burst", id="note_burst", value=custom.note_burst)
.field
label.label Menu Music
.control
input.input(type="number" name="menu_music", value=custom.menu_music)
input.input(type="number" name="menu_music", id="menu_music", value=custom.menu_music)
.field
label.label Lane Cover
.control
input.input(type="number" name="lane_cover", value=custom.lane_cover)
input.input(type="number" name="lane_cover", id="lane_cover", value=custom.lane_cover)
.field
label.label Category Voice
.control
input.input(type="number" name="category_vox", value=custom.category_vox)
input.input(type="number" name="category_vox", id="category_vox", value=custom.category_vox)
.field
label.label Note Skin
.control
input.input(type="number" name="note_skin", value=custom.note_skin)
input.input(type="number" name="note_skin", id="note_skin", value=custom.note_skin)
.field
label.label Full Combo Splash
.control
input.input(type="number" name="full_combo_splash", value=custom.full_combo_splash)
input.input(type="number" name="full_combo_splash", id="full_combo_splash", value=custom.full_combo_splash)
.field
label.label Note Beam
.control
input.input(type="number" name="note_beam", value=custom.note_beam)
input.input(type="number" name="note_beam", id="note_beam", value=custom.note_beam)
.field
label.label Judgement Font
.control
input.input(type="number" name="judge_font", value=custom.judge_font)
input.input(type="number" name="judge_font", id="judge_font", value=custom.judge_font)
.field
label.label Disable Music Preview
.control
input(type="checkbox" name="disable_musicpreview", checked=Boolean(custom.disable_musicpreview))
input(type="checkbox" name="disable_musicpreview", id="disable_musicpreview", checked=Boolean(custom.disable_musicpreview))
.field
label.label Pacemaker Cover
.control
input.input(type="number" name="pacemaker_cover", value=custom.pacemaker_cover)
input.input(type="number" name="pacemaker_cover", id="pacemaker_cover", value=custom.pacemaker_cover)
.field
label.label VEFX Lock
.control
input(type="checkbox" name="vefx_lock", checked=Boolean(custom.vefx_lock))
input(type="checkbox" name="vefx_lock", id="vefx_lock", checked=Boolean(custom.vefx_lock))
.field
label.label VEFX Lock (Effector)
.control
input.input(type="number" name="effect", value=custom.effect)
input.input(type="number" name="effect", id="effect", value=custom.effect)
.field
label.label Note Burst Size
.control
input.input(type="number" name="bomb_size", value=custom.bomb_size)
input.input(type="number" name="bomb_size", id="bomb_size", value=custom.bomb_size)
.field
label.label Disable HCN Color
.control
input(type="checkbox" name="disable_hcn_color", checked=Boolean(custom.disable_hcn_color))
input(type="checkbox" name="disable_hcn_color", id="disable_hcn_color", checked=Boolean(custom.disable_hcn_color))
.field
label.label First Note Preview
.control
input.input(type="number" name="first_note_preview", value=custom.first_note_preview)
input.input(type="number" name="first_note_preview", id="first_note_preview", value=custom.first_note_preview)
.field
label.label Note Size
.control
if custom.note_size === undefined
input.input(type="number" name="note_size", id="note_size", value="0")
else
input.input(type="number" name="note_size", id="note_size", value=custom.note_size)
.field
label.label Lift Cover
.control
if custom.lift_cover === undefined
input.input(type="number" name="lift_cover", id="lift_cover", value="0")
else
input.input(type="number" name="lift_cover", id="lift_cover", value=custom.lift_cover)
.field
label.label Note Beam Size
.control
if custom.note_beam_size === undefined
input.input(type="number" name="note_beam_size", id="note_beam_size", value="0")
else
input.input(type="number" name="note_beam_size", id="note_beam_size", value=custom.note_beam_size)
//- APPEND SETTINGS
.field
label.label Rank Folder
.control
input(type="checkbox" name="rank_folder", checked=Boolean(custom.rank_folder))
input(type="checkbox" name="rank_folder", id="rank_folder", checked=Boolean(custom.rank_folder))
.field
label.label Clear State Folder
.control
input(type="checkbox" name="clear_folder", checked=Boolean(custom.clear_folder))
input(type="checkbox" name="clear_folder", id="clear_folder", checked=Boolean(custom.clear_folder))
.field
label.label Difficulty Folder
.control
input(type="checkbox" name="diff_folder", checked=Boolean(custom.diff_folder))
input(type="checkbox" name="diff_folder", id="diff_folder", checked=Boolean(custom.diff_folder))
.field
label.label Alphabet Folder
.control
input(type="checkbox" name="alpha_folder", checked=Boolean(custom.alpha_folder))
input(type="checkbox" name="alpha_folder", id="alpha_folder", checked=Boolean(custom.alpha_folder))
.field
label.label Rival Folder
.control
input(type="checkbox" name="rival_folder", checked=Boolean(custom.rival_folder))
input(type="checkbox" name="rival_folder", id="rival_folder", checked=Boolean(custom.rival_folder))
.field
label.label Rival WIN/LOSE Folder
.control
input(type="checkbox" name="rival_battle_folder", checked=Boolean(custom.rival_battle_folder))
input(type="checkbox" name="rival_battle_folder", id="rival_battle_folder", checked=Boolean(custom.rival_battle_folder))
.field
label.label Rival Info / Venue Top Display
.control
input(type="checkbox" name="rival_info", checked=Boolean(custom.rival_info))
input(type="checkbox" name="rival_info", id="rival_info", checked=Boolean(custom.rival_info))
.field
label.label Hide Playcount
.control
input(type="checkbox" name="hide_playcount", checked=Boolean(custom.hide_playcount))
input(type="checkbox" name="hide_playcount", id="hide_playcount", checked=Boolean(custom.hide_playcount))
.field
label.label Disable Pacemaker Cut-In
.control
input(type="checkbox" name="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin))
input(type="checkbox" name="disable_graph_cutin", id="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin))
.field
label.label Classic Hi-SPEED
.control
input(type="checkbox" name="class_hispeed", checked=Boolean(custom.class_hispeed))
input(type="checkbox" name="class_hispeed", id="class_hispeed", checked=Boolean(custom.class_hispeed))
.field
label.label Rival Played Folder
.control
input(type="checkbox" name="rival_played_folder", checked=Boolean(custom.rival_played_folder))
input(type="checkbox" name="rival_played_folder", id="rival_played_folder", checked=Boolean(custom.rival_played_folder))
.field
label.label Hide IIDX ID
.control
input(type="checkbox" name="hide_iidxid", checked=Boolean(custom.hide_iidxid))
input(type="checkbox" name="hide_iidxid", id="hide_iidxid", checked=Boolean(custom.hide_iidxid))
.field
label.label Disable Beginner Option
.control
if custom.disable_beginner_option === undefined
input(type="checkbox" name="disable_beginner_option", checked=Boolean(false))
input(type="checkbox" name="disable_beginner_option", id="disable_beginner_option", checked=Boolean(false))
else
input(type="checkbox" name="disable_beginner_option", checked=Boolean(custom.disable_beginner_option))
input(type="checkbox" name="disable_beginner_option", id="disable_beginner_option", checked=Boolean(custom.disable_beginner_option))
//- QPRO
.field
label.label QPRO Head
.control
input.input(type="number" name="qpro_head", value=custom.qpro_head)
input.input(type="number" name="qpro_head", id="qpro_head", value=custom.qpro_head)
.field
label.label QPRO Hair
.control
input.input(type="number" name="qpro_hair", value=custom.qpro_hair)
input.input(type="number" name="qpro_hair", id="qpro_hair", value=custom.qpro_hair)
.field
label.label QPRO Hand
.control
input.input(type="number" name="qpro_hand", value=custom.qpro_hand)
input.input(type="number" name="qpro_hand", id="qpro_hand", value=custom.qpro_hand)
.field
label.label QPRO Face
.control
input.input(type="number" name="qpro_face", value=custom.qpro_face)
input.input(type="number" name="qpro_face", id="qpro_face", value=custom.qpro_face)
.field
label.label QPRO Body
.control
input.input(type="number" name="qpro_body", value=custom.qpro_body)
input.input(type="number" name="qpro_body", id="qpro_body", value=custom.qpro_body)
.field
label.label QPRO Back
.control
if custom.qpro_back === undefined
input.input(type="number" name="qpro_back", id="qpro_back", value="0")
else
input.input(type="number" name="qpro_back", id="qpro_back", value=custom.qpro_back)
//- LIGHTNING CUSTOM
if lm_custom != null
.field
label.label Premium Area Skin
input.input(type="number" name="lm_skin", id="lm_skin", value=lm_custom.premium_skin)
label.label Premium Area Background
input.input(type="number" name="lm_bg", id="lm_bg", value=lm_custom.premium_bg)
.field
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Submit
script(src="static/asset/js/setting.js")

View File

@ -23,7 +23,7 @@ div
i.mdi.mdi-account-edit
| Rivals
.card-content
form(method="post" action="/emit/updateIIDXRival")
form(method="post" action="/emit/iidxUpdateRival")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label SP Rivals

View File

@ -8,7 +8,7 @@ div
.card-content
.field
label.label [!] This will overwrite exsiting scores
form(method="post" action="/emit/importScoreData")
form(method="post" action="/emit/iidxImportScoreData")
.field
input(type="text" name="refid", value=refid readonly hidden)
input.input(type="text" name="data" placeholder="Paste score JSON data")
@ -18,7 +18,7 @@ div
i.mdi.mdi-check
span Score Import
.field
form(method="post" action="/emit/exportScoreData")
form(method="post" action="/emit/iidxExportScoreData")
.field
input(type="text" name="refid", value=refid readonly hidden)
button.button.is-primary(type="submit")