private static void svc_serverinfo(BitBuffer bb, TreeNode node) { var version = (short)bb.ReadBits(16); node.Nodes.Add("Version: " + version); node.Nodes.Add("Server count: " + (int)bb.ReadBits(32)); node.Nodes.Add("SourceTV: " + bb.ReadBoolean()); node.Nodes.Add("Dedicated: " + bb.ReadBoolean()); node.Nodes.Add("Server client CRC: 0x" + bb.ReadBits(32).ToString("X8")); node.Nodes.Add("Max classes: " + bb.ReadBits(16)); if (version < 18) { node.Nodes.Add("Server map CRC: 0x" + bb.ReadBits(32).ToString("X8")); } else { node.Nodes.Add("MD5 Hash: " + bb.ReadBits(128)); } node.Nodes.Add("Current player count: " + bb.ReadBits(8)); node.Nodes.Add("Max player count: " + bb.ReadBits(8)); node.Nodes.Add("Interval per tick: " + bb.ReadSingle()); node.Nodes.Add("Platform: " + (((char)bb.ReadBits(8)).ToString().ToUpper() == "W" ? "Windows":"Linux")); node.Nodes.Add("Game directory: " + bb.ReadString()); node.Nodes.Add("Map name: " + bb.ReadString()); node.Nodes.Add("Skybox name: " + bb.ReadString()); node.Nodes.Add("Hostname: " + bb.ReadString()); node.Nodes.Add("Has replay: " + bb.ReadBoolean()); // ???: protocol version }
public static void ParseIntoTreeNode(byte[] data, TreeNode node) { var bb = new BitBuffer(data); if (bb.ReadBoolean()) { node.Nodes.Add("Command number: " + bb.ReadBits(32)); } if (bb.ReadBoolean()) { node.Nodes.Add("Tick count: " + bb.ReadBits(32)); } if (bb.ReadBoolean()) { node.Nodes.Add("Viewangle pitch: " + bb.ReadSingle()); } if (bb.ReadBoolean()) { node.Nodes.Add("Viewangle yaw: " + bb.ReadSingle()); } if (bb.ReadBoolean()) { node.Nodes.Add("Viewangle roll: " + bb.ReadSingle()); } if (bb.ReadBoolean()) { var xDiff = bb.ReadSingle(); node.Nodes.Add("Foward move: " + xDiff); node.Nodes.Add("X velocity: " + xDiff / 0.015 + "ups"); } if (bb.ReadBoolean()) { var xDiff = bb.ReadSingle(); node.Nodes.Add("Side move: " + xDiff); node.Nodes.Add("Y velocity: " + xDiff / 0.015 + "ups"); } if (bb.ReadBoolean()) { var xDiff = bb.ReadSingle(); node.Nodes.Add("Foward move: " + xDiff); node.Nodes.Add("Z velocity: " + xDiff / 0.015 + "ups"); } if (bb.ReadBoolean()) { node.Nodes.Add("Buttons: " + KeyInterop.KeyFromVirtualKey(Convert.ToInt32(bb.ReadBits(32)))); } if (bb.ReadBoolean()) { node.Nodes.Add("Impulse: " + bb.ReadBits(8)); } if (bb.ReadBoolean()) { node.Nodes.Add("Weaponselect: " + bb.ReadBits(11)); } if (bb.ReadBoolean()) { node.Nodes.Add("Weapon subtype: " + bb.ReadBits(6)); } if (bb.ReadBoolean()) { node.Nodes.Add("Mouse X: " + bb.ReadCoord()); } if (bb.ReadBoolean()) { node.Nodes.Add("Mouse Y: " + bb.ReadCoord()); } }