public void OnBanchoPacketEvent(BanchoPacketArgs args) { if (args.Pr["IS_PACKET_DEBUGGING"] == null) { return; } if ((bool)args.Pr["IS_PACKET_DEBUGGING"]) { _ev?.RunEvent(EventType.BanchoSendIrcMessagePrivate, new BanchoSendIrcMessageArgs { Pr = args.Pr, Message = new MessageStruct { Message = $"\n\n\n\n\n\n\n\n\n\n" + $"\nPacketId: {args.PacketId}" + $"\nPacket Length: {args.Data.BaseStream.Length}" + $"\nPacketData: {Hex.ToHex(((MemoryStream) args.Data.BaseStream).ToArray())}", Username = args.Pr.User.UserName, ChannelTarget = args.Pr.User.UserName, SenderId = args.Pr.User.Id } }); } }
public void OnBanchoPacketEvent(BanchoPacketArgs args) { if (args.pr.Get <bool>("IS_PACKET_DEBUGGING")) { args.pr += new Announce($"PacketId: {args.PacketId}"); } }
public async Task OnBanchoPacket(BanchoPacketArgs args) { switch (args.PacketId) { #region Stats case PacketId.ClientSendUserStatus: await _evmgr.RunEvent( EventType.BanchoSendUserStatus, new BanchoSendUserStatusArgs { pr = args.pr, status = args.Data.ReadData <SendUserStatus>().Status } ); break; case PacketId.ClientPong: await _evmgr.RunEvent( EventType.BanchoPong, new BanchoPongArgs { pr = args.pr } ); break; case PacketId.ClientRequestStatusUpdate: await _evmgr.RunEvent( EventType.BanchoRequestStatusUpdate, new BanchoSendUserStatusArgs { pr = args.pr, status = args.pr.Status } ); break; case PacketId.ClientUserStatsRequest: await _evmgr.RunEvent( EventType.BanchoUserStatsRequest, new BanchoUserStatsRequestArgs { pr = args.pr, userIds = args.Data.ReadData <UserStatsRequest>().Userids } ); break; case PacketId.ClientReceiveUpdates: await _evmgr.RunEvent( EventType.BanchoReceiveUpdates, new BanchoEmptyEventArgs { pr = args.pr } ); break; #endregion #region Channels case PacketId.ClientChannelJoin: await _evmgr.RunEvent( EventType.BanchoChannelJoin, new BanchoChannelJoinArgs { pr = args.pr, ChannelName = args.Data.ReadData <ChannelJoin>().ChannelName } ); break; case PacketId.ClientChannelLeave: await _evmgr.RunEvent( EventType.BanchoChannelLeave, new BanchoChannelLeaveArgs { pr = args.pr, ChannelName = args.Data.ReadData <ChannelLeave>().ChannelName } ); break; #endregion #region Chat case PacketId.ClientSendIrcMessagePrivate: case PacketId.ClientSendIrcMessage: var msg = args.Data.ReadData <SendIrcMessage>(); await _evmgr.RunEvent( msg.Msg.ChannelTarget.StartsWith("#") ?EventType.BanchoSendIrcMessage : EventType.BanchoSendIrcMessagePrivate, new BanchoSendIRCMessageArgs { pr = args.pr, Message = msg.Msg } ); break; #endregion #region Friends case PacketId.ClientFriendAdd: await _evmgr.RunEvent( EventType.BanchoFriendAdd, new BanchoFriendAddArgs { pr = args.pr, FriendId = args.Data.ReadData <FriendAdd>().FriendId } ); break; case PacketId.ClientFriendRemove: await _evmgr.RunEvent( EventType.BanchoFriendRemove, new BanchoFriendRemoveArgs { pr = args.pr, FriendId = args.Data.ReadData <FriendRemove>().FriendId } ); break; #endregion #region Spectator case PacketId.ClientStartSpectating: await _evmgr.RunEvent( EventType.BanchoStartSpectating, new BanchoStartSpectatingArgs { pr = args.pr, SpectatorHostID = args.Data.ReadData <StartSpectating>().ToSpectateId } ); break; case PacketId.ClientStopSpectating: await _evmgr.RunEvent( EventType.BanchoStopSpectating, new BanchoStopSpectatingArgs { pr = args.pr } ); break; case PacketId.ClientCantSpectate: await _evmgr.RunEvent( EventType.BanchoCantSpectate, new BanchoCantSpectateArgs { pr = args.pr } ); break; case PacketId.ClientSpectateFrames: await _evmgr.RunEvent( EventType.BanchoBroadcastFrames, new BanchoBroadcastFramesArgs { pr = args.pr, frames = args.Data.ReadData <SpectatorFrames>().Frames } ); break; #endregion #region Multi case PacketId.ClientLobbyJoin: await _evmgr.RunEvent( EventType.BanchoLobbyJoin, new BanchoLobbyJoinArgs { pr = args.pr } ); break; case PacketId.ClientLobbyPart: await _evmgr.RunEvent( EventType.BanchoLobbyPart, new BanchoLobbyPartArgs { pr = args.pr } ); break; case PacketId.ClientMatchCreate: var x = args.Data.ReadData <MatchCreate>().Room; x._pss = _pss; x._ms = _ms; x._ps = _ps; await _evmgr.RunEvent( EventType.BanchoMatchCreate, new BanchoMatchCreateArgs { pr = args.pr, room = x } ); break; case PacketId.ClientMatchJoin: var mJoin = args.Data.ReadData <MatchJoin>(); await _evmgr.RunEvent( EventType.BanchoMatchJoin, new BanchoMatchJoinArgs { pr = args.pr, matchId = mJoin.MatchId, password = mJoin.Password } ); break; case PacketId.ClientMatchPart: await _evmgr.RunEvent( EventType.BanchoMatchPart, new BanchoMatchPartArgs { pr = args.pr } ); break; case PacketId.ClientMatchChangeSlot: await _evmgr.RunEvent( EventType.BanchoMatchChangeSlot, new BanchoMatchChangeSlotArgs { pr = args.pr, SlotId = args.Data.ReadData <MatchChangeSlot>().SlotId } ); break; case PacketId.ClientMatchChangeMods: await _evmgr.RunEvent( EventType.BanchoMatchChangeMods, new BanchoMatchChangeModsArgs { pr = args.pr, mods = args.Data.ReadData <MatchChangeMods>().Mods } ); break; case PacketId.ClientMatchLock: await _evmgr.RunEvent( EventType.BanchoMatchLock, new BanchoMatchLockArgs { pr = args.pr, SlotId = args.Data.ReadData <MatchLock>().SlotId } ); break; case PacketId.ClientMatchChangeSettings: var y = args.Data.ReadData <MatchChangeSettings>().Room; y._pss = _pss; y._ms = _ms; y._ps = _ps; await _evmgr.RunEvent( EventType.BanchoMatchChangeSettings, new BanchoMatchChangeSettingsArgs { pr = args.pr, room = y } ); break; case PacketId.ClientMatchChangePassword: var xy = args.Data.ReadData <MatchChangePassword>().Room; xy._pss = _pss; xy._ms = _ms; xy._ps = _ps; await _evmgr.RunEvent( EventType.BanchoMatchChangePassword, new BanchoMatchChangePasswordArgs { pr = args.pr, room = xy } ); break; case PacketId.ClientMatchChangeTeam: await _evmgr.RunEvent( EventType.BanchoMatchChangeTeam, new BanchoMatchChangeTeamArgs { pr = args.pr } ); break; case PacketId.ClientMatchReady: await _evmgr.RunEvent( EventType.BanchoMatchReady, new BanchoMatchReadyArgs { pr = args.pr } ); break; case PacketId.ClientMatchNotReady: await _evmgr.RunEvent( EventType.BanchoMatchNotReady, new BanchoMatchNotReadyArgs { pr = args.pr } ); break; case PacketId.ClientMatchTransferHost: await _evmgr.RunEvent( EventType.BanchoMatchTransferHost, new BanchoMatchTransferHostArgs { pr = args.pr, SlotId = args.Data.ReadData <MatchTransferHost>().SlotId } ); break; case PacketId.ClientMatchNoBeatmap: await _evmgr.RunEvent( EventType.BanchoMatchNoBeatmap, new BanchoMatchNoBeatmapArgs { pr = args.pr } ); break; case PacketId.ClientMatchHasBeatmap: await _evmgr.RunEvent( EventType.BanchoMatchHasBeatmap, new BanchoMatchHasBeatmapArgs { pr = args.pr } ); break; case PacketId.ClientInvite: await _evmgr.RunEvent( EventType.BanchoInvite, new BanchoInviteArgs { pr = args.pr, UserId = args.Data.ReadData <Invite>().UserId } ); break; case PacketId.ClientMatchStart: await _evmgr.RunEvent( EventType.BanchoMatchStart, new BanchoMatchStartArgs { pr = args.pr } ); break; case PacketId.ClientMatchLoadComplete: await _evmgr.RunEvent( EventType.BanchoMatchLoadComplete, new BanchoMatchLoadCompleteArgs { pr = args.pr } ); break; case PacketId.ClientMatchScoreUpdate: await _evmgr.RunEvent( EventType.BanchoMatchScoreUpdate, new BanchoMatchScoreUpdateArgs { pr = args.pr, Frame = args.Data.ReadData <MatchScoreUpdate>().Frame } ); break; case PacketId.ClientMatchFailed: await _evmgr.RunEvent( EventType.BanchoMatchFailed, new BanchoMatchFailedArgs { pr = args.pr } ); break; case PacketId.ClientMatchSkipRequest: await _evmgr.RunEvent( EventType.BanchoMatchSkipRequest, new BanchoMatchSkipRequestArgs { pr = args.pr } ); break; case PacketId.ClientMatchComplete: await _evmgr.RunEvent( EventType.BanchoMatchComplete, new BanchoMatchCompleteArgs { pr = args.pr } ); break; #endregion #region Other case PacketId.ClientExit: await _evmgr.RunEvent( EventType.BanchoExit, new BanchoExitArgs { pr = args.pr, err = args.Data.ReadData <Exit>().ErrorState } ); break; default: Logger.Debug( $"PacketId: {args.PacketId} Length: {args.Data.BaseStream.Length} Data: {Hex.ToHex(args.Data.ReadToEnd())}" ); break; #endregion } }