mirror of
https://github.com/Lost-MSth/Arcaea-server.git
synced 2026-02-14 20:37:27 +08:00
Fix some bugs
Fix the fanmade cloud save (add a switch in setting) Add SSL switch Fix 'my rank' in game, if there is not enough people behind you, now it will show 20 people as expected
This commit is contained in:
Binary file not shown.
@@ -580,6 +580,10 @@ def main():
|
|||||||
else:
|
else:
|
||||||
app.logger.info('Complete!')
|
app.logger.info('Complete!')
|
||||||
|
|
||||||
|
if Config.SSL_CERT and Config.SSL_KEY:
|
||||||
|
app.run(Config.HOST, Config.PORT, ssl_context=(
|
||||||
|
Config.SSL_CERT, Config.SSL_KEY))
|
||||||
|
else:
|
||||||
app.run(Config.HOST, Config.PORT)
|
app.run(Config.HOST, Config.PORT)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import time
|
|||||||
import json
|
import json
|
||||||
import server.arcworld
|
import server.arcworld
|
||||||
import hashlib
|
import hashlib
|
||||||
|
from setting import Config
|
||||||
|
|
||||||
|
|
||||||
def b2int(x):
|
def b2int(x):
|
||||||
@@ -129,9 +130,13 @@ def arc_score_me(user_id, song_id, difficulty, limit=20):
|
|||||||
'user_id': user_id, 'song_id': song_id, 'difficulty': difficulty})
|
'user_id': user_id, 'song_id': song_id, 'difficulty': difficulty})
|
||||||
x = c.fetchone()
|
x = c.fetchone()
|
||||||
myrank = int(x[0]) + 1
|
myrank = int(x[0]) + 1
|
||||||
|
c.execute('''select count(*) from best_score where song_id=:a and difficulty=:b''',
|
||||||
|
{'a': song_id, 'b': difficulty})
|
||||||
|
amount = int(c.fetchone()[0])
|
||||||
|
|
||||||
if myrank <= 4: # 排名在前4
|
if myrank <= 4: # 排名在前4
|
||||||
return arc_score_top(song_id, difficulty, limit)
|
return arc_score_top(song_id, difficulty, limit)
|
||||||
elif myrank >= 5 and myrank <= 9999 - limit + 4: # 万名内,前面有4个人
|
elif myrank >= 5 and myrank <= 9999 - limit + 4 and amount >= 10000: # 万名内,前面有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''', {
|
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''', {
|
||||||
'song_id': song_id, 'difficulty': difficulty, 'limit': limit, 'offset': myrank - 5})
|
'song_id': song_id, 'difficulty': difficulty, 'limit': limit, 'offset': myrank - 5})
|
||||||
x = c.fetchall()
|
x = c.fetchall()
|
||||||
@@ -157,6 +162,17 @@ def arc_score_me(user_id, song_id, difficulty, limit=20):
|
|||||||
y = get_score(c, user_id, song_id, difficulty)
|
y = get_score(c, user_id, song_id, difficulty)
|
||||||
y['rank'] = -1
|
y['rank'] = -1
|
||||||
r.append(y)
|
r.append(y)
|
||||||
|
elif amount - myrank < limit - 5: # 后方人数不足
|
||||||
|
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''', {
|
||||||
|
'song_id': song_id, 'difficulty': difficulty, 'limit': limit, 'offset': amount - limit})
|
||||||
|
x = c.fetchall()
|
||||||
|
if x != []:
|
||||||
|
rank = amount - limit
|
||||||
|
for i in x:
|
||||||
|
rank += 1
|
||||||
|
y = get_score(c, i[0], song_id, difficulty)
|
||||||
|
y['rank'] = rank
|
||||||
|
r.append(y)
|
||||||
else:
|
else:
|
||||||
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''', {
|
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''', {
|
||||||
'song_id': song_id, 'difficulty': difficulty, 'limit': limit, 'offset': 9998-limit})
|
'song_id': song_id, 'difficulty': difficulty, 'limit': limit, 'offset': 9998-limit})
|
||||||
@@ -579,10 +595,10 @@ def arc_all_get(user_id):
|
|||||||
scores_data = []
|
scores_data = []
|
||||||
clearlamps_data = []
|
clearlamps_data = []
|
||||||
clearedsongs_data = []
|
clearedsongs_data = []
|
||||||
# unlocklist_data = []
|
unlocklist_data = []
|
||||||
installid_data = ''
|
installid_data = ''
|
||||||
devicemodelname_data = ''
|
devicemodelname_data = ''
|
||||||
# story_data = []
|
story_data = []
|
||||||
createdAt = 0
|
createdAt = 0
|
||||||
|
|
||||||
with Connect() as c:
|
with Connect() as c:
|
||||||
@@ -594,17 +610,16 @@ def arc_all_get(user_id):
|
|||||||
scores_data = json.loads(x[1])[""]
|
scores_data = json.loads(x[1])[""]
|
||||||
clearlamps_data = json.loads(x[2])[""]
|
clearlamps_data = json.loads(x[2])[""]
|
||||||
clearedsongs_data = json.loads(x[3])[""]
|
clearedsongs_data = json.loads(x[3])[""]
|
||||||
# unlocklist_data = json.loads(x[4])[""]
|
unlocklist_data = json.loads(x[4])[""]
|
||||||
installid_data = json.loads(x[5])["val"]
|
installid_data = json.loads(x[5])["val"]
|
||||||
devicemodelname_data = json.loads(x[6])["val"]
|
devicemodelname_data = json.loads(x[6])["val"]
|
||||||
# story_data = json.loads(x[7])[""]
|
story_data = json.loads(x[7])[""]
|
||||||
if x[8]:
|
if x[8]:
|
||||||
createdAt = int(x[8])
|
createdAt = int(x[8])
|
||||||
|
|
||||||
return {
|
if Config.SAVE_FULL_UNLOCK:
|
||||||
"user_id": user_id,
|
installid_data = "0fcec8ed-7b62-48e2-9d61-55041a22b123"
|
||||||
"story": {
|
story_data = [{
|
||||||
"": [{
|
|
||||||
"ma": 1,
|
"ma": 1,
|
||||||
"mi": 1,
|
"mi": 1,
|
||||||
"c": True,
|
"c": True,
|
||||||
@@ -920,16 +935,7 @@ def arc_all_get(user_id):
|
|||||||
"c": True,
|
"c": True,
|
||||||
"r": True
|
"r": True
|
||||||
}]
|
}]
|
||||||
},
|
unlocklist_data = [{
|
||||||
"devicemodelname": {
|
|
||||||
"val": devicemodelname_data
|
|
||||||
},
|
|
||||||
"installid": {
|
|
||||||
# installid_data 这里如果不固定,可能会导致arcaea以为数据一样而不更新
|
|
||||||
"val": "0fcec8ed-7b62-48e2-9d61-55041a22b123"
|
|
||||||
},
|
|
||||||
"unlocklist": {
|
|
||||||
"": [{
|
|
||||||
"unlock_key": "worldvanquisher|2|0",
|
"unlock_key": "worldvanquisher|2|0",
|
||||||
"complete": 1
|
"complete": 1
|
||||||
}, {
|
}, {
|
||||||
@@ -1509,7 +1515,22 @@ def arc_all_get(user_id):
|
|||||||
"unlock_key": "anokumene|1|0",
|
"unlock_key": "anokumene|1|0",
|
||||||
"complete": 1
|
"complete": 1
|
||||||
}]
|
}]
|
||||||
}, "clearedsongs": {
|
|
||||||
|
return {
|
||||||
|
"user_id": user_id,
|
||||||
|
"story": {
|
||||||
|
"": story_data
|
||||||
|
},
|
||||||
|
"devicemodelname": {
|
||||||
|
"val": devicemodelname_data
|
||||||
|
},
|
||||||
|
"installid": {
|
||||||
|
"val": installid_data
|
||||||
|
},
|
||||||
|
"unlocklist": {
|
||||||
|
"": unlocklist_data
|
||||||
|
},
|
||||||
|
"clearedsongs": {
|
||||||
"": clearedsongs_data
|
"": clearedsongs_data
|
||||||
},
|
},
|
||||||
"clearlamps": {
|
"clearlamps": {
|
||||||
|
|||||||
@@ -14,6 +14,19 @@ class Config():
|
|||||||
--------------------
|
--------------------
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
'''
|
||||||
|
--------------------
|
||||||
|
SSL证书路径
|
||||||
|
留空则使用HTTP
|
||||||
|
SSL certificate path
|
||||||
|
If left blank, use HTTP.
|
||||||
|
'''
|
||||||
|
SSL_CERT = '' # *.pem
|
||||||
|
SSL_KEY = '' # *.key
|
||||||
|
'''
|
||||||
|
--------------------
|
||||||
|
'''
|
||||||
|
|
||||||
'''
|
'''
|
||||||
--------------------
|
--------------------
|
||||||
愚人节模式开关
|
愚人节模式开关
|
||||||
@@ -95,3 +108,13 @@ class Config():
|
|||||||
'''
|
'''
|
||||||
--------------------
|
--------------------
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
'''
|
||||||
|
--------------------
|
||||||
|
是否强制使用全解锁云端存档
|
||||||
|
If forcing full unlocked cloud save is enabled
|
||||||
|
'''
|
||||||
|
SAVE_FULL_UNLOCK = True
|
||||||
|
'''
|
||||||
|
--------------------
|
||||||
|
'''
|
||||||
|
|||||||
Reference in New Issue
Block a user