IIDX: Initial support added for Pinky Crush

This commit is contained in:
duel0213 2025-09-27 12:32:00 +09:00
parent 3bad80d504
commit 4427834df4
18 changed files with 2539 additions and 1220 deletions

View File

@ -1,6 +1,6 @@
# beatmaniaIIDX
Plugin Version: **v0.1.16**
Plugin Version: **v0.1.17**
---
@ -23,6 +23,7 @@ Supported Versions
- beatmaniaIIDX 29 CastHour (2022082400)
- beatmaniaIIDX 30 RESIDENT (2023090500)
- beatmaniaIIDX 31 EPOLIS (2024082600)
- beatmaniaIIDX 32 Pinky Crush (2025082500)
---
@ -43,9 +44,8 @@ Known Issues
- LEGGENDARIA play records before HEROIC VERSE may not display on higher version due to missing conversion code
- SUPER FUTURE 2323 play records doesn't display on other version due to missing conversion code
- ONE MORE EXTRA STAGE progress won't save (can't test this due to skill issue)
- Some of licensed songs are locked behind due to missing license element (needs to be verified)
- Some of licensed songs are locked behind (kinda solved with music\_open but needs to be verified)
- Some of badges aren't saving in RESIDENT ~ (needs to figure out name to id)
- QPRO may have wrong item if you equipped item from STEP UP result (this probably caused by qpro\_secret\_flg being -1)
---
@ -161,6 +161,10 @@ Changelogs
- 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 ~)
- Fixed where qpro head equip request handle as hand equip (@anzuwork)
- 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
**v0.1.17**
- Added Initial support for Pinky Crush

View File

