diff --git a/README.md b/README.md index 46f3fb0..98d50b0 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,13 @@ An implementation of osu!bancho in Javascript
### Features: - - Multiplayer + - Multiplayer + Invites - Spectator - User Panel (Missing Friends) - Chat & Channels - Private Messages ### Currently unimplemented things: - - Multiplayer Invites - Friends List - Bot diff --git a/server/Packets/MultiplayerInvite.js b/server/Packets/MultiplayerInvite.js new file mode 100644 index 0000000..e1daaa6 --- /dev/null +++ b/server/Packets/MultiplayerInvite.js @@ -0,0 +1,17 @@ +const osu = require("osu-packet"), + getUserById = require("../util/getUserById.js"); + +module.exports = function(CurrentUser, InvitedUser) { + let osuPacketWriter = new osu.Bancho.Writer; + + const InvitedUserClass = getUserById(InvitedUser); + + osuPacketWriter.SendMessage({ + sendingClient: CurrentUser.username, + message: `Come join my multiplayer match: [osump://${CurrentUser.currentMatch}/ ${global.matches[CurrentUser.currentMatch][1].gameName}]`, + target: CurrentUser.username, + senderId: CurrentUser.id + }); + + InvitedUserClass.addActionToQueue(osuPacketWriter.toBuffer); +} \ No newline at end of file diff --git a/server/serverHandler.js b/server/serverHandler.js index 7367e61..63db5ad 100644 --- a/server/serverHandler.js +++ b/server/serverHandler.js @@ -89,7 +89,8 @@ const ChangeAction = require("./Packets/ChangeAction.js"), ChannelPart = require("./Packets/ChannelPart.js"), UserPresenceBundle = require("./Packets/UserPresenceBundle.js"), UserPresence = require("./Packets/UserPresence.js"), - UserStatsRequest = require("./Packets/UserStatsRequest.js"); + UserStatsRequest = require("./Packets/UserStatsRequest.js"), + MultiplayerInvite = require("./Packets/MultiplayerInvite.js"); module.exports = function(req, res) { // Add to requests for logging @@ -249,6 +250,10 @@ module.exports = function(req, res) { UserStatsRequest(userClass, CurrentPacket.data); break; + case packetIDs.client_invite: + MultiplayerInvite(userClass, CurrentPacket.data); + break; + case packetIDs.client_userPresenceRequest: UserPresence(userClass, userClass.id); break;