Files
laochan-eacnet_backend/src/datas/gitadora.ts
T
2025-04-17 17:01:22 +08:00

85 lines
2.4 KiB
TypeScript

import { existsSync, readFileSync } from "node:fs";
import { parser, toObject } from "../utils/kbinxml.js";
import { Serializable, v } from "../utils/kxml-value.js";
import { Mdb } from "../types/gitadora/data.js";
export const musicinfo: Serializable = (() => {
if (!existsSync('data/mdb_knst.xml')) {
throw new Error('data/mdb_knst.xml not found!!');
}
const xml = readFileSync('data/mdb_knst.xml');
const mdb = toObject(parser.parse(xml)).mdb as Mdb;
return {
$nr: mdb.mdb_data.length,
music: mdb.mdb_data.map(m => ({
id: v.s32(m.music_id),
diff: v.u16(m.xg_diff_list),
cont_gf: v.bool(!!m.contain_stat[0]),
cont_dm: v.bool(!!m.contain_stat[1]),
is_cont: v.bool(true),
is_secret: v.bool(false),
is_hot: v.bool(((m.contain_stat[0] & 1) != 0) || ((m.contain_stat[1] & 1) != 0)),
data_ver: v.s32(m.data_ver),
knst_pack: v.s32(0), // v.s32(m.knst_pack),
ifs_ver: v.s32(m.ifs_ver),
}))
}
})();
export const event = [{
data_id: v.s32(8),
data_version: v.s32(200),
event_id: v.s32(0),
event_type: v.s32(18),
start_date: v.u64(1615510800000),
end_date: v.u64(4771493999000),
is_open: v.bool(true),
bg_no: v.s32(0),
target_musicid: v.s32([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]),
clear_border: v.s32(2),
reward_musicid: v.s32([-1, -1, 2708, 2709]),
reward_stickerid: v.s32(-1),
firstbit: v.s32(0),
event_skill_id: v.s32(0),
quest_no: v.s32(0),
url: v.str(''),
},
{
data_id: v.s32(9),
data_version: v.s32(200),
event_id: v.s32(0),
event_type: v.s32(18),
start_date: v.u64(1618966800000),
end_date: v.u64(4771493999000),
is_open: v.bool(true),
bg_no: v.s32(0),
target_musicid: v.s32([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]),
clear_border: v.s32(2),
reward_musicid: v.s32([-1, -1, -1, 2710]),
reward_stickerid: v.s32(-1),
firstbit: v.s32(0),
event_skill_id: v.s32(0),
quest_no: v.s32(0),
url: v.str(''),
},
{
data_id: v.s32(87),
data_version: v.s32(220),
event_id: v.s32(0),
event_type: v.s32(3),
start_date: v.u64(1743469200000),
end_date: v.u64(1745765999000),
is_open: v.bool(true),
bg_no: v.s32(0),
target_musicid: v.s32([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]),
clear_border: v.s32(25000000),
reward_musicid: v.s32([-1, -1, -1, 1118]),
reward_stickerid: v.s32(-1),
firstbit: v.s32(0),
event_skill_id: v.s32(0),
quest_no: v.s32(62),
url: v.str(''),
}];