@ -4,7 +4,7 @@
"15": {
"music_id": [ 25090, 23068, 19004, 29045 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
"kind": 0
},
"16": {
"music_id": [ 23005, 27078, 22065, 27060 ],
@ -44,5 +44,51 @@
"kind": 0
}
}
},
"32": {
"0": {
"15": {
"music_id": [ 19022, 30033, 27013, 29045 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"16": {
"music_id": [ 27034, 24023, 16009, 25085 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"17": {
"music_id": [ 26087, 19002, 29050, 30024 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"18": {
"music_id": [ 30052, 18032, 16020, 12004 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
}
},
"1": {
"15": {
"music_id": [ 12002, 31063, 23046, 30020 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"16": {
"music_id": [ 26106, 14021, 29052, 23075 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"17": {
"music_id": [ 29042, 26043, 17017, 28005 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"18": {
"music_id": [ 25007, 29017, 19002, 9028 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
}
}
}
}

View File

@ -56,5 +56,27 @@
"31110": { "kind": 0 },
"31112": { "kind": 0 },
"31113": { "kind": 0 }
},
"32": {
"32022": { "kind": 0 },
"32049": { "kind": 0 },
"32078": { "kind": 0 },
"32079": { "kind": 0 },
"32080": { "kind": 0 },
"32081": { "kind": 0 },
"32082": { "kind": 0 },
"32083": { "kind": 0 },
"32084": { "kind": 0 },
"32085": { "kind": 0 },
"32096": { "kind": 0 },
"32097": { "kind": 0 },
"32098": { "kind": 0 },
"32019": { "kind": 0 },
"32101": { "kind": 0 },
"32102": { "kind": 0 },
"32103": { "kind": 0 },
"32104": { "kind": 0 },
"32110": { "kind": 0 },
"32111": { "kind": 0 }
}
}

View File

@ -19,17 +19,14 @@ 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", "utf-8"));
if (!_.isNil(music_open[version])) {
result = {
...result,
music_open: [],
}
result = Object.assign(result, { music_open: [] });
Object.keys(music_open).forEach(v => {
Object.keys(music_open[v]).forEach(m => {
if (parseInt(v) > version) return;
if (Number(v) > version) return;
result.music_open.push({
music_id: K.ITEM("s32", parseInt(m)),
music_id: K.ITEM("s32", Number(m)),
kind: K.ITEM("s32", music_open[v][m].kind),
});
});
@ -37,16 +34,14 @@ export const gssysteminfo: EPR = async (info, data, send) => {
}
switch (version) {
case 31:
result.arena_schedule = {
...result.arena_schedule,
rule_type: K.ITEM("u8", 0), // arena rule for online //
}
case 32:
result.arena_schedule.phase = K.ITEM("u8", 3);
result.arena_schedult = Object.assign(result.arena_schedule, { season: K.ITEM("u8", 0) }); // arena season for online //
result = {
...result,
grade_course: [],
}
case 31:
result.arena_schedult = Object.assign(result.arena_schedule, { rule_type: K.ITEM("u8", 0) }); // arena rule for online //
result = Object.assign(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", "utf-8"));
@ -54,8 +49,8 @@ export const gssysteminfo: EPR = async (info, data, send) => {
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)),
play_style: K.ITEM("s32", Number(s)),
grade_id: K.ITEM("s32", Number(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]),
@ -109,8 +104,7 @@ export const gssysteminfo: EPR = async (info, data, send) => {
switch (version) {
case 29:
result = {
...result,
result = Object.assign(result, {
CommonBossPhase: K.ATTR({ val: String(3) }),
Event1InternalPhase: K.ATTR({ val: String(U.GetConfig("ch_event")) }),
ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("ch_extraboss")) }),
@ -119,11 +113,10 @@ export const gssysteminfo: EPR = async (info, data, send) => {
isEiseiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
}
});
break;
case 30:
result = {
...result,
result = Object.assign(result, {
CommonBossPhase: K.ATTR({ val: String(3) }),
Event1InternalPhase: K.ATTR({ val: String(U.GetConfig("rs_event")) }),
ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("rs_extraboss")) }),
@ -132,7 +125,7 @@ export const gssysteminfo: EPR = async (info, data, send) => {
isEiseiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
}
})
break;
case 31:
let totalMetron = 0;
@ -148,8 +141,7 @@ export const gssysteminfo: EPR = async (info, data, send) => {
});
}
result = {
...result,
Object.assign(result, {
CommonBossPhase: K.ATTR({ val: String(3) }),
Event1Value: K.ATTR({ val: String(U.GetConfig("ep_event")) }),
Event1Phase: K.ATTR({ val: String(U.GetConfig("ep_event1")) }),
@ -162,7 +154,19 @@ export const gssysteminfo: EPR = async (info, data, send) => {
UnlockLeggendaria: K.ATTR({ val: String(1) }),
BPLSerialCodePhase: K.ATTR({ val: String(0) }),
Event1AllPlayerTotalGetMetron: K.ATTR({ val: String(totalMetron) }), // total amount of all users metron //
}
});
break;
case 32:
result = Object.assign(result, {
Event1Value: K.ATTR({ val: String(U.GetConfig("pc_event")) }), // TEST //
Event1Phase: K.ATTR({ val: String(U.GetConfig("pc_event1")) }), // TEST //
Event2Phase: K.ATTR({ val: String(U.GetConfig("pc_event2")) }), // TEST //
ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("pc_extraboss")) }), // TEST //
isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }),
isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
OldBPLBattleOpenPhase: K.ATTR({ val: String(3) }),
});
break;
default:

View File

@ -6,13 +6,13 @@ import { badge } from "../models/badge";
export const graderaised: EPR = async (info, data, send) => {
const version = GetVersion(info);
const iidxid = parseInt($(data).attr().iidxid);
const iidxid = Number($(data).attr().iidxid);
const refid = await IDtoRef(iidxid);
const gid = parseInt($(data).attr().gid);
const gtype = parseInt($(data).attr().gtype);
const gid = Number($(data).attr().gid);
const gtype = Number($(data).attr().gtype);
let cflg = parseInt($(data).attr().cflg);
let achi = parseInt($(data).attr().achi);
let cflg = Number($(data).attr().cflg);
let achi = Number($(data).attr().achi);
let pcdata = await DB.FindOne<pcdata>(refid, { collection: "pcdata", version: version });
let grade = await DB.FindOne<grade>(refid, {
@ -22,7 +22,7 @@ export const graderaised: EPR = async (info, data, send) => {
gradeId: gid,
});
if (version >= 23) cflg = parseInt($(data).attr().cstage);
if (version >= 23) cflg = Number($(data).attr().cstage);
const isTDJ = !_.isNil($(data).element("lightning_play_data")); // lightning model //
const hasEiseiData = (!_.isNil($(data).element("eisei_data")) || !_.isNil($(data).element("eisei_grade_data")) || !_.isNil($(data).element("kiwami_data")));
@ -40,20 +40,20 @@ export const graderaised: EPR = async (info, data, send) => {
switch (version) {
case 27:
eisei_clear_type = parseInt($(data).attr("eisei_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_data").stage_num);
eisei_clear_type = Number($(data).attr("eisei_data").clear_type);
eisei_grade_id = Number($(data).attr("eisei_data").grade_id);
eisei_grade_type = Number($(data).attr("eisei_data").grade_type);
eisei_stage_num = Number($(data).attr("eisei_data").stage_num);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement");
break;
case 30:
eisei_clear_type = parseInt($(data).element("eisei_data").attr().clear_type);
eisei_grade_id = parseInt($(data).element("eisei_data").attr().grade_id);
eisei_grade_type = parseInt($(data).element("eisei_data").attr().grade_type);
eisei_stage_num = parseInt($(data).element("eisei_data").attr().stage_num);
eisei_option = parseInt($(data).element("eisei_data").attr().option);
eisei_clear_type = Number($(data).element("eisei_data").attr().clear_type);
eisei_grade_id = Number($(data).element("eisei_data").attr().grade_id);
eisei_grade_type = Number($(data).element("eisei_data").attr().grade_type);
eisei_stage_num = Number($(data).element("eisei_data").attr().stage_num);
eisei_option = Number($(data).element("eisei_data").attr().option);
eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_data").numbers("past_selected_course");
@ -61,11 +61,12 @@ export const graderaised: EPR = async (info, data, send) => {
eisei_max_past_selected_course = $(data).element("eisei_data").numbers("max_past_selected_course");
break;
case 31:
eisei_clear_type = parseInt($(data).attr("kiwami_data").clear_type);
eisei_grade_id = parseInt($(data).attr("kiwami_data").grade_id);
eisei_grade_type = parseInt($(data).attr("kiwami_data").grade_type);
eisei_stage_num = parseInt($(data).attr("kiwami_data").stage_num);
eisei_option = parseInt($(data).attr("kiwami_data").option);
case 32:
eisei_clear_type = Number($(data).attr("kiwami_data").clear_type);
eisei_grade_id = Number($(data).attr("kiwami_data").grade_id);
eisei_grade_type = Number($(data).attr("kiwami_data").grade_type);
eisei_stage_num = Number($(data).attr("kiwami_data").stage_num);
eisei_option = Number($(data).attr("kiwami_data").option);
eisei_past_achievement = $(data).element("kiwami_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("kiwami_data").numbers("past_selected_course");
@ -74,10 +75,10 @@ export const graderaised: EPR = async (info, data, send) => {
break;
default:
eisei_clear_type = parseInt($(data).attr("eisei_grade_data").clear_type);
eisei_grade_id = parseInt($(data).attr("eisei_grade_data").grade_id);
eisei_grade_type = parseInt($(data).attr("eisei_grade_data").grade_type);
eisei_stage_num = parseInt($(data).attr("eisei_grade_data").stage_num);
eisei_clear_type = Number($(data).attr("eisei_grade_data").clear_type);
eisei_grade_id = Number($(data).attr("eisei_grade_data").grade_id);
eisei_grade_type = Number($(data).attr("eisei_grade_data").grade_type);
eisei_stage_num = Number($(data).attr("eisei_grade_data").stage_num);
eisei_past_achievement = $(data).element("eisei_grade_data").numbers("past_achievement");
eisei_past_selected_course = $(data).element("eisei_grade_data").numbers("past_selected_course");
@ -181,11 +182,11 @@ export const graderaised: EPR = async (info, data, send) => {
collection: "badge",
version: version,
category_name: "grade",
flg_id: parseInt($(data).attr("badge").badge_flg_id),
flg_id: Number($(data).attr("badge").badge_flg_id),
},
{
$set: {
flg: parseInt($(data).attr("badge").badge_flg),
flg: Number($(data).attr("badge").badge_flg),
}
}
);

View File

@ -1,9 +1,10 @@
import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid } from "../util";
import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid, GetWeekId } from "../util";
import { score, score_top } from "../models/score";
import { profile } from "../models/profile";
import { shop_data } from "../models/shop";
import { tutorial } from "../models/tutorial";
import { badge } from "../models/badge";
import { activity_mybest } from "../models/activity";
export const musicgetrank: EPR = async (info, data, send) => {
const version = GetVersion(info);
@ -689,6 +690,51 @@ export const musicreg: EPR = async (info, data, send) => {
}
}
let date = new Date();
if (!_.isNil($(data).element("best_result"))) {
await DB.Upsert<activity_mybest>(
refid,
{
collection: "activity_mybest",
version: version,
play_style: Number($(data).attr("best_result").play_style),
play_side: Number($(data).attr("best_result").play_side),
music_id: Number($(data).attr("best_result").music_id),
note_id: Number($(data).attr("best_result").note_id),
},
{
$set: {
target_graph: Number($(data).attr("best_result").target_graph),
target_score: Number($(data).attr("best_result").target_score),
pacemaker: Number($(data).attr("best_result").pacemaker),
best_clear: Number($(data).attr("best_result").best_clear),
best_score: Number($(data).attr("best_result").best_score),
best_misscount: Number($(data).attr("best_result").best_misscount),
now_clear: Number($(data).attr("best_result").now_clear),
now_score: Number($(data).attr("best_result").now_score),
now_misscount: Number($(data).attr("best_result").now_misscount),
now_pgreat: Number($(data).attr("best_result").now_pgreat),
now_great: Number($(data).attr("best_result").now_great),
now_good: Number($(data).attr("best_result").now_good),
now_bad: Number($(data).attr("best_result").now_bad),
now_poor: Number($(data).attr("best_result").now_poor),
now_combo: Number($(data).attr("best_result").now_combo),
now_fast: Number($(data).attr("best_result").now_fast),
now_slow: Number($(data).attr("best_result").now_slow),
option: Number($(data).attr("best_result").option),
option_2: Number($(data).attr("best_result").option2),
ghost_gauge_data: $(data).element("best_result").buffer("ghost_gauge_data").toString("base64"),
gauge_type: Number($(data).attr("best_result").gauge_type),
result_type: Number($(data).attr("best_result").result_type),
is_special_result: Number($(data).element("best_result").bool("is_special_result")),
update_date: Math.floor(date.valueOf() / 1000),
}
}
);
}
let shop_rank = -1, shop_rank_data = [];
let scores: any[][];
scores = (
@ -769,14 +815,9 @@ export const musicreg: EPR = async (info, data, send) => {
}
});
if (version > 23) {
crate = Math.round((cflgs / shop_rank_data.length) * 1000);
frate = Math.round((fcflgs / shop_rank_data.length) * 1000);
}
else {
crate = Math.round((cflgs / shop_rank_data.length) * 100);
frate = Math.round((fcflgs / shop_rank_data.length) * 100);
}
let rate = version > 23 ? 1000 : 100;
crate = Math.round((cflgs / shop_rank_data.length) * rate);
frate = Math.round((fcflgs / shop_rank_data.length) * rate);
let result: any = {
"@attr": {

File diff suppressed because it is too large Load Diff

View File

@ -5,21 +5,21 @@ import { GetVersion, IDtoRef } from "../util";
export const rankingentry: EPR = async (info, data, send) => {
// pside //
const version = GetVersion(info);
const refid = await IDtoRef(parseInt($(data).attr().iidxid));
const refid = await IDtoRef(Number($(data).attr().iidxid));
const coid = parseInt($(data).attr().coid);
const clid = parseInt($(data).attr().clid);
const coid = Number($(data).attr().coid);
const clid = Number($(data).attr().clid);
const opname = $(data).attr().opname;
const oppid = parseInt($(data).attr().oppid);
const pgnum = parseInt($(data).attr().pgnum);
const gnum = parseInt($(data).attr().gnum);
const opt = parseInt($(data).attr().opt);
const opt2 = parseInt($(data).attr().opt2);
const clr = parseInt($(data).attr().clr);
const oppid = Number($(data).attr().oppid);
const pgnum = Number($(data).attr().pgnum);
const gnum = Number($(data).attr().gnum);
const opt = Number($(data).attr().opt);
const opt2 = Number($(data).attr().opt2);
const clr = Number($(data).attr().clr);
const exscore = (pgnum * 2 + gnum);
const cstage = parseInt($(data).attr().cstage);
const cstage = Number($(data).attr().cstage);
const expert_data = await DB.FindOne<expert>(refid, {
collection: "expert",
@ -123,16 +123,16 @@ export const rankingentry: EPR = async (info, data, send) => {
export const rankingoentry: 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 coid = parseInt($(data).attr().coid);
const clid = parseInt($(data).attr().clid);
const coid = Number($(data).attr().coid);
const clid = Number($(data).attr().clid);
const pgnum = parseInt($(data).attr().pgnum);
const gnum = parseInt($(data).attr().gnum);
const opt = parseInt($(data).attr().opt);
const opt2 = parseInt($(data).attr().opt2);
const clr = parseInt($(data).attr().clr);
const pgnum = Number($(data).attr().pgnum);
const gnum = Number($(data).attr().gnum);
const opt = Number($(data).attr().opt);
const opt2 = Number($(data).attr().opt2);
const clr = Number($(data).attr().clr);
const exscore = (pgnum * 2 + gnum);
@ -146,8 +146,8 @@ export const rankinggetranker: EPR = async (info, data, send) => {
const ranking = await DB.Find<ranking>({
collection: "ranking",
version: version,
coid: parseInt($(data).attr().coid),
clid: parseInt($(data).attr().clid),
coid: Number($(data).attr().coid),
clid: Number($(data).attr().clid),
});
let result = {
ranker: [],

View File

@ -207,24 +207,24 @@ export const updateCustomSettings = async (data) => {
});
let customize = {
frame: parseInt(data.frame),
turntable: parseInt(data.turntable),
note_burst: parseInt(data.note_burst),
menu_music: parseInt(data.menu_music),
lane_cover: parseInt(data.lane_cover),
category_vox: parseInt(data.category_vox),
note_skin: parseInt(data.note_skin),
full_combo_splash: parseInt(data.full_combo_splash),
frame: Number(data.frame),
turntable: Number(data.turntable),
note_burst: Number(data.note_burst),
menu_music: Number(data.menu_music),
lane_cover: Number(data.lane_cover),
category_vox: Number(data.category_vox),
note_skin: Number(data.note_skin),
full_combo_splash: Number(data.full_combo_splash),
disable_musicpreview: StoB(data.disable_musicpreview),
note_beam: parseInt(data.note_beam),
judge_font: parseInt(data.judge_font),
pacemaker_cover: parseInt(data.pacemaker_cover),
note_beam: Number(data.note_beam),
judge_font: Number(data.judge_font),
pacemaker_cover: Number(data.pacemaker_cover),
vefx_lock: StoB(data.vefx_lock),
effect: parseInt(data.effect),
bomb_size: parseInt(data.bomb_size),
effect: Number(data.effect),
bomb_size: Number(data.bomb_size),
disable_hcn_color: StoB(data.disable_hcn_color),
first_note_preview: parseInt(data.first_note_preview),
first_note_preview: Number(data.first_note_preview),
rank_folder: StoB(data.rank_folder),
clear_folder: StoB(data.clear_folder),
@ -240,17 +240,17 @@ export const updateCustomSettings = async (data) => {
hide_iidxid: StoB(data.hide_iidxid),
disable_beginner_option: StoB(data.disable_beginner_option),
qpro_head: parseInt(data.qpro_head),
qpro_hair: parseInt(data.qpro_hair),
qpro_face: parseInt(data.qpro_face),
qpro_hand: parseInt(data.qpro_hand),
qpro_body: parseInt(data.qpro_body),
qpro_back: parseInt(data.qpro_back),
qpro_head: Number(data.qpro_head),
qpro_hair: Number(data.qpro_hair),
qpro_face: Number(data.qpro_face),
qpro_hand: Number(data.qpro_hand),
qpro_body: Number(data.qpro_body),
qpro_back: Number(data.qpro_back),
}
await DB.Upsert<custom>(data.refid, {
collection: "custom",
version: parseInt(data.version)
version: Number(data.version)
},
{
$set: customize
@ -270,12 +270,12 @@ export const updateCustomSettings = async (data) => {
if (data.version > 27) {
await DB.Upsert<lightning_custom>(data.refid, {
collection: "lightning_custom",
version: parseInt(data.version)
version: Number(data.version)
},
{
$set: {
premium_skin: parseInt(data.lm_skin),
premium_bg: parseInt(data.lm_bg),
premium_skin: Number(data.lm_skin),
premium_bg: Number(data.lm_bg),
}
});
}

View File

@ -484,11 +484,36 @@ export function register() {
default: 3,
});
// Pinky Crush //
R.Config("pc_event", {
name: "Event Phase (PC)",
desc: "ピンキージャンプアップ! / ピンキーアンダーグラウンド",
type: "integer",
default: 2,
});
R.Config("pc_event1", {
name: "ピンキージャンプアップ!",
desc: "ピンキージャンプアップ! Phase",
type: "integer",
default: 3,
});
R.Config("pc_event2", {
name: "ピンキーアンダーグラウンド",
desc: "ピンキーアンダーグラウンド Phase",
type: "integer",
default: 3,
});
R.Config("pc_extraboss", {
name: "Extra Boss Phase (PC)",
type: "integer",
default: 3,
});
// TODO:: Make a list of customize items //
R.WebUIEvent("iidxGetProfile", async (data, send: WebUISend) => {
const pcdata = await DB.FindOne(data.refid, {
collection: "pcdata",
version: parseInt(data.version),
version: Number(data.version),
});
return send.json({
@ -498,12 +523,12 @@ export function register() {
R.WebUIEvent("iidxGetSetting", async (data, send: WebUISend) => {
const custom = await DB.FindOne(data.refid, {
collection: "custom",
version: parseInt(data.version),
version: Number(data.version),
});
const lm_custom = await DB.FindOne(data.refid, {
collection: "lightning_custom",
version: parseInt(data.version),
version: Number(data.version),
});
return send.json({
@ -529,6 +554,7 @@ export function register() {
R.Route(`IIDX29${method}`, handler);
R.Route(`IIDX30${method}`, handler);
R.Route(`IIDX31${method}`, handler);
R.Route(`IIDX32${method}`, handler);
};
MultiRoute("pc.common", pccommon);

View File

@ -0,0 +1,50 @@
export interface activity {
collection: "activity";
version: number;
date: number;
play_style: number;
music_num: number;
play_time: number;
keyboard_num: number;
scratch_num: number;
clear_update_num: number[];
score_update_num: number[];
}
export interface activity_mybest {
collection: "activity_mybest";
version: number;
play_style: number;
play_side: number;
music_id: number;
note_id: number;
target_graph: number;
target_score: number;
pacemaker: number;
best_clear: number;
best_score: number;
best_misscount: number;
now_clear: number;
now_score: number;
now_misscount: number;
now_pgreat: number;
now_great: number;
now_good: number;
now_bad: number;
now_poor: number;
now_combo: number;
now_fast: number;
now_slow: number;
option: number;
option_2: number;
ghost_gauge_data: string;
gauge_type: number;
result_type: number;
is_special_result: number;
update_date: number;
}

View File

@ -0,0 +1,10 @@
export interface extra_boss {
collection: "extra_boss";
version: number;
phase: number;
extra: number;
extra_b: number;
onemore: number;
onemore_b: number;
}

View File

@ -107,6 +107,15 @@ export interface lightning_musicfilter {
value1: number;
}
export interface lightning_musicfilter_sort {
collection: "lightning_musicfilter_sort";
version: number;
play_style: number;
folder_id: number;
sort: number;
}
export interface musicfilter_data {
play_style: number;
folder_id: number;
@ -116,6 +125,12 @@ export interface musicfilter_data {
value1: number;
}
export interface musicfilter_sort_data {
play_style: number;
folder_id: number;
sort: number;
}
export const lm_playdata = {
sp_num: 0,
dp_num: 0,

View File

@ -19,6 +19,7 @@ export interface pcdata {
mcomb: number;
ncomb: number;
mode: number;
category: number; // attribute (Pinky Crush) //
pmode: number;
liflen: number;
judge: number; // attribute (tricoro) //
@ -33,6 +34,7 @@ export interface pcdata {
fcombo: number[];
ngrade: number; // attribute (BISTROVER) //
rtype: number; // attribute (Heroic Verse) //
bgnflg: number; // attribute (Pinky Crush) //
player_kind: number; // attribute (EPOLIS) //
gpos: number;
@ -92,13 +94,16 @@ export interface pcdata {
d_visualization: number;
s_classic_hispeed: number; // EPOLIS //
d_classic_hispeed: number;
movie_thumbnail: number; // Pinky Crush //
secret_flg1: string[]; // secret (Heroic Verse) //
secret_flg2: string[];
secret_flg3: string[];
secret_flg4: string[];
secret_flg5: string[]; // secret (Pinky Crush) //
leggendaria_flg1: string[]; // leggendaria (BISTROVER) //
leggendaria_flg2: string[]; // leggendaria (Pinky Crush) //
dr_sprank: number[]; // djrank (Heroic Verse) //
dr_sppoint: number[];
@ -153,6 +158,10 @@ export interface pcdata {
st_dp_mission: number;
st_sp_level: number;
st_dp_level: number;
st_sp_level_h: number; // Pinky Crush //
st_dp_level_h: number;
st_sp_level_exh: number; // Pinky Crush //
st_dp_level_exh: number;
st_sp_mplay: number;
st_dp_mplay: number;
st_last_select: number;
@ -1576,3 +1585,126 @@ export const IIDX31_pcdata = {
event_last_select_id: -1,
event_skip: false,
}
export const IIDX32_pcdata = {
version: 32,
spnum: 0,
dpnum: 0,
sach: 0,
dach: 0,
mode: 0,
category: 0,
pmode: 0,
ngrade: 0,
rtype: 0,
bgnflg: 0,
player_kind: 0,
sp_opt: 0,
dp_opt: 0,
dp_opt2: 0,
gpos: 0,
s_sorttype: 0,
d_sorttype: 0,
s_pace: 0,
d_pace: 0,
s_gno: 0,
d_gno: 0,
s_sub_gno: 0,
d_sub_gno: 0,
s_gtype: 0,
d_gtype: 0,
s_sdlen: 0,
d_sdlen: 0,
s_sdtype: 0,
d_sdtype: 0,
s_timing: 0,
d_timing: 0,
s_notes: 0,
d_notes: 0,
s_judge: 0,
d_judge: 0,
s_judgeAdj: 0,
d_judgeAdj: 0,
s_hispeed: 0,
d_hispeed: 0,
s_liflen: 0,
d_liflen: 0,
s_disp_judge: 0,
d_disp_judge: 0,
s_opstyle: 0,
d_opstyle: 0,
s_graph_score: 0,
d_graph_score: 0,
s_auto_scrach: 0,
d_auto_scrach: 0,
s_gauge_disp: 0,
d_gauge_disp: 0,
s_lane_brignt: 0,
d_lane_brignt: 0,
s_camera_layout: 0,
d_camera_layout: 0,
s_ghost_score: 0,
d_ghost_score: 0,
s_tsujigiri_disp: 0,
d_tsujigiri_disp: 0,
s_auto_adjust: 0,
d_auto_adjust: 0,
s_timing_split: 0,
d_timing_split: 0,
s_visualization: 0,
d_visualization: 0,
s_classic_hispeed: 0,
d_classic_hispeed: 0,
movie_thumbnail: 0,
secret_flg1: Array<string>(3).fill("-1"),
secret_flg2: Array<string>(3).fill("-1"),
secret_flg3: Array<string>(3).fill("-1"),
secret_flg4: Array<string>(3).fill("-1"),
secret_flg5: Array<string>(3).fill("-1"),
leggendaria_flg1: Array<string>(3).fill("-1"),
leggendaria_flg2: Array<string>(3).fill("-1"),
tourism_secret_flg1: Array<string>(3).fill("-1"),
tourism_secret_flg2: Array<string>(3).fill("-1"),
nr_spradar: Array<number>(6).fill(0),
nr_dpradar: Array<number>(6).fill(0),
st_enemy_damage: 0,
st_progress: 0,
st_total_point: 0,
st_enemy_defeat_flg: 0,
st_is_track_ticket: false,
st_sp_level: 0,
st_dp_level: 0,
st_sp_level_h: 0,
st_dp_level_h: 0,
st_sp_level_exh: 0,
st_dp_level_exh: 0,
st_sp_fluctuation: 0,
st_dp_fluctuation: 0,
st_mission_clear_num: 0,
st_sp_mplay: 0,
st_dp_mplay: 0,
st_tips_read_list: 0,
sgid: -1,
dgid: -1,
achi_lastweekly: 0,
achi_pack: 0,
achi_packcomp: 0,
achi_rivalcrush: 0,
achi_visitflg: 0,
achi_weeklynum: 0,
deller: 0,
orb: 0,
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
}

View File

@ -0,0 +1,155 @@
IIDX32pc(status="0")
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode category=pcdata.category pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype bgnflg=pcdata.bgnflg 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 movie_thumbnail=pcdata.movie_thumbnail)
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
dellar_bonus(rate="100")
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
flg5(__type="s64" __count="3") -1 -1 -1
leggendaria
flg1(__type="s64" __count="3") -1 -1 -1
flg2(__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}
- for (let fs of fsArray)
sort(play_style=fs.play_style folder_id=fs.folder_id sort=fs.sort)
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="s32" __count="4") #{lm_custom.premium_skin} #{lm_custom.premium_bg} 0 0
qprodata(__type="u32" __count="6") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body} #{custom.qpro_back}
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)
rlist_sub
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_level_h=pcdata.st_sp_level_h dp_level_h=pcdata.st_dp_level_h sp_level_exh=pcdata.st_sp_level_exh dp_level_exh=pcdata.st_dp_level_exh 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(pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp last_weekly=pcdata.achi_lastweekly weekly_num=pcdata.achi_weeklynum visit_flg=pcdata.achi_visitflg rival_crush=pcdata.achi_rivalcrush)
deller(deller=pcdata.deller)
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
old_linkage_secret_flg(triple_tribe="-1" triple_tribe_2="-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
default_chat
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_booth_id=pcdata.event_last_select_id)
if pcdata.event_skip == true
is_skip
- for (let evt of evtArray)
booth_data(booth_id=evt.booth_id play_num=evt.play_num play_num_uc=evt.play_num_uc success_num=evt.success_num last_select_qpro_index=evt.last_select_qpro_index booth_prog=evt.booth_prog customer_n=evt.customer_n customer_h=evt.customer_h customer_a=evt.customer_a customer_l=evt.customer_l hire_num=evt.hire_num)
flg_l(__type="bool") #{evt.flg_l}
- for (let evt2 of evtArray2)
booth_qpro_data(booth_id=evt2.booth_id index=evt2.index head_parts=evt2.head_parts hair_parts=evt2.hair_parts face_parts=evt2.face_parts body_parts=evt2.body_parts hand_parts=evt2.hand_parts param_n=evt2.param_n param_h=evt2.param_h param_a=evt2.param_a param_l=evt2.param_l exp=evt2.exp performance_date=evt2.performance_date)
- for (let evtRival of evtArray3)
rival(index=evtRival.index name=evtRival.name iidx_id=evtRival.iidx_id head=evtRival.head hair=evtRival.hair face=evtRival.face body=evtRival.body hand=evtRival.hand back=evtRival.back)
if pinky_ug != null
event_2(event_play_num=pinky_ug.event_play_num last_select_hall_id=pinky_ug.last_select_hall_id)
- for (let evt4 of pinky_ug_hall)
hall_data(hall_id=evt4.hall_id play_num=evt4.play_num last_select_skill_index=evt4.last_select_skill_index hall_prog=evt4.hall_prog defeat_num=evt4.defeat_num pp_0=evt4.pp_0 pp_1=evt4.pp_1 pp_2=evt4.pp_2 pp_3=evt4.pp_3 pp_4=evt4.pp_4 pp_5=evt4.pp_5 skill_1=evt4.skill_1 skill_2=evt4.skill_2 skill_3=evt4.skill_3 cool_1=evt4.cool_1 cool_2=evt4.cool_2 cool_3=evt4.cool_3 param_1=evt4.param_1 param_2=evt4.param_2 param_3=evt4.param_3)
- for (let evt5 of pinky_ug_qpro)
hall_qpro_data(hall_id=evt5.hall_id index=evt5.index head_parts=evt5.head_parts hair_parts=evt5.hair_parts face_parts=evt5.face_parts body_parts=evt5.body_parts hand_parts=evt5.hand_parts)
- for (let evtRival of evtArray3)
rival(index=evtRival.index name=evtRival.name iidx_id=evtRival.iidx_id head=evtRival.head hair=evtRival.hair face=evtRival.face body=evtRival.body hand=evtRival.hand back=evtRival.back)
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_3(music_list="-1")
triple_tribe_4(music_list="-1")
//-reflecbeat_event(music_list="-1")
//-beatstream_event(music_list="-1")
//-museca_event(music_list="-1")
//-pawapuro(prog="" power="")
language_setting(language=profile.language)
movie_agreement(agreement_version="1")
movie_setting
hide_name(__type="bool") 0
- for (let ebe of ebeArray)
extra_boss_event(phase=ebe.phase extra=ebe.extra extra_b=ebe.extra_b onemore=ebe.onemore onemore_b=ebe.onemore_b)
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
badge
- for (let b of bArray)
badge_data(category_id=b.id badge_flg_id=b.flg_id badge_flg=b.flg)
activity
today(day_id=activityDayId date=activityTimestamp)
if activityTodaySP != null
today_data(play_style=activityTodaySP.play_style music_num=activityTodaySP.music_num play_time=activityTodaySP.play_time keyboard_num=activityTodaySP.keyboard_num scratch_num=activityTodaySP.scratch_num)
clear_update_num(__type="s32" __count="13") #{activityTodaySP.clear_update_num[0]} #{activityTodaySP.clear_update_num[1]} #{activityTodaySP.clear_update_num[2]} #{activityTodaySP.clear_update_num[3]} #{activityTodaySP.clear_update_num[4]} #{activityTodaySP.clear_update_num[5]} #{activityTodaySP.clear_update_num[6]} #{activityTodaySP.clear_update_num[7]} #{activityTodaySP.clear_update_num[8]} #{activityTodaySP.clear_update_num[9]} #{activityTodaySP.clear_update_num[10]} #{activityTodaySP.clear_update_num[11]} #{activityTodaySP.clear_update_num[12]}
score_update_num(__type="s32" __count="13") #{activityTodaySP.score_update_num[0]} #{activityTodaySP.score_update_num[1]} #{activityTodaySP.score_update_num[2]} #{activityTodaySP.score_update_num[3]} #{activityTodaySP.score_update_num[4]} #{activityTodaySP.score_update_num[5]} #{activityTodaySP.score_update_num[6]} #{activityTodaySP.score_update_num[7]} #{activityTodaySP.score_update_num[8]} #{activityTodaySP.score_update_num[9]} #{activityTodaySP.score_update_num[10]} #{activityTodaySP.score_update_num[11]} #{activityTodaySP.score_update_num[12]}
if activityTodayDP != null
today_data(play_style=activityTodayDP.play_style music_num=activityTodayDP.music_num play_time=activityTodayDP.play_time keyboard_num=activityTodayDP.keyboard_num scratch_num=activityTodayDP.scratch_num)
clear_update_num(__type="s32" __count="13") #{activityTodayDP.clear_update_num[0]} #{activityTodayDP.clear_update_num[1]} #{activityTodayDP.clear_update_num[2]} #{activityTodayDP.clear_update_num[3]} #{activityTodayDP.clear_update_num[4]} #{activityTodayDP.clear_update_num[5]} #{activityTodayDP.clear_update_num[6]} #{activityTodayDP.clear_update_num[7]} #{activityTodayDP.clear_update_num[8]} #{activityTodayDP.clear_update_num[9]} #{activityTodayDP.clear_update_num[10]} #{activityTodayDP.clear_update_num[11]} #{activityTodayDP.clear_update_num[12]}
score_update_num(__type="s32" __count="13") #{activityTodayDP.score_update_num[0]} #{activityTodayDP.score_update_num[1]} #{activityTodayDP.score_update_num[2]} #{activityTodayDP.score_update_num[3]} #{activityTodayDP.score_update_num[4]} #{activityTodayDP.score_update_num[5]} #{activityTodayDP.score_update_num[6]} #{activityTodayDP.score_update_num[7]} #{activityTodayDP.score_update_num[8]} #{activityTodayDP.score_update_num[9]} #{activityTodayDP.score_update_num[10]} #{activityTodayDP.score_update_num[11]} #{activityTodayDP.score_update_num[12]}
weekly
week_data(play_style="0")
- for (let a of activityWeekSP)
week(week_index=a.week_index week_id=a.week_id date=a.date music_num=a.music_num play_time=a.play_time keyboard_num=a.keyboard_num scratch_num=a.scratch_num)
clear_update_num(__type="s32" __count="13") #{a.clear_update_num[0]} #{a.clear_update_num[1]} #{a.clear_update_num[2]} #{a.clear_update_num[3]} #{a.clear_update_num[4]} #{a.clear_update_num[5]} #{a.clear_update_num[6]} #{a.clear_update_num[7]} #{a.clear_update_num[8]} #{a.clear_update_num[9]} #{a.clear_update_num[10]} #{a.clear_update_num[11]} #{a.clear_update_num[12]}
score_update_num(__type="s32" __count="13") #{a.score_update_num[0]} #{a.score_update_num[1]} #{a.score_update_num[2]} #{a.score_update_num[3]} #{a.score_update_num[4]} #{a.score_update_num[5]} #{a.score_update_num[6]} #{a.score_update_num[7]} #{a.score_update_num[8]} #{a.score_update_num[9]} #{a.score_update_num[10]} #{a.score_update_num[11]} #{a.score_update_num[12]}
week_data(play_style="1")
- for (let b of activityWeekDP)
week(week_index=b.week_index week_id=b.week_id date=b.date music_num=b.music_num play_time=b.play_time keyboard_num=b.keyboard_num scratch_num=b.scratch_num)
clear_update_num(__type="s32" __count="13") #{b.clear_update_num[0]} #{b.clear_update_num[1]} #{b.clear_update_num[2]} #{b.clear_update_num[3]} #{b.clear_update_num[4]} #{b.clear_update_num[5]} #{b.clear_update_num[6]} #{b.clear_update_num[7]} #{b.clear_update_num[8]} #{b.clear_update_num[9]} #{b.clear_update_num[10]} #{b.clear_update_num[11]} #{b.clear_update_num[12]}
score_update_num(__type="s32" __count="13") #{b.score_update_num[0]} #{b.score_update_num[1]} #{b.score_update_num[2]} #{b.score_update_num[3]} #{b.score_update_num[4]} #{b.score_update_num[5]} #{b.score_update_num[6]} #{b.score_update_num[7]} #{b.score_update_num[8]} #{b.score_update_num[9]} #{b.score_update_num[10]} #{b.score_update_num[11]} #{b.score_update_num[12]}
mynews
- for (let a of activityMynews)
detail(play_style=a.play_style kind=a.kind news_no=a.news_no index=a.index day_id=a.day_id music_id=a.music_id note_id=a.note_id best_score=a.best_score now_score=a.now_score now_clear=a.now_clear news_time=a.news_time)
best_result
- for (let a of activityMybest)
best_data(play_style=a.play_style kind=a.kind play_side=a.play_side music_id=a.music_id note_id=a.note_id target_graph=a.target_graph target_score=a.target_score pacemaker=a.pacemaker best_clear=a.best_clear best_score=a.best_score best_misscount=a.best_misscount now_clear=a.now_clear now_score=a.now_score now_misscount=a.now_misscount now_pgreat=a.now_pgreat now_great=a.now_great now_good=a.now_good now_bad=a.now_bad now_poor=a.now_poor now_combo=a.now_combo now_fast=a.now_fast now_slow=a.now_slow option=a.option option2=a.option_2 gauge_type=a.gauge_type result_type=a.result_type update_date=a.update_date)
ghost_gauge_data(__type="bin") #{a.ghost_gauge_data}
is_special_result(__type="bool") #{a.is_special_result}

View File

@ -98,7 +98,7 @@ export function GetVersion(info: EamuseInfo) {
case "JDZ": return 18;
case "KDZ": return 19;
case "LDJ":
version = parseInt(info.module.slice(4, 6));
version = Number(info.module.slice(4, 6));
if (_.isNaN(version)) version = 20;
break;
}
@ -240,3 +240,7 @@ export async function ReftoQPRO(refid: string, version: number) {
return qpro_data;
}
export function GetWeekId(date: Date) {
return Math.ceil((((date.getTime() - Date.UTC(date.getFullYear(), 0, 1)) / 86400000) + new Date(date.getFullYear(), 0, 1).getDay()) / 7);
}

View File

@ -21,7 +21,8 @@
28,
29,
30,
31
31,
32
];
div

View File

@ -23,7 +23,8 @@
28,
29,
30,
31
31,
32
];
div