I've heard many a time that the query packet to send to servers is documented somewhere. The problem is, I've looked everywhere (well, not everywhere, but a lot of places) and can't find it.
So does anyone know where I could find this documentation? I've already gotten some stuff figured out, but I figured I might as well save myself some time.
This is for two projects, one being D3launch, the other being something really cool (more cool if the query packet has what I want in it.)
Thanks in advance,
-iten
The D3 query packet
this is the header I used back in the day when I was coding D3IP (to hold IP addresses of servers)
Code: Select all
/**************************************
* Descent3 Server Request #defines
*
*
*/
//this data is used to request the players on a Descent3 server. 0x72 is requesting a
//MP_REQUEST_PLAYERS when the D3 Server receives this message. 0x03 should be 0x00 but I'm not sure.
//the packet sniffer says so.
const byte PLAYERS_REQUEST[] = { 0x01, 0x72, 0x03, 0x00 };
const int PLAYERS_SIZE = 4;
//this data is used to request the server info for a descent3 server. For
//instance, the map, mode, and players. 0x29 is what Descent3 sees to know
// that we're requesting data. Don't know about the rest.
const byte SERVINFO_REQUEST[] = { 0x01, 0x29, 0x0b, 0x00,
0x01, 0x00, 0x5e, 0x42,
0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00 };
const int SERVINFO_SIZE = 18;
const byte TCPIPSERVINFO_REQUEST[] = { 0x01, 0x1e, 0x0b, 0x00,
0x3f, 0x4e, 0x58, 0x42,
0x09, 0x00, 0x00, 0x00 };
const int TCPIPSERVINFO_SIZE = 12;
#define SI_INIT_HEADER 21
const byte SERVSTATUS_REQUEST[] = { 0x5c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00 };
const int SERVSTATUS_SIZE = 9;
//pxo stuff
const byte PXOSERVER_REQUEST[] = { 0x03, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61,
0x75, 0x74, 0x6f, 0x73, 0x65, 0x6c, 0x65, 0x63,
0x74, 0x00 };
const int PXOSERVER_SIZE = 42;
const byte PXOOKAYTHATSENOUGH_REQUEST[] = { 0x03, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0xdd, 0x64, 0x72, 0x03 };
const int PXOOKAYTHATSENOUGH_SIZE = 30;