mirror of
https://github.com/Lost-MSth/Arcaea-server.git
synced 2026-02-15 04:47:32 +08:00
[Enhance] Link Play log & video download
- Add support for downloading `video_720.mp4` & `video_1080.mp4` - More detailed log for Link Play #135
This commit is contained in:
@@ -16,6 +16,7 @@ logging.basicConfig(format='[%(asctime)s] %(levelname)s in %(module)s: %(message
|
||||
class UDP_handler(socketserver.BaseRequestHandler):
|
||||
def handle(self):
|
||||
client_msg, server = self.request
|
||||
# print(client_msg)
|
||||
try:
|
||||
token = client_msg[:8]
|
||||
iv = client_msg[8:20]
|
||||
|
||||
@@ -43,7 +43,9 @@ def unique_random(dataset, length=8, random_func=None):
|
||||
|
||||
def clear_player(token):
|
||||
# 清除玩家信息和token
|
||||
del Store.player_dict[Store.link_play_data[token]['player_id']]
|
||||
player_id = Store.link_play_data[token]['player_id']
|
||||
logging.info(f'Clean player `{Store.player_dict[player_id].name}`')
|
||||
del Store.player_dict[player_id]
|
||||
del Store.link_play_data[token]
|
||||
|
||||
|
||||
@@ -51,6 +53,7 @@ def clear_room(room):
|
||||
# 清除房间信息
|
||||
room_id = room.room_id
|
||||
room_code = room.room_code
|
||||
logging.info(f'Clean room `{room_code}`')
|
||||
del Store.room_id_dict[room_id]
|
||||
del Store.room_code_dict[room_code]
|
||||
del room
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import logging
|
||||
from time import time
|
||||
|
||||
from .config import Config
|
||||
@@ -44,6 +45,10 @@ class Player:
|
||||
|
||||
self.start_command_num = 0
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self.player_name.decode('ascii').rstrip('\x00')
|
||||
|
||||
def set_player_name(self, player_name: str):
|
||||
self.player_name = player_name.encode('ascii')
|
||||
if len(self.player_name) > 16:
|
||||
@@ -133,16 +138,23 @@ class Room:
|
||||
for i in range(4):
|
||||
if self.players[i].player_id == self.host_id:
|
||||
for j in range(1, 4):
|
||||
if self.players[(i + j) % 4].player_id != 0:
|
||||
self.host_id = self.players[(i + j) % 4].player_id
|
||||
player = self.players[(i + j) % 4]
|
||||
if player.player_id != 0:
|
||||
self.host_id = player.player_id
|
||||
logging.info(
|
||||
f'Player `{player.name}` becomes the host of room `{self.room_code}`')
|
||||
break
|
||||
break
|
||||
|
||||
def delete_player(self, player_index: int):
|
||||
# 删除某个玩家
|
||||
if self.players[player_index].player_id == self.host_id:
|
||||
player = self.players[player_index]
|
||||
if player.player_id == self.host_id:
|
||||
self.make_round()
|
||||
|
||||
logging.info(
|
||||
f'Player `{player.name}` leaves room `{self.room_code}`')
|
||||
|
||||
self.players[player_index].online = 0
|
||||
self.players[player_index] = Player()
|
||||
self.update_song_unlock()
|
||||
@@ -203,3 +215,10 @@ class Room:
|
||||
|
||||
for i in max_score_i:
|
||||
self.players[i].best_player_flag = 1
|
||||
|
||||
logging.info(
|
||||
f'Room `{self.room_code}` finishes song `{self.song_idx}`')
|
||||
for i in self.players:
|
||||
if i.player_id != 0:
|
||||
logging.info(
|
||||
f'- Player `{i.name}` - Score: {i.last_score} Cleartype: {i.last_cleartype} Difficulty: {i.last_difficulty}')
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import logging
|
||||
import time
|
||||
|
||||
from .udp_class import Room, bi
|
||||
@@ -44,6 +45,8 @@ class CommandParser:
|
||||
for i in self.room.players:
|
||||
if i.player_id == player_id and i.online == 1:
|
||||
self.room.host_id = player_id
|
||||
logging.info(
|
||||
f'Player `{i.name}` becomes the host of room `{self.room.room_code}`')
|
||||
|
||||
self.s.random_code = self.command[16:24]
|
||||
self.room.command_queue.append(self.s.command_10())
|
||||
@@ -189,6 +192,8 @@ class CommandParser:
|
||||
# 将换房主时间提前到此刻
|
||||
self.room.make_round()
|
||||
|
||||
logging.info(f'Room `{self.room.room_code}` starts playing')
|
||||
|
||||
if self.room.state in (4, 5, 6):
|
||||
timestamp = round(time.time() * 1000)
|
||||
self.room.countdown -= timestamp - self.room.timestamp
|
||||
|
||||
Reference in New Issue
Block a user