var outProperties = Out.GetType().GetProperties(); var unknownPacketIds = new List(); for (short i = 0; i <= 4000; i++) { try { Header header = null; if (Messages.TryGetHeaderByValue(Destination.Server, Client, i, out header)) { string headerName = null; foreach (var prop in outProperties) { try { if (prop.PropertyType.Name.Contains("Header")) { var outHeader = prop.GetValue(Out); if (outHeader != null) { var flashProp = outHeader.GetType().GetProperty("Flash"); if (flashProp != null) { var flash = flashProp.GetValue(outHeader); if (flash != null) { var valueProp = flash.GetType().GetProperty("Value"); if (valueProp != null) { var value = valueProp.GetValue(flash); if (value != null && value.ToString() == i.ToString()) { headerName = prop.Name; break; } } } } } } } catch { } } if (headerName == null) unknownPacketIds.Add(i); } } catch { } } foreach (var id in unknownPacketIds) { Log($"Unknown packet ID: {id}"); }