📄 anongame_protocol.h
字号:
/* * Copyright (C) 1998 Mark Baysinger (mbaysing@ucsd.edu) * Copyright (C) 1998,1999,2000 Ross Combs (rocombs@cs.nmsu.edu) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#ifndef INCLUDED_ANONGAME_PROTOCOL_TYPES#define INCLUDED_ANONGAME_PROTOCOL_TYPES#ifdef JUST_NEED_TYPES# include "common/bn_type.h"#else# define JUST_NEED_TYPES# include "common/bn_type.h"# undef JUST_NEED_TYPES#endif/***********************************************************************************//* first packet recieved from client - option decides which struct to use next */#define CLIENT_FINDANONGAME 0x44ff#define SERVER_FINDANONGAME 0x44fftypedef struct{ t_bnet_header h; bn_byte option; /* rest of packet data */} PACKED_ATTR() t_client_anongame;/***********************************************************************************/#define CLIENT_FINDANONGAME_SEARCH 0x00#define CLIENT_FINDANONGAME_INFOS 0x02#define CLIENT_FINDANONGAME_CANCEL 0x03#define CLIENT_FINDANONGAME_PROFILE 0x04#define CLIENT_FINDANONGAME_AT_SEARCH 0x05#define CLIENT_FINDANONGAME_AT_INVITER_SEARCH 0x06#define CLIENT_ANONGAME_TOURNAMENT 0X07#define CLIENT_FINDANONGAME_PROFILE_CLAN 0x08#define CLIENT_FINDANONGAME_GET_ICON 0x09#define CLIENT_FINDANONGAME_SET_ICON 0x0A#define SERVER_FINDANONGAME_SEARCH 0x00#define SERVER_FINDANONGAME_FOUND 0x01#define SERVER_FINDANONGAME_CANCEL 0x03/***********************************************************************************//* option 00 - anongame search *//*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=Tournament PG 1v1 - battle.net# 440 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 01 00 00 00 00 00 00 00[02 13]01 .D..............0010: 00 00 00 08 13 C7 30 04 04 00 00 00 ......0.....PG 1v1# 438 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 01 00 00 00 00 00 00 00[00 00]FF .D..............0010: 00 00 00 08 C2 13 A6 02 20 00 00 00 ........ ...PG 2v2# 456 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 02 00 00 00 00 00 00 00[00 01]FF .D..............0010: 07 00 00 08 A0 45 A6 02 20 00 00 00 .....E.. ...PG 3v3# 482 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 03 00 00 00 00 00 00 00[00 02]FF .D..............0010: 03 00 00 08 E8 7D A6 02 20 00 00 00 .....}.. ...PG 4v4# 516 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 04 00 00 00 00 00 00 00[00 03]FF .D..............0010: 01 00 00 08 48 B0 A6 02 20 00 00 00 ....H... ...PG sffa# 550 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=28 class=bnet0000: FF 44 1C 00 00 05 00 00 00 00 00 00 00[00 04]FF .D..............0010: 01 00 00 08 E6 F4 A6 02 20 00 00 00 ........ ...=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=inviter 2v2 - battle.net# 74059 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=57 class=bnet0000: FF 44 39 00 06 09 00 00 00 A0 03 00 0C 72 40 27 .D9..........r@'0010: 3F 02 B9 DA 6B 9A A4 22 5D 60 49 EF 15 6F 44 25 ?...k.."]`I..oD%0020: 02 4E F9 13 BC 4D 00 00 00 00[01 00]FF 07 00 00 .N...M..........0030: 08 7E 98 E6 04 04 00 00 00 .~.......inviter 2v2 - battle.net# 83545 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=57 class=bnet0000: FF 44 39 00 06 0A 00 00 00 E4 03 00 0C 9E 45 27 .D9...........E'0010: 3F 02 1E 4E E7 53 80 F9 01 00 4F 68 A1 58 C5 1B ?..N.S....Oh.X..0020: 44 31 BD EE 47 7F 00 00 00 00[01 00]FF 07 00 00 D1..G...........0030: 08 48 07 FB 04 04 00 00 00 .H.......=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=AT 3v3 - pvpgn - with uid of team members# 378 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=57 class=bnet0000: FF 44 39 00 06 01 00 00 00[B7 36 C4 19]1B 02 2F .D9.......6..../0010: 3F 03[19 00 00 00|02 00 00 00|01 00 00 00|FF FF ?...............0020: FF FF|FF FF FF FF]00 00 00 00 01 02 FF 03 00 00 ................0030: 08 AA A4 E2 0C 20 00 00 00 ..... ...# 379 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=51 class=bnet0000: FF 44 33 00 05 01 00 00 00[B7 36 C4 19]1B 02 2F .D3.......6..../0010: 3F 03[19 00 00 00|02 00 00 00|01 00 00 00|FF FF ?...............0020: FF FF|FF FF FF FF]00 00 00 00 08 59 C6 0E 00 20 ...........Y...0030: 00 00 00 ...# 382 packet from client: type=0x44ff(CLIENT_FINDANONGAME) length=51 class=bnet0000: FF 44 33 00 05 01 00 00 00[B7 36 C4 19]1B 02 2F .D3.......6..../0010: 3F 03[19 00 00 00|02 00 00 00|01 00 00 00|FF FF ?...............0020: FF FF|FF FF FF FF]00 00 00 00 08 45 2C 13 00 20 ...........E,..0030: 00 00 00 ...=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/typedef struct{ t_bnet_header h; bn_byte option; bn_int count; /* Goes up each time client clicks search */ bn_int unknown2; /* 00 00 00 00 */ bn_byte type; /* 0 = PG , 1 = AT , 2 = TY - from TYPE */ bn_byte gametype; /* 0 = 1v1 , 1 = 2v2 , 2 = 3v3 , 3 = 4v4 , 4 = sffa - from TYPE */ bn_int map_prefs; /* map preferences bitmask */ bn_byte unknown3; /* 8 */ bn_int id; /* client id */ bn_int race; /* 1 = H , 2 = O , 4 = N , 8 = U , 0x20 = R */} PACKED_ATTR() t_client_findanongame;typedef struct{ t_bnet_header h; bn_byte option; bn_int count; bn_int tid; /* team id */ bn_int timestamp; bn_byte teamsize; bn_int info[5]; /* client get this info from SERVER_ARRANGEDTEAM_INVITE_FRIEND_ACK (0x61ff) */ bn_int unknown2; /* 00 00 00 00 */ bn_byte type; /* 0 = PG , 1 = AT , 2 = TY - from TYPE */ bn_byte gametype; /* 0 = 1v1 , 1 = 2v2 , 2 = 3v3 , 3 = 4v4 , 4 = sffa - from TYPE */ bn_int map_prefs; /* map preferences bitmask */ bn_byte unknown3; /* 08 */ bn_int id; /* client id */ bn_int race; /* 1 = H , 2 = O , 4 = N , 8 = U , 0x20 = R */} PACKED_ATTR() t_client_findanongame_at_inv;typedef struct{ t_bnet_header h; bn_byte option; bn_int count; /* Goes up each time client clicks search */ bn_int tid; /* team id */ bn_int timestamp; bn_byte teamsize; bn_int info[5]; /* client get this info from inviter form SERVER_ARRANGEDTEAM_INVITE_FRIEND_ACK (0x61ff) */ bn_int unknown2; /* 00 00 00 00 */ bn_byte unknown3; /* 08 */ bn_int id; /* client id */ bn_int race; /* 1 = H , 2 = O , 4 = N , 8 = U , 0x20 = R */} PACKED_ATTR() t_client_findanongame_at;#define SERVER_ANONGAME_SEARCH_REPLY 0x44fftypedef struct{ t_bnet_header h; bn_byte option; bn_int count; bn_int reply; /* bn_short avgtime; - only in W3XP so far average time in seconds of search */} PACKED_ATTR() t_server_anongame_search_reply;/***********************************************************************************//* option 01 - anongame found *//*tournament 1v1# 490 packet from server: type=0x44ff(unknown) length=84 class=bnet0000: FF 44 54 00 01 01 00 00 00 00 00 00 00 3F F1 53 .DT..........?.S0010: CD E0 17 F8 CC 00 00 3E 4F 8E 12 06[02 13]4D 61 .......>O.....Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 34 29 46 6C 6F 6F 64 70 6C 61 69 6E 73 31 76 (4)Floodplains1v0040: 31 2E 77 33 78 00 FF FF FF FF 31 44 4C 46 02 00 1.w3x.....1DLF..0050: 00 00 02 02 ....PG 2v2# 28332 packet from server: type=0x44ff(unknown) length=83 class=bnet0000: FF 44 53 00 01 02 00 00 00 00 00 00 00 D3 E9 00 .DS.............0010: DC E0 17 2E 67 00 00 9A 7D 56 0F 06 00 01 4D 61 ....g...}V....Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 36 29 53 63 6F 72 63 68 65 64 42 61 73 69 6E (6)ScorchedBasin0040: 2E 77 33 78 00 FF FF FF FF 4D 41 45 54 04 02 00 .w3x.....MAET...0050: 00 02 02 ...PG 4v4# 28827 packet from server: type=0x44ff(unknown) length=82 class=bnet0000: FF 44 52 00 01 02 00 00 00 00 00 00 00 3F F1 53 .DR..........?.S0010: DA E0 17 77 D6 00 00 92 D4 B8 56 06 00 03 4D 61 ...w......V...Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 38 29 42 61 74 74 6C 65 67 72 6F 75 6E 64 2E (8)Battleground.0040: 77 33 78 00 FF FF FF FF 4D 41 45 54 08 02 00 00 w3x.....MAET....0050: 02 02 ..PG 3v3# 357 packet from server: type=0x44ff(unknown) length=84 class=bnet0000: FF 44 54 00 01 01 00 00 00 00 00 00 00 3F F1 53 .DT..........?.S0010: CE E0 17 10 22 01 00 29 0F 62 A0 06 00 02 4D 61 ...."..).b....Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 36 29 42 6C 6F 6F 64 73 74 6F 6E 65 4D 65 73 (6)BloodstoneMes0040: 61 2E 77 33 78 00 FF FF FF FF 4D 41 45 54 06 02 a.w3x.....MAET..0050: 00 00 02 02 ....PG 4v4# 620 packet from server: type=0x44ff(unknown) length=79 class=bnet0000: FF 44 4F 00 01 02 00 00 00 00 00 00 00 3F F1 53 .DO..........?.S0010: DA E0 17 94 22 01 00 4C 29 5F 62 06 00 03 4D 61 ...."..L)_b...Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 38 29 53 61 6E 63 74 75 61 72 79 2E 77 33 78 (8)Sanctuary.w3x0040: 00 FF FF FF FF 4D 41 45 54 08 02 00 00 02 02 .....MAET......PG sffa# 810 packet from server: type=0x44ff(unknown) length=82 class=bnet0000: FF 44 52 00 01 03 00 00 00 00 00 00 00 3F F1 53 .DR..........?.S0010: C9 E0 17 3E 22 01 00 93 44 ED 22 06 00 04 4D 61 ...>"...D."...Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 38 29 42 61 74 74 6C 65 67 72 6F 75 6E 64 2E (8)Battleground.0040: 77 33 78 00 FF FF FF FF 20 41 46 46 05 00 00 00 w3x..... AFF....0050: 02 02 ..=-=-=-=-==-=-=-=-=AT 2v2# 74077 packet from server: type=0x44ff(unknown) length=87 class=bnet0000: FF 44 57 00 01 09 00 00 00 00 00 00 00 3F F1 53 .DW..........?.S0010: D3 E0 17 D8 D1 00 00 B4 2B 57 C6 06[01 00]4D 61 ........+W....Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 36 29 53 74 72 61 6E 67 6C 65 74 68 6F 72 6E (6)Stranglethorn0040: 56 61 6C 65 2E 77 33 78 00 FF FF FF FF 32 53 56 Vale.w3x.....2SV0050: 32 04 02 00 00 02 02 2......AT 2v2# 83549 packet from server: type=0x44ff(unknown) length=79 class=bnet0000: FF 44 4F 00 01 0A 00 00 00 00 00 00 00 3F F1 53 .DO..........?.S0010: CF E0 17 BB D1 00 00 01 CB E4 BA 06[01 00]4D 61 ..............Ma0020: 70 73 5C 46 72 6F 7A 65 6E 54 68 72 6F 6E 65 5C ps\FrozenThrone\0030: 28 36 29 47 6E 6F 6C 6C 57 6F 6F 64 2E 77 33 78 (6)GnollWood.w3x0040: 00 FF FF FF FF 32 53 56 32 04 02 00 00 02 02 .....2SV2......*/#define SERVER_ANONGAME_FOUND 0x44fftypedef struct{ t_bnet_header h; bn_byte option; /* 1: anongame found */ bn_int count; bn_int unknown1; /* 00 00 00 00 */ bn_int ip; bn_short port; bn_byte unknown2; bn_byte unknown3; bn_short unknown4; /* usually 00 00 , seen 01 00 */ bn_int id; /* random val for identifying client */ bn_byte unknown5; /* 0x06 */ bn_byte type; /* 0 = PG , 1 = AT , 2 = TY - from TYPE */ bn_byte gametype; /* for PG - 0 = 1v1 , 1 = 2v2 , 2 = 3v3 , 3 = 4v4 , 4 = sffa * for AT - 0 = 2v2 , 2 = 3v3 , 3 = 4v3 * for TY - set to 0 * from TYPE */ /* char * mapname */ /* t_saf_pt2 * pt2 */} PACKED_ATTR() t_server_anongame_found;/* MISC PACKET APPEND DATA's */typedef struct{ bn_int unknown1; /* 0xFFFFFFFF */ bn_int anongame_string; /* ie. SOLO, TEAM, 2VS2, etc. */ bn_byte totalplayers; bn_byte totalteams; /* 1v1 & sffa = 0, rest 2 */ bn_short unknown2; /* 0x0000 */ bn_byte visibility; /* 0x01 = dark - 0x02 = default */ bn_byte unknown3; /* 0x02 */} PACKED_ATTR() t_saf_pt2;/***********************************************************************************//* option 02 - info request */#define CLIENT_FINDANONGAME_INFOREQ 0x44fftypedef struct{ t_bnet_header h; bn_byte option; /* type of request: * 0x02 for matchmaking infos */ bn_int count; /* 0x00000001 increments each request of same type */ bn_byte noitems;} PACKED_ATTR() t_client_findanongame_inforeq;#define SERVER_FINDANONGAME_INFOREPLY 0x44fftypedef struct { t_bnet_header h; bn_byte option; /* as received from client */ bn_int count; /* as received from client */ bn_byte noitems; /* not very sure about it */ /* data *//*for type 0x02 : <type of info><unknown int><info> if <type of info> is : URL\0 : <info> contains 3 NULL terminated urls/strings MAP\0 : <info> contains 7 (seen so far) maps names TYPE : <info> unknown 38 bytes probably meaning anongame types DESC : <info>*/} PACKED_ATTR() t_server_findanongame_inforeply;/***********************************************************************************//* option 03 - playgame cancel */#define SERVER_FINDANONGAME_PLAYGAME_CANCEL 0x44fftypedef struct{ t_bnet_header h; /* header */ bn_byte cancel; /* Cancel byte always 03 */ bn_int count;} PACKED_ATTR() t_server_findanongame_playgame_cancel;/* option 04 - profile request */typedef struct{ t_bnet_header h; bn_byte option; bn_int count; /* USERNAME TO LOOKUP * CLIENT TAG */} PACKED_ATTR() t_client_findanongame_profile;#define SERVER_FINDANONGAME_PROFILE 0x44ff/*typedef struct{ t_bnet_header h; //header bn_byte option; // in this case it will be 0x04 (for profile) bn_int count; // count that goes up each time user clicks on someones profile // REST OF PROFILE STATS - THIS WILL BE SET IN HANDLE_BNET.C after // SERVER LOOKS UP THE USER ACCOUNT} PACKED_ATTR() t_server_findanongame_profile;*/typedef struct
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -