Merge pull request #94 from duel0213/iidx

IIDX: Added Initial support for Sparkle Shower, DistorteD ~ 9th Style
This commit is contained in:
Freddie W
2026-09-19 02:07:30 +08:00
committed by GitHub
43 changed files with 10374 additions and 1250 deletions
+36 -3
View File
@@ -1,10 +1,15 @@
# beatmaniaIIDX
Plugin Version: **v0.1.17**
Plugin Version: **v0.1.18**
---
Supported Versions
- beatmaniaIIDX 9th Style (JAH)
- beatmaniaIIDX 10th Style (JAE)
- beatmaniaIIDX 11 IIDXRED (JAB)
- beatmaniaIIDX 12 HAPPY SKY (JAC)
- beatmaniaIIDX 13 DistorteD (JAC)
- beatmaniaIIDX 14 GOLD (2007072301)
- beatmaniaIIDX 15 DJ TROOPERS (2008031100)
- beatmaniaIIDX 16 EMPRESS (2009072200)
@@ -24,6 +29,7 @@ Supported Versions
- beatmaniaIIDX 30 RESIDENT (2023090500)
- beatmaniaIIDX 31 EPOLIS (2024082600)
- beatmaniaIIDX 32 Pinky Crush (2025082500)
- beatmaniaIIDX 33 Sparkle Shower (2026081900)
---
@@ -40,12 +46,15 @@ Features
Known Issues
- Clear Lamps may display invalid lamps due to missing conversion code
- DJ LEVEL folders are broken in ~ DJ TROOPERS due to missing rank\_id
- DJ LEVEL folders are broken before EMPRESS due to missing rank\_id
- LEGGENDARIA play records before HEROIC VERSE may not display on higher version due to missing conversion code
- SUPER FUTURE 2323 play records doesn't display on other version due to missing conversion code
- ONE MORE EXTRA STAGE progress won't save (can't test this due to skill issue)
- DOUBLE PLAY or two persons play may not work properly (can't test this due to skill issue)
- New card cannot be registered before DistorteD (this is due to those games uses magnetic card)
- 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)
- Some of badges aren't saving in RESIDENT and above (needs to figure out name to id)
- Some of records may have invalid MISS COUNT
---
@@ -168,3 +177,27 @@ Changelogs
**v0.1.17**
- Added Initial support for Pinky Crush
- Fixed where note\_size, lift\_cover, note\_beam\_size doesn't get saved in WebUI (EPOLIS ~)
- Fixed STEP UP related issues
- Unable to use STEP UP ticket
- HARD / EX HARD folder display low level charts regardless player skill
- Fixed HEROIC VERSE issues
- Unable to complete registration
- Crash after Event room choose
- Fixed where unable to complete registration or login (tricoro)
**v0.1.18**
- Added Initial support for Sparkle Shower
- Added Initial support for DistorteD, HAPPY SKY, IIDXRED, 10th Style, 9th Style
- Requires updated version of asphyxia-core otherwise plugin won't register [v1.70b]
- Migration from (previous version) menu will not work
- Existing card with no current version user data will treat as new card on registration but it will use existing profile data
- New card cannot be registered (~ HAPPY SKY)
- Need to invoke new card registration to core.
- 9th Style will use seperate user data database as its using raw blob
- Added ALL/STORE/RIVAL TOP pacemaker support
- Added basic save support of STORY mode (Resort Anthem)
- Fixed where tricoro does not work after Asphyxia Core update
- Fixed where unable to login after playing a while on old versions
- Improved WebUI customization settings with descriptive dropdown menus (@COLV9)
- Improved WebUI score viewer with song title mapping, detailed difficulty breakdown and sorting (@COLV9)
File diff suppressed because it is too large Load Diff
+46
View File
@@ -90,5 +90,51 @@
"kind": 0
}
}
},
"33": {
"0": {
"15": {
"music_id": [ 30068, 24057, 27033, 29045 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"16": {
"music_id": [ 14029, 18001, 16003, 27060 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"17": {
"music_id": [ 27000, 25004, 28084, 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": [ 30032, 26049, 19038, 16016 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"16": {
"music_id": [ 21073, 14021, 29049, 25017 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"17": {
"music_id": [ 31059, 17017, 24014, 28005 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
},
"18": {
"music_id": [ 25007, 29017, 19002, 9028 ],
"class_id": [ 3, 3, 3, 3 ],
"kind": 0
}
}
}
}
+33
View File
@@ -0,0 +1,33 @@
{
"33": {
"26069": { "kind": 0 },
"24026": { "kind": 0 },
"8023": { "kind": 0 },
"28050": { "kind": 0 },
"30029": { "kind": 0 },
"31049": { "kind": 0 },
"15025": { "kind": 0 },
"20064": { "kind": 0 },
"18008": { "kind": 0 },
"30100": { "kind": 0 },
"33058": { "kind": 0 },
"12012": { "kind": 0 },
"24009": { "kind": 0 },
"23087": { "kind": 0 },
"28039": { "kind": 0 },
"26055": { "kind": 0 },
"25006": { "kind": 0 },
"22016": { "kind": 0 },
"27075": { "kind": 0 },
"18006": { "kind": 0 },
"17058": { "kind": 0 },
"31050": { "kind": 0 },
"20082": { "kind": 0 },
"32084": { "kind": 0 },
"32110": { "kind": 0 },
"32081": { "kind": 0 },
"31025": { "kind": 0 },
"32085": { "kind": 0 },
"33001": { "kind": 0 }
}
}
+105 -82
View File
@@ -1,82 +1,105 @@
{
"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 }
},
"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 }
}
}
{
"24": {
"24061": { "kind": 0 }
},
"26": {
"26002": { "kind": 0 },
"26006": { "kind": 0 },
"26022": { "kind": 0 },
"26045": { "kind": 0 }
},
"27": {
"27071": { "kind": 0 },
"27073": { "kind": 0 }
},
"28": {
"28001": { "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 },
"31023": { "kind": 0 },
"31024": { "kind": 0 },
"31025": { "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 }
},
"32": {
"32019": { "kind": 0 },
"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 },
"32101": { "kind": 0 },
"32102": { "kind": 0 },
"32103": { "kind": 0 },
"32104": { "kind": 0 },
"32110": { "kind": 0 },
"32111": { "kind": 0 }
},
"33": {
"33001": { "kind": 0 },
"33007": { "kind": 0 },
"33049": { "kind": 0 },
"33078": { "kind": 0 },
"33081": { "kind": 0 },
"33082": { "kind": 0 },
"33083": { "kind": 0 },
"33084": { "kind": 0 },
"33085": { "kind": 0 },
"33095": { "kind": 0 },
"33096": { "kind": 0 },
"33105": { "kind": 0 },
"33106": { "kind": 0 },
"33115": { "kind": 0 },
"33116": { "kind": 0 },
"33117": { "kind": 0 },
"33118": { "kind": 0 },
"33119": { "kind": 0 },
"33120": { "kind": 0 },
"33121": { "kind": 0 },
"33129": { "kind": 0 },
"33130": { "kind": 0 },
"33131": { "kind": 0 },
"33132": { "kind": 0 },
"33133": { "kind": 0 }
}
}
+135 -69
View File
@@ -16,6 +16,51 @@ export const gssysteminfo: EPR = async (info, data, send) => {
arena_cpu_define: [],
}
switch (version) {
case 33:
case 32:
result.arena_schedule.phase = K.ITEM("u8", 3);
result.arena_schedule = Object.assign(result.arena_schedule, { season: K.ITEM("u8", 0) }); // arena season for online //
case 31:
result.arena_schedule = Object.assign(result.arena_schedule, { rule_type: K.ITEM("u8", 0) }); // arena rule for online //
default:
break;
}
for (let s = 0; s < 2; ++s) {
for (let c = 0; c < 20; ++c) {
// arena_music_difficult //
result.arena_music_difficult.push({
play_style: K.ITEM("s32", s),
arena_class: K.ITEM("s32", c),
low_difficult: K.ITEM("s32", 1),
high_difficult: K.ITEM("s32", 12),
is_leggendaria: K.ITEM("bool", 1),
force_music_list_id: K.ITEM("s32", 0),
});
// arena_cpu_define //
result.arena_cpu_define.push({
play_style: K.ITEM("s32", s),
arena_class: K.ITEM("s32", c),
grade_id: K.ITEM("s32", IIDX_CPUS[s][c][0]),
low_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][1]),
high_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][2]),
is_leggendaria: K.ITEM("bool", IIDX_CPUS[s][c][3]),
});
// maching_class_range //
result.maching_class_range.push({
play_style: K.ITEM("s32", s),
matching_class: K.ITEM("s32", c),
low_arena_class: K.ITEM("s32", 1),
high_arena_class: K.ITEM("s32", 20),
});
}
}
// 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])) {
@@ -33,75 +78,53 @@ export const gssysteminfo: EPR = async (info, data, send) => {
});
}
switch (version) {
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 //
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"));
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", 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]),
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),
});
if (version >= 31) {
result = Object.assign(result, { grade_course: [] });
let grade = JSON.parse(await IO.ReadFile("data/grade.json", "utf-8")); // following datas are made up needs to figure out correct way to do it //
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", 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]),
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 //
for (let s = 0; s < 2; ++s) {
for (let c = 0; c < 20; ++c) {
result.arena_music_difficult.push({
play_style: K.ITEM("s32", s),
arena_class: K.ITEM("s32", c),
low_difficult: K.ITEM("s32", 1),
high_difficult: K.ITEM("s32", 12),
is_leggendaria: K.ITEM("bool", 1),
force_music_list_id: K.ITEM("s32", 0),
});
result.maching_class_range.push({
play_style: K.ITEM("s32", s),
matching_class: K.ITEM("s32", c),
low_arena_class: K.ITEM("s32", 1),
high_arena_class: K.ITEM("s32", 20),
});
result.arena_cpu_define.push({
play_style: K.ITEM("s32", s),
arena_class: K.ITEM("s32", c),
grade_id: K.ITEM("s32", IIDX_CPUS[s][c][0]),
low_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][1]),
high_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][2]),
is_leggendaria: K.ITEM("bool", IIDX_CPUS[s][c][3]),
});
}
}
// following datas are made up needs to figure out correct way to do it //
if (version >= 33) {
let legg_open = JSON.parse(await IO.ReadFile("data/legg_open.json", "utf-8"));
if (!_.isNil(legg_open[version])) {
result = Object.assign(result, { leggendaria_open: [] });
Object.keys(legg_open).forEach(v => {
Object.keys(legg_open[v]).forEach(m => {
if (Number(v) > version) return;
result.leggendaria_open.push({
music_id: K.ITEM("s32", Number(m)),
kind: K.ITEM("s32", legg_open[v][m].kind),
});
});
});
}
}
let eventData = null;
switch (version) {
case 29:
result = Object.assign(result, {
@@ -129,7 +152,7 @@ export const gssysteminfo: EPR = async (info, data, send) => {
break;
case 31:
let totalMetron = 0;
let eventData = await DB.Find(null, {
eventData = await DB.Find(null, {
collection: "event_1",
version: version,
event_data: "myepo_map",
@@ -158,14 +181,57 @@ export const gssysteminfo: EPR = async (info, data, send) => {
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 //
Event1Value: K.ATTR({ val: String(U.GetConfig("pc_event")) }),
Event1Phase: K.ATTR({ val: String(U.GetConfig("pc_event1")) }),
Event2Phase: K.ATTR({ val: String(U.GetConfig("pc_event2")) }),
ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("pc_extraboss")) }),
isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }),
isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
OldBPLBattleOpenPhase: K.ATTR({ val: String(3) }),
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
});
break;
case 33:
let totalScorePoint = 0, totalMissPoint = 0;
let extra_boss = await DB.Find(null, {
collection: "extra_boss",
version: version,
});
if (!_.isNil(extra_boss)) {
extra_boss.forEach((res: any) => {
totalScorePoint += Number(res.progress_point_score);
totalMissPoint += Number(res.progress_point_miss);
});
}
result = Object.assign(result, {
Event1Phase: K.ATTR({ val: String(U.GetConfig("ss_event1")) }),
ExtraBossEvent: K.ATTR({ val: String(U.GetConfig("ss_extraboss")) }),
isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }),
isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }),
WorldTourismOpenList: K.ATTR({ val: String(-1) }),
BPLBattleOpenPhase: K.ATTR({ val: String(2) }),
VocaloidEvent: K.ATTR({ val: String(U.GetConfig("ss_cyber")) }),
KrankAppendSeason: K.ATTR({ val: String(0) }),
the4thEvent: K.ATTR({ val: String(1)} ),
beat: K.ATTR({ val: String(5293) }), // It wasn't. TODO:: Figure out what this value does //
extraevent_2: {
"@attr": {
all_point_score: String(totalScorePoint),
all_point_miss: String(totalMissPoint),
season: String(Number(U.GetConfig("ss_extraboss_season"))),
},
/* up to 32 entries
info: K.ATTR({
gauge_level: String(),
class_id: String(),
score_extra: String(),
miss_extra: String(),
score_onemore: String(),
miss_onemore: String()
}),*/
}
});
break;
+58 -21
View File
@@ -1,18 +1,37 @@
import { pcdata } from "../models/pcdata";
import { grade } from "../models/grade";
import { IDtoRef, GetVersion } from "../util";
import { IDtoRef, GetVersion, GetModel, GetCommand } from "../util";
import { eisei_grade } from "../models/lightning";
import { badge } from "../models/badge";
export const grademethod: EPR = async (info, data, send) => {
const command = GetCommand(data);
switch (command[0]) {
case "raised":
return await graderaised(info, data, send);
default:
break;
}
return send.deny({ format: false, header: false });
}
export const graderaised: EPR = async (info, data, send) => {
const version = GetVersion(info);
const iidxid = Number($(data).attr().iidxid);
const refid = await IDtoRef(iidxid);
const gid = Number($(data).attr().gid);
const gtype = Number($(data).attr().gtype);
const command = GetCommand(data);
let cflg = Number($(data).attr().cflg);
let achi = Number($(data).attr().achi);
let refid = null;
if (version < 11) refid = command[1].split('|')[0];
else if (version < 13) refid = await IDtoRef(Number(command[1]));
else refid = await IDtoRef(Number($(data).attr().iidxid));
const gid = version < 13 ? Number(command[3]) : Number($(data).attr().gid);
const gtype = version < 13 ? Number(command[2]) : Number($(data).attr().gtype);
let cflg = version < 13 ? Number(command[4]) : Number($(data).attr().cflg);
if (version >= 23) cflg = Number($(data).attr().cstage);
let achi = version < 13 ? Number(command[5]) : Number($(data).attr().achi);
let pcdata = await DB.FindOne<pcdata>(refid, { collection: "pcdata", version: version });
let grade = await DB.FindOne<grade>(refid, {
@@ -22,8 +41,6 @@ export const graderaised: EPR = async (info, data, send) => {
gradeId: gid,
});
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")));
if (isTDJ && hasEiseiData) {
@@ -62,6 +79,7 @@ export const graderaised: EPR = async (info, data, send) => {
break;
case 31:
case 32:
case 33:
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);
@@ -118,13 +136,20 @@ export const graderaised: EPR = async (info, data, send) => {
let updatePcdata = false;
let updateGrade = false;
if (_.isNil(pcdata)) return send.deny();
if (version > 9) {
if (version < 23) {
if (gtype == 0 && cflg == 4) updatePcdata = true;
else if (gtype == 1 && cflg == 3) updatePcdata = true;
} else {
if (cflg == 4) updatePcdata = true;
}
}
if (version > 9 && _.isNil(pcdata)) return send.deny();
if (_.isNil(grade)) {
if (cflg == 4) {
if (updatePcdata) {
if (gtype == 0) pcdata.sgid = Math.max(gid, pcdata.sgid);
else pcdata.dgid = Math.max(gid, pcdata.dgid);
updatePcdata = true;
}
updateGrade = true;
@@ -136,11 +161,9 @@ export const graderaised: EPR = async (info, data, send) => {
updateGrade = true;
}
if (cflg == 4) {
if (updatePcdata) {
if (gtype == 0) pcdata.sgid = Math.max(gid, pcdata.sgid);
else pcdata.dgid = Math.max(gid, pcdata.dgid);
updatePcdata = true;
}
}
@@ -192,17 +215,31 @@ export const graderaised: EPR = async (info, data, send) => {
);
}
const maxStage = version < 23 ? (gtype == 0 ? 4 : 3) : 4;
let gradeUser = await DB.Find<grade>(null, {
collection: "grade",
version: version,
style: gtype,
gradeId: gid,
maxStage: 4,
maxStage,
});
return send.object(
K.ATTR({
let result = {
"@attr": {
pnum: String(gradeUser.length),
})
);
}
}
let sendOption: EamuseSendOption = {};
if (version < 14) {
result["@attr"]["method"] = "graderaised";
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
}
}
return send.object(result, sendOption);
};
+526 -140
View File
@@ -1,15 +1,48 @@
import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid, GetWeekId } from "../util";
import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid, GetModel, GetCommand, NumArrayToHex } 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";
import { djtraining } from "../models/djtraining";
import { rival } from "../models/rival";
export const musicmethod: EPR = async (info, data, send) => {
const command = GetCommand(data);
switch (command[0]) {
case "getrank":
return await musicgetrank(info, data, send);
case "getralive":
return await musicgetralive(info, data, send);
case "appoint":
return await musicappoint(info, data, send);
case "reg":
return await musicreg(info, data, send);
case "crate":
return await musiccrate(info, data, send);
default:
break;
}
return send.deny({ format: false, header: false });
}
export const musicgetrank: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const command = GetCommand(data);
let refid = null;
if (version < 11) refid = command[1].split('|')[0];
else if (version < 13) refid = await IDtoRef(Number(command[1]));
else refid = await IDtoRef(Number($(data).attr().iidxid));
let cltype = null;
if (version < 11) cltype = Number(command[2]) == 120 ? 0 : 1;
else if (version < 13) cltype = Number(command[2]); // 0 -> SP, 1 -> DP //
else cltype = Number($(data).attr().cltype);
const music_data: any = (
await DB.Find(refid, {
collection: "score",
@@ -24,14 +57,25 @@ export const musicgetrank: EPR = async (info, data, send) => {
[Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))],
];
let result = null;
let m = [], top = [], b = [], t = [];
let score_data: number[];
let indices, temp_mid = 0;
if (version == 14 || version == 15) {
let result = {
let indices, mapValue, temp_mid = 0;
let arrayType = version < 33 ? "s16" as const : "s32" as const;
if (version < 16) {
result = {
r: [], // v - (-1, beginner/-2, tutorial) //
};
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
if (version < 12) {
indices = cltype === 0 ? [2, 1, 3] : [7, 6, 8];
mapValue = (x => indices.indexOf(x) + (cltype === 0 ? 0 : 3));
} else {
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
mapValue = (x => x > 3 ? x - 3 : x - 1);
}
const musicData: Record<string, string> = {};
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database");
@@ -43,23 +87,52 @@ export const musicgetrank: EPR = async (info, data, send) => {
for (let a = 0; a < 3; a++) {
if (res.esArray[indices[a]] == 0) continue;
let rank_id = _.isNil(res.rArray) ? -1 : res.rArray[indices[a]];
if (version < 10) {
const data = NumArrayToHex([11, 3, 1, 1], [temp_mid, rank_id, res.cArray[indices[a]] > 1 ? 1 : 0, 0]);
if (mapValue(indices[a]) in musicData) {
musicData[mapValue(indices[a])] += data;
} else {
musicData[mapValue(indices[a])] = data;
}
}
else if (version < 12) {
const data = NumArrayToString(version < 11 ? [11, 3, 2, 14] : [11, 3, 3, 13], [temp_mid, res.cArray[indices[a]], rank_id, res.esArray[indices[a]]]);
if (mapValue(indices[a]) in musicData) {
musicData[mapValue(indices[a])] += data;
} else {
musicData[mapValue(indices[a])] = data;
}
} else {
const data = NumArrayToString([7, 4, 13, 3, 3], [verMid[1], a, res.esArray[indices[a]], rank_id, res.cArray[indices[a]]]);
if (verMid[0] in musicData) {
musicData[verMid[0]] += data;
} else {
musicData[verMid[0]] = data;
}
}
}
result.r.push(
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]) })
if (version < 12) {
result.r = Object.entries(musicData).map(([clid, packed]) =>
K.ITEM("str", packed, { cl: String(clid) }),
);
}
else {
result.r = Object.entries(musicData).map(([version, packed]) =>
K.ITEM("str", packed, { v: String(version) }),
);
}
// BEGINNER //
if (res.cArray[0] == 0) return;
result.r.push(
K.ITEM("str", NumArrayToString(
[12, 6],
[temp_mid, res.cArray[0]]
), { v: String("-1") })
);
if (version > 12) {
if (res.cArray[0] == 0) return;
result.r.push(
K.ITEM("str", NumArrayToString(
[12, 6],
[temp_mid, res.cArray[0]]
), { v: String("-1") })
);
}
});
// TUTORIAL //
@@ -77,7 +150,22 @@ export const musicgetrank: EPR = async (info, data, send) => {
);
});
return send.object(result);
let sendOption: EamuseSendOption = {};
if (version < 14) {
result = Object.assign(result, {
"@attr": {
method: "musicgetrank"
}
})
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
}
}
return send.object(result, sendOption);
}
else if (version < 20) {
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
@@ -90,16 +178,16 @@ export const musicgetrank: EPR = async (info, data, send) => {
if (version == 16) score_data = [-1, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i])];
else score_data = [-1, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])];
m.push(K.ARRAY(arrayType, score_data));
m.push(K.ARRAY("s16", score_data));
if (res.cArray[0] != 0) b.push(K.ARRAY("u16", [temp_mid, res.cArray[0]]));
});
for (let i = 0; i < rival_refids.length; i++) {
if (_.isNaN(rival_refids[i][0])) continue;
for (let i = 0; i < 5; i++) {
if (_.isNaN(rival_refids[i][0]) || _.isNil(rival_refids[i][0])) continue;
const rival_score = await DB.Find<score>(String(rival_refids[i][1]),
{ collection: "score", }
{ collection: "score" }
);
rival_score.forEach((res: score) => {
@@ -109,8 +197,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
if (version == 16) score_data = [i, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i])];
else score_data = [i, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])];
m.push(K.ARRAY("s16", score_data));
m.push(K.ARRAY(arrayType, score_data));
});
}
@@ -131,17 +218,19 @@ export const musicgetrank: EPR = async (info, data, send) => {
music_data.forEach((res: score) => {
if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database");
if (res.mid < 0) return; // HOW //
let mVersion = Math.floor(res.mid / 1000);
if (mVersion > version) return;
score_data = [-1, res.mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])];
m.push(K.ARRAY(arrayType, score_data));
m.push(K.ARRAY("s16", score_data));
if (res.cArray[0] != 0) b.push(K.ARRAY("u16", [res.mid, res.cArray[0]]));
});
for (let i = 0; i < rival_refids.length; i++) {
if (_.isNaN(rival_refids[i][0])) continue;
for (let i = 0; i < 5; i++) {
if (_.isNaN(rival_refids[i][0]) || _.isNil(rival_refids[i][0])) continue;
const rival_score = await DB.Find<score>(String(rival_refids[i][1]),
{ collection: "score", }
@@ -152,8 +241,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
if (mVersion > version) return;
score_data = [i, res.mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])];
m.push(K.ARRAY("s16", score_data));
m.push(K.ARRAY(arrayType, score_data));
});
}
@@ -165,6 +253,8 @@ export const musicgetrank: EPR = async (info, data, send) => {
if (score_top.length > 0) {
if (version >= 27) {
score_top.forEach((res) => {
if (res.mid < 0) return;
let mVersion = Math.floor(res.mid / 1000);
if (mVersion > version) return;
@@ -176,7 +266,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
name3: res.names[3],
name4: res.names[4],
}),
detail: K.ARRAY("s16", [res.mid, ...res.clflgs, ...res.scores])
detail: K.ARRAY(arrayType, [res.mid, ...res.clflgs, ...res.scores])
});
});
} else {
@@ -190,7 +280,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
name1: res.names[2],
name2: res.names[3],
}),
detail: K.ARRAY("s16", [res.mid, ...indices.map(i => res.clflgs[i]), ...indices.map(i => res.scores[i])])
detail: K.ARRAY(arrayType, [res.mid, ...indices.map(i => res.clflgs[i]), ...indices.map(i => res.scores[i])])
});
});
}
@@ -206,7 +296,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
else {
return send.success();
}
return send.object({
m,
b,
@@ -214,15 +304,8 @@ export const musicgetrank: EPR = async (info, data, send) => {
});
}
export const musicgetralive: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(Number($(data).attr().iidxid));
export const musicgetranksub: EPR = async (info, data, send) => {
const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP //
const music_data: any = (
await DB.Find(refid, {
collection: "score",
})
);
const rival_refids = [
[Number($(data).attr().iidxid0), await IDtoRef(Number($(data).attr().iidxid0))],
[Number($(data).attr().iidxid1), await IDtoRef(Number($(data).attr().iidxid1))],
@@ -231,49 +314,127 @@ export const musicgetralive: EPR = async (info, data, send) => {
[Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))],
];
let result = {
d: []
};
let myRecord: Record<number, number[]> = {};
let rRecord: Record<number, string> = {};
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];
});
let m = [];
let score_data: number[];
let indices = cltype === 0 ? [0, 1, 2, 3, 4] : [5, 6, 7, 8, 9];
for (let i = 0; i < rival_refids.length; i++) {
if (_.isNaN(rival_refids[i][0])) continue;
const rival_score = await DB.Find<score>(String(rival_refids[i][1]),
{ collection: "score", }
);
for (let i = 0; i < 5; i++) {
if (_.isNaN(rival_refids[i][0]) || _.isNil(rival_refids[i][0])) continue;
// [0~2] - NOPLAY/WIN/LOSE (ANOTHER/HYPER/NORMAL), //
// consider same score as LOSE, tho theres seems DRAW state but game render as LOSE //
// TODO:: figure out what other elements does //
const rival_score = await DB.Find<score>(String(rival_refids[i][1]),
{ collection: "score" }
);
rival_score.forEach((res: score) => {
for (let a = 0; a < indices.length; a++) {
if (res.rArray[indices[a]] == -1) continue;
// [index?, rno?, ...] //
score_data = [i, i, res.mid, indices[a], res.cArray[indices[a]], res.esArray[indices[a]], res.mArray[indices[a]]];
m.push(K.ARRAY("s32", score_data));
}
});
}
}
return send.object({
style: K.ATTR({ type: String(cltype) }),
m,
});
}
export const musicgetralive: EPR = async (info, data, send) => {
const version = GetVersion(info);
const command = GetCommand(data);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const cltype = version < 13 ? Number(command[1]) : Number($(data).attr().cltype); // 0 -> SP, 1 -> DP //
let rival_refids = [];
let music_data = [];
let myRecord: Record<number, number[]> = {};
let rRecord: Record<number, string> = {};
let indices = cltype == 0 ? [1, 2, 3] : [6, 7, 8];
if (version < 13) {
rival_refids = [
[Number(command[2]), await IDtoRef(Number(command[2]))],
[Number(command[3]), await IDtoRef(Number(command[3]))],
[Number(command[4]), await IDtoRef(Number(command[4]))],
[Number(command[5]), await IDtoRef(Number(command[5]))],
[Number(command[6]), await IDtoRef(Number(command[6]))],
];
} else {
rival_refids = [
[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))],
];
music_data = await DB.Find(refid, {
collection: "score",
});
music_data.forEach((res: score) => {
if (res.mid < 0) return;
if (_.isNil(res.cArray)) throw new Error("[music.getralive] There is unsupported entry in Database");
let mid = NewMidToOldMid(res.mid);
let verMid = OldMidToVerMid(mid);
if (verMid[0] > version) return;
myRecord[NewMidToOldMid(res.mid)] = [...res.esArray, ...res.cArray];
});
}
for (let i = 0; i < 5; i++) {
if (_.isNaN(rival_refids[i][0]) || _.isNil(rival_refids[i][0])) continue;
const rival_score = await DB.Find<score>(String(rival_refids[i][1]),
{ collection: "score" }
);
rival_score.forEach((res: score) => {
if (res.mid < 0) return;
let mid = NewMidToOldMid(res.mid);
let verMid = OldMidToVerMid(mid);
if (verMid[0] > version) return;
let scoreArray = Array<number>(15).fill(0);
if (!_.isNil(myRecord[mid])) {
let strResult = "";
if (version < 13) {
const masks = Array<number>(5).fill(0);
for (let a = 0; a < 3; a++) {
let myExscore = myRecord[mid][indices[a]];
let rvExscore = res.esArray[indices[a]];
let mycFlg = myRecord[mid][indices[a] + 10];
let rvcFlg = res.cArray[indices[a]];
if (mycFlg == 0 || rvcFlg == 0) continue;
scoreArray[2 - a] = myExscore > rvExscore ? 1 : 2;
if (res.cArray[indices[a]] > 0) {
masks[i] |= 1 << a;
}
}
}
let strResult = NumArrayToString([6], [verMid[1]]);
strResult += NumArrayToString(Array<number>(15).fill(2), scoreArray);
strResult = NumArrayToString(
[7, 2, 3, 3, 3, 3, 3],
[verMid[1], 0, masks[4], masks[3], masks[2], masks[1], masks[0]]
);
} else {
// [0~2] - NOPLAY/WIN/LOSE (ANOTHER/HYPER/NORMAL), //
// consider same score as LOSE, tho theres seems DRAW state but game render as LOSE //
// TODO:: figure out what other elements does //
if (!_.isNil(myRecord[mid])) {
for (let a = 0; a < 3; a++) {
let myExscore = myRecord[mid][indices[a]];
let rvExscore = res.esArray[indices[a]];
let mycFlg = myRecord[mid][indices[a] + 10];
let rvcFlg = res.cArray[indices[a]];
if (mycFlg == 0 || rvcFlg == 0) continue;
scoreArray[i * 3 + (2 - a)] = myExscore > rvExscore ? 1 : 2;
}
}
strResult = NumArrayToString([6], [verMid[1]]);
strResult += NumArrayToString(Array<number>(15).fill(2), scoreArray);
}
if (verMid[0] in rRecord) {
rRecord[verMid[0]] += strResult;
@@ -283,26 +444,46 @@ export const musicgetralive: EPR = async (info, data, send) => {
});
}
let result = {
d: []
};
for (const key in rRecord) {
result.d.push(
K.ITEM("str", rRecord[key], { v: key })
);
}
return send.object(result);
let sendOption: EamuseSendOption = {};
if (version < 14) {
result = Object.assign(result, {
"@attr": {
method: "musicgetralive"
}
})
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
}
}
return send.object(result, sendOption);
}
export const musicappoint: EPR = async (info, data, send) => {
const version = GetVersion(info);
const command = GetCommand(data);
// clid, ctype, grd, iidxid, lv, mid, subtype //
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 refid = version < 13 ? await IDtoRef(Number(command[5])) : await IDtoRef(Number($(data).attr().iidxid));
const ctype = version < 13 ? Number(command[3]) : Number($(data).attr().ctype);
const subtype = version < 13 ? Number(command[4]) : Number($(data).attr().subtype);
let mid = version < 13 ? Number(command[1]) : Number($(data).attr().mid);
let clid = version < 13 ? Number(command[2]) : Number($(data).attr().clid);
const mapping = [1, 2, 3, 6, 7, 8];
const mapping = version < 12 ? [2, 1, 3, 7, 6, 8] : [1, 2, 3, 6, 7, 8];
if (version < 20) {
mid = OldMidToNewMid(mid);
clid = mapping[clid];
@@ -314,11 +495,14 @@ export const musicappoint: EPR = async (info, data, send) => {
let result: any = {};
// MINE //
const music_data: score | null = await DB.FindOne<score>(refid, {
collection: "score",
mid: mid,
[clid]: { $exists: true },
});
let music_data: score | null = null;
if (!_.isNil(refid)) {
music_data = await DB.FindOne<score>(refid, {
collection: "score",
mid: mid,
[clid]: { $exists: true },
});
}
let mydata, option = 0, option2 = 0;
if (!_.isNil(music_data)) {
@@ -329,8 +513,10 @@ export const musicappoint: EPR = async (info, data, send) => {
}
}
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"));
if (!_.isNil(music_data[clid])) { // can be null as RED doesn't send ghost data //
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
@@ -351,10 +537,11 @@ export const musicappoint: EPR = async (info, data, send) => {
***/
// OTHERS //
let other_refid, other_musicdata: score | null, other_pcdata, other_profile, sdata = null;
if (!_.isNaN(subtype)) {
switch (ctype) {
case 1:
let other_refid, other_musicdata, other_pcdata, other_profile, sdata = null;
let other_musicdatas = [];
switch (ctype) {
case 1:
if (!_.isNaN(subtype)) {
other_refid = await IDtoRef(subtype);
other_profile = await ReftoProfile(other_refid);
other_pcdata = await ReftoPcdata(other_refid, version);
@@ -363,38 +550,103 @@ export const musicappoint: EPR = async (info, data, send) => {
mid: mid,
[clid]: { $exists: true },
});
if (_.isNaN(other_pcdata) || _.isNil(other_musicdata)) break;
}
break;
if (version < 16) {
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]),
riidxid: String(other_profile[2])
case 2: // ALL, STORE TOP //
case 10:
other_musicdatas = await DB.Find<score>(null, {
collection: "score",
mid: mid,
[clid]: { $exists: true },
});
break;
case 8: // RIVAL TOP - refer rival table rather than subtype parsing //
let rivals = await DB.Find<rival>(refid, {
collection: "rival",
play_style: ClidToPlaySide(clid) + 1,
});
if (rivals.length > 0) {
for (const rival of rivals) {
let rival_musicdata = await DB.FindOne<score>(rival.rival_refid, {
collection: "score",
mid: mid,
[clid]: { $exists: true },
});
}
else {
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;
if (!_.isNil(rival_musicdata)) other_musicdatas.push(rival_musicdata);
}
}
break;
default:
break;
default:
break;
}
if (other_musicdatas.length > 0) {
other_musicdatas.sort((a: score, b: score) => b.esArray[clid] - a.esArray[clid]);
other_musicdata = other_musicdatas[0];
other_profile = await ReftoProfile(other_musicdata.__refid);
other_pcdata = await ReftoPcdata(other_musicdata.__refid, version);
}
if (!_.isNil(other_musicdata) && !_.isNil(other_profile)) {
if (version < 16) {
if (!_.isNil(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]),
riidxid: String(other_profile[2])
});
} else {
if (version < 12) {
sdata = {
"@attr": {
score: other_musicdata.esArray[clid],
pid: other_profile[1],
name: other_profile[0],
}
}
}
}
}
else {
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])
});
}
}
if (_.isNil(mydata) && _.isNil(sdata)) return send.success();
if (_.isNil(mydata) && _.isNil(sdata)) {
if (version < 14) {
return send.object({
"@attr": {
method: "musicappoint"
}
}, {
rootName: GetModel(info),
status: version < 13 ? "ENODATA" : 0,
format: false,
header: false,
});
}
return send.success();
}
if (version >= 27) {
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(music_data)) {
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 //
other_musicdata.optArray = Array<number>(10).fill(0);
@@ -441,13 +693,50 @@ export const musicappoint: EPR = async (info, data, send) => {
if (!_.isNil(mydata) && !_.isNil(sdata)) result = { mydata, sdata };
}
if (version < 14) {
if (_.isNil(mydata)) mydata = { "@content": "" };
if (version < 12) {
if (!_.isNil(sdata)) {
return send.object({
"@attr": {
method: "musicappoint"
},
data: sdata,
}, {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
});
}
}
return send.pugFile(`pug/${GetModel(info)}/musicappoint.pug`, {
mydata: mydata["@content"],
sdata: {
score: sdata["@attr"]["score"],
pid: sdata["@attr"]["pid"],
name: sdata["@attr"]["name"],
content: sdata["@content"],
}
}, {
format: false,
header: false,
});
}
return send.object(result);
}
export const musicreg: EPR = async (info, data, send) => {
const version = GetVersion(info);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const command = GetCommand(data);
let refid = null;
if (version < 11) refid = command[1].split('|')[0];
else if (version < 13) refid = await IDtoRef(Number(command[1]));
else refid = await IDtoRef(Number($(data).attr().iidxid));
const shop_data = await DB.FindOne<shop_data>({
collection: "shop_data",
});
@@ -455,20 +744,30 @@ export const musicreg: EPR = async (info, data, send) => {
collection: "profile",
});
const mid_indice = version < 12 ? 3 : 2;
const clid_indice = version < 12 ? 2 : 3;
// wid, oppid, opname, opt, opt2, pside, nocnt, anum //
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 mid = version < 13 ? Number(command[mid_indice]) : Number($(data).attr().mid);
let clid = version < 13 ? Number(command[clid_indice]) : Number($(data).attr().clid);
const pgnum = version < 13 ? Number(command[4]) : Number($(data).attr().pgnum);
const gnum = version < 13 ? Number(command[5]) : Number($(data).attr().gnum);
const mnum = version < 13 ? -1 : Number($(data).attr().mnum);
const cflg = version < 13 ? Number(command[7]) : Number($(data).attr().cflg);
let exscore = (pgnum * 2 + gnum);
let ghost = null, ghost_gauge = null; // Heroic Verse //
let style = 0, option = 0, option_2 = 0, rid = -1;
if (version < 13) rid = Number(command[6]);
else 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 (mid < 0) return send.deny();
// TODO:: Leggendaria until HEROIC VERSE has seperate music_id //
// TODO:: SUPER FUTURE 2323 has seperate music_id //
const mapping = [1, 2, 3, 6, 7, 8];
const mapping = version < 12 ? [2, 1, 3, 7, 6, 8] : [1, 2, 3, 6, 7, 8];
if (version == -1) return send.deny();
else if (version < 20) {
mid = OldMidToNewMid(mid);
@@ -497,12 +796,13 @@ 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 = 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 < 16) ghost = Buffer.from($(data).str("ghost"), "hex").toString("base64");
else ghost = $(data).buffer("ghost").toString("base64");
if (version == 12 || version == 13) {
ghost = Buffer.from($(data).obj["@content"], "hex").toString("base64");
} else if (version == 14 || version == 15) {
ghost = Buffer.from($(data).str("ghost"), "hex").toString("base64");
} else if (version > 15) {
ghost = $(data).buffer("ghost").toString("base64");
}
if (version >= 27) {
ghost_gauge = $(data).buffer("ghost_gauge").toString("base64");
@@ -735,6 +1035,41 @@ export const musicreg: EPR = async (info, data, send) => {
);
}
if (!_.isNil($(data).attr().djt_tier)) {
let tier = Number($(data).attr().djt_tier);
let part = Number($(data).attr().djt_part);
let midx = Number($(data).attr().djt_midx);
const djt_data: djtraining | null = await DB.FindOne<djtraining>(refid, {
collection: "djtraining",
version: version,
play_style: ClidToPlaySide(clid),
tier: tier,
part: part,
midx: midx,
});
let cflag = _.isNil(djt_data) ? cflg : Math.max(cflg, djt_data.cflg);
await DB.Upsert<djtraining>(
refid,
{
collection: "djtraining",
version: version,
play_style: ClidToPlaySide(clid),
tier: tier,
part: part,
midx: midx,
},
{
$set: {
cflg: cflag,
}
}
);
}
let shop_rank = -1, shop_rank_data = [];
let scores: any[][];
scores = (
@@ -826,6 +1161,7 @@ export const musicreg: EPR = async (info, data, send) => {
crate: String(crate),
frate: String(frate),
rankside: String(style),
bestScore: String(update),
},
ranklist: {
"@attr": { total_user_num: String(shop_rank_data.length) },
@@ -834,7 +1170,18 @@ export const musicreg: EPR = async (info, data, send) => {
shopdata: K.ATTR({ rank: String(shop_rank) }),
}
return send.object(result);
let sendOption: EamuseSendOption = {};
if (version < 14) {
result["@attr"]["method"] = "musicreg";
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
};
}
return send.object(result, sendOption);
}
export const musicbreg: EPR = async (info, data, send) => {
@@ -849,6 +1196,8 @@ export const musicbreg: EPR = async (info, data, send) => {
let clid = 0; // SP BEGINNER //
let exscore = (pgnum * 2 + gnum);
if (mid < 0) return send.deny();
if (version < 20) mid = OldMidToNewMid(mid);
const music_data: score | null = await DB.FindOne<score>(refid, {
@@ -921,15 +1270,28 @@ export const musicbreg: EPR = async (info, data, send) => {
}
);
if (version < 14) {
return send.object({
"@attr": {
method: "musicbreg",
}
}, {
rootName: GetModel(info),
format: false,
header: false,
})
}
return send.success();
};
export const musiccrate: EPR = async (info, data, send) => {
const version = GetVersion(info);
const command = GetCommand(data);
const scores = await DB.Find<score>(null, {
collection: "score",
});
const cltype = Number($(data).attr().cltype);
const cltype = version < 13 ? Number(command[1]) : Number($(data).attr().cltype);
let cFlgs: Record<number, number[]> = {},
fcFlgs: Record<number, number[]> = {},
@@ -938,6 +1300,7 @@ export const musiccrate: EPR = async (info, data, send) => {
scores.forEach((res) => {
let mVersion = Math.floor(res.mid / 1000);
if (mVersion > version) return;
if (res.mid < 0) return;
let totalArray = Array<number>(10).fill(0);
let cFlgArray = Array<number>(10).fill(0);
@@ -974,17 +1337,26 @@ export const musiccrate: EPR = async (info, data, send) => {
}
}
let indices = [1, 2, 3, 6, 7, 8];
if (version == 14 || version == 15) {
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[6], cRate[7], cRate[8]])}ZZZZ`;
cdata.push(
K.ITEM("str", str, { ver: String(verMid[0]) })
);
let indices = [1, 2, 3, 6, 7, 8], mapValue = null;
if (version < 16) {
indices = cltype == 0 ? [1, 2, 3] : [6, 7, 8];
if (version < 12) {
indices = cltype === 0 ? [2, 1, 3] : [7, 6, 8];
mapValue = (x => indices.indexOf(x) + (cltype === 0 ? 0 : 3));
for (let a = 0; a < indices.length; a++) {
cdata.push(
K.ITEM("str", NumArrayToString([11, 7], [Number(key), cRate[indices[a]]]), {
clid: String(mapValue(indices[a])),
}),
);
}
} else {
let verMid = OldMidToVerMid(Number(key));
let str = `${NumArrayToString([7, 7, 7, 7], [verMid[1], ...indices.map(i => cRate[i])])}ZZZZ`;
cdata.push(
K.ITEM("str", str, { ver: String(verMid[0]) })
);
}
}
else {
let rateArray = version < 27 ? [...indices.map(i => cRate[i]), ...indices.map(i => fcRate[i])] : [...cRate, ...fcRate];
@@ -994,9 +1366,23 @@ export const musiccrate: EPR = async (info, data, send) => {
}
}
result = (version == 14 || version == 15) ? { cdata } : { c };
result = (version < 16) ? { cdata } : { c };
return send.object(result);
let sendOption: EamuseSendOption = {};
if (version < 14) {
result = {
"@attr": { method: "musiccrate" },
...result
};
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
};
}
return send.object(result, sendOption);
}
// this is not valid response //
File diff suppressed because it is too large Load Diff
+145 -25
View File
@@ -1,25 +1,75 @@
import { expert, ranking } from "../models/ranking";
import { profile } from "../models/profile";
import { GetVersion, IDtoRef } from "../util";
import { GetCommand, GetModel, GetVersion, IDtoRef } from "../util";
export const rankingmethod: EPR = async (info, data, send) => {
const command = GetCommand(data);
switch (command[0]) {
case "entry":
return await rankingentry(info, data, send);
case "getranker":
return await rankinggetranker(info, data, send);
case "getme":
return await rankinggetme(info, data, send);
default:
break;
}
return send.deny({ format: false, header: false });
}
export const rankingentry: EPR = async (info, data, send) => {
// pside //
const version = GetVersion(info);
const refid = await IDtoRef(Number($(data).attr().iidxid));
const command = GetCommand(data);
const coid = Number($(data).attr().coid);
const clid = Number($(data).attr().clid);
let refid: string;
if (version < 11) refid = command[1].split('|')[0];
else if (version < 13) refid = await IDtoRef(Number(command[1]));
else refid = await IDtoRef(Number($(data).attr().iidxid));
const opname = $(data).attr().opname;
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 profile = await DB.FindOne<profile>(refid, {
collection: "profile",
});
const coid = version < 13 ? Number(command[3]) : Number($(data).attr().coid);
const clid = version < 13 ? Number(command[2]) : Number($(data).attr().clid);
let opname: string;
if (version == 9) opname = command[9];
else if (version < 11) opname = command[10];
else if (version < 13) opname = command[9];
else opname = $(data).attr().opname;
let oppid = -1;
if (version == 9) oppid = profile.pid;
else if (version < 11) oppid = Number(command[11]);
else if (version < 13) oppid = Number(command[10]);
else oppid = Number($(data).attr().oppid);
const pgnum = version < 13 ? Number(command[4]) : Number($(data).attr().pgnum);
const gnum = version < 13 ? Number(command[5]) : Number($(data).attr().gnum);
let opt = 0;
if (version == 9) opt = Number(command[8])
else if (version < 13) opt = Number(command[6]);
else opt = Number($(data).attr().opt)
let opt2 = 0;
if (version == 9) opt2 = 0;
else if (version < 13) opt2 = Number(command[7]);
else opt2 = Number($(data).attr().opt2)
const exscore = (pgnum * 2 + gnum);
const cstage = Number($(data).attr().cstage);
let cstage = 0;
if (version < 11) cstage = Number(command[12]);
else if (version < 12) cstage = Number(command[10]);
else if (version < 13) cstage = Number(command[11]);
else cstage = Number($(data).attr().cstage);
const clr = version < 13 ? (cstage == 5 ? 1 : 0) : Number($(data).attr().clr);
const expert_data = await DB.FindOne<expert>(refid, {
collection: "expert",
@@ -80,10 +130,6 @@ export const rankingentry: EPR = async (info, data, send) => {
}
);
const profile = await DB.FindOne<profile>(refid, {
collection: "profile",
});
const name = profile.name;
await DB.Upsert<ranking>(
{
collection: "ranking",
@@ -95,7 +141,7 @@ export const rankingentry: EPR = async (info, data, send) => {
$set: {
pgnum: pgnum,
gnum: gnum,
name: name,
name: profile.name,
opname: opname,
pid: oppid,
udate: 0,
@@ -113,12 +159,27 @@ export const rankingentry: EPR = async (info, data, send) => {
clid: clid,
});
expertUser.sort((a: ranking, b: ranking) => b.exscore - a.exscore);
let rankPos = expertUser.findIndex((a: ranking) => a.name == name);
let rankPos = expertUser.findIndex((a: ranking) => a.name == profile.name);
return send.object(K.ATTR({
anum: String(expertUser.length),
jun: String(rankPos + 1),
}));
let result = {
"@attr": {
anum: String(expertUser.length),
jun: String(rankPos + 1),
}
}
let sendOption: EamuseSendOption = {};
if (version < 14) {
result["@attr"]["method"] = "rankingentry"
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
};
}
return send.object(result, sendOption);
};
export const rankingoentry: EPR = async (info, data, send) => {
@@ -143,11 +204,15 @@ export const rankingoentry: EPR = async (info, data, send) => {
export const rankinggetranker: EPR = async (info, data, send) => {
const version = GetVersion(info);
const command = GetCommand(data);
const coid = version < 13 ? Number(command[1]) : Number($(data).attr().coid);
const clid = version < 13 ? Number(command[2]) : Number($(data).attr().clid);
const ranking = await DB.Find<ranking>({
collection: "ranking",
version: version,
coid: Number($(data).attr().coid),
clid: Number($(data).attr().clid),
coid,
clid,
});
let result = {
ranker: [],
@@ -169,5 +234,60 @@ export const rankinggetranker: EPR = async (info, data, send) => {
);
});
return send.object(result);
let sendOption: EamuseSendOption = {};
if (version < 14) {
result = Object.assign(result, {
"@attr": { method: "rankinggetranker" },
});
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
};
}
return send.object(result, sendOption);
};
export const rankinggetme: EPR = async (info, data, send) => {
const version = GetVersion(info);
const command = GetCommand(data);
const refid = command[1].split('|')[0];
const playStyle = Number(command[2]) == 120 ? 0 : 1;
const expertRecord = await DB.Find<expert>(refid, { collection: "expert", version: version });
if (expertRecord.length == 0) return send.object({ "@attr": { method: "rankinggetme" } }, { header: false, format: false, rootName: GetModel(info) });
let result = {
"@attr": {
method: "rankinggetme",
},
data: [],
};
expertRecord.forEach((res) => {
let indices = playStyle == 0 ? [0, 1, 2] : [3, 4, 5];
for (let a = 0; a < indices.length; a++) {
if (res.cArray[indices[a]] == 0) continue;
result.data.push(
K.ATTR({
coid: String(res.coid),
clid: String(indices[a]),
pgnum: String(res.pgArray[indices[a]]),
gnum: String(res.gArray[indices[a]]),
tcnt: String(1),
cflg: String(res.cArray[indices[a]] == 1 ? 5 : 0),
}),
);
}
});
let sendOption: EamuseSendOption = {
status: "SOK",
rootName: GetModel(info),
format: false,
header: false,
};
return send.object(result, sendOption);
}
+36 -1
View File
@@ -1,5 +1,18 @@
import { convention_data, shop_data } from "../models/shop";
import { GetVersion } from "../util";
import { GetCommand, GetModel, GetVersion } from "../util";
export const shopmethod: EPR = async (info, data, send) => {
const command = GetCommand(data);
switch (command[0]) {
case "sentinfo":
return await shopsentinfo(info, data, send);
default:
break;
}
return send.deny({ format: false, header: false });
}
export const shopgetname: EPR = async (info, data, send) => {
const shop_data = await DB.FindOne<shop_data>({
@@ -87,3 +100,25 @@ export const shopsetconvention: EPR = async (info, data, send) => {
return send.success();
};
export const shopsentinfo: EPR = async (info, data, send) => {
const version = GetVersion(info);
let result = {};
let sendOption: EamuseSendOption = {};
if (version < 14) {
result = Object.assign(result, {
"@attr": { method: "shopsentinfo" },
});
sendOption = {
rootName: GetModel(info),
status: version < 13 ? "SOK" : 0,
format: false,
header: false,
};
} else {
return send.success();
}
return send.object(result, sendOption);
}
+32
View File
@@ -0,0 +1,32 @@
import { userdata } from "../models/userdata";
export const userdataread: EPR = async (info, data, send) => {
const refid = $(data).attr().card.split('|')[0];
const user = await DB.FindOne<userdata>(refid, {
collection: "userdata",
});
if (_.isNil(user)) return send.object({}, { status: "SOK", format: false, header: false });
return send.object({
b: K.ITEM("str", user.userdata),
}, { format: false, header: false });
}
export const userdatawrite: EPR = async (info, data, send) => {
const refid = $(data).attr().card.split('|')[0];
const userdata = $(data).str("b");
await DB.Upsert<userdata>(
refid,
{
collection: "userdata",
},
{
$set: {
userdata
}
}
);
return send.object({}, { status: "SOK", format: false, header: false });
}
+228 -18
View File
@@ -1,11 +1,11 @@
import { profile } from "../models/profile";
import { rival } from "../models/rival";
import { rival, rival_sub } from "../models/rival";
import { custom } from "../models/custom";
import { score, old_score } from "../models/score";
import { lightning_custom } from "../models/lightning";
export const updateRivalSettings = async (data) => {
let update_array = [];
let rival_array = [], rival_sub_array = [];
if (!(_.isEmpty(data.sp_rival1))) {
let update_data = {
@@ -14,7 +14,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.sp_rival1,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -32,7 +32,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.sp_rival2,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -50,7 +50,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.sp_rival3,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -68,7 +68,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.sp_rival4,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -86,7 +86,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.sp_rival5,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -104,7 +104,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.dp_rival1,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -122,7 +122,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.dp_rival2,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -140,7 +140,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.dp_rival3,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -158,7 +158,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.dp_rival4,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -176,7 +176,7 @@ export const updateRivalSettings = async (data) => {
rival_refid: data.dp_rival5,
};
update_array.push(update_data);
rival_array.push(update_data);
} else {
await DB.Remove<rival>(data.refid,
{
@@ -187,18 +187,211 @@ export const updateRivalSettings = async (data) => {
)
}
for (let i = 0; i < update_array.length; i++) {
if (!(_.isEmpty(data.sp_rival1_sub))) {
let update_data = {
play_style: 1,
index: 0,
rival_refid: data.sp_rival1_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 1,
index: 0,
}
)
}
if (!(_.isEmpty(data.sp_rival2_sub))) {
let update_data = {
play_style: 1,
index: 1,
rival_refid: data.sp_rival2_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 1,
index: 1,
}
)
}
if (!(_.isEmpty(data.sp_rival3_sub))) {
let update_data = {
play_style: 1,
index: 2,
rival_refid: data.sp_rival3_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 1,
index: 2,
}
)
}
if (!(_.isEmpty(data.sp_rival4_sub))) {
let update_data = {
play_style: 1,
index: 3,
rival_refid: data.sp_rival4_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 1,
index: 3,
}
)
}
if (!(_.isEmpty(data.sp_rival5_sub))) {
let update_data = {
play_style: 1,
index: 4,
rival_refid: data.sp_rival5_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 1,
index: 4,
}
)
}
if (!(_.isEmpty(data.dp_rival1_sub))) {
let update_data = {
play_style: 2,
index: 0,
rival_refid: data.dp_rival1_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 2,
index: 0,
}
)
}
if (!(_.isEmpty(data.dp_rival2_sub))) {
let update_data = {
play_style: 2,
index: 1,
rival_refid: data.dp_rival2_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 2,
index: 1,
}
)
}
if (!(_.isEmpty(data.dp_rival3_sub))) {
let update_data = {
play_style: 2,
index: 2,
rival_refid: data.dp_rival3_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 2,
index: 2,
}
)
}
if (!(_.isEmpty(data.dp_rival4_sub))) {
let update_data = {
play_style: 2,
index: 3,
rival_refid: data.dp_rival4_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 2,
index: 3,
}
)
}
if (!(_.isEmpty(data.dp_rival5_sub))) {
let update_data = {
play_style: 2,
index: 4,
rival_refid: data.dp_rival5_sub,
};
rival_sub_array.push(update_data);
} else {
await DB.Remove<rival_sub>(data.refid,
{
collection: "rival_sub",
play_style: 2,
index: 4,
}
)
}
for (let i = 0; i < rival_array.length; i++) {
await DB.Upsert<rival>(data.refid, {
collection: "rival",
play_style: update_array[i].play_style,
index: update_array[i].index,
play_style: rival_array[i].play_style,
index: rival_array[i].index,
}, {
$set: {
rival_refid: update_array[i].rival_refid,
rival_refid: rival_array[i].rival_refid,
}
}
)
}
for (let i = 0; i < rival_sub_array.length; i++) {
await DB.Upsert<rival_sub>(data.refid, {
collection: "rival_sub",
play_style: rival_sub_array[i].play_style,
index: rival_sub_array[i].index,
}, {
$set: {
rival_refid: rival_sub_array[i].rival_refid,
}
}
)
}
};
export const updateCustomSettings = async (data) => {
@@ -212,12 +405,15 @@ export const updateCustomSettings = async (data) => {
note_burst: Number(data.note_burst),
menu_music: Number(data.menu_music),
lane_cover: Number(data.lane_cover),
lift_cover: Number(data.lift_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: Number(data.note_beam),
note_beam_size: Number(data.note_beam_size) || 0,
note_size: Number(data.note_size),
judge_font: Number(data.judge_font),
pacemaker_cover: Number(data.pacemaker_cover),
vefx_lock: StoB(data.vefx_lock),
@@ -225,6 +421,8 @@ export const updateCustomSettings = async (data) => {
bomb_size: Number(data.bomb_size),
disable_hcn_color: StoB(data.disable_hcn_color),
first_note_preview: Number(data.first_note_preview),
cn_color: Number(data.cn_color),
cn_size: Number(data.cn_size),
rank_folder: StoB(data.rank_folder),
clear_folder: StoB(data.clear_folder),
@@ -268,14 +466,26 @@ export const updateCustomSettings = async (data) => {
}
if (data.version > 27) {
let saveData = {
premium_skin: Number(data.lm_skin),
premium_bg: Number(data.lm_bg),
}
if (data.version >= 33) {
saveData = Object.assign(saveData, {
premium_bg_concent: Number(data.lm_bg_2),
entry_bg: Number(data.lm_entry_bg),
entry_bg_brightness: Number(data.lm_entry_bg_bright),
});
}
await DB.Upsert<lightning_custom>(data.refid, {
collection: "lightning_custom",
version: Number(data.version)
},
{
$set: {
premium_skin: Number(data.lm_skin),
premium_bg: Number(data.lm_bg),
...saveData
}
});
}
+167 -129
View File
@@ -1,27 +1,127 @@
import { pccommon, pcreg, pcget, pcgetname, pctakeover, pcvisit, pcsave, pcoldget, pcgetlanegacha, pcdrawlanegacha, pcshopregister } from "./handlers/pc";
import { shopgetname, shopsavename, shopgetconvention, shopsetconvention } from "./handlers/shop";
import { musicreg, musicgetrank, musicappoint, musicarenacpu, musiccrate, musicbreg, musicgetralive } from "./handlers/music";
import { graderaised } from "./handlers/grade";
import { pccommon, pcreg, pcget, pcgetname, pctakeover, pcvisit, pcsave, pcoldget, pcgetlanegacha, pcdrawlanegacha, pcshopregister, pcmethod } from "./handlers/pc";
import { shopgetname, shopsavename, shopgetconvention, shopsetconvention, shopmethod } from "./handlers/shop";
import { musicreg, musicgetrank, musicappoint, musicarenacpu, musiccrate, musicbreg, musicgetralive, musicgetranksub, musicmethod } from "./handlers/music";
import { grademethod, graderaised } from "./handlers/grade";
import { gssysteminfo } from "./handlers/gamesystem";
import { updateRivalSettings, updateCustomSettings, importScoreData, exportScoreData } from "./handlers/webui";
import { GetVersion } from "./util";
import { rankingentry, rankinggetranker, rankingoentry } from "./handlers/ranking";
import { rankingentry, rankinggetranker, rankingmethod, rankingoentry } from "./handlers/ranking";
import { userdataread, userdatawrite } from "./handlers/userdata";
export function register() {
if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 31) {
console.error("The current version of Asphyxia Core is not supported. Requires version '1.31' or later.");
if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 70) {
console.error("The current version of Asphyxia Core is not supported. Requires version '1.70' or later.");
return;
}
R.Contributor("duel0213");
R.Contributor("anzuwork");
R.Contributor("COLV9");
R.GameCode("GLD");
R.GameCode("HDD");
R.GameCode("I00");
R.GameCode("JDJ");
R.GameCode("JDZ");
R.GameCode("KDZ");
R.GameCode("LDJ");
const gameCodes = ["C02", "D01", "E11", "ECO", "FDD", "GLD", "HDD", "I00", "JDJ", "JDZ", "KDZ", "LDJ"];
gameCodes.forEach((res) => {
R.GameCode(res);
});
R.Route("userdata.read", userdataread);
R.Route("userdata.write", userdatawrite);
const oldVersion = ["C02", "D01", "E11", "ECO"];
oldVersion.forEach((res) => {
R.Route(`${res}.music`, musicmethod);
R.Route(`${res}.pc`, pcmethod);
R.Route(`${res}.ranking`, rankingmethod);
R.Route(`${res}.grade`, grademethod);
R.Route(`${res}.shop`, shopmethod);
});
const MultiRoute = (method: string, handler: EPR | boolean) => {
R.Route(`${method}`, handler);
R.Route(`IIDX21${method}`, handler);
R.Route(`IIDX22${method}`, handler);
R.Route(`IIDX23${method}`, handler);
R.Route(`IIDX24${method}`, handler);
R.Route(`IIDX25${method}`, handler);
R.Route(`IIDX26${method}`, handler);
R.Route(`IIDX27${method}`, handler);
R.Route(`IIDX28${method}`, handler);
R.Route(`IIDX29${method}`, handler);
R.Route(`IIDX30${method}`, handler);
R.Route(`IIDX31${method}`, handler);
R.Route(`IIDX32${method}`, handler);
R.Route(`IIDX33${method}`, handler);
};
MultiRoute("pc.common", pccommon);
MultiRoute("pc.reg", pcreg);
MultiRoute("pc.get", pcget);
MultiRoute("pc.getname", pcgetname);
MultiRoute("pc.oldget", pcoldget);
MultiRoute("pc.takeover", pctakeover);
MultiRoute("pc.visit", pcvisit);
MultiRoute("pc.save", pcsave);
MultiRoute("pc.shopregister", pcshopregister);
MultiRoute("pc.getLaneGachaTicket", pcgetlanegacha);
MultiRoute("pc.drawLaneGacha", pcdrawlanegacha);
MultiRoute("pc.consumeLaneGachaTicket", true);
MultiRoute("shop.getname", shopgetname);
MultiRoute("shop.savename", shopsavename);
MultiRoute("shop.getconvention", shopgetconvention);
MultiRoute("shop.setconvention", shopsetconvention);
MultiRoute("music.crate", musiccrate);
MultiRoute("music.getrank", musicgetrank);
MultiRoute("music.getranksub", musicgetranksub);
MultiRoute("music.getralive", musicgetralive);
MultiRoute("music.appoint", musicappoint);
MultiRoute("music.reg", musicreg);
MultiRoute("music.breg", musicbreg);
MultiRoute("music.arenaCPU", musicarenacpu);
MultiRoute("grade.raised", graderaised);
MultiRoute("ranking.entry", rankingentry);
MultiRoute("ranking.oentry", rankingoentry);
MultiRoute("ranking.getranker", rankinggetranker);
MultiRoute("gameSystem.systemInfo", gssysteminfo);
R.Unhandled((req: EamuseInfo, data: any, send: EamuseSend) => {
console.warn(`Unhandled Request : [${GetVersion(req)}], ${req.module}.${req.method}, ${JSON.stringify(data)}`);
return send.success({ format: false, header: false });
});
R.WebUIEvent("iidxGetProfile", async (data, send: WebUISend) => {
const pcdata = await DB.FindOne(data.refid, {
collection: "pcdata",
version: Number(data.version),
});
return send.json({
pcdata,
});
});
R.WebUIEvent("iidxGetSetting", async (data, send: WebUISend) => {
const custom = await DB.FindOne(data.refid, {
collection: "custom",
version: Number(data.version),
});
const lm_custom = await DB.FindOne(data.refid, {
collection: "lightning_custom",
version: Number(data.version),
});
return send.json({
custom,
lm_custom,
});
});
R.WebUIEvent("iidxUpdateRival", updateRivalSettings);
R.WebUIEvent("iidxUpdateCustom", updateCustomSettings);
R.WebUIEvent("iidxImportScoreData", importScoreData);
R.WebUIEvent("iidxExportScoreData", exportScoreData);
// common //
R.Config("BeatPhase", {
@@ -96,7 +196,7 @@ export function register() {
name: "Movie Upload URL",
type: "string",
desc: "API address for play video uploading feature (JSON)",
default: "http://localhost/"
default: "http://localhost:4399/movie/"
});
R.Config("Eisei", {
name: "Eisei Grade Courses",
@@ -226,7 +326,7 @@ export function register() {
});
R.Config("sp_triparkskip", {
name: "Everyone's SPACEWAR!! Skip",
desc: "Skips クプロ・ミミニャミ・パステルくんのみんなで宇宙戦争!! Event Scenes",
desc: "Skips クプロ・ミミニャミ・パステルくんのみんなで宇宙戦争!! Event Scenes",
type: "integer",
default: 2,
});
@@ -303,12 +403,12 @@ export function register() {
default: 2,
});
R.Config("cp_extraboss",
{
name: "Extra Boss Phase (CP)",
desc: "Extra Boss Phase",
type: "integer",
default: 30,
});
{
name: "Extra Boss Phase (CP)",
desc: "Extra Boss Phase",
type: "integer",
default: 30,
});
R.Config("cp_bemanisummer", {
name: "BEMANI Summer 2016",
desc: "NEW Generation 夏の流星フェスタ2016 Phase",
@@ -336,12 +436,12 @@ export function register() {
default: 1,
});
R.Config("sb_extraboss",
{
name: "BUZRA ARTS",
desc: "BUZRA ARTS Phase",
type: "integer",
default: 35,
});
{
name: "BUZRA ARTS",
desc: "BUZRA ARTS Phase",
type: "integer",
default: 35,
});
// CANNON BALLERS //
R.Config("cb_boss", {
@@ -357,12 +457,12 @@ export function register() {
default: 3,
});
R.Config("cb_extraboss",
{
name: "IIDX AIR RACE",
desc: "IIDX AIR RACE Phase",
type: "integer",
default: 35,
});
{
name: "IIDX AIR RACE",
desc: "IIDX AIR RACE Phase",
type: "integer",
default: 35,
});
// Rootage //
R.Config("rt_boss", {
@@ -384,12 +484,12 @@ export function register() {
default: 2,
});
R.Config("rt_extraboss",
{
name: "ARC SCORE",
desc: "ARC SCORE Phase",
type: "integer",
default: 3,
});
{
name: "ARC SCORE",
desc: "ARC SCORE Phase",
type: "integer",
default: 3,
});
// HEROIC VERSE //
R.Config("hv_boss", {
@@ -405,12 +505,12 @@ export function register() {
default: 4,
});
R.Config("hv_extraboss",
{
name: "SHADOW REBELLION",
desc: "SHADOW REBELLION Phase",
type: "integer",
default: 1,
});
{
name: "SHADOW REBELLION",
desc: "SHADOW REBELLION Phase",
type: "integer",
default: 1,
});
// BISTROVER //
R.Config("bo_boss", {
@@ -509,90 +609,28 @@ export function register() {
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: Number(data.version),
});
return send.json({
pcdata,
});
// Sparkle Shower //
R.Config("ss_event1", {
name: "Sparkle Fruit Lab.",
desc: "Sparkle Fruit Lab. Phase",
type: "integer",
default: 1,
});
R.WebUIEvent("iidxGetSetting", async (data, send: WebUISend) => {
const custom = await DB.FindOne(data.refid, {
collection: "custom",
version: Number(data.version),
});
const lm_custom = await DB.FindOne(data.refid, {
collection: "lightning_custom",
version: Number(data.version),
});
return send.json({
custom,
lm_custom,
});
R.Config("ss_cyber", {
name: "CYBER LOADER",
desc: "CYBER LOADER Phase",
type: "integer",
default: 1,
});
R.WebUIEvent("iidxUpdateRival", updateRivalSettings);
R.WebUIEvent("iidxUpdateCustom", updateCustomSettings);
R.WebUIEvent("iidxImportScoreData", importScoreData);
R.WebUIEvent("iidxExportScoreData", exportScoreData);
const MultiRoute = (method: string, handler: EPR | boolean) => {
R.Route(`${method}`, handler);
R.Route(`IIDX21${method}`, handler);
R.Route(`IIDX22${method}`, handler);
R.Route(`IIDX23${method}`, handler);
R.Route(`IIDX24${method}`, handler);
R.Route(`IIDX25${method}`, handler);
R.Route(`IIDX26${method}`, handler);
R.Route(`IIDX27${method}`, handler);
R.Route(`IIDX28${method}`, handler);
R.Route(`IIDX29${method}`, handler);
R.Route(`IIDX30${method}`, handler);
R.Route(`IIDX31${method}`, handler);
R.Route(`IIDX32${method}`, handler);
};
MultiRoute("pc.common", pccommon);
MultiRoute("pc.reg", pcreg);
MultiRoute("pc.get", pcget);
MultiRoute("pc.getname", pcgetname);
MultiRoute("pc.oldget", pcoldget);
MultiRoute("pc.takeover", pctakeover);
MultiRoute("pc.visit", pcvisit);
MultiRoute("pc.save", pcsave);
MultiRoute("pc.shopregister", pcshopregister);
MultiRoute("pc.getLaneGachaTicket", pcgetlanegacha);
MultiRoute("pc.drawLaneGacha", pcdrawlanegacha);
MultiRoute("pc.consumeLaneGachaTicket", true);
MultiRoute("shop.getname", shopgetname);
MultiRoute("shop.savename", shopsavename);
MultiRoute("shop.getconvention", shopgetconvention);
MultiRoute("shop.setconvention", shopsetconvention);
MultiRoute("music.crate", musiccrate);
MultiRoute("music.getrank", musicgetrank);
MultiRoute("music.getralive", musicgetralive);
MultiRoute("music.appoint", musicappoint);
MultiRoute("music.reg", musicreg);
MultiRoute("music.breg", musicbreg);
MultiRoute("music.arenaCPU", musicarenacpu);
MultiRoute("grade.raised", graderaised);
MultiRoute("ranking.entry", rankingentry);
MultiRoute("ranking.oentry", rankingoentry);
MultiRoute("ranking.getranker", rankinggetranker);
MultiRoute("gameSystem.systemInfo", gssysteminfo);
R.Unhandled((req: EamuseInfo, data: any, send: EamuseSend) => {
console.warn(`Unhandled Request : [${GetVersion(req)}], ${req.module}.${req.method}, ${JSON.stringify(data)}`);
return send.success();
R.Config("ss_extraboss", {
name: "EXTRA CHALLENGE (SS)",
desc: "EXTRA CHALLENGE Phase",
type: "integer",
default: 3,
});
R.Config("ss_extraboss_season", {
name: "EXTRA CHALLENGE Season (SS)",
type: "integer",
default: 2,
});
}
+41
View File
@@ -6,3 +6,44 @@ export interface badge {
flg_id: number;
flg: number;
}
export const badgeBaseMap: Record<string, number> = {
djLevel: 0,
clear: 1,
grade: 2,
};
export const badgeVersionMap: Record<number | "default", Record<string, number>> = {
30: {
visitor: 6,
notes_radar: 7,
world_tourism: 8,
event1: 9,
},
31: {
step_up: 3,
visitor: 6,
notes_radar: 7,
event1: 13,
event2: 16,
},
32: {
step_up: 3,
visitor: 6,
notes_radar: 7,
event1: 13,
event2: 15,
},
33: {
step_up: 3,
visitor: 6,
notes_radar: 7,
event1: 3301,
},
default: {
step_up: 3,
visitor: 7,
notes_radar: 8,
world_tourism: 12,
},
};
+6
View File
@@ -29,6 +29,9 @@ export interface custom {
lift_cover: number;
note_beam_size: number;
cn_color: number; // sparkle shower//
cn_size: number;
// appendsettings
rank_folder: boolean;
clear_folder: boolean;
@@ -87,6 +90,9 @@ export const default_custom = {
lift_cover: 0,
note_beam_size: 0,
cn_color: 0,
cn_size: 0,
rank_folder: true,
clear_folder: true,
diff_folder: true,
+10
View File
@@ -0,0 +1,10 @@
export interface djtraining {
collection: "djtraining";
version: number;
play_style: number;
tier: number;
part: number;
midx: number;
cflg: number;
}
+24 -2
View File
@@ -14,7 +14,13 @@ export interface lightning_settings {
concentration: number;
keyboard_kind: number; // epolis //
brightness: number;
brightness_concent: number; // sparkle shower ///
assistant_disp_type: number; // sparkle shower ///
assistant_last_tab: number;
assistant_chara: number;
}
export interface lightning_playdata {
@@ -31,7 +37,12 @@ export interface lightning_custom {
version: number;
premium_skin: number;
premium_bg: number;
premium_bg: number; // epolis //
premium_bg_concent: number; // sparkle shower //
entry_bg: number;
entry_bg_brightness: number;
}
export interface eisei_grade {
@@ -162,10 +173,21 @@ export const lm_settings_new = {
concentration: 0,
keyboard_kind: 10, // epolis //
brightness: 2,
brightness: 0,
brightness_concent: 0, // sparkle shower //
assistant_disp_type: 0,
assistant_last_tab: 0,
assistant_chara: 0,
}
export const lm_customdata = {
premium_skin: 0, // Icons //
premium_bg: 0, // Background (epolis) //
premium_bg_concent: 0, // Background [Concentration Mode] (sparkle shower) //
entry_bg: 0, // Entry BG //
entry_bg_brightness: 0, // Entry BG Brightness //
}
+224 -22
View File
@@ -10,6 +10,7 @@ export interface pcdata {
sflg0: number;
sflg1: number;
sflg2: number;
pflg: number;
gno: number;
timing: number;
sdhd: number;
@@ -19,23 +20,25 @@ export interface pcdata {
mcomb: number;
ncomb: number;
mode: number;
category: number; // attribute (Pinky Crush) //
category: number; // Pinky Crush //
pmode: number;
liflen: number;
judge: number; // attribute (tricoro) //
judge: number; // tricoro //
opstyle: number;
hispeed: number;
judgeAdj: number;
notes: number; // attribute (Lincle) //
notes: number; // Lincle //
pase: number;
sdtype: number;
help: number;
fcombo: number[];
ngrade: number; // attribute (BISTROVER) //
rtype: number; // attribute (Heroic Verse) //
bgnflg: number; // attribute (Pinky Crush) //
player_kind: number; // attribute (EPOLIS) //
ngrade: number; // BISTROVER //
rtype: number; // Heroic Verse //
naviflg: number; // Sparkle Shower //
bgnasst: number;
bgnflg: number; // Pinky Crush //
player_kind: number; // EPOLIS //
gpos: number;
s_sorttype: number;
@@ -95,6 +98,8 @@ export interface pcdata {
s_classic_hispeed: number; // EPOLIS //
d_classic_hispeed: number;
movie_thumbnail: number; // Pinky Crush //
s_laneobj_brignt: number; // Sparkle Shower //
d_laneobj_brignt: number;
secret_flg1: string[]; // secret (Heroic Verse) //
secret_flg2: string[];
@@ -237,6 +242,77 @@ export interface pcdata {
tourism_secret_flg2: string[];
}
export const D01_pcdata = {
version: 10,
spnum: 0,
sach: 0,
dach: 0,
sflg0: 0,
sgid: -1,
dgid: -1,
}
export const E11_pcdata = {
version: 11,
spnum: 0,
dpnum: 0,
ctype: 0,
sach: 0,
dach: 0,
gno: 0,
sflg0: 0,
pflg: 0,
sgid: -1,
dgid: -1,
}
export const ECO_pcdata = {
version: 12,
spnum: 0,
dpnum: 0,
ctype: 0,
sach: 0,
dach: 0,
sflg0: 0,
gno: 0,
gono: 0,
sd: 0,
hd: 0,
sdhd: 0,
to: 0,
sgid: -1,
dgid: -1,
}
export const FDD_pcdata = {
version: 13,
spnum: 0,
dpnum: 0,
sach: 0,
dach: 0,
sflg0: 0,
sflg1: 0,
sflg2: 0,
gno: 0,
sdhd: 0,
sp_opt: 0,
dp_opt: 0,
dp_opt2: 0,
mcomb: 0,
ncomb: 0,
mode: 0,
sgid: -1,
dgid: -1,
}
export const GLD_pcdata = {
version: 14,
@@ -770,9 +846,9 @@ export const IIDX24_pcdata = {
dr_dppoint: Array<number>(15).fill(0),
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
event2_play_num: 0,
event2_last_select_id: -1,
event2_last_select_id: 0,
st_enemy_damage: 0,
st_progress: 0,
@@ -995,9 +1071,9 @@ export const IIDX26_pcdata = {
eb_bossorb8: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
event2_play_num: 0,
event2_last_select_id: -1,
event2_last_select_id: 0,
}
export const IIDX27_pcdata = {
@@ -1107,7 +1183,7 @@ export const IIDX27_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
eb_keyorb: 0,
eb_bossorb0: 0,
@@ -1230,7 +1306,7 @@ export const IIDX28_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
event_story_prog: 0,
event_failed_num: 0,
@@ -1350,8 +1426,8 @@ export const IIDX29_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_type: -1,
event_last_select_id: 0,
event_last_select_type: 0,
}
export const IIDX30_pcdata = {
@@ -1468,7 +1544,7 @@ export const IIDX30_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
}
export const IIDX31_pcdata = {
@@ -1582,7 +1658,7 @@ export const IIDX31_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
event_skip: false,
}
@@ -1680,10 +1756,10 @@ export const IIDX32_pcdata = {
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_level_h: -1,
st_dp_level_h: -1,
st_sp_level_exh: -1,
st_dp_level_exh: -1,
st_sp_fluctuation: 0,
st_dp_fluctuation: 0,
st_mission_clear_num: 0,
@@ -1706,5 +1782,131 @@ export const IIDX32_pcdata = {
present_orb: 0,
event_play_num: 0,
event_last_select_id: -1,
event_last_select_id: 0,
}
export const IIDX33_pcdata = {
version: 33,
spnum: 0,
dpnum: 0,
sach: 0,
dach: 0,
mode: 0,
category: 0,
pmode: 0,
ngrade: 0,
rtype: 0,
naviflg: 0,
bgnasst: 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,
s_laneobj_brignt: 0,
d_laneobj_brignt: 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: -1,
st_dp_level_h: -1,
st_sp_level_exh: -1,
st_dp_level_exh: -1,
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: 0,
}
+9
View File
@@ -7,6 +7,15 @@ export interface rival {
rival_refid: string;
};
export interface rival_sub {
collection: "rival_sub";
play_style: number;
index: number;
rival_refid: string;
}
export interface rival_data {
play_style: number;
index: number;
+5
View File
@@ -0,0 +1,5 @@
export interface userdata {
collection: "userdata";
userdata: string;
}
+6
View File
@@ -0,0 +1,6 @@
D01(status="SOK" method="pcget")
pc(name=profile.name playnum=pcdata.spnum sach=pcdata.sach dach=pcdata.dach sflg=pcdata.sflg0)
grade(sgid=pcdata.sgid dgid=pcdata.dgid) #{gradeStr}
ex(rid="3")
- for (let ed of exArray)
score(clid=ed.clid coid=ed.coid pgnum=ed.pgnum gnum=ed.gnum tcnt="1" cflg=ed.cflg)
+8
View File
@@ -0,0 +1,8 @@
E11(status="SOK" method="pcget")
pc(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum ctype="0" sach=pcdata.sach dach=pcdata.dach gno=pcdata.gno sflg=pcdata.sflg0 pflg=pcdata.pflg)
grade(sgid=pcdata.sgid dgid=pcdata.dgid) #{gradeStr}
ex #{exStr}
skin #{skinStr}
rlist
- for (let rd of rArray)
rival(rno=rd.index 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])
+3
View File
@@ -0,0 +1,3 @@
ECO(status="SOK" method="musicappoint") #{mydata}
if sdata != null
data(score=sdata.score pid=sdata.pid name=sdata.name) #{sdata.content}
+8
View File
@@ -0,0 +1,8 @@
ECO(status="SOK" method="pcget")
pc(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum ctype="0" sach=pcdata.sach dach=pcdata.dach sflg=pcdata.sflg0 gno=pcdata.gno gono="0" sd="0" hd="0" hdsd="0" to="0")
grade(sgid=pcdata.sgid dgid=pcdata.dgid) #{gradeStr}
ex #{exStr}
skin #{skinStr}
rlist
- for (let rd of rArray)
rival(rno=rd.index 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])
+3
View File
@@ -0,0 +1,3 @@
FDD(status="0" method="musicappoint") #{mydata}
if sdata != null
data(score=sdata.score pid=sdata.pid name=sdata.name) #{sdata.content}
+8
View File
@@ -0,0 +1,8 @@
FDD(status="0" method="pcget")
pc(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 sflg2=pcdata.sflg2 gno=pcdata.gno hdsd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode)
grade(sgid=pcdata.sgid dgid=pcdata.dgid) #{gradeStr}
ex #{exStr}
skin #{skinStr}
rlist
- for (let rd of rArray)
rival(rno=rd.index 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])
+5
View File
@@ -10,6 +10,11 @@ pc(status="0")
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])
visitor(anum="10" snum="10" pnum="10" vs_flg="1")
fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]}
if party != null
party(ev=party.ev dif=party.dif)
cflg(__type="bin") #{party.cflg}
//-puzzle
flg(dif="" cha="" __type="u32") [loop]
lincle(comflg="1" flg1="-1" flg2="-1" flg3="-1" flg4="-1" flg5="-1" flg6="-1" flg7="-1" refcomp="1")
reflec(tf="1" br="1" ssc="1" sr="1" wu="1" sg="1" tb="1")
jubeat(jflg_0="-1" jflg_1="-1" jflg_2="-1" jflg_3="-1")
+2 -3
View File
@@ -63,8 +63,7 @@ IIDX25pc(status="0")
- for (let evt of rush_cannonracer_sub)
map_data(map_id=evt.map_id play_num=evt.play_num progress=evt.progress boost_fuel=evt.boost_fuel is_clear=evt.is_clear rare1_appearance=evt.rare1_appearance rare2_appearance=evt.rare2_appearance rare3_appearance=evt.rare3_appearance rare4_appearance=evt.rare4_appearance rare5_appearance=evt.rare5_appearance rare6_appearance=evt.rare6_appearance rare_defeat_list=evt.rare_defeat_list)
arena_data(play_num="2" play_num_dp="1" play_num_sp="1")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
cube_data(cube="0" season_id="0")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
floor_infection(music_list="-1")
qma_collabo(music_list="-1")
+3 -4
View File
@@ -43,7 +43,7 @@ IIDX26pc(status="0")
join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname)
visitor(anum="10" snum="10" pnum="10" vs_flg="1")
step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_mission_point=pcdata.st_sp_mission_point dp_mission_point=pcdata.st_dp_mission_point sp_dj_mission_level=pcdata.st_sp_dj_mission_level dp_dj_mission_level=pcdata.st_dp_dj_mission_level sp_clear_mission_level=pcdata.st_sp_clear_mission_level dp_clear_mission_level=pcdata.st_dp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear 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}
is_track_ticket(__type="bool") #{Number(pcdata.st_is_track_ticket)}
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)
trophy(__type="s64" __count="20") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]}
deller(deller=pcdata.deller rate="1")
@@ -57,9 +57,8 @@ IIDX26pc(status="0")
leggendaria_semi_open(flg="-1")
konami_stytle(skip_flg="0")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
cube_data(cube="0" season_id="0")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
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
+3 -4
View File
@@ -48,16 +48,15 @@ IIDX27pc(status="0")
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(dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear dp_clear_mission_level=pcdata.st_dp_clear_mission_level dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear dp_dj_mission_level=pcdata.st_dp_dj_mission_level dp_level=pcdata.st_dp_level dp_mission_point=pcdata.st_dp_mission_point dp_mplay=pcdata.st_dp_mplay enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear sp_clear_mission_level=pcdata.st_sp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear sp_dj_mission_level=pcdata.st_sp_dj_mission_level sp_level=pcdata.st_sp_level sp_mission_point=pcdata.st_sp_mission_point sp_mplay=pcdata.st_sp_mplay tips_read_list=pcdata.st_tips_read_list)
is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket}
is_track_ticket(__type="bool") #{Number(pcdata.st_is_track_ticket)}
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)
trophy(__type="s64" __count="20") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]}
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
leggendaria_semi_open(flg="-1")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
cube_data(cube="0" season_id="0")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20")
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
+4 -5
View File
@@ -55,15 +55,14 @@ IIDX28pc(status="0")
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(dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear dp_clear_mission_level=pcdata.st_dp_clear_mission_level dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear dp_dj_mission_level=pcdata.st_dp_dj_mission_level dp_level=pcdata.st_dp_level dp_mission_point=pcdata.st_dp_mission_point dp_mplay=pcdata.st_dp_mplay enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear sp_clear_mission_level=pcdata.st_sp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear sp_dj_mission_level=pcdata.st_sp_dj_mission_level sp_level=pcdata.st_sp_level sp_mission_point=pcdata.st_sp_mission_point sp_mplay=pcdata.st_sp_mplay tips_read_list=pcdata.st_tips_read_list)
is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket}
is_track_ticket(__type="bool") #{Number(pcdata.st_is_track_ticket)}
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)
trophy(__type="s64" __count="20") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]}
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
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(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20")
cube_data(cube="0" season_id="0")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20")
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
+4 -5
View File
@@ -55,15 +55,14 @@ IIDX29pc(status="0")
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 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}
is_track_ticket(__type="bool") #{Number(pcdata.st_is_track_ticket)}
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)
trophy(__type="s64" __count="20") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]}
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
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(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20")
achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20")
cube_data(cube="0" season_id="0")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20")
achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20")
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
+4 -5
View File
@@ -49,17 +49,16 @@ IIDX30pc(status="0")
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}
is_track_ticket(__type="bool") #{Number(pcdata.st_is_track_ticket)}
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)
//- i have no idea why this now needs to be 10 instead of 20
trophy(__type="s64" __count="10") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]}
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb)
old_linkage_secret_flg(song_battle="-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" 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" 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")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(play_style="0" arena_class="19" rating_value="20" 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="19" rating_value="20" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="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
+4 -5
View File
@@ -55,16 +55,15 @@ IIDX31pc(status="0" qproback=custom.qpro_back)
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}
is_track_ticket(__type="bool") #{Number(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")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(play_style="0" arena_class="19" 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="19" 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")
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
+9 -10
View File
@@ -55,27 +55,26 @@ IIDX32pc(status="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
- for (let rsd of rsArray)
rival(spdp=rsd.play_style id=rsd.profile[2] id_str=rsd.profile[3] djname=rsd.profile[0] pid=rsd.profile[1] sg=rsd.pcdata[0] dg=rsd.pcdata[1] sa=rsd.pcdata[2] da=rsd.pcdata[3])
is_robo(__type="bool") 0
qprodata(body=rsd.qprodata[3] face=rsd.qprodata[2] hair=rsd.qprodata[0] hand=rsd.qprodata[4] head=rsd.qprodata[1] back=rsd.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_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}
is_track_ticket(__type="bool") #{Number(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
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(play_style="0" arena_class="19" 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="19" 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")
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")
+170
View File
@@ -0,0 +1,170 @@
IIDX33pc(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 naviflg=pcdata.naviflg bgnasst=pcdata.bgnasst 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 s_laneobj_brignt=pcdata.s_laneobj_brignt d_laneobj_brignt=pcdata.d_laneobj_brignt)
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_bg=lm_settings.brightness brightness_concentration=lm_settings.brightness_concent assistant_disp_type=lm_settings.assistant_disp_type assistant_last_tab=lm_settings.assistant_last_tab assistant_chara=lm_settings.assistant_chara)
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]}
pskin(__type="s32" __count="22") #{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} #{custom.cn_color} #{custom.cn_size}
vskin(__type="s32" __count="4") #{lm_custom.premium_skin} #{lm_custom.premium_bg} #{lm_custom.premium_bg_concent} #{lm_custom.entry_bg}
vskin_customize_setting(entry_bg_brightness=lm_custom.entry_bg_brightness)
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
- for (let rsd of rsArray)
rival(spdp=rsd.play_style id=rsd.profile[2] id_str=rsd.profile[3] djname=rsd.profile[0] pid=rsd.profile[1] sg=rsd.pcdata[0] dg=rsd.pcdata[1] sa=rsd.pcdata[2] da=rsd.pcdata[3])
is_robo(__type="bool") 0
qprodata(body=rsd.qprodata[3] face=rsd.qprodata[2] hair=rsd.qprodata[0] hand=rsd.qprodata[4] head=rsd.qprodata[1] back=rsd.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]}
dj_training
sp(tier="0" step="0")
if djtraining_sp != null
each tiers, tierId in djtraining_sp
each content, partId in tiers
folder(index=partId-1 tier=tierId part=partId)
each mid, musicIdx in content.mid
music(index=musicIdx music_id=mid class_id=content.diff[musicIdx] clear_type=content.cflg[musicIdx])
dp(tier="0" step="0")
if djtraining_dp != null
each tiers, tierId in djtraining_dp
each content, partId in tiers
folder(index=partId-1 tier=tierId part=partId)
each mid, musicIdx in content.mid
music(index=musicIdx music_id=mid class_id=content.diff[musicIdx] clear_type=content.cflg[musicIdx])
krank(season_id="0" end_time="4102326000" element_get="0" element_use="0")
enable_element_get(__type="bool") 1
reset(__type="bool") 0
sp(prev_season_skill="0" now_season_skill="0")
//-music(index="" klevel="" music_id="" class_id="" clear_type="" play_num_best="" play_num_now="" play_num_total="") [loop]
reset(__type="bool")
dp(prev_season_skill="0" now_season_skill="0")
//-music(index="" klevel="" music_id="" class_id="" clear_type="" play_num_best="" play_num_now="" play_num_total="") [loop]
reset(__type="bool")
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") #{Number(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_2="-1" triple_tribe_3="-1" triple_tribe_4="-1")
arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="19" prev_best_class_dp="19")
achieve_data(play_style="0" arena_class="19" 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="19" 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")
default_chat
pskin_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_lane_flg6="-1" skin_notes_flg="-1" skin_fullcombo_flg="-1" skin_keybeam_flg="-1" skin_judgestring_flg="-1")
vskin_customize_flg(skin_subicon_flg="-1" skin_subbg_flg0="-1" skin_subbg_flg1="-1" skin_entry_flg0="-1" skin_entry_flg1="-1")
event_1(event_play_num=pcdata.event_play_num last_select_room_id=pcdata.event_last_select_id)
if pcdata.event_skip == true
is_skip
- for (let evt of sparkle_fl_room)
room_data(room_id=evt.room_id play_num=evt.play_num play_num_uc=evt.play_num_uc play_num_ub=evt.play_num_ub clear_num=evt.clear_num last_select_crop_index=evt.last_select_crop_index room_prog=evt.room_prog)
soul(__type="bool") #{evt.soul}
- for (let evt2 of sparkle_fl_crop)
room_crop_data(room_id=evt2.room_id index=evt2.index act_normal=evt2.act_normal act_shin=evt2.act_shin act_gi=evt2.act_gi act_tai=evt2.act_tai first_type=evt2.first_type)
ultimate_mobile_link(music_list="-1")
link_flag
valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1")
popn_cheers(music_list="65535")
triple_tribe_5(music_list="65535")
triple_tribe_6(music_list="65535")
bemani_summer(music_list="65535")
language_setting(language=profile.language)
movie_agreement(agreement_version="1")
movie_setting
hide_name(__type="bool") 0
if sparkle_extra_boss != null
extra_boss_event(phase=sparkle_extra_boss.phase progress=sparkle_extra_boss.progress progress_point_score=sparkle_extra_boss.progress_point_score progress_point_miss=sparkle_extra_boss.progress_point_miss unlock_point=sparkle_extra_boss.unlock_point)
- for (let ebp of sparkle_extra_boss_play)
extra_boss_play(phase=ebp.phase gauge_level=ebp.gauge_level extra_play_num=ebp.extra_play_num extra_clear_num=ebp.extra_clear_num onemore_play_num=ebp.onemore_play_num onemore_clear_num=ebp.onemore_clear_num)
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}
if sparkle_vocalo != null
event_v(event_play_num=sparkle_vocalo.play_num last_select_music=sparkle_vocalo.last_select_music point_get=sparkle_vocalo.point_get point_use_0=sparkle_vocalo.point_use_0 point_use_1=sparkle_vocalo.point_use_1 booster_get=sparkle_vocalo.booster_get booster_use_0=sparkle_vocalo.booster_use_0 booster_use_1=sparkle_vocalo.booster_use_1)
+46 -20
View File
@@ -88,26 +88,22 @@ export function NumArrayToString(bits: number[], numArray: number[]): string {
return result;
}
export function GetVersion(info: EamuseInfo) {
let version = -1;
switch (info.model.slice(0, 3)) {
case "GLD": return 14;
case "HDD": return 15;
case "I00": return 16;
case "JDJ": return 17;
case "JDZ": return 18;
case "KDZ": return 19;
case "LDJ":
if (info.module.startsWith("IIDX")) {
version = Number(info.module.slice(4, 6));
if (_.isNaN(version) || version < 20) version = 20;
} else {
version = 20;
}
break;
export function NumArrayToHex(bits: number[], numArray: number[]): string {
let packed = 0;
let totalBits = 0;
for (let i = 0; i < bits.length; i++) {
const radix = Math.pow(2, bits[i]);
const value = Math.trunc(numArray[i]);
packed = packed * radix + ((value % radix) + radix) % radix;
totalBits += bits[i];
}
return version;
return packed
.toString(16)
.padStart(totalBits / 4, "0")
.toUpperCase();
}
export function appendSettingConverter(
@@ -245,6 +241,36 @@ 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);
export function GetVersion(info: EamuseInfo) {
let version = -1;
switch (info.model.slice(0, 3)) {
case "C02": return 9;
case "D01": return 10;
case "E11": return 11;
case "ECO": return 12;
case "FDD": return 13;
case "GLD": return 14;
case "HDD": return 15;
case "I00": return 16;
case "JDJ": return 17;
case "JDZ": return 18;
case "KDZ": return 19;
case "LDJ":
version = Number(info.module.slice(4, 6));
if (_.isNaN(version) || version == 0) version = 20;
break;
}
return version;
}
export function GetModel(info: EamuseInfo) {
return info.model.slice(0, 3);
}
export function GetCommand(data: any) {
let command = $(data).attr().command;
if (_.isNil(command)) return null;
return command.split(' ');
}
+15 -1
View File
@@ -31,7 +31,7 @@ $("#version").on("change", function () {
$("#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);
$("#first_note_preview").prop("checked", Number(data["custom"].first_note_preview) === 1);
if (data["custom"].note_size == undefined) $("#note_size").val(0);
else $("#note_size").val(data["custom"].note_size);
@@ -39,6 +39,10 @@ $("#version").on("change", function () {
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);
if (data["custom"].cn_color == undefined) $("#cn_color").val(0);
else $("#cn_color").val(data["custom"].cn_color);
if (data["custom"].cn_size == undefined) $("#cn_size").val(0);
else $("#cn_size").val(data["custom"].cn_size);
$("#rank_folder").prop("checked", data["custom"].rank_folder);
$("#clear_folder").prop("checked", data["custom"].clear_folder);
@@ -68,9 +72,19 @@ $("#version").on("change", function () {
if (data["lm_custom"] == null) {
$("#lm_skin").val(0);
$("#lm_bg").val(0);
$("#lm_bg_2").val(0);
$("#lm_entry_bg").val(0);
$("#lm_entry_bg_bright").val(0);
} else {
$("#lm_skin").val(data["lm_custom"].premium_skin);
$("#lm_bg").val(data["lm_custom"].premium_bg);
if (data["lm_custom"].premium_bg_concent == undefined) $("#lm_bg_2").val(0);
else $("#lm_bg_2").val(data["lm_custom"].premium_bg_concent);
if (data["lm_custom"].entry_bg == undefined) $("#lm_entry_bg").val(0);
else $("#lm_entry_bg").val(data["lm_custom"].entry_bg);
if (data["lm_custom"].entry_bg_brightness == undefined) $("#lm_entry_bg_bright").val(0);
else $("#lm_entry_bg_bright").val(data["lm_custom"].entry_bg_brightness);
}
},
error: function () {
+6 -1
View File
@@ -4,6 +4,10 @@
-
const version = [
10,
11,
12,
13,
14,
15,
16,
@@ -22,7 +26,8 @@
29,
30,
31,
32
32,
33
];
div
File diff suppressed because it is too large Load Diff
+92 -1
View File
@@ -2,6 +2,7 @@
profile: DB.FindOne(refid, { collection: "profile" })
profiles: DB.Find(null, { collection: "profile" })
rival: DB.Find(refid, { collection: "rival" })
rival_sub: DB.Find(refid, { collection: "rival_sub" })
-
let rival_list=[["", "None", "0000-0000"]];
@@ -9,11 +10,15 @@
rival_list.push([res.__refid, res.name, res.idstr])
});
let my_sp_rival = [], my_dp_rival = [];
let my_sp_rival = [], my_dp_rival = [], my_sp_rival_sub = [], my_dp_rival_sub = [];
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;
});
rival_sub.forEach((res) => {
if (res.play_style == 1) my_sp_rival_sub[res.index] = res.rival_refid;
else if (res.play_style == 2) my_dp_rival_sub[res.index] = res.rival_refid;
});
div
.card
@@ -111,6 +116,92 @@ div
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
label.label SP Rivals [SUB]
.body
.control
.select
select(name="sp_rival1_sub")
each i in rival_list
if my_sp_rival_sub[0] != null
option(selected=i[0]==my_sp_rival_sub[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival2_sub")
each i in rival_list
if my_sp_rival_sub[1] != null
option(selected=i[0]==my_sp_rival_sub[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival3_sub")
each i in rival_list
if my_sp_rival_sub[2] != null
option(selected=i[0]==my_sp_rival_sub[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival4_sub")
each i in rival_list
if my_sp_rival_sub[3] != null
option(selected=i[0]==my_sp_rival_sub[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="sp_rival5_sub")
each i in rival_list
if my_sp_rival_sub[4] != null
option(selected=i[0]==my_sp_rival_sub[4], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.field
label.label DP Rivals [SUB]
.body
.control
.select
select(name="dp_rival1_sub")
each i in rival_list
if my_dp_rival_sub[0] != null
option(selected=i[0]==my_dp_rival_sub[0], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival2_sub")
each i in rival_list
if my_dp_rival_sub[1] != null
option(selected=i[0]==my_dp_rival_sub[1], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival3_sub")
each i in rival_list
if my_dp_rival_sub[2] != null
option(selected=i[0]==my_dp_rival_sub[2], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival4_sub")
each i in rival_list
if my_dp_rival_sub[3] != null
option(selected=i[0]==my_dp_rival_sub[3], value=i[0]) #{i[1]} [#{i[2]}]
else
option(value=i[0]) #{i[1]} [#{i[2]}]
.control
.select
select(name="dp_rival5_sub")
each i in rival_list
if my_dp_rival_sub[4] != null
option(selected=i[0]==my_dp_rival_sub[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
File diff suppressed because it is too large Load Diff