/// <summary> /// Handles all packets received by the game auth server. /// </summary> /// <param name="client">The socket client.</param> /// <param name="Packet">The packet.</param> /// <returns>ALWAYS returns false.</returns> private static bool HandlePacket(SocketClient client, DataPacket Packet) { if (Packet.PacketID == 9001) { if (Packet.ReadString(4, 16) == Program.Config.ReadString("ServerPassword")) { string Account = Packet.ReadString(20, 16); int DatabaseUID = Packet.ReadInt32(36); if (DatabaseUID == 0) return false; uint EntityUID = Packet.ReadUInt32(40); if (EntityUID == 0) return false; if (Core.Kernel.Clients.Contains(EntityUID)) { UIDCollection.TryRemove(EntityUID); return false; } if (UIDCollection.Contains(EntityUID)) { int secondkey; if (UIDCollection.TryGetSecondKey(EntityUID, out secondkey)) { if (DatabaseUID == secondkey) UIDCollection.TryRemove(EntityUID); } return false; } if (UIDCollection.Contains(DatabaseUID)) { uint firstkey; if (UIDCollection.TryGetFirstKey(DatabaseUID, out firstkey)) { UIDCollection.TryRemove(DatabaseUID); } } UIDCollection.TryAdd(EntityUID, DatabaseUID, DateTime.Now.AddMinutes(10)); // return false; } } return false; }
/* MemoryStream strm = new MemoryStream(); BinaryWriter wtr = new BinaryWriter(strm); wtr.Write((ushort)0); 0 wtr.Write((ushort)2206); 2 wtr.Write((uint)page); 4 wtr.Write((uint)0x6); 8 wtr.Write((uint)Matches.Count); 12 wtr.Write((uint)PlayersInWaiting.Count); 16 wtr.Write((uint)0); 20 page--; wtr.Write((uint)(Matches.Count - page)); 24 QualifierMatch[] GroupsList = Matches.ToArray(); for (int count = page; count < page + 6; count++) { if (count >= Matches.Count) break; QualifierMatch entry = GroupsList[count]; wtr.Write((uint)entry.Player1.UID); wtr.Write((uint)entry.Player1.Mesh); for (int i = 0; i < 16; i++) { if (i < entry.Player1.Name.Length) { wtr.Write((byte)entry.Player1.Name[i]); } else wtr.Write((byte)0); } wtr.Write((uint)entry.Player1.Level); wtr.Write((uint)entry.Player1.Profession); wtr.Write((uint)0); wtr.Write((uint)entry.Player1.ArenaStats.Rank); wtr.Write((uint)entry.Player1.ArenaStats.ArenaPoints); wtr.Write((uint)entry.Player1.ArenaStats.WinsToday); wtr.Write((uint)entry.Player1.ArenaStats.LossesToday); wtr.Write((uint)entry.Player1.ArenaStats.CurrentHonor); wtr.Write((uint)entry.Player1.ArenaStats.TotalHonor); wtr.Write((uint)entry.Player2.UID); wtr.Write((uint)entry.Player2.Mesh); for (int i = 0; i < 16; i++) { if (i < entry.Player2.Name.Length) { wtr.Write((byte)entry.Player2.Name[i]); } else wtr.Write((byte)0); } wtr.Write((uint)entry.Player2.Level); wtr.Write((uint)entry.Player2.Profession); wtr.Write((uint)0); wtr.Write((uint)entry.Player2.ArenaStats.Rank); wtr.Write((uint)entry.Player2.ArenaStats.ArenaPoints); wtr.Write((uint)entry.Player2.ArenaStats.WinsToday); wtr.Write((uint)entry.Player2.ArenaStats.LossesToday); wtr.Write((uint)entry.Player2.ArenaStats.CurrentHonor); wtr.Write((uint)entry.Player2.ArenaStats.TotalHonor); } int packetlength = (int)strm.Length; strm.Position = 0; wtr.Write((ushort)packetlength); strm.Position = strm.Length; wtr.Write(Encoding.ASCII.GetBytes("TQServer")); strm.Position = 0; byte[] buf = new byte[strm.Length]; strm.Read(buf, 0, buf.Length); wtr.Close(); strm.Close();*/ public static void Handle(Entities.GameClient client, DataPacket packet) { //if (Data.ArenaQualifier.MatchQueue.Count > 0) //{ Data.ArenaMatch[] matchesArray = null; if (Data.ArenaQualifier.MatchQueue.Count > 0) { matchesArray = Data.ArenaQualifier.MatchQueue.ToDictionary().Values.ToArray(); if (matchesArray.Length > 10) Array.Resize(ref matchesArray, 10); } using (var matches = new Packets.ArenaBattleInfoPacket(matchesArray)) { matches.Page = packet.ReadUInt32(4); matches.SetSize(); client.Send(matches); } //} }