public void OnBanchoRequest(ref List <BanchoPacket> plist) { for (var i = 0; i < plist.Count; i++) { BanchoPacket packet = plist[i]; switch (packet.Type) { case PacketType.ClientChatMessagePublic: case PacketType.ClientChatMessagePrivate: BanchoChatMessage msg = new BanchoChatMessage(); msg.Populate(packet.Data); if (msg.Message.StartsWith(CommandPrefix)) //check if this message is a command for us { plist.RemoveAt(i); //remove this packet from packet list HandleCommand(msg); //do stuff w/ it } break; case PacketType.ClientMultiScoreUpdate: if (_mpScoreSpam) { var score = new BanchoScoreFrame(); score.Populate(packet.Data); _mss.ModifyScorePacket(ref score); plist[i].Data = score.Serialize(); } break; case PacketType.ClientUserStatus: if (_customAction) { var status = new BanchoUserStatus(); status.Populate(packet.Data); status.Action = BanchoAction.Submitting; status.ActionText = "totally legit scores"; plist[i].Data = status.Serialize(); } break; case PacketType.ClientSpectateData: if (_spectateCorrupt) { var frames = new BanchoReplayFrameBundle(); frames.Populate(packet.Data); SpectatorCorrupter.ModifySpectatePacket(ref frames); plist[i].Data = frames.Serialize(); } break; } } while (_packetQueueSend.Count != 0) { plist.Add(_packetQueueSend.Dequeue()); } }
public void OnBanchoResponse(ref List <BanchoPacket> plist) { for (var i = 0; i < plist.Count; i++) { BanchoPacket packet = plist[i]; switch (packet.Type) { case PacketType.ServerMultiMatchNew: case PacketType.ServerMultiMatchUpdate: if (_mpInviteGenerator) { BanchoMultiplayerMatch match = new BanchoMultiplayerMatch(); match.Populate(packet.Data); _mig.HandleNewMultiplayerMatch(match); } break; case PacketType.ServerChatMessage: if (_peppy) { var msg = new BanchoChatMessage(); msg.Populate(packet.Data); var rand = new Random((int)DateTime.Now.Ticks); //yes, this is horrible and yes, it will stay msg.Message = string.Join(" ", msg.Message.Split(' ').Select(a => new[] { "dick", "wang", "f**k a duck", "f**k a donkey", "cocks" }[rand.Next(5)])); //msg.Message = "No quote found. Wow, talk more, losers. (Syntax: .quote [#|nick|add|remove] [\"quote\"|#] [- nick])"; packet.Data = msg.Serialize(); } break; case PacketType.ServerUserPresence: if (_peopleAreWeird) { var pr = new BanchoUserPresence(); pr.Populate(packet.Data); if (pr.Username != "JustM3") { pr.Username = "******"; //bad hardcode, sorry } pr.Permissions |= UserPermissions.Peppy; pr.Rank = Int32.MinValue; packet.Data = pr.Serialize(); } break; case PacketType.ServerUserData: if (_peopleAreWeird) { var u = new BanchoUserData(); u.Populate(packet.Data); u.Accuracy = float.NegativeInfinity; u.Performance = short.MaxValue; u.RankedScore = 1; u.TotalScore = 1; u.Rank = -1; u.Playcount = Int32.MaxValue; u.Status.Action = BanchoAction.Testing; u.Status.ActionText = "osu!HOPE"; u.Status.BeatmapId = 0; u.Status.BeatmapChecksum = ""; packet.Data = u.Serialize(); } break; case PacketType.ServerSpectateData: if (_spectateCorrupt) { var frames = new BanchoReplayFrameBundle(); frames.Populate(packet.Data); SpectatorCorrupter.ModifySpectatePacket(ref frames); plist[i].Data = frames.Serialize(); } break; } } while (_packetQueueReceive.Count != 0) { plist.Add(_packetQueueReceive.Dequeue()); } }