From 8e4c44b8572315d4227b108a8aa8f61fc59f6eb2 Mon Sep 17 00:00:00 2001 From: Nyo Date: Tue, 13 Sep 2016 11:56:53 +0200 Subject: [PATCH] .BANCHO. Add automatic beatmap download when spectating someone --- constants/clientPackets.py | 3 ++- constants/serverPackets.py | 2 +- events/changeActionEvent.py | 5 +++-- objects/osuToken.py | 1 + 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/constants/clientPackets.py b/constants/clientPackets.py index f9debd2..6742d05 100644 --- a/constants/clientPackets.py +++ b/constants/clientPackets.py @@ -12,7 +12,8 @@ def userActionChange(stream): ["actionText", dataTypes.STRING], ["actionMd5", dataTypes.STRING], ["actionMods", dataTypes.UINT32], - ["gameMode", dataTypes.BYTE] + ["gameMode", dataTypes.BYTE], + ["beatmapID", dataTypes.SINT32] ]) def userStatsRequest(stream): diff --git a/constants/serverPackets.py b/constants/serverPackets.py index 8e98cec..caf7a70 100644 --- a/constants/serverPackets.py +++ b/constants/serverPackets.py @@ -134,7 +134,7 @@ def userStats(userID, force = False): [userToken.actionMd5, dataTypes.STRING], [userToken.actionMods, dataTypes.SINT32], [userToken.gameMode, dataTypes.BYTE], - [0, dataTypes.SINT32], + [userToken.beatmapID, dataTypes.SINT32], [userToken.rankedScore, dataTypes.UINT64], [userToken.accuracy, dataTypes.FFLOAT], [userToken.playcount, dataTypes.UINT32], diff --git a/events/changeActionEvent.py b/events/changeActionEvent.py index 45be8f2..884bddf 100644 --- a/events/changeActionEvent.py +++ b/events/changeActionEvent.py @@ -39,11 +39,12 @@ if userToken.matchID != -1 and userToken.actionID != actions.MULTIPLAYING and us userToken.gameMode = packetData["gameMode"] userToken.updateCachedStats() - # Always update action id, text and md5 + # Always update action id, text, md5 and beatmapID userToken.actionID = packetData["actionID"] userToken.actionText = packetData["actionText"] userToken.actionMd5 = packetData["actionMd5"] userToken.actionMods = packetData["actionMods"] + userToken.beatmapID = packetData["beatmapID"] # Enqueue our new user panel and stats to us and our spectators recipients = [userID] @@ -64,4 +65,4 @@ if userToken.matchID != -1 and userToken.actionID != actions.MULTIPLAYING and us token.enqueue(serverPackets.userStats(userID, force)) # Console output - log.info("{} changed action: {} [{}][{}]".format(username, str(userToken.actionID), userToken.actionText, userToken.actionMd5)) + log.info("{} changed action: {} [{}][{}][{}]".format(username, str(userToken.actionID), userToken.actionText, userToken.actionMd5, userToken.beatmapID)) diff --git a/objects/osuToken.py b/objects/osuToken.py index 4bd14e7..5bc7852 100644 --- a/objects/osuToken.py +++ b/objects/osuToken.py @@ -58,6 +58,7 @@ class token: self.actionMd5 = "" self.actionMods = 0 self.gameMode = gameModes.std + self.beatmapID = 0 self.rankedScore = 0 self.accuracy = 0.0 self.playcount = 0