'Small' update

- Add Course Mode
- Add support for downloading additional files
- Add support for `skill_fatalis` (Hikari booms your world.)

- Delete my hair X<

> WHERE IS MY TAIRITSU ?!
> Some other things are not supported now, such as... the feature which is one line above.
This commit is contained in:
Lost-MSth
2022-07-09 01:15:03 +08:00
parent af3e91b3e8
commit 9f41ef0a70
23 changed files with 1276 additions and 214 deletions

View File

@@ -0,0 +1,449 @@
[
{
"course_id": "4.0-dan-1",
"style": 1,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 1,
"id": "inkarusi"
},
{
"flag_as_hidden": false,
"difficulty": 1,
"id": "snowwhite"
},
{
"flag_as_hidden": false,
"difficulty": 1,
"id": "sakurafubuki"
},
{
"flag_as_hidden": false,
"difficulty": 1,
"id": "purgatorium"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 1",
"course_name": "新世界的第一步",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment300",
"course_banner_1"
]
},
{
"course_id": "4.0-dan-2",
"style": 2,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "vexaria"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "clotho"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "brandnewworld"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "oblivia"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 2",
"course_name": "一次心跳的加速",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment400",
"course_banner_2"
]
},
{
"course_id": "4.0-dan-3",
"style": 3,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "suomi"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "grimheart"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "bookmaker"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "avril"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 3",
"course_name": "永不屈服的精神",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment500",
"course_banner_3"
]
},
{
"course_id": "4.0-dan-4",
"style": 4,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "gekka"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "solitarydream"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "kanagawa"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "iconoclast"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 4",
"course_name": "光芒的永恒之地",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment600",
"course_banner_4"
]
},
{
"course_id": "4.0-dan-5",
"style": 5,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "faintlight"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "eveninginscarlet"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "kyogenkigo"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "blrink"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 5",
"course_name": "玻璃之中的残酷",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment700",
"course_banner_5"
]
},
{
"course_id": "4.0-dan-6",
"style": 6,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "vindication"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "heartjackin"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "ascent"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "macromod"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 6",
"course_name": "沉浸于悲喜交加",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment800",
"course_banner_6"
]
},
{
"course_id": "4.0-dan-7",
"style": 7,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "galaxyfriends"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "neokosmo"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "conflict"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "redolentshape"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 7",
"course_name": "在命运到来之际",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment900",
"course_banner_7"
]
},
{
"course_id": "4.0-dan-8",
"style": 8,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "corruption"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "neowings"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "valhallazero"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "izana"
}
],
"gauge_requirement": "default",
"requirements": [],
"flag_as_hidden_when_requirements_not_met": false,
"dan_name": "Phase 8",
"course_name": "趋于混沌的时空",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment1000",
"course_banner_8"
]
},
{
"course_id": "4.0-dan-9",
"style": 9,
"songs": [
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "felis"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "lightningscrew"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "seclusion"
},
{
"flag_as_hidden": false,
"difficulty": 2,
"id": "livefastdieyoung"
}
],
"gauge_requirement": "default",
"requirements": [
{
"value": "4.0-dan-8",
"type": "course"
}
],
"flag_as_hidden_when_requirements_not_met": true,
"dan_name": "Phase 9",
"course_name": "分崩离析的自我",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment1000",
"core_generic_10",
"course_banner_9"
]
},
{
"course_id": "4.0-dan-10",
"style": 10,
"songs": [
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "cyaegha"
},
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "divinelight"
},
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "dantalion"
},
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "aegleseeker"
}
],
"gauge_requirement": "default",
"requirements": [
{
"value": "4.0-dan-9",
"type": "course"
}
],
"flag_as_hidden_when_requirements_not_met": true,
"dan_name": "Phase 10",
"course_name": "光与对立的洪流",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment1000",
"core_generic_10",
"course_banner_10"
]
},
{
"course_id": "4.0-dan-11",
"style": 11,
"songs": [
{
"flag_as_hidden": true,
"difficulty": 3,
"id": "infinitestrife"
},
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "grievouslady"
},
{
"flag_as_hidden": true,
"difficulty": 2,
"id": "fractureray"
},
{
"flag_as_hidden": true,
"difficulty": 3,
"id": "tempestissimo"
}
],
"gauge_requirement": "default",
"requirements": [
{
"value": "4.0-dan-10",
"type": "course"
}
],
"flag_as_hidden_when_requirements_not_met": true,
"dan_name": "Phase 11",
"course_name": "创世之曙光",
"can_start": true,
"is_completed": false,
"high_score": 0,
"best_clear_type": -1,
"rewards": [
"fragment2000",
"core_generic_20",
"course_banner_11"
]
}
]

View File

@@ -4,7 +4,7 @@ import json
# 数据库初始化文件删掉arcaea_database.db文件后运行即可谨慎使用
ARCAEA_SERVER_VERSION = 'v2.8.7.dev'
ARCAEA_SERVER_VERSION = 'v2.8.9.dev.616sb'
def main(path='./'):
@@ -48,7 +48,8 @@ def main(path='./'):
ban_flag text,
next_fragstam_ts int,
max_stamina_ts int,
stamina int
stamina int,
world_mode_locked_end_ts int
);''')
c.execute('''create table if not exists login(access_token text,
user_id int,
@@ -187,13 +188,17 @@ def main(path='./'):
is_locked int,
primary key(user_id, map_id)
);''')
c.execute('''create table if not exists world_songplay(user_id int,
c.execute('''create table if not exists songplay_token(token text primary key,
user_id int,
song_id text,
difficulty int,
course_id text,
course_state int,
course_score int,
course_clear_type int,
stamina_multiply int,
fragment_multiply int,
prog_boost_multiply int,
primary key(user_id, song_id, difficulty)
prog_boost_multiply int
);''')
c.execute('''create table if not exists download_token(user_id int,
song_id text,
@@ -299,49 +304,80 @@ def main(path='./'):
login_ip text,
primary key(user_id, token)
);''')
c.execute('''create table if not exists course(course_id text primary key,
course_name text,
dan_name text,
style int,
gauge_requirement text,
flag_as_hidden_when_requirements_not_met int,
can_start int
);''')
c.execute('''create table if not exists user_course(user_id int,
course_id text,
high_score int,
best_clear_type int,
primary key(user_id, course_id)
);''')
c.execute('''create table if not exists course_chart(course_id text,
song_id text,
difficulty int,
flag_as_hidden int,
song_index int,
primary key(course_id, song_id, difficulty)
);''')
c.execute('''create table if not exists course_requirement(course_id text,
required_id text,
primary key(course_id, required_id)
);''')
c.execute('''create table if not exists course_item(course_id text,
item_id text,
type text,
amount int,
primary key(course_id, item_id, type)
);''')
# 搭档初始化
char = ['hikari', 'tairitsu', 'kou', 'sapphire', 'lethe', '', 'Tairitsu(Axium)', 'Tairitsu(Grievous Lady)', 'stella', 'Hikari & Fisica', 'ilith', 'eto', 'luna', 'shirabe', 'Hikari(Zero)', 'Hikari(Fracture)', 'Hikari(Summer)', 'Tairitsu(Summer)', 'Tairitsu & Trin',
'ayu', 'Eto & Luna', 'yume', 'Seine & Hikari', 'saya', 'Tairitsu & Chuni Penguin', 'Chuni Penguin', 'haruna', 'nono', 'MTA-XXX', 'MDA-21', 'kanae', 'Hikari(Fantasia)', 'Tairitsu(Sonata)', 'sia', 'DORO*C', 'Tairitsu(Tempest)', 'brillante', 'Ilith(Summer)', 'etude', 'Alice & Tenniel', 'Luna & Mia', 'areus', 'seele', 'isabelle', 'mir', 'lagrange', 'linka', 'nami', 'Saya & Elizabeth', 'lily', 'kanae(midsummer)', 'alice&tenniel(minuet)', 'tairitsu(elegy)', 'marija', 'vita']
'ayu', 'Eto & Luna', 'yume', 'Seine & Hikari', 'saya', 'Tairitsu & Chuni Penguin', 'Chuni Penguin', 'haruna', 'nono', 'MTA-XXX', 'MDA-21', 'kanae', 'Hikari(Fantasia)', 'Tairitsu(Sonata)', 'sia', 'DORO*C', 'Tairitsu(Tempest)', 'brillante', 'Ilith(Summer)', 'etude', 'Alice & Tenniel', 'Luna & Mia', 'areus', 'seele', 'isabelle', 'mir', 'lagrange', 'linka', 'nami', 'Saya & Elizabeth', 'lily', 'kanae(midsummer)', 'alice&tenniel(minuet)', 'tairitsu(elegy)', 'marija', 'vita', 'hikari(fatalis)']
skill_id = ['gauge_easy', '', '', '', 'note_mirror', '', '', 'gauge_hard', 'frag_plus_10_pack_stellights', 'gauge_easy|frag_plus_15_pst&prs', 'gauge_hard|fail_frag_minus_100', 'frag_plus_5_side_light', 'visual_hide_hp', 'frag_plus_5_side_conflict', 'challenge_fullcombo_0gauge', 'gauge_overflow', 'gauge_easy|note_mirror', 'note_mirror', 'visual_tomato_pack_tonesphere',
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', '', '', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', '', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', '', '', 'visual_ghost_skynotes', 'skill_vita']
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', '', '', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', '', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', '', '', 'visual_ghost_skynotes', 'skill_vita', 'skill_fatalis']
skill_id_uncap = ['', '', 'frags_kou', '', 'visual_ink', '', '', '', '', '', '', 'eto_uncap', 'luna_uncap', 'shirabe_entry_fee',
'', '', '', '', '', 'ayu_uncap', '', 'frags_yume', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
'', '', '', '', '', 'ayu_uncap', '', 'frags_yume', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
skill_unlock_level = [0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0,
0, 0, 0, 8, 0, 14, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0]
0, 0, 0, 8, 0, 14, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0]
frag1 = [55, 55, 60, 50, 47, 0, 47, 57, 41, 22, 50, 54, 60, 56, 78, 42, 41, 61, 52, 50, 52, 32,
42, 55, 45, 58, 43, 0.5, 68, 50, 62, 45, 45, 52, 44, 27, 59, 0, 45, 50, 50, 47, 47, 61, 43, 42, 38, 25, 58, 50, 61, 45, 45, 38, 34]
42, 55, 45, 58, 43, 0.5, 68, 50, 62, 45, 45, 52, 44, 27, 59, 0, 45, 50, 50, 47, 47, 61, 43, 42, 38, 25, 58, 50, 61, 45, 45, 38, 34, 27]
prog1 = [35, 55, 47, 50, 60, 0, 60, 70, 58, 45, 70, 45, 42, 46, 61, 67, 49, 44, 28, 45, 24, 46, 52,
59, 62, 33, 58, 25, 63, 69, 50, 45, 45, 51, 34, 70, 62, 70, 45, 32, 32, 61, 47, 47, 37, 42, 50, 50, 45, 41, 61, 45, 45, 58, 50]
59, 62, 33, 58, 25, 63, 69, 50, 45, 45, 51, 34, 70, 62, 70, 45, 32, 32, 61, 47, 47, 37, 42, 50, 50, 45, 41, 61, 45, 45, 58, 50, 60]
overdrive1 = [35, 55, 25, 50, 47, 0, 72, 57, 41, 7, 10, 32, 65, 31, 61, 53, 31, 47, 38, 12, 39, 18,
48, 65, 45, 55, 44, 25, 46, 44, 33, 45, 45, 37, 25, 27, 50, 20, 45, 63, 21, 47, 61, 47, 65, 80, 38, 30, 49, 15, 34, 45, 45, 38, 67]
48, 65, 45, 55, 44, 25, 46, 44, 33, 45, 45, 37, 25, 27, 50, 20, 45, 63, 21, 47, 61, 47, 65, 80, 38, 30, 49, 15, 34, 45, 45, 38, 67, 65]
frag20 = [78, 80, 90, 75, 70, 0, 70, 79, 65, 40, 50, 80, 90, 82, 0, 61, 67, 92, 85, 50, 86, 52,
65, 85, 67, 88, 64, 0.5, 95, 70, 95, 50, 80, 87, 71, 50, 85, 0, 80, 75, 50, 70, 70, 90, 65, 80, 61, 50, 68, 60, 90, 67, 50, 60, 51]
65, 85, 67, 88, 64, 0.5, 95, 70, 95, 50, 80, 87, 71, 50, 85, 0, 80, 75, 50, 70, 70, 90, 65, 80, 61, 50, 68, 60, 90, 67, 50, 60, 51, 50]
prog20 = [61, 80, 70, 75, 90, 0, 90, 102, 84, 78, 105, 67, 63, 68, 0, 99, 80, 66, 46, 83, 40, 73,
80, 90, 93, 50, 86, 78, 89, 98, 75, 80, 50, 64, 55, 100, 90, 110, 80, 50, 74, 90, 70, 70, 56, 80, 79, 55, 65, 59, 90, 50, 90, 90, 75]
80, 90, 93, 50, 86, 78, 89, 98, 75, 80, 50, 64, 55, 100, 90, 110, 80, 50, 74, 90, 70, 70, 56, 80, 79, 55, 65, 59, 90, 50, 90, 90, 75, 100]
overdrive20 = [61, 80, 47, 75, 70, 0, 95, 79, 65, 31, 50, 59, 90, 58, 0, 78, 50, 70, 62, 49, 64,
46, 73, 95, 67, 84, 70, 78, 69, 70, 50, 80, 80, 63, 25, 50, 72, 55, 50, 95, 55, 70, 90, 70, 99, 80, 61, 40, 69, 62, 51, 90, 67, 60, 100]
46, 73, 95, 67, 84, 70, 78, 69, 70, 50, 80, 80, 63, 25, 50, 72, 55, 50, 95, 55, 70, 90, 70, 99, 80, 61, 40, 69, 62, 51, 90, 67, 60, 100, 105]
frag30 = [88, 90, 100, 75, 80, 0, 70, 79, 65, 40, 50, 90, 100, 92, 0, 61, 67, 92, 85, 50, 86, 62,
65, 85, 67, 88, 74, 0.5, 105, 80, 95, 50, 80, 87, 71, 50, 95, 0, 80, 75, 50, 70, 80, 100, 65, 80, 61, 50, 68, 60, 90, 67, 50, 60, 51]
65, 85, 67, 88, 74, 0.5, 105, 80, 95, 50, 80, 87, 71, 50, 95, 0, 80, 75, 50, 70, 80, 100, 65, 80, 61, 50, 68, 60, 90, 67, 50, 60, 51, 50]
prog30 = [71, 90, 80, 75, 100, 0, 90, 102, 84, 78, 105, 77, 73, 78, 0, 99, 80, 66, 46, 93, 40, 83,
80, 90, 93, 50, 96, 88, 99, 108, 75, 80, 50, 64, 55, 100, 100, 110, 80, 50, 74, 90, 80, 80, 56, 80, 79, 55, 65, 59, 90, 50, 90, 90, 75]
80, 90, 93, 50, 96, 88, 99, 108, 75, 80, 50, 64, 55, 100, 100, 110, 80, 50, 74, 90, 80, 80, 56, 80, 79, 55, 65, 59, 90, 50, 90, 90, 75, 100]
overdrive30 = [71, 90, 57, 75, 80, 0, 95, 79, 65, 31, 50, 69, 100, 68, 0, 78, 50, 70, 62, 59, 64,
56, 73, 95, 67, 84, 80, 88, 79, 80, 50, 80, 80, 63, 25, 50, 82, 55, 50, 95, 55, 70, 100, 80, 99, 80, 61, 40, 69, 62, 51, 90, 67, 60, 100]
56, 73, 95, 67, 84, 80, 88, 79, 80, 50, 80, 80, 63, 25, 50, 82, 55, 50, 95, 55, 70, 100, 80, 99, 80, 61, 40, 69, 62, 51, 90, 67, 60, 100, 105]
char_type = [1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, 0, 2, 3, 1, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2]
0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 3]
char_core = {
0: [{'core_id': 'core_hollow', 'amount': 25}, {'core_id': 'core_desolate', 'amount': 5}],
@@ -362,7 +398,7 @@ def main(path='./'):
19: [{'core_id': 'core_colorful', 'amount': 30}]
}
for i in range(0, 55):
for i in range(0, 56):
skill_requires_uncap = 1 if i == 2 else 0
if i in [0, 1, 2, 4, 13, 26, 27, 28, 29, 36, 21, 42, 43, 11, 12, 19]:
@@ -370,10 +406,11 @@ def main(path='./'):
c.execute(sql, (i, char[i], frag1[i], prog1[i], overdrive1[i], frag20[i], prog20[i], overdrive20[i],
frag30[i], prog30[i], overdrive30[i], skill_id[i], skill_unlock_level[i], skill_requires_uncap, skill_id_uncap[i], char_type[i]))
else:
if i != 5:
sql = '''insert into character values(?,?,20,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)'''
c.execute(sql, (i, char[i], frag1[i], prog1[i], overdrive1[i], frag20[i], prog20[i], overdrive20[i],
frag30[i], prog30[i], overdrive30[i], skill_id[i], skill_unlock_level[i], skill_requires_uncap, skill_id_uncap[i], char_type[i]))
if i == 5:
continue
sql = '''insert into character values(?,?,20,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)'''
c.execute(sql, (i, char[i], frag1[i], prog1[i], overdrive1[i], frag20[i], prog20[i], overdrive20[i],
frag30[i], prog30[i], overdrive30[i], skill_id[i], skill_unlock_level[i], skill_requires_uncap, skill_id_uncap[i], char_type[i]))
c.execute('''insert into character values(?,?,20,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)''', (99,
'shirahime', 38, 33, 28, 66, 58, 50, 66, 58, 50, 'frags_preferred_song', 0, 0, '', 0))
@@ -383,7 +420,7 @@ def main(path='./'):
c.execute('''insert into char_item values(?,?,'core',?)''',
(i, j['core_id'], j['amount']))
cores = ['core_hollow', 'core_desolate', 'core_chunithm', 'core_crimson',
'core_ambivalent', 'core_scarlet', 'core_groove', 'core_generic', 'core_binary', 'core_colorful']
'core_ambivalent', 'core_scarlet', 'core_groove', 'core_generic', 'core_binary', 'core_colorful', 'core_course_skip_purchase']
for i in cores:
c.execute('''insert into item values(?,"core",1,'')''', (i,))
@@ -394,10 +431,14 @@ def main(path='./'):
c.execute('''insert into item values(?,"world_song",1,'')''', (i,))
world_unlocks = ["scenery_chap1", "scenery_chap2",
"scenery_chap3", "scenery_chap4", "scenery_chap5", "scenery_chap6"]
"scenery_chap3", "scenery_chap4", "scenery_chap5", "scenery_chap6", "scenery_chap7"]
for i in world_unlocks:
c.execute('''insert into item values(?,"world_unlock",1,'')''', (i,))
course_banners = ['course_banner_' + str(i) for i in range(1, 12)]
for i in course_banners:
c.execute('''insert into item values(?,"course_banner",1,'')''', (i,))
c.execute('''insert into item values(?,?,?,?)''',
('fragment', 'fragment', 1, ''))
c.execute('''insert into item values(?,?,?,?)''',
@@ -450,7 +491,25 @@ def main(path='./'):
f.close()
insert_items(c, packs)
# api权限与权限组初始化
# course初始化
try:
f = open(path+'courses.json', 'r', encoding="utf-8")
courses = json.load(f)
f.close()
except:
courses = []
if courses:
if path == './':
# 有什么好办法吗
import sys
sys.path.append('..')
from core.course import Course
for i in courses:
x = Course(c).from_dict(i)
x.insert_all()
# api权限与权限组初始化
role = ['admin', 'user', 'selecter']
role_caption = ['管理员', '用户', '查询接口']

View File

@@ -41,8 +41,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "dynamix",
@@ -66,8 +66,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "mirai",
@@ -91,8 +91,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "yugamu",
@@ -111,8 +111,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "lanota",
@@ -131,8 +131,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "nijuusei",
@@ -171,8 +171,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "tonesphere",
@@ -191,8 +191,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "groovecoaster",
@@ -211,8 +211,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "zettai",
@@ -231,8 +231,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "chunithm",
@@ -269,8 +269,8 @@
],
"price": 400,
"orig_price": 400,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "omatsuri",
@@ -289,8 +289,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "vs",
@@ -309,8 +309,8 @@
],
"price": 500,
"orig_price": 500,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "extend",
@@ -329,8 +329,9 @@
],
"price": 0,
"orig_price": 700,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000,
"discount_reason": "extend"
},
{
"name": "alice",
@@ -348,7 +349,9 @@
}
],
"orig_price": 500,
"price": 500
"price": 500,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "alice_append_1",
@@ -366,7 +369,9 @@
}
],
"orig_price": 300,
"price": 300
"price": 300,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "ongeki",
@@ -384,7 +389,9 @@
}
],
"orig_price": 400,
"price": 400
"price": 400,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "maimai",
@@ -402,7 +409,9 @@
}
],
"orig_price": 400,
"price": 400
"price": 400,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "chunithm_append_1",
@@ -438,7 +447,9 @@
}
],
"orig_price": 300,
"price": 300
"price": 300,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "observer",
@@ -456,7 +467,9 @@
}
],
"orig_price": 500,
"price": 500
"price": 500,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "observer_append_2",
@@ -474,7 +487,9 @@
}
],
"orig_price": 300,
"price": 300
"price": 300,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "wacca",
@@ -492,7 +507,9 @@
}
],
"orig_price": 500,
"price": 500
"price": 500,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "nijuusei_append_1",
@@ -528,7 +545,9 @@
}
],
"orig_price": 500,
"price": 500
"price": 500,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "musedash",
@@ -538,20 +557,17 @@
"id": "musedash",
"is_available": true
},
{
"type": "character",
"id": "marija",
"is_available": true
},
{
"type": "core",
"amount": 5,
"amount": 4,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 400,
"price": 400,
"orig_price": 400
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "lanota_append_1",
@@ -570,5 +586,23 @@
],
"orig_price": 300,
"price": 300
},
{
"name": "finale",
"items": [
{
"type": "pack",
"id": "finale",
"is_available": true
},
{
"type": "core",
"amount": 5,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 500,
"price": 500
}
]