From df181f104e05ccae018b8ea0856f8a4c35dae195 Mon Sep 17 00:00:00 2001 From: Lost-MSth Date: Thu, 11 Feb 2021 15:26:58 +0800 Subject: [PATCH] Update to v2.2 close #13 --- README.md | 26 +++++++++++++++------ latest version/database/arcaea_database.db | Bin 172032 -> 172032 bytes latest version/database/arcsong.db | Bin 118784 -> 122880 bytes latest version/server/arcscore.py | 2 -- latest version/server/auth.py | 19 ++++++++------- latest version/server/info.py | 2 +- latest version/setting.py | 7 +++++- latest version/web/index.py | 2 +- 8 files changed, 38 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 0905cac..ecebeb2 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,21 @@ 一个微型的Arcaea本地服务器 A small local server for Arcaea ## 简介 Introduction -这是基于Python以及Flask的微型本地Arcaea服务器,可以模拟游戏的主要功能,一时兴起在五天之内糊了出来。这可能是我第一次写这种大程序,若有不妥之处,敬请谅解。 -This is a small local Arcaea server based on Python and Flask, which can simulate the main functions of the game. I completed it on the spur of the moment in five days. This may be the first time I have written such a large program. Please understand if there is something wrong with it. +这是基于Python以及Flask的微型本地Arcaea服务器,可以模拟游戏的主要功能。这可能是我第一次写这种大程序,若有不妥之处,敬请谅解。 + +本程序主要用于学习研究,不得用于任何商业行为,否则后果自负,这不是强制要求,只是一个提醒与警告。 + +This is a small local Arcaea server based on Python and Flask, which can simulate the main functions of the game. This may be the first time I have written such a large program. Please understand if there is something wrong with it. + +This procedure is mainly used for study and research, and shall not be used for any commercial activities, otherwise the consequences will be borne by oneself. This is not a mandatory requirement, just a reminder and warning. + > 虽然看起来很蠢,但是可以用! > It looks stupid, but it works! ## 特性 Features 有以下 We have: - 登录、注册 Login and registration +- 多设备登录 Multi device login - 成绩上传 Score upload - PTT - 排名 Rank @@ -37,6 +44,7 @@ This is a small local Arcaea server based on Python and Flask, which can simulat 可能有问题 There may be problems: - Recent 30 - 一些歌曲的解锁 Some songs' unlocking +- 同设备多共存登录 Multiple app logins on the same device ## 说明 Statement 只是很有趣,用处探索中。 @@ -55,13 +63,17 @@ It is just so interesting. What it can do is under exploration. > > Tips: When updating, please keep the original database in case of data loss. -### Version 2.1 -- 适用于Arcaea 3.5.0版本 For Arcaea 3.5.0 +### Version 2.2 +- 适用于Arcaea 3.5.1版本 For Arcaea 3.5.1 - 更新了歌曲数据库 Update the song database. -- 新搭档**阿莱乌斯**、**希尔**、**伊莎贝尔**已解锁 Unlock the new characters **Areus**, **Seele** and **Isabelle**. -- 源韵强化机制修改,现在源点会正常扣去 The mechanism of Memory Boost has been modified. Now the memories will be decreased normally. +- 新增多设备登录 Add multi device login. +- 修改了配置文件结构 The configuration file structure has been modified. - 优化了代码结构 Optimize the code structure. -- 修复了一些Bug Fix some bugs. +- 修复了一堆Bug Fix many bugs. + +> 提醒:本次更新需重新登录 +> +> Tip: You need to log in Arcaea again in this update. ## 运行环境与依赖 Running environment and requirements diff --git a/latest version/database/arcaea_database.db b/latest version/database/arcaea_database.db index 2c4a22c4249b1e3bfee631f93d6a45bd28343fae..b8b1289b2d923af453bb356ca4c8aaee296f3319 100644 GIT binary patch delta 32 ocmZoTz}0YoYr}JSPGbWjQwvKo1GDB2^6ekw8Ml9sXA)=t0LD`btN;K2 delta 32 ocmZoTz}0YoYr}JSP9t+OGb0NN6T{{Y^6ekw8Ml9sXA)=t0LIJb%7 diff --git a/latest version/database/arcsong.db b/latest version/database/arcsong.db index 9ad6e72638f88de2b4e664529f509a24ba9844c5..ca045413a7dc0abe91894372bb76a89a4655dcaa 100644 GIT binary patch delta 25846 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 xdggWJ3+`o@$9S_p{{wU_ExZ5# delta 22730 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 5 and myrank <= 9999 - limit + 4: # 万名内,前面有4个人 c.execute('''select user_id from best_score where song_id = :song_id and difficulty = :difficulty order by score DESC, time_played DESC limit :limit offset :offset''', { diff --git a/latest version/server/auth.py b/latest version/server/auth.py index 80225d9..df1069d 100644 --- a/latest version/server/auth.py +++ b/latest version/server/auth.py @@ -37,14 +37,17 @@ def arc_login(name: str, password: str, device_id: str): # 登录判断 device_list.append(i[0]) else: device_list.append('') - if device_id in device_list: - c.execute('''delete from login where login_device=:a''', { - 'a': device_id}) - should_delete_num = len( - device_list) - Config.LOGIN_DEVICE_NUMBER_LIMIT - else: - should_delete_num = len( - device_list) + 1 - Config.LOGIN_DEVICE_NUMBER_LIMIT + + should_delete_num = len( + device_list) + 1 - Config.LOGIN_DEVICE_NUMBER_LIMIT + + if not Config.ALLOW_LOGIN_SAME_DEVICE: + if device_id in device_list: # 对相同设备进行删除 + c.execute('''delete from login where login_device=:a''', { + 'a': device_id}) + should_delete_num = len( + device_list) + 1 - device_list.count(device_id) - Config.LOGIN_DEVICE_NUMBER_LIMIT + if should_delete_num >= 1: # 删掉多余token c.execute('''delete from login where rowid in (select rowid from login where user_id=:user_id limit :a);''', {'user_id': user_id, 'a': int(should_delete_num)}) diff --git a/latest version/server/info.py b/latest version/server/info.py index 0146319..c459334 100644 --- a/latest version/server/info.py +++ b/latest version/server/info.py @@ -197,7 +197,7 @@ def get_value_0(c, user_id): "max_stamina_ts": 1586274871917, "stamina": 12, "world_unlocks": ["scenery_chap1", "scenery_chap2", "scenery_chap3", "scenery_chap4", "scenery_chap5"], - "world_songs": ["babaroque", "shadesoflight", "kanagawa", "lucifer", "anokumene", "ignotus", "rabbitintheblackroom", "qualia", "redandblue", "bookmaker", "darakunosono", "espebranch", "blacklotus", "givemeanightmare", "vividtheory", "onefr", "gekka", "vexaria3", "infinityheaven3", "fairytale3", "goodtek3", "suomi", "rugie", "faintlight", "harutopia", "goodtek", "dreaminattraction", "syro", "diode", "freefall", "grimheart", "blaster", "cyberneciacatharsis", "monochromeprincess", "revixy", "vector", "supernova", "nhelv", "purgatorium3", "dement3", "crossover", "guardina", "axiumcrisis", "worldvanquisher", "sheriruth", "pragmatism", "gloryroad", "etherstrike", "corpssansorganes", "lostdesire", "blrink", "essenceoftwilight", "lapis", "solitarydream", "lumia3", "purpleverse", "moonheart3", "glow"], + "world_songs": ["babaroque", "shadesoflight", "kanagawa", "lucifer", "anokumene", "ignotus", "rabbitintheblackroom", "qualia", "redandblue", "bookmaker", "darakunosono", "espebranch", "blacklotus", "givemeanightmare", "vividtheory", "onefr", "gekka", "vexaria3", "infinityheaven3", "fairytale3", "goodtek3", "suomi", "rugie", "faintlight", "harutopia", "goodtek", "dreaminattraction", "syro", "diode", "freefall", "grimheart", "blaster", "cyberneciacatharsis", "monochromeprincess", "revixy", "vector", "supernova", "nhelv", "purgatorium3", "dement3", "crossover", "guardina", "axiumcrisis", "worldvanquisher", "sheriruth", "pragmatism", "gloryroad", "etherstrike", "corpssansorganes", "lostdesire", "blrink", "essenceoftwilight", "lapis", "solitarydream", "lumia3", "purpleverse", "moonheart3", "glow", "enchantedlove", "take"], "singles": get_user_singles(c, user_id), # ["dataerror", "yourvoiceso", "crosssoul", "impurebird", "auxesia", "modelista", "yozakurafubuki", "surrender", "metallicpunisher", "carminescythe", "bethere", "callmyname", "fallensquare", "dropdead", "alexandrite", "astraltale", "phantasia", "empireofwinter", "libertas", "dottodot", "dreadnought", "mirzam", "heavenlycaress", "filament", "avantraze", "battlenoone", "saikyostronger", "izana", "einherjar", "laqryma", "amygdata", "altale", "feelssoright", "scarletcage", "teriqma", "mahoroba", "badtek", "maliciousmischance", "buchigireberserker", "galaxyfriends", "xeraphinite", "xanatos"] "packs": get_user_packs(c, user_id), # ["vs", "extend", "dynamix", "prelude", "core", "yugamu", "omatsuri", "zettai", "mirai", "shiawase", "chunithm", "nijuusei", "groovecoaster", "rei", "tonesphere", "lanota"] diff --git a/latest version/setting.py b/latest version/setting.py index 1188931..daed737 100644 --- a/latest version/setting.py +++ b/latest version/setting.py @@ -8,7 +8,7 @@ class Config(): 主机的地址和端口号 Host and port of your server ''' - HOST = '192.168.1.113' + HOST = '192.168.1.101' PORT = '80' ''' -------------------- @@ -58,5 +58,10 @@ class Config(): ''' LOGIN_DEVICE_NUMBER_LIMIT = 1 ''' + 是否允许同设备多应用共存登录 + If multiple applications on the same device to log in is allowed + ''' + ALLOW_LOGIN_SAME_DEVICE = False + ''' -------------------- ''' diff --git a/latest version/web/index.py b/latest version/web/index.py index 9925cca..a49e0b0 100644 --- a/latest version/web/index.py +++ b/latest version/web/index.py @@ -380,7 +380,7 @@ def all_character(): def change_character(): # 修改角色数据 skill_ids = ['No_skill', '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', 'frags_kou', 'visual_ink', 'shirabe_entry_fee', 'frags_yume', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle'] + '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', 'frags_kou', 'visual_ink', 'shirabe_entry_fee', 'frags_yume', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion'] return render_template('web/changechar.html', skill_ids=skill_ids)