IIDX: Added error message for incompatible score database

IIDX: Fixed where unable to login after step up (rootage)
IIDX: Reverted `v0.1.15` dev mode hackjob codes
IIDX: Line Encoding changes, misc
This commit is contained in:
duel0213 2025-03-21 21:04:13 +09:00
parent 11cbbb9e7a
commit 8bbe8390eb
18 changed files with 1386 additions and 1376 deletions

View File

@ -142,8 +142,8 @@ Changelogs
- Added Experimental Badge saving support
- 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 intended due to malformed ghost data on music.appoint response (~ DJ TROOPERS)
- 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 data doesn't get saved in WebUI
@ -154,7 +154,13 @@ Changelogs
- Fixed where lightning settings doesn't get saved on logout
- Fixed where Disable Music Preview, Disable HCN Color, VEFX Lock settings doesn't reflect
- Fixed where MISS COUNT has 0 as default (including score import)
- Fixed where unable to import DP scores
- Fixed where MISS COUNT doesn't get updated when exscore is same
- Fixed where lightning model settings saved incorrectly
- Fixed where unable to import score if user has DP scores
- Fixed where unable to achieve dan if you failed once
- Fixed where unable to login (tricoro, CastHour, Rootage)
- Fixed where unable to specify rival in WebUI
- Fixed where music.arenaCPU isn't working as intended due to change of type (EPOLIS ~)
- Added error message for invalid score database entries
- Reverted `v0.1.15` dev mode related code changes (now requires proper dev setup, refer parent README.md)
- WebUI is now display values of corresponding version

View File

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

View File

@ -1,60 +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 }
}
}
{
"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

@ -17,7 +17,7 @@ export const gssysteminfo: EPR = async (info, data, send) => {
}
// 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"));
let music_open = JSON.parse(await IO.ReadFile("data/music_open.json", "utf-8"));
if (!_.isNil(music_open[version])) {
result = {
...result,
@ -36,41 +36,45 @@ export const gssysteminfo: EPR = async (info, data, send) => {
});
}
if (version >= 31) {
result.arena_schedule = {
...result.arena_schedule,
rule_type: K.ITEM("u8", 0),
}
switch (version) {
case 31:
result.arena_schedule = {
...result.arena_schedule,
rule_type: K.ITEM("u8", 0), // arena rule for online //
}
result = {
...result,
grade_course: [],
}
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),
// following datas are made up needs to figure out correct way to do it //
let grade = JSON.parse(await IO.ReadFile("data/grade.json", "utf-8"));
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", grade[version][s][c].kind),
});
});
});
});
}
}
default:
break;
}
// arena_music_difficult //

View File

@ -1,4 +1,4 @@
import { IDtoRef, Base64toNumArray, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid, HextoBase64, NumArraytoBase64, NumArraytoHex } from "../util";
import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid } from "../util";
import { score, score_top } from "../models/score";
import { profile } from "../models/profile";
import { shop_data } from "../models/shop";
@ -7,8 +7,8 @@ import { badge } from "../models/badge";
export const musicgetrank: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const cltype = parseInt($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const refid = await IDtoRef(Number($(data).attr().iidxid));
const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const music_data: any = (
await DB.Find(refid, {
collection: "score",
@ -16,11 +16,11 @@ export const musicgetrank: EPR = async (info, data, send) => {
);
const rival_refids = [
[parseInt($(data).attr().iidxid0), await IDtoRef(parseInt($(data).attr().iidxid0))],
[parseInt($(data).attr().iidxid1), await IDtoRef(parseInt($(data).attr().iidxid1))],
[parseInt($(data).attr().iidxid2), await IDtoRef(parseInt($(data).attr().iidxid2))],
[parseInt($(data).attr().iidxid3), await IDtoRef(parseInt($(data).attr().iidxid3))],
[parseInt($(data).attr().iidxid4), await IDtoRef(parseInt($(data).attr().iidxid4))],
[Number($(data).attr().iidxid0), await IDtoRef(Number($(data).attr().iidxid0))],
[Number($(data).attr().iidxid1), await IDtoRef(Number($(data).attr().iidxid1))],
[Number($(data).attr().iidxid2), await IDtoRef(Number($(data).attr().iidxid2))],
[Number($(data).attr().iidxid3), await IDtoRef(Number($(data).attr().iidxid3))],
[Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))],
];
let m = [], top = [], b = [], t = [];
@ -32,6 +32,8 @@ export const musicgetrank: EPR = async (info, data, send) => {
};
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database");
temp_mid = NewMidToOldMid(res.mid);
let verMid = OldMidToVerMid(temp_mid);
@ -45,7 +47,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
K.ITEM("str", NumArrayToString(
[7, 4, 13, 3, 3],
[verMid[1], a, res.esArray[indices[a]], rank_id, res.cArray[indices[a]]] // 4th element is rid (rank_id) //
), { v: String(verMid[0]) } )
), { v: String(verMid[0]) })
);
}
@ -79,6 +81,8 @@ export const musicgetrank: EPR = async (info, data, send) => {
else if (version < 20) {
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database");
temp_mid = NewMidToOldMid(res.mid);
let mVersion = Math.floor(temp_mid / 100);
if (mVersion > version) return;
@ -124,6 +128,8 @@ export const musicgetrank: EPR = async (info, data, send) => {
else indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database");
let mVersion = Math.floor(res.mid / 1000);
if (mVersion > version) return;
@ -190,7 +196,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
}
return send.object({
style: K.ATTR({type: String(cltype)}),
style: K.ATTR({ type: String(cltype) }),
m,
b,
top,
@ -209,19 +215,19 @@ export const musicgetrank: EPR = async (info, data, send) => {
export const musicgetralive: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const cltype = parseInt($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const refid = await IDtoRef(Number($(data).attr().iidxid));
const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const music_data: any = (
await DB.Find(refid, {
collection: "score",
})
);
const rival_refids = [
[parseInt($(data).attr().iidxid0), await IDtoRef(parseInt($(data).attr().iidxid0))],
[parseInt($(data).attr().iidxid1), await IDtoRef(parseInt($(data).attr().iidxid1))],
[parseInt($(data).attr().iidxid2), await IDtoRef(parseInt($(data).attr().iidxid2))],
[parseInt($(data).attr().iidxid3), await IDtoRef(parseInt($(data).attr().iidxid3))],
[parseInt($(data).attr().iidxid4), await IDtoRef(parseInt($(data).attr().iidxid4))],
[Number($(data).attr().iidxid0), await IDtoRef(Number($(data).attr().iidxid0))],
[Number($(data).attr().iidxid1), await IDtoRef(Number($(data).attr().iidxid1))],
[Number($(data).attr().iidxid2), await IDtoRef(Number($(data).attr().iidxid2))],
[Number($(data).attr().iidxid3), await IDtoRef(Number($(data).attr().iidxid3))],
[Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))],
];
let result = {
@ -232,6 +238,8 @@ export const musicgetralive: EPR = async (info, data, send) => {
let indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getralive] There is unsupported entry in Database");
myRecord[NewMidToOldMid(res.mid)] = [...res.esArray, ...res.cArray];
});
@ -287,12 +295,12 @@ export const musicappoint: EPR = async (info, data, send) => {
const version = GetVersion(info);
// clid, ctype, grd, iidxid, lv, mid, subtype //
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const ctype = parseInt($(data).attr().ctype);
const subtype = parseInt($(data).attr().subtype);
let mid = parseInt($(data).attr().mid);
let clid = parseInt($(data).attr().clid);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const ctype = Number($(data).attr().ctype);
const subtype = Number($(data).attr().subtype);
let mid = Number($(data).attr().mid);
let clid = Number($(data).attr().clid);
const mapping = [1, 2, 3, 6, 7, 8];
if (version < 20) {
mid = OldMidToNewMid(mid);
@ -320,8 +328,8 @@ export const musicappoint: EPR = async (info, data, send) => {
}
}
if (version < 16) mydata = K.ITEM("str", NumArraytoHex(Base64toNumArray(music_data[clid])));
else mydata = K.ITEM("bin", Base64toNumArray(music_data[clid]));
if (version < 16) mydata = K.ITEM("str", Buffer.from(music_data[clid], "base64").toString("hex").toUpperCase());
else mydata = K.ITEM("bin", Buffer.from(music_data[clid], "base64"));
}
/*** ctype
@ -357,7 +365,7 @@ export const musicappoint: EPR = async (info, data, send) => {
if (_.isNaN(other_pcdata) || _.isNil(other_musicdata)) break;
if (version < 16) {
sdata = K.ITEM("str", NumArraytoHex(Base64toNumArray(other_musicdata[clid])), {
sdata = K.ITEM("str", Buffer.from(other_musicdata[clid], "base64").toString("hex").toUpperCase(), {
score: String(other_musicdata.esArray[clid]),
pid: String(other_profile[1]),
name: String(other_profile[0]),
@ -365,14 +373,14 @@ export const musicappoint: EPR = async (info, data, send) => {
});
}
else {
sdata = K.ITEM("bin", Base64toNumArray(other_musicdata[clid]), {
sdata = K.ITEM("bin", Buffer.from(other_musicdata[clid], "base64"), {
score: String(other_musicdata.esArray[clid]),
pid: String(other_profile[1]),
name: String(other_profile[0]),
riidxid: String(other_profile[2])
});
}
break;
default:
@ -383,8 +391,8 @@ export const musicappoint: EPR = async (info, data, send) => {
if (_.isNil(mydata) && _.isNil(sdata)) return send.success();
if (version >= 27) {
let my_gauge_data = null;
if (!_.isNil(music_data)) my_gauge_data = Base64toNumArray(music_data[clid + 10]);
let my_gauge_data = Buffer.alloc(0), other_gauge_data = Buffer.alloc(0);
if (!_.isNil(music_data[clid + 10])) my_gauge_data = Buffer.from(music_data[clid + 10], "base64");
if (!_.isNil(sdata)) {
if (_.isNil(other_musicdata.optArray)) { // migration //
@ -392,7 +400,7 @@ export const musicappoint: EPR = async (info, data, send) => {
other_musicdata.opt2Array = Array<number>(10).fill(0);
}
let other_data = K.ITEM("bin", Base64toNumArray(other_musicdata[clid]), {
let other_data = K.ITEM("bin", Buffer.from(other_musicdata[clid], "base64"), {
score: String(other_musicdata.esArray[clid]),
achieve: String(other_pcdata[ClidToPlaySide(clid) + 2]),
pid: String(other_profile[1]),
@ -402,9 +410,10 @@ export const musicappoint: EPR = async (info, data, send) => {
option2: String(other_musicdata.opt2Array[clid]),
});
if (!_.isNil(other_musicdata[clid + 10])) other_gauge_data = Buffer.from(other_musicdata[clid + 10], "base64");
sdata = {
...other_data,
gauge_data: K.ITEM("bin", Base64toNumArray(other_musicdata[clid + 10]))
gauge_data: K.ITEM("bin", other_gauge_data)
};
}
@ -436,7 +445,7 @@ export const musicappoint: EPR = async (info, data, send) => {
export const musicreg: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const refid = await IDtoRef(Number($(data).attr().iidxid));
const shop_data = await DB.FindOne<shop_data>({
collection: "shop_data",
@ -446,12 +455,12 @@ export const musicreg: EPR = async (info, data, send) => {
});
// wid, oppid, opname, opt, opt2, pside, nocnt, anum //
const pgnum = parseInt($(data).attr().pgnum);
const gnum = parseInt($(data).attr().gnum);
const mnum = parseInt($(data).attr().mnum);
const cflg = parseInt($(data).attr().cflg);
let mid = parseInt($(data).attr().mid);
let clid = parseInt($(data).attr().clid);
const pgnum = Number($(data).attr().pgnum);
const gnum = Number($(data).attr().gnum);
const mnum = Number($(data).attr().mnum);
const cflg = Number($(data).attr().cflg);
let mid = Number($(data).attr().mid);
let clid = Number($(data).attr().clid);
let exscore = (pgnum * 2 + gnum);
let ghost = null, ghost_gauge = null; // Heroic Verse //
let style = 0, option = 0, option_2 = 0, rid = -1;
@ -487,20 +496,20 @@ export const musicreg: EPR = async (info, data, send) => {
let opt2Array = Array<number>(10).fill(0); // USED OPTION (CastHour) //
let update = 0;
if (!_.isNil($(data).attr().rid)) rid = parseInt($(data).attr().rid);
else if (!_.isNil($(data).attr().dj_level)) rid = parseInt($(data).attr().dj_level);
if (!_.isNil($(data).attr().rid)) rid = Number($(data).attr().rid);
else if (!_.isNil($(data).attr().dj_level)) rid = Number($(data).attr().dj_level);
if (rid > -1) console.log(`[music.reg] rank_id : ${rid}`);
if (version == 14 || version == 15) ghost = HextoBase64($(data).str("ghost"));
else ghost = NumArraytoBase64($(data).buffer("ghost"));
if (version < 16) ghost = Buffer.from($(data).str("ghost"), "hex").toString("base64");
else ghost = $(data).buffer("ghost").toString("base64");
if (version >= 27) {
ghost_gauge = NumArraytoBase64($(data).buffer("ghost_gauge"));
style = parseInt($(data).element("music_play_log").attr().play_style);
ghost_gauge = $(data).buffer("ghost_gauge").toString("base64");
style = Number($(data).element("music_play_log").attr().play_style);
if (version >= 29) {
option = parseInt($(data).element("music_play_log").attr().option1);
option_2 = parseInt($(data).element("music_play_log").attr().option2);
option = Number($(data).element("music_play_log").attr().option1);
option_2 = Number($(data).element("music_play_log").attr().option2);
}
}
@ -635,11 +644,11 @@ export const musicreg: EPR = async (info, data, send) => {
collection: "badge",
version: version,
category_name: "djLevel",
flg_id: parseInt($(data).attr("badge").djLevel_badge_flg_id),
flg_id: Number($(data).attr("badge").djLevel_badge_flg_id),
},
{
$set: {
flg: parseInt($(data).attr("badge").djLevel_badge_flg),
flg: Number($(data).attr("badge").djLevel_badge_flg),
}
}
);
@ -652,11 +661,11 @@ export const musicreg: EPR = async (info, data, send) => {
collection: "badge",
version: version,
category_name: "clear",
flg_id: parseInt($(data).attr("badge").clear_badge_flg_id),
flg_id: Number($(data).attr("badge").clear_badge_flg_id),
},
{
$set: {
flg: parseInt($(data).attr("badge").clear_badge_flg),
flg: Number($(data).attr("badge").clear_badge_flg),
}
}
);
@ -673,7 +682,7 @@ export const musicreg: EPR = async (info, data, send) => {
},
{
$set: {
flg: parseInt($(data).attr("badge").rivalChallenge_badge_flg),
flg: Number($(data).attr("badge").rivalChallenge_badge_flg),
}
}
);
@ -791,11 +800,11 @@ export const musicbreg: EPR = async (info, data, send) => {
const version = GetVersion(info);
// mid pgnum gnum cflg //
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const pgnum = parseInt($(data).attr().pgnum);
const gnum = parseInt($(data).attr().gnum);
const cflg = parseInt($(data).attr().cflg);
let mid = parseInt($(data).attr().mid);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const pgnum = Number($(data).attr().pgnum);
const gnum = Number($(data).attr().gnum);
const cflg = Number($(data).attr().cflg);
let mid = Number($(data).attr().mid);
let clid = 0; // SP BEGINNER //
let exscore = (pgnum * 2 + gnum);
@ -879,7 +888,7 @@ export const musiccrate: EPR = async (info, data, send) => {
const scores = await DB.Find<score>(null, {
collection: "score",
});
const cltype = parseInt($(data).attr().cltype);
const cltype = Number($(data).attr().cltype);
let cFlgs: Record<number, number[]> = {},
fcFlgs: Record<number, number[]> = {},
@ -893,6 +902,8 @@ export const musiccrate: EPR = async (info, data, send) => {
let cFlgArray = Array<number>(10).fill(0);
let fcFlgArray = Array<number>(10).fill(0);
if (_.isNil(res.cArray)) throw new Error("[music.crate] There is unsupported entry in Database");
for (let a = 0; a < 10; a++) {
if (res.cArray[a] != 0) totalArray[a] += 1;
if (res.cArray[a] != 1) cFlgArray[a] += 1;
@ -924,10 +935,10 @@ export const musiccrate: EPR = async (info, data, send) => {
let indices = [1, 2, 3, 6, 7, 8];
if (version == 14 || version == 15) {
let verMid = OldMidToVerMid(parseInt(key));
let verMid = OldMidToVerMid(Number(key));
let str = cltype == 0 ?
`${NumArrayToString([7, 7, 7, 7], [verMid[1], cRate[1], cRate[2], cRate[3]])}ZZZZ`:
`${NumArrayToString([7, 7, 7, 7], [verMid[1], cRate[1], cRate[2], cRate[3]])}ZZZZ` :
`${NumArrayToString([7, 7, 7, 7], [verMid[1], cRate[6], cRate[7], cRate[8]])}ZZZZ`;
cdata.push(

View File

@ -1,7 +1,7 @@
import { pcdata, KDZ_pcdata, IIDX27_pcdata, IIDX28_pcdata, IIDX29_pcdata, IIDX30_pcdata, JDZ_pcdata, LDJ_pcdata, IIDX21_pcdata, IIDX22_pcdata, IIDX23_pcdata, IIDX24_pcdata, IIDX25_pcdata, IIDX26_pcdata, JDJ_pcdata, HDD_pcdata, I00_pcdata, GLD_pcdata, IIDX31_pcdata } from "../models/pcdata";
import { grade } from "../models/grade";
import { custom, default_custom } from "../models/custom";
import { IDtoCode, IDtoRef, Base64toNumArray, GetVersion, ReftoProfile, ReftoPcdata, ReftoQPRO, appendSettingConverter, NumArrayToString, NumArraytoHex, NumArraytoBase64 } from "../util";
import { IDtoCode, IDtoRef, GetVersion, ReftoProfile, ReftoPcdata, ReftoQPRO, appendSettingConverter, NumArrayToString } from "../util";
import { eisei_grade, eisei_grade_data, lightning_custom, lightning_musicfilter, lightning_musicmemo, lightning_musicmemo_new, lightning_playdata, lightning_settings, lm_customdata, lm_playdata, lm_settings, lm_settings_new, musicfilter_data, musicmemo_data, musicmemo_data_new } from "../models/lightning";
import { profile, default_profile } from "../models/profile";
import { rival, rival_data } from "../models/rival";
@ -121,7 +121,7 @@ export const pccommon: EPR = async (info, data, send) => {
result = {
...result,
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
pre_play: K.ATTR({ phase: String(U.GetConfig("pd_preplay")) }),
toho_remix: K.ATTR({ phase: String(U.GetConfig("pd_tohoremix")) }),
@ -144,7 +144,7 @@ export const pccommon: EPR = async (info, data, send) => {
result = {
...result,
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
boss: K.ATTR({ phase: String(U.GetConfig("cp_boss")) }),
event1_phase: K.ATTR({ phase: String(U.GetConfig("cp_event1")) }),
@ -167,7 +167,7 @@ export const pccommon: EPR = async (info, data, send) => {
result = {
...result,
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
boss: K.ATTR({ phase: String(U.GetConfig("sb_boss")) }),
extra_boss_event: K.ATTR({ phase: String(U.GetConfig("sb_extraboss")) }),
@ -184,7 +184,7 @@ export const pccommon: EPR = async (info, data, send) => {
result = {
...result,
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
boss: K.ATTR({ phase: String(U.GetConfig("cb_boss")) }),
event1_phase: K.ATTR({ phase: String(U.GetConfig("cb_event1")) }),
@ -200,7 +200,7 @@ export const pccommon: EPR = async (info, data, send) => {
result = {
...result,
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
boss: K.ATTR({ phase: String(U.GetConfig("rt_boss")) }),
extra_boss_event: K.ATTR({ phase: String(U.GetConfig("rt_extraboss")) }),
@ -221,7 +221,7 @@ export const pccommon: EPR = async (info, data, send) => {
...result,
movie_agreement: K.ATTR({ version: String(1) }),
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
boss: K.ATTR({ phase: String(U.GetConfig("hv_boss")) }),
vip_pass_black: {},
@ -244,7 +244,7 @@ export const pccommon: EPR = async (info, data, send) => {
...result,
movie_agreement: K.ATTR({ version: String(1) }),
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }),
boss: K.ATTR({ phase: String(U.GetConfig("bo_boss")) }),
@ -271,7 +271,7 @@ export const pccommon: EPR = async (info, data, send) => {
...result,
movie_agreement: K.ATTR({ version: String(1) }),
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }),
boss: K.ATTR({ phase: String(1) }), // TODO:: verify //
@ -299,7 +299,7 @@ export const pccommon: EPR = async (info, data, send) => {
...result,
movie_agreement: K.ATTR({ version: String(1) }),
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }),
vip_pass_black: {},
@ -321,7 +321,7 @@ export const pccommon: EPR = async (info, data, send) => {
...result,
movie_agreement: K.ATTR({ version: String(1) }),
license: {
string: K.ITEM("bin", [0x00]), // TODO:: figure out what this does (alloc size: 600) //
string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) //
},
movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }),
vip_pass_black: {},
@ -574,6 +574,12 @@ export const pcget: EPR = async (info, data, send) => {
pcdata.dr_dppoint = IIDX29_pcdata.dr_dppoint;
}
// temporary solution until figure out why this happening on others //
if (_.isNil(pcdata.orb)) {
pcdata.orb = 0;
pcdata.present_orb = 0;
}
const appendsettings = appendSettingConverter(
custom.rank_folder,
custom.clear_folder,
@ -589,7 +595,7 @@ export const pcget: EPR = async (info, data, send) => {
custom.hide_iidxid,
custom.disable_beginner_option,
);
let dArray = [], eArray = [], rArray = [], mArray = [], bArray = [], fArray = [];
let dArray = [], eArray = [], rArray = [], mArray = [], bArray = [], fArray = [], fsArray = [];
grade.forEach((res: grade) => {
dArray.push([res.style, res.gradeId, res.maxStage, res.archive]);
@ -753,9 +759,9 @@ export const pcget: EPR = async (info, data, send) => {
event = await DB.FindOne(refid, { collection: "event_1", version: version });
if (!_.isNil(event)) {
event.cf = NumArraytoHex(Base64toNumArray(event.cf));
event.pf = NumArraytoHex(Base64toNumArray(event.pf));
event.mf = NumArraytoHex(Base64toNumArray(event.mf));
event.cf = Buffer.from(event.cf, "base64").toString("hex");
event.pf = Buffer.from(event.pf, "base64").toString("hex");
event.mf = Buffer.from(event.mf, "base64").toString("hex");
}
return send.pugFile("pug/JDZ/pcget.pug", {
@ -772,9 +778,9 @@ export const pcget: EPR = async (info, data, send) => {
event = await DB.FindOne(refid, { collection: "event_1", version: version });
if (!_.isNil(event)) {
event.cf = NumArraytoHex(Base64toNumArray(event.cf));
event.qcf = NumArraytoHex(Base64toNumArray(event.qcf));
event.piece = NumArraytoHex(Base64toNumArray(event.piece));
event.cf = Buffer.from(event.cf, "base64").toString("hex");
event.qcf = Buffer.from(event.qcf, "base64").toString("hex");
event.piece = Buffer.from(event.piece, "base64").toString("hex");
}
return send.pugFile("pug/KDZ/pcget.pug", {
@ -788,8 +794,8 @@ export const pcget: EPR = async (info, data, send) => {
});
}
else if (version == 20) {
pcdata.st_stamp = _.isNil(pcdata.st_stamp) ? "00" : NumArraytoHex(Base64toNumArray(pcdata.st_stamp));
pcdata.st_help = _.isNil(pcdata.st_help) ? "00" : NumArraytoHex(Base64toNumArray(pcdata.st_help));
pcdata.st_stamp = _.isNil(pcdata.st_stamp) ? "00" : Buffer.from(pcdata.st_stamp, "base64").toString("hex");
pcdata.st_help = _.isNil(pcdata.st_help) ? "00" : Buffer.from(pcdata.st_help, "base64").toString("hex");
let link5 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "link5" });
let tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "tricolettepark" });
@ -797,7 +803,7 @@ export const pcget: EPR = async (info, data, send) => {
let blueboss = await DB.FindOne<blueboss>(refid, { collection: "event_1", version: version, event_name: "blueboss" });
let yellowboss = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "yellowboss" });
if (!_.isNil(blueboss)) blueboss.durability = NumArraytoHex(Base64toNumArray(blueboss.durability));
if (!_.isNil(blueboss)) blueboss.durability = Buffer.from(blueboss.durability, "base64").toString("hex");
return send.pugFile("pug/LDJ/pcget.pug", {
profile,
@ -835,6 +841,7 @@ export const pcget: EPR = async (info, data, send) => {
mirage_lib_sub = [],
delabity_lab = null,
delabity_lab_sub = [],
anniv20 = null,
epo_res = null,
epo_res_sub = [],
event_1 = null,
@ -843,16 +850,16 @@ export const pcget: EPR = async (info, data, send) => {
switch (version) {
case 21:
pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : NumArraytoHex(Base64toNumArray(pcdata.st_album));
pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : Buffer.from(pcdata.st_album, "base64").toString("hex");
link5 = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "link5" });
tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "tricolettepark" });
boss1 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss1" });
if (!_.isNil(boss1)) boss1.durability = NumArraytoHex(Base64toNumArray(boss1.durability));
if (!_.isNil(boss1)) boss1.durability = Buffer.from(boss1.durability, "base64").toString("hex");
break;
case 22:
pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : NumArraytoHex(Base64toNumArray(pcdata.st_album));
pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : Buffer.from(pcdata.st_album, "base64").toString("hex");
chrono_diver = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "chrono_diver" });
pendual_talis = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss_event_3" });
@ -864,7 +871,7 @@ export const pcget: EPR = async (info, data, send) => {
qpronicle_phase3 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "qpronicle_phase3" });
break;
case 23:
pcdata.st_tokimeki = _.isNil(pcdata.st_tokimeki) ? "00" : NumArraytoHex(Base64toNumArray(pcdata.st_tokimeki));
pcdata.st_tokimeki = _.isNil(pcdata.st_tokimeki) ? "00" : Buffer.from(pcdata.st_tokimeki, "base64").toString("hex");
open_tokotoko = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" });
mystery_line = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" });
@ -875,16 +882,16 @@ export const pcget: EPR = async (info, data, send) => {
siege_sinobuz_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event1_data" });
siege_sinobuz_sub.forEach((res) => {
res.is_clear = Number(res.is_clear);
res.ninjyutsu = NumArraytoHex(Base64toNumArray(res.ninjyutsu));
res.card_damage = NumArraytoHex(Base64toNumArray(res.card_damage));
res.card_clear = NumArraytoHex(Base64toNumArray(res.card_clear));
res.ninjyutsu = Buffer.from(res.ninjyutsu, "base64").toString("hex");
res.card_damage = Buffer.from(res.card_damage, "base64").toString("hex");
res.card_clear = Buffer.from(res.card_clear, "base64").toString("hex");
});
ninja_shichikyoden = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" });
if (!_.isNil(ninja_shichikyoden))
ninja_shichikyoden.last_select_dojo = NumArraytoHex(Base64toNumArray(ninja_shichikyoden.last_select_dojo));
ninja_shichikyoden.last_select_dojo = Buffer.from(ninja_shichikyoden.last_select_dojo, "base64").toString("hex");
if (!_.isNil(ninja_shichikyoden))
ninja_shichikyoden.enemy_damage = NumArraytoHex(Base64toNumArray(ninja_shichikyoden.enemy_damage));
ninja_shichikyoden.enemy_damage = Buffer.from(ninja_shichikyoden.enemy_damage, "base64").toString("hex");
break;
case 25:
rush_cannonracer = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" });
@ -896,15 +903,17 @@ export const pcget: EPR = async (info, data, send) => {
case 26:
mirage_lib = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" });
if (!_.isNil(mirage_lib))
mirage_lib.quiz_control_list = NumArraytoHex(Base64toNumArray(mirage_lib.quiz_control_list));
mirage_lib.quiz_control_list = Buffer.from(mirage_lib.quiz_control_list, "base64").toString("hex");
mirage_lib_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event1_data" });
mirage_lib_sub.forEach((res) => {
res.map_route_damage = NumArraytoHex(Base64toNumArray(res.map_route_damage));
res.map_route_damage = Buffer.from(res.map_route_damage, "base64").toString("hex");
});
delabity_lab = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" });
delabity_lab_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event2_data" });
anniv20 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "anniv20_data" });
break;
case 31:
let myepo_map = await DB.Find(refid, { collection: "event_1", version: version, event_data: "myepo_map" });
@ -946,10 +955,10 @@ export const pcget: EPR = async (info, data, send) => {
}
if (!_.isNil(pcdata.sp_mlist)) {
pcdata.sp_mlist = NumArraytoHex(Base64toNumArray(pcdata.sp_mlist));
pcdata.sp_clist = NumArraytoHex(Base64toNumArray(pcdata.sp_clist));
pcdata.dp_mlist = NumArraytoHex(Base64toNumArray(pcdata.dp_mlist));
pcdata.dp_clist = NumArraytoHex(Base64toNumArray(pcdata.dp_clist));
pcdata.sp_mlist = Buffer.from(pcdata.sp_mlist, "base64").toString("hex");
pcdata.sp_clist = Buffer.from(pcdata.sp_clist, "base64").toString("hex");
pcdata.dp_mlist = Buffer.from(pcdata.dp_mlist, "base64").toString("hex");
pcdata.dp_clist = Buffer.from(pcdata.dp_clist, "base64").toString("hex");
}
if (version >= 30) {
@ -1181,48 +1190,113 @@ export const pcget: EPR = async (info, data, send) => {
bArray.sort((a, b) => a.id - b.id || a.flg_id - b.flg_id);
}
return send.pugFile(`pug/LDJ/${version}pcget.pug`, {
let result: any = {
profile,
pcdata,
lm_playdata,
lm_settings,
lm_custom,
mArray,
dArray,
eArray,
fArray,
appendsettings,
custom,
rArray,
evtArray,
evtArray2,
evtArray3,
boss1,
link5,
tricolettepark,
chrono_diver,
qpronicle_chord,
qpronicle_chord_sub,
qpronicle_phase3,
pendual_talis,
open_tokotoko,
mystery_line,
mystery_line_sub,
siege_sinobuz,
siege_sinobuz_sub,
ninja_shichikyoden,
rush_cannonracer,
rush_cannonracer_sub,
mirage_lib,
mirage_lib_sub,
delabity_lab,
delabity_lab_sub,
epo_res,
epo_res_sub,
wArray,
bArray,
shop_data,
});
};
switch (version) {
case 21:
result = {
...result,
link5,
tricolettepark,
boss1,
};
break;
case 22:
result = {
...result,
chrono_diver,
qpronicle_chord,
qpronicle_chord_sub,
qpronicle_phase3,
pendual_talis,
};
break;
case 23:
result = {
...result,
open_tokotoko,
mystery_line,
mystery_line_sub,
};
break;
case 24:
result = {
...result,
siege_sinobuz,
siege_sinobuz_sub,
ninja_shichikyoden,
};
break;
case 25:
result = {
...result,
rush_cannonracer,
rush_cannonracer_sub,
};
break;
case 26:
result = {
...result,
mirage_lib,
mirage_lib_sub,
delabity_lab,
delabity_lab_sub,
anniv20,
};
break;
case 31:
result = {
...result,
epo_res,
epo_res_sub,
};
break;
default:
break;
}
switch (version) {
case 31:
result = {
...result,
fArray,
};
case 30:
result = {
...result,
bArray,
};
case 29:
case 28:
result = {
...result,
mArray,
wArray,
};
case 27:
result = {
...result,
lm_playdata,
lm_settings,
lm_custom,
eArray,
evtArray,
evtArray2,
evtArray3,
};
default: break;
}
return send.pugFile(`pug/LDJ/${version}pcget.pug`, result);
}
return send.deny();
@ -1802,8 +1876,8 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
}
pcdata.st_review = parseInt($(data).attr("step").review);
pcdata.st_stamp = NumArraytoBase64($(data).buffer("step")); // TODO:: verify //
pcdata.st_help = NumArraytoBase64($(data).element("step").buffer("help"));
pcdata.st_stamp = $(data).buffer("step").toString("base64"); // TODO:: verify //
pcdata.st_help = $(data).element("step").buffer("help").toString("base64");
}
if (!_.isNil($(data).element("achievements"))) {
@ -2080,10 +2154,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -2115,7 +2189,7 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.st_sp_mplay = parseInt($(data).attr("step").sp_mplay);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
pcdata.st_last_select = parseInt($(data).attr("step").last_select);
pcdata.st_album = NumArraytoBase64($(data).buffer("step")); // TODO:: verify //
pcdata.st_album = $(data).buffer("step").toString("base64"); // TODO:: verify //
}
if (!_.isNil($(data).element("deller"))) pcdata.deller += parseInt($(data).attr("deller").deller);
@ -2345,10 +2419,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -2388,7 +2462,7 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.st_sp_mplay = parseInt($(data).attr("step").sp_mplay);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
pcdata.st_age_list = parseInt($(data).attr("step").age_list);
pcdata.st_album = NumArraytoBase64($(data).buffer("step")); // TODO:: verify //
pcdata.st_album = $(data).buffer("step").toString("base64"); // TODO:: verify //
pcdata.st_is_present = parseInt($(data).attr("step").is_present);
pcdata.st_is_future = parseInt($(data).attr("step").is_future);
}
@ -2581,10 +2655,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -2624,7 +2698,7 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.st_sp_mplay = parseInt($(data).attr("step").sp_mplay);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
pcdata.st_mission_gauge = parseInt($(data).attr("step").mission_gauge);
pcdata.st_tokimeki = NumArraytoBase64($(data).buffer("step")); // TODO:: verify //
pcdata.st_tokimeki = $(data).buffer("step").toString("base64"); // TODO:: verify //
}
if (!_.isNil($(data).element("deller"))) pcdata.deller += parseInt($(data).attr("deller").deller);
@ -2751,10 +2825,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -2938,10 +3012,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -3109,10 +3183,10 @@ export const pcsave: EPR = async (info, data, send) => {
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = NumArraytoBase64($(data).element("favorite").buffer("sp_mlist"));
pcdata.sp_clist = NumArraytoBase64($(data).element("favorite").buffer("sp_clist"));
pcdata.dp_mlist = NumArraytoBase64($(data).element("favorite").buffer("dp_mlist"));
pcdata.dp_clist = NumArraytoBase64($(data).element("favorite").buffer("dp_clist"));
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
@ -3143,12 +3217,12 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.st_dp_dj_mission_level = parseInt($(data).attr("step").dp_dj_mission_level);
pcdata.st_sp_clear_mission_level = parseInt($(data).attr("step").sp_clear_mission_level);
pcdata.st_dp_clear_mission_level = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_sp_dj_mission_clear = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_dp_dj_mission_clear = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_sp_clear_mission_clear = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_dp_clear_mission_clear = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_sp_mplay = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_clear_mission_level);
pcdata.st_sp_dj_mission_clear = parseInt($(data).attr("step").sp_dj_mission_clear);
pcdata.st_dp_dj_mission_clear = parseInt($(data).attr("step").dp_dj_mission_clear);
pcdata.st_sp_clear_mission_clear = parseInt($(data).attr("step").sp_clear_mission_clear);
pcdata.st_dp_clear_mission_clear = parseInt($(data).attr("step").dp_clear_mission_clear);
pcdata.st_sp_mplay = parseInt($(data).attr("step").sp_mplay);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
pcdata.st_tips_read_list = parseInt($(data).attr("step").tips_read_list);
}
@ -3194,7 +3268,7 @@ export const pcsave: EPR = async (info, data, send) => {
pcdata.present_orb += parseInt($(data).attr("orb_data").present_orb);
}
// skin_customize_flg (attr: skin_frame_flg, skin_bgm_flg) //
// skin_customize_flg (attr: skin_frame_flg, skin_bgm_flg, ...) //
// TODO:: fix event saving, these event savings hasn't fully tested //
if (hasEventData) {
@ -3486,10 +3560,11 @@ export const pcsave: EPR = async (info, data, send) => {
if (!_.isNil($(data).element("deller"))) pcdata.deller += parseInt($(data).attr("deller").deller);
if (!_.isNil($(data).element("orb_data"))) {
if (version == 31) {
if (version >= 31) {
pcdata.orb += parseInt($(data).attr("orb_data").add_orb_normal);
pcdata.orb += parseInt($(data).attr("orb_data").add_orb_event);
pcdata.present_orb += parseInt($(data).attr("orb_data").rest_orb);
// use_present_orb //
}
else {
pcdata.orb += parseInt($(data).attr("orb_data").add_orb);
@ -3947,217 +4022,222 @@ export const pcsave: EPR = async (info, data, send) => {
let badge_data = [];
let badge = $(data).element("badge");
if (version == 30) {
if (!(_.isNil(badge.element("today_recommend")))) {
let badgeInfo = {
category_id: "today_recommend",
flg_id: 0,
flg: parseInt(badge.element("today_recommend").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("weekly_ranking")))) {
let badgeInfo = {
category_id: "weekly_ranking",
flg_id: 0,
flg: parseInt(badge.element("weekly_ranking").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("visitor")))) {
badge.elements("visitor").forEach((res) => {
switch (version) {
case 30:
if (!(_.isNil(badge.element("today_recommend")))) {
let badgeInfo = {
category_id: "visitor",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("notes_radar")))) {
badge.elements("notes_radar").forEach((res) => {
let badgeInfo = {
category_id: "notes_radar",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("world_tourism")))) {
let badgeInfo = {
category_id: "world_tourism",
flg_id: 0,
flg: parseInt(badge.element("world_tourism").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("event1")))) {
badge.elements("event1").forEach((res) => {
let badgeInfo = {
category_id: "event1",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("arena")))) {
badge.elements("arena").forEach((res) => {
let badgeInfo = {
category_id: "arena",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("iidx_exam")))) {
let badgeInfo = {
category_id: "iidx_exam",
flg_id: 0,
flg: parseInt(badge.element("iidx_exam").attr().flg),
};
badge_data.push(badgeInfo);
}
}
else if (version == 31) {
if (!(_.isNil(badge.element("step_up")))) {
badge.elements("step_up").forEach((res) => {
let badgeInfo = {
category_id: "step_up",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("today_recommend")))) {
let badgeInfo = {
category_id: "today_recommend",
flg_id: 0,
flg: parseInt(badge.element("today_recommend").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("weekly_ranking")))) {
let badgeInfo = {
category_id: "weekly_ranking",
flg_id: 0,
flg: parseInt(badge.element("weekly_ranking").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("visitor")))) {
badge.elements("visitor").forEach((res) => {
let badgeInfo = {
category_id: "visitor",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("notes_radar")))) {
badge.elements("notes_radar").forEach((res) => {
let badgeInfo = {
category_id: "notes_radar",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("tsujigiri")))) {
let badgeInfo = {
category_id: "tsujigiri",
flg_id: 0,
flg: parseInt(badge.element("tsujigiri").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("iidx_exam")))) {
let badgeInfo = {
category_id: "iidx_exam",
flg_id: 0,
flg: parseInt(badge.element("iidx_exam").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("world_tourism")))) {
let badgeInfo = {
category_id: "world_tourism",
flg_id: 0,
flg: parseInt(badge.element("world_tourism").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("event1")))) {
badge.elements("event1").forEach((res) => {
let badgeInfo = {
category_id: "event1",
category_id: "today_recommend",
flg_id: 0,
flg: parseInt(res.attr().flg),
flg: parseInt(badge.element("today_recommend").attr().flg),
};
badge_data.push(badgeInfo);
});
}
}
if (!(_.isNil(badge.element("arena")))) {
badge.elements("arena").forEach((res) => {
if (!(_.isNil(badge.element("weekly_ranking")))) {
let badgeInfo = {
category_id: "arena",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("event2")))) {
badge.elements("event2").forEach((res) => {
let badgeInfo = {
category_id: "event2",
category_id: "weekly_ranking",
flg_id: 0,
flg: parseInt(res.attr().flg),
flg: parseInt(badge.element("weekly_ranking").attr().flg),
};
badge_data.push(badgeInfo);
});
}
}
if (!(_.isNil(badge.element("visitor")))) {
badge.elements("visitor").forEach((res) => {
let badgeInfo = {
category_id: "visitor",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("notes_radar")))) {
badge.elements("notes_radar").forEach((res) => {
let badgeInfo = {
category_id: "notes_radar",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("world_tourism")))) {
let badgeInfo = {
category_id: "world_tourism",
flg_id: 0,
flg: parseInt(badge.element("world_tourism").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("event1")))) {
badge.elements("event1").forEach((res) => {
let badgeInfo = {
category_id: "event1",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("arena")))) {
badge.elements("arena").forEach((res) => {
let badgeInfo = {
category_id: "arena",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("iidx_exam")))) {
let badgeInfo = {
category_id: "iidx_exam",
flg_id: 0,
flg: parseInt(badge.element("iidx_exam").attr().flg),
};
badge_data.push(badgeInfo);
}
break;
case 31:
if (!(_.isNil(badge.element("step_up")))) {
badge.elements("step_up").forEach((res) => {
let badgeInfo = {
category_id: "step_up",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("today_recommend")))) {
let badgeInfo = {
category_id: "today_recommend",
flg_id: 0,
flg: parseInt(badge.element("today_recommend").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("weekly_ranking")))) {
let badgeInfo = {
category_id: "weekly_ranking",
flg_id: 0,
flg: parseInt(badge.element("weekly_ranking").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("visitor")))) {
badge.elements("visitor").forEach((res) => {
let badgeInfo = {
category_id: "visitor",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("notes_radar")))) {
badge.elements("notes_radar").forEach((res) => {
let badgeInfo = {
category_id: "notes_radar",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("tsujigiri")))) {
let badgeInfo = {
category_id: "tsujigiri",
flg_id: 0,
flg: parseInt(badge.element("tsujigiri").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("iidx_exam")))) {
let badgeInfo = {
category_id: "iidx_exam",
flg_id: 0,
flg: parseInt(badge.element("iidx_exam").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("world_tourism")))) {
let badgeInfo = {
category_id: "world_tourism",
flg_id: 0,
flg: parseInt(badge.element("world_tourism").attr().flg),
};
badge_data.push(badgeInfo);
}
if (!(_.isNil(badge.element("event1")))) {
badge.elements("event1").forEach((res) => {
let badgeInfo = {
category_id: "event1",
flg_id: 0,
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("arena")))) {
badge.elements("arena").forEach((res) => {
let badgeInfo = {
category_id: "arena",
flg_id: parseInt(res.attr().flg_id),
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
if (!(_.isNil(badge.element("event2")))) {
badge.elements("event2").forEach((res) => {
let badgeInfo = {
category_id: "event2",
flg_id: 0,
flg: parseInt(res.attr().flg),
};
badge_data.push(badgeInfo);
});
}
break;
default:
break;
}
badge_data.forEach((res) => {
@ -4345,19 +4425,13 @@ export const pcgetlanegacha: EPR = async (info, data, send) => {
);
}
// settings(sp, dp_left, dp_right), info(last_page) //
return send.object({
ticket: tArray,
settings: K.ATTR({
sp: String(-1),
dp_left: String(-1),
dp_right: String(-1),
}),
free: K.ATTR({
num: String(10),
}),
info: K.ATTR({
last_page: String(0),
}),
});
};

View File

@ -1,46 +1,46 @@
export const IIDX_CPUS = [
[
[6, 4, 5, 0],
[7, 5, 6, 0],
[8, 6, 6, 0],
[9, 6, 7, 0],
[10, 7, 7, 0],
[10, 7, 8, 0],
[11, 8, 8, 0],
[11, 8, 9, 0],
[12, 9, 9, 0],
[12, 9, 10, 0],
[13, 9, 10, 0],
[13, 10, 10, 0],
[14, 10, 11, 0],
[14, 10, 11, 1],
[15, 11, 11, 1],
[15, 11, 12, 1],
[16, 11, 12, 1],
[16, 11, 12, 1],
[17, 12, 12, 1],
[18, 12, 12, 1],
],
[
[6, 3, 5, 0],
[7, 3, 5, 0],
[8, 4, 5, 0],
[8, 4, 5, 0],
[9, 5, 6, 0],
[9, 5, 6, 0],
[10, 6, 6, 0],
[10, 6, 7, 0],
[11, 7, 7, 0],
[11, 7, 8, 0],
[12, 8, 8, 0],
[12, 8, 9, 0],
[13, 9, 9, 0],
[13, 9, 10, 0],
[14, 9, 10, 0],
[15, 10, 10, 0],
[15, 10, 11, 0],
[16, 11, 11, 1],
[17, 11, 12, 1],
[18, 12, 12, 1],
],
export const IIDX_CPUS = [
[
[6, 4, 5, 0],
[7, 5, 6, 0],
[8, 6, 6, 0],
[9, 6, 7, 0],
[10, 7, 7, 0],
[10, 7, 8, 0],
[11, 8, 8, 0],
[11, 8, 9, 0],
[12, 9, 9, 0],
[12, 9, 10, 0],
[13, 9, 10, 0],
[13, 10, 10, 0],
[14, 10, 11, 0],
[14, 10, 11, 1],
[15, 11, 11, 1],
[15, 11, 12, 1],
[16, 11, 12, 1],
[16, 11, 12, 1],
[17, 12, 12, 1],
[18, 12, 12, 1],
],
[
[6, 3, 5, 0],
[7, 3, 5, 0],
[8, 4, 5, 0],
[8, 4, 5, 0],
[9, 5, 6, 0],
[9, 5, 6, 0],
[10, 6, 6, 0],
[10, 6, 7, 0],
[11, 7, 7, 0],
[11, 7, 8, 0],
[12, 8, 8, 0],
[12, 8, 9, 0],
[13, 9, 9, 0],
[13, 9, 10, 0],
[14, 9, 10, 0],
[15, 10, 10, 0],
[15, 10, 11, 0],
[16, 11, 11, 1],
[17, 11, 12, 1],
[18, 12, 12, 1],
],
];

View File

@ -1,8 +1,8 @@
export interface badge {
collection: "badge";
version: number;
category_name: string;
flg_id: number;
flg: number;
}
export interface badge {
collection: "badge";
version: number;
category_name: string;
flg_id: number;
flg: number;
}

View File

@ -1,10 +1,10 @@
export interface shop_data {
collection: "shop_data";
export interface shop_data {
collection: "shop_data";
opname: string;
pid: number;
cls_opt: number;
}
cls_opt: number;
}
export interface convention_data {
collection: "shop_convention";

View File

@ -1,108 +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)
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

@ -40,97 +40,6 @@ export function ClidToPlaySide(clid: number) {
return clid < 5 ? 0 : 1;
}
export function NumArraytoBase64(buff: number[]) {
const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
let result = "";
for (let i = 0; i < buff.length; i += 3) {
const chunk = (buff[i] << 16) | (buff[i + 1] << 8) | buff[i + 2];
result += base64Chars[(chunk >> 18) & 63] +
base64Chars[(chunk >> 12) & 63] +
base64Chars[(chunk >> 6) & 63] +
base64Chars[chunk & 63];
}
const padding = buff.length % 3;
if (padding === 1) {
result = result.slice(0, -2) + "==";
} else if (padding === 2) {
result = result.slice(0, -1) + "=";
}
return result;
}
export function Base64toNumArray(s: string) {
const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
let p = -8,
a = 0,
c: number,
d: number,
buffer: number[] = [];
if (_.isNil(s)) return buffer;
for (let i = 0; i < s.length; i++) {
if ((c = base64Chars.indexOf(s.charAt(i))) < 0) continue;
a = (a << 6) | (c & 63);
if ((p += 6) >= 0) {
d = (a >> p) & 255;
if (c !== 64) buffer.push(d);
a &= 63;
p -= 8;
}
}
return buffer;
}
export function NumArraytoHex(buff: number[]) {
let hexStr = "";
for (let i = 0; i < buff.length; i++) {
const hex = buff[i].toString(16);
const paddedHex = hex.length % 2 ? "0" + hex : hex;
hexStr += paddedHex;
}
return hexStr;
}
export function HextoBase64(hex: string) {
const buffer = [];
const base64Chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
let base64String = "";
let i = 0;
for (let i = 0; i < hex.length; i += 2) {
const hexByte = hex.slice(i, i + 2);
const byteValue = parseInt(hexByte, 16);
buffer.push(byteValue);
}
while (i < buffer.length) {
const byte1 = buffer[i++] || 0;
const byte2 = buffer[i++] || 0;
const byte3 = buffer[i++] || 0;
const enc1 = byte1 >> 2;
const enc2 = ((byte1 & 3) << 4) | (byte2 >> 4);
const enc3 = ((byte2 & 15) << 2) | (byte3 >> 6);
const enc4 = byte3 & 63;
base64String +=
base64Chars.charAt(enc1) +
base64Chars.charAt(enc2) +
(i <= buffer.length + 2 ? base64Chars.charAt(enc3) : "=") +
(i <= buffer.length + 1 ? base64Chars.charAt(enc4) : "=");
}
return base64String;
}
export function NumArrayToString(bits: number[], numArray: number[]): string {
const characters = "0123456789:;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let byteSum = 0;
@ -306,26 +215,24 @@ export async function ReftoQPRO(refid: string, version: number) {
let qpro_data = [];
try {
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;
if (version >= 31) {
qpro_data = [
custom.qpro_hair,
custom.qpro_head,
custom.qpro_face,
custom.qpro_body,
custom.qpro_hand,
custom.qpro_back,
];
}
else {
qpro_data = [
custom.qpro_hair,
custom.qpro_head,
custom.qpro_face,
custom.qpro_body,
custom.qpro_hand,
];
}
} catch {
qpro_data = [0, 0, 0, 0, 0, 0];

View File

@ -1,31 +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");
}
});
});
$("#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

@ -1,80 +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");
}
});
});
$("#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

@ -1,67 +1,67 @@
//DATA//
profile: DB.FindOne(refid, { collection: 'profile' })
pcdata: DB.FindOne(refid, { collection: 'pcdata' })
-
const version = [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
];
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Profile
.card-content
.field
label.label Version
.ver-select
.control
.select
select(id="version")
each i in version
option(selected=(i==pcdata.version)) #{i}
.field
label.label Name
.body
p(id="name") #{profile.name}
.field
label.label IIDX ID
.body
p(id="iidxid") #{profile.idstr}
.field
label.label SP Grade
.body
- const a = pcdata.sgid
if a==-1
p(id="sp_grade") ----
else
p(id="sp_grade") #{pcdata.sgid}
.field
label.label DP Grade
.body
- const b = pcdata.dgid
if b==-1
p(id="dp_grade") ----
else
p(id="dp_grade") #{pcdata.dgid}
script(src="static/asset/js/detail.js")
//DATA//
profile: DB.FindOne(refid, { collection: 'profile' })
pcdata: DB.FindOne(refid, { collection: 'pcdata' })
-
const version = [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
];
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Profile
.card-content
.field
label.label Version
.ver-select
.control
.select
select(id="version")
each i in version
option(selected=(i==pcdata.version)) #{i}
.field
label.label Name
.body
p(id="name") #{profile.name}
.field
label.label IIDX ID
.body
p(id="iidxid") #{profile.idstr}
.field
label.label SP Grade
.body
- const a = pcdata.sgid
if a==-1
p(id="sp_grade") ----
else
p(id="sp_grade") #{pcdata.sgid}
.field
label.label DP Grade
.body
- const b = pcdata.dgid
if b==-1
p(id="dp_grade") ----
else
p(id="dp_grade") #{pcdata.dgid}
script(src="static/asset/js/detail.js")

View File

@ -1,240 +1,240 @@
//DATA//
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 = [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
];
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Settings
.card-content
form(method="post" action="/emit/iidxUpdateCustom")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label IIDX ID
.control
input.input(type="text" name="iidxid", value=profile.idstr readonly)
.field
label.label Version
.control
.select
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", id="name", value=profile.name)
//- SKIN
.field
label.label Frame
.control
input.input(type="number" name="frame", id="frame", value=custom.frame)
.field
label.label Turntable
.control
input.input(type="number" name="turntable", id="turntable", value=custom.turntable)
.field
label.label Note Burst
.control
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", id="menu_music", value=custom.menu_music)
.field
label.label Lane Cover
.control
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", id="category_vox", value=custom.category_vox)
.field
label.label Note Skin
.control
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", id="full_combo_splash", value=custom.full_combo_splash)
.field
label.label Note Beam
.control
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", id="judge_font", value=custom.judge_font)
.field
label.label Disable Music Preview
.control
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", id="pacemaker_cover", value=custom.pacemaker_cover)
.field
label.label VEFX Lock
.control
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", id="effect", value=custom.effect)
.field
label.label Note Burst Size
.control
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", 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", 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", id="rank_folder", checked=Boolean(custom.rank_folder))
.field
label.label Clear State Folder
.control
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", id="diff_folder", checked=Boolean(custom.diff_folder))
.field
label.label Alphabet Folder
.control
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", id="rival_folder", checked=Boolean(custom.rival_folder))
.field
label.label Rival WIN/LOSE Folder
.control
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", id="rival_info", checked=Boolean(custom.rival_info))
.field
label.label Hide Playcount
.control
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", id="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin))
.field
label.label Classic Hi-SPEED
.control
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", id="rival_played_folder", checked=Boolean(custom.rival_played_folder))
.field
label.label Hide IIDX ID
.control
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", id="disable_beginner_option", checked=Boolean(false))
else
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", id="qpro_head", value=custom.qpro_head)
.field
label.label QPRO Hair
.control
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", id="qpro_hand", value=custom.qpro_hand)
.field
label.label QPRO Face
.control
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", 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")
//DATA//
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 = [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
];
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Settings
.card-content
form(method="post" action="/emit/iidxUpdateCustom")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label IIDX ID
.control
input.input(type="text" name="iidxid", value=profile.idstr readonly)
.field
label.label Version
.control
.select
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", id="name", value=profile.name)
//- SKIN
.field
label.label Frame
.control
input.input(type="number" name="frame", id="frame", value=custom.frame)
.field
label.label Turntable
.control
input.input(type="number" name="turntable", id="turntable", value=custom.turntable)
.field
label.label Note Burst
.control
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", id="menu_music", value=custom.menu_music)
.field
label.label Lane Cover
.control
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", id="category_vox", value=custom.category_vox)
.field
label.label Note Skin
.control
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", id="full_combo_splash", value=custom.full_combo_splash)
.field
label.label Note Beam
.control
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", id="judge_font", value=custom.judge_font)
.field
label.label Disable Music Preview
.control
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", id="pacemaker_cover", value=custom.pacemaker_cover)
.field
label.label VEFX Lock
.control
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", id="effect", value=custom.effect)
.field
label.label Note Burst Size
.control
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", 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", 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", id="rank_folder", checked=Boolean(custom.rank_folder))
.field
label.label Clear State Folder
.control
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", id="diff_folder", checked=Boolean(custom.diff_folder))
.field
label.label Alphabet Folder
.control
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", id="rival_folder", checked=Boolean(custom.rival_folder))
.field
label.label Rival WIN/LOSE Folder
.control
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", id="rival_info", checked=Boolean(custom.rival_info))
.field
label.label Hide Playcount
.control
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", id="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin))
.field
label.label Classic Hi-SPEED
.control
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", id="rival_played_folder", checked=Boolean(custom.rival_played_folder))
.field
label.label Hide IIDX ID
.control
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", id="disable_beginner_option", checked=Boolean(false))
else
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", id="qpro_head", value=custom.qpro_head)
.field
label.label QPRO Hair
.control
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", id="qpro_hand", value=custom.qpro_hand)
.field
label.label QPRO Face
.control
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", 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

@ -1,118 +1,118 @@
//DATA//
profile: DB.FindOne(refid, { collection: "profile" })
profiles: DB.Find(null, { collection: "profile" })
rival: DB.Find(refid, { collection: "rival" })
-
let rival_list=[["", "None", "0000-0000"]];
profiles.forEach((res) => {
rival_list.push([res.__refid, res.name, res.idstr])
});
let my_sp_rival = [], my_dp_rival = [];
rival.forEach((res) => {
if (res.play_style == 1) my_sp_rival[res.index] = res.rival_refid;
else if (res.play_style == 2) my_dp_rival[res.index] = res.rival_refid;
});
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Rivals
.card-content
form(method="post" action="/emit/iidxUpdateRival")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label SP Rivals
.body
.control
.select
select(name="sp_rival1")
each i in rival_list
if my_sp_rival[0] != null
option(selected=i[0]==my_sp_rival[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival2")
each i in rival_list
if my_sp_rival[1] != null
option(selected=i[0]==my_sp_rival[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival3")
each i in rival_list
if my_sp_rival[2] != null
option(selected=i[0]==my_sp_rival[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival4")
each i in rival_list
if my_sp_rival[3] != null
option(selected=i[0]==my_sp_rival[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival5")
each i in rival_list
if my_sp_rival[4] != null
option(selected=i[0]==my_sp_rival[4], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.field
label.label DP Rivals
.body
.control
.select
select(name="dp_rival1")
each i in rival_list
if my_dp_rival[0] != null
option(selected=i[0]==my_dp_rival[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival2")
each i in rival_list
if my_dp_rival[1] != null
option(selected=i[0]==my_dp_rival[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival3")
each i in rival_list
if my_dp_rival[2] != null
option(selected=i[0]==my_dp_rival[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival4")
each i in rival_list
if my_dp_rival[3] != null
option(selected=i[0]==my_dp_rival[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival5")
each i in rival_list
if my_dp_rival[4] != null
option(selected=i[0]==my_dp_rival[4], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.field
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Submit
//DATA//
profile: DB.FindOne(refid, { collection: "profile" })
profiles: DB.Find(null, { collection: "profile" })
rival: DB.Find(refid, { collection: "rival" })
-
let rival_list=[["", "None", "0000-0000"]];
profiles.forEach((res) => {
rival_list.push([res.__refid, res.name, res.idstr])
});
let my_sp_rival = [], my_dp_rival = [];
rival.forEach((res) => {
if (res.play_style == 1) my_sp_rival[res.index] = res.rival_refid;
else if (res.play_style == 2) my_dp_rival[res.index] = res.rival_refid;
});
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Rivals
.card-content
form(method="post" action="/emit/iidxUpdateRival")
.field
input(type="text" name="refid", value=refid readonly hidden)
label.label SP Rivals
.body
.control
.select
select(name="sp_rival1")
each i in rival_list
if my_sp_rival[0] != null
option(selected=i[0]==my_sp_rival[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival2")
each i in rival_list
if my_sp_rival[1] != null
option(selected=i[0]==my_sp_rival[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival3")
each i in rival_list
if my_sp_rival[2] != null
option(selected=i[0]==my_sp_rival[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival4")
each i in rival_list
if my_sp_rival[3] != null
option(selected=i[0]==my_sp_rival[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival5")
each i in rival_list
if my_sp_rival[4] != null
option(selected=i[0]==my_sp_rival[4], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.field
label.label DP Rivals
.body
.control
.select
select(name="dp_rival1")
each i in rival_list
if my_dp_rival[0] != null
option(selected=i[0]==my_dp_rival[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival2")
each i in rival_list
if my_dp_rival[1] != null
option(selected=i[0]==my_dp_rival[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival3")
each i in rival_list
if my_dp_rival[2] != null
option(selected=i[0]==my_dp_rival[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival4")
each i in rival_list
if my_dp_rival[3] != null
option(selected=i[0]==my_dp_rival[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival5")
each i in rival_list
if my_dp_rival[4] != null
option(selected=i[0]==my_dp_rival[4], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.field
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Submit

View File

@ -1,25 +1,25 @@
//DATA//
score: DB.Find(refid, { collection: 'score' })
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Score
.card-content
table.table
thead
tr
th Music ID
th EXSCORE [SPB~DPL]
th Miss Count [SPB~DPL]
th Clear Lamp [SPB~DPL]
tbody
each i in score
tr
td #{i.mid}
td #{i.esArray}
td #{i.mArray}
td #{i.cArray}
//DATA//
score: DB.Find(refid, { collection: 'score' })
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Score
.card-content
table.table
thead
tr
th Music ID
th EXSCORE [SPB~DPL]
th Miss Count [SPB~DPL]
th Clear Lamp [SPB~DPL]
tbody
each i in score
tr
td #{i.mid}
td #{i.esArray}
td #{i.mArray}
td #{i.cArray}

View File

@ -1,27 +1,27 @@
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Data Management
.card-content
.field
label.label [!] This will overwrite existing scores
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")
p
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Score Import
.field
form(method="post" action="/emit/iidxExportScoreData")
.field
input(type="text" name="refid", value=refid readonly hidden)
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Score Export
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-account-edit
| Data Management
.card-content
.field
label.label [!] This will overwrite existing scores
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")
p
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Score Import
.field
form(method="post" action="/emit/iidxExportScoreData")
.field
input(type="text" name="refid", value=refid readonly hidden)
button.button.is-primary(type="submit")
span.icon
i.mdi.mdi-check
span Score Export