⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d2cs_protocol.h

📁 打魔兽战网的都知道他是什么
💻 H
字号:
/* * Copyright (C) 2000,2001	Onlyer	(onlyer@263.net) * * 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_D2CS_PROTOCOL_H#define INCLUDED_D2CS_PROTOCOL_H#include "common/bn_type.h"typedef struct{	bn_short		size;	bn_byte			type;} t_d2cs_client_header;typedef struct{	t_d2cs_client_header	h;} t_d2cs_client_generic;#define CLIENT_D2CS_LOGINREQ			0x01typedef struct{	t_d2cs_client_header	h;	bn_int			seqno;	bn_int			u1;	bn_int			bncs_addr1;	bn_int			sessionnum;	bn_int			sessionkey;			/* always zero,self define */	bn_int			cdkey_id;	bn_int			u5;	bn_int			clienttag;	bn_int			bnversion;	bn_int			bncs_addr2;	bn_int			u6;	/* zero */	bn_int			secret_hash[5];	/* account name */} t_client_d2cs_loginreq;#define D2CS_CLIENT_LOGINREPLY			0x01typedef struct{	t_d2cs_client_header	h;	bn_int			reply;} t_d2cs_client_loginreply;#define D2CS_CLIENT_LOGINREPLY_SUCCEED			0x00#define D2CS_CLIENT_LOGINREPLY_BADPASS			0x0c#define CLIENT_D2CS_CREATECHARREQ		0x02typedef struct{	t_d2cs_client_header	h;	bn_short		class;		/* character class */	bn_short		u1;		/* always zero */	bn_short		status;		/* same as in .d2s file */	/* character name */} t_client_d2cs_createcharreq;#define D2CS_CLIENT_CREATECHARREPLY		0x02typedef struct{	t_d2cs_client_header	h;	bn_int			reply;} t_d2cs_client_createcharreply;#define D2CS_CLIENT_CREATECHARREPLY_SUCCEED		0x00#define D2CS_CLIENT_CREATECHARREPLY_FAILED		0x01#define D2CS_CLIENT_CREATECHARREPLY_ALREADY_EXIST	0x14#define D2CS_CLIENT_CREATECHARREPLY_NAME_REJECT		0x15#define CLIENT_D2CS_CREATEGAMEREQ		0x03typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_int			gameflag;		/* just difficulty is set here */	bn_byte			u1;			/* always 1 */	bn_byte			leveldiff;		/* Only allow people of +/- n level to join */	bn_byte			maxchar;		/* Maximum number of chars allowed in game */	/* game name */	/* game pass */	/* game desc */} t_client_d2cs_creategamereq;#define D2CS_CLIENT_CREATEGAMEREPLY		0x03typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_short		gameid;	bn_short		u1;			/* always zero */	bn_int			reply;} t_d2cs_client_creategamereply;#define D2CS_CLIENT_CREATEGAMEREPLY_SUCCEED		0x00#define D2CS_CLIENT_CREATEGAMEREPLY_FAILED		0x01#define D2CS_CLIENT_CREATEGAMEREPLY_INVALID_NAME	0x1e#define D2CS_CLIENT_CREATEGAMEREPLY_NAME_EXIST		0x1f#define D2CS_CLIENT_CREATEGAMEREPLY_SERVER_DOWN		0x20#define D2CS_CLIENT_CREATEGAMEREPLY_NOT_AVAILABLE	0x32#define D2CS_CLIENT_CREATEGAMEREPLY_U1			0x33#define CLIENT_D2CS_JOINGAMEREQ			0x04typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	/* game name */	/* game pass */} t_client_d2cs_joingamereq;#define D2CS_CLIENT_JOINGAMEREPLY		0x04typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_short		gameid;	bn_short		u1;			/* always zero */	bn_int			addr;	bn_int			token;	bn_int			reply;} t_d2cs_client_joingamereply;#define D2CS_CLIENT_JOINGAMEREPLY_SUCCEED		0x00#define D2CS_CLIENT_JOINGAMEREPLY_BAD_PASS		0x29#define D2CS_CLIENT_JOINGAMEREPLY_NOT_EXIST		0x2a#define D2CS_CLIENT_JOINGAMEREPLY_GAME_FULL		0x2b#define D2CS_CLIENT_JOINGAMEREPLY_LEVEL_LIMIT		0x2c#define D2CS_CLIENT_JOINGAMEREPLY_HARDCORE_SOFTCORE	0x71#define D2CS_CLIENT_JOINGAMEREPLY_NORMAL_NIGHTMARE	0x73#define D2CS_CLIENT_JOINGAMEREPLY_NIGHTMARE_HELL	0x74#define D2CS_CLIENT_JOINGAMEREPLY_CLASSIC_EXPANSION	0x78#define D2CS_CLIENT_JOINGAMEREPLY_EXPANSION_CLASSIC	0x79#define D2CS_CLIENT_JOINGAMEREPLY_NORMAL_LADDER		0x7D#define D2CS_CLIENT_JOINGAMEREPLY_FAILED		0x01#define CLIENT_D2CS_GAMELISTREQ				0x05typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_int			gameflag;		/* only hardcore is set here */	/* bn_byte		u1;			string game name to search? */} t_client_d2cs_gamelistreq;#define D2CS_CLIENT_GAMELISTREPLY		0x05typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_int			token;	bn_byte			currchar;		/* current number of characters in game */	bn_int			gameflag;		/* 0x04 is always set here */	/* game name */	/* game desc */} t_d2cs_client_gamelistreply;#define CLIENT_D2CS_GAMEINFOREQ			0x06typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	/* game name */} t_client_d2cs_gameinforeq;#define D2CS_CLIENT_GAMEINFOREPLY		0x06typedef struct{	t_d2cs_client_header	h;	bn_short		seqno;	bn_int			gameflag;	bn_int			etime;	bn_byte			charlevel;	bn_byte			leveldiff;	bn_byte			maxchar;	bn_byte			currchar;	bn_byte			class[16];		/* 16 character class */	bn_byte			level[16];		/* 16 character level */	/* game description */	/* currchar number of character names */} t_d2cs_client_gameinforeply;#define CLIENT_D2CS_CHARLOGINREQ		0x07typedef struct{	t_d2cs_client_header	h;	/* character name */} t_client_d2cs_charloginreq;#define D2CS_CLIENT_CHARLOGINREPLY		0x07typedef struct{	t_d2cs_client_header	h;	bn_int			reply;} t_d2cs_client_charloginreply;#define D2CS_CLIENT_CHARLOGINREPLY_SUCCEED		0x00#define D2CS_CLIENT_CHARLOGINREPLY_FAILED		0x01#define D2CS_CLIENT_CHARLOGINREPLY_NOT_FOUND		0x46#define D2CS_CLIENT_CHARLOGINREPLY_EXPIRED		0x7b#define CLIENT_D2CS_DELETECHARREQ		0x0atypedef struct{	t_d2cs_client_header	h;	bn_short		u1;			/* always zero */	/* character name */} t_client_d2cs_deletecharreq;#define D2CS_CLIENT_DELETECHARREPLY		0x0atypedef struct{	t_d2cs_client_header	h;	bn_short		u1;			/* always zero */	bn_int			reply;} t_d2cs_client_deletecharreply;#define D2CS_CLIENT_DELETECHARREPLY_SUCCEED		0x00#define D2CS_CLIENT_DELETECHARREPLY_FAILED		0x01#define CLIENT_D2CS_LADDERREQ			0x11typedef struct{	t_d2cs_client_header	h;	bn_byte			type;			/* jadder type request */	bn_short		start_pos;		/* list ladder from what position */} t_client_d2cs_ladderreq;#define D2CS_CLIENT_LADDERREPLY			0x11typedef struct{	t_d2cs_client_header	h;	bn_byte			type;			/* ladder type request */	bn_short		total_len;		/* total length of the ladder data */								bn_short		curr_len;		/* length of ladder data in this packet */	bn_short		cont_len;		/* length of ladder data in previous packets */							/* length here include the header but							exclude this packet */} t_d2cs_client_ladderreply;typedef struct{	bn_short		start_pos;		/* start position of ladder */	bn_short		u1;			/* always zero */	bn_int			count1;			/* always 0x10 */} t_d2cs_client_ladderheader;typedef struct{	bn_int			count2;			/* 0x10 for first packet or 0x0 for continue */} t_d2cs_client_ladderinfoheader;typedef struct{	bn_int			explow;	bn_int			exphigh;		/* always zero */	bn_short		status;		bn_byte			level;	bn_byte			u1;			/* always zero */	char			charname[16];} t_d2cs_client_ladderinfo;#define LADDERSTATUS_FLAG_DEAD		0x10#define LADDERSTATUS_FLAG_HARDCORE	0x20#define LADDERSTATUS_FLAG_EXPANSION	0x40#define LADDERSTATUS_FLAG_DIFFICULTY	0x0f00#define CLIENT_D2CS_MOTDREQ			0x12typedef struct{	t_d2cs_client_header	h;} t_client_d2cs_motdreq;#define D2CS_CLIENT_MOTDREPLY			0x12typedef struct{	t_d2cs_client_header	h;	bn_byte			u1;	/* message */} t_d2cs_client_motdreply;#define CLIENT_D2CS_CANCELCREATEGAME		0x13typedef struct{	t_d2cs_client_header	h;} t_client_d2cs_cancelcreategame;#define D2CS_CLIENT_CREATEGAMEWAIT		0x14typedef struct{	t_d2cs_client_header	h;	bn_int			position;} t_d2cs_client_creategamewait;#define D2CS_CLIENT_CHARLADDERREQ		0x16typedef struct{	t_d2cs_client_header	h;	bn_int			hardcore;	bn_int			expansion;	/* character name */} t_client_d2cs_charladderreq;/* use 0x11 LADDER reply for this request */#define CLIENT_D2CS_CHARLISTREQ			0x17typedef struct{	t_d2cs_client_header	h;	bn_short		maxchar;	bn_short		u1;} t_client_d2cs_charlistreq;#define D2CS_CLIENT_CHARLISTREPLY		0x17typedef struct{	t_d2cs_client_header	h;	bn_short		maxchar;	bn_short		currchar;	bn_short		u1;			/* always zero */	bn_short		currchar2;	/* character name */	/* character portrait blocks */	/* each block is 0x22 bytes static length */} t_d2cs_client_charlistreply;#define CLIENT_D2CS_CONVERTCHARREQ		0x18typedef struct{	t_d2cs_client_header	h;	/* character name */} t_client_d2cs_convertcharreq;#define D2CS_CLIENT_CONVERTCHARREPLY		0x18typedef struct{	t_d2cs_client_header	h;	bn_int			reply;} t_d2cs_client_convertcharreply;#define D2CS_CLIENT_CONVERTCHARREPLY_SUCCEED		0x00#define D2CS_CLIENT_CONVERTCHARREPLY_FAILED		0x01#define CLIENT_D2CS_CHARLISTREQ_110		0x19typedef struct{	t_d2cs_client_header	h;	bn_short		maxchar;	bn_short		u1;} t_client_d2cs_charlistreq_110;#define D2CS_CLIENT_CHARLISTREPLY_110		0x19typedef struct{	t_d2cs_client_header	h;	bn_short		maxchar;	bn_short		currchar;	bn_short		u1;			/* always zero */	bn_short		currchar2;} t_d2cs_client_charlistreply_110;typedef struct{	bn_int			expire_time;		/* character expire time (in seconds) */	/* character name */	/* character portrait blocks */	/* each block is 0x22 bytes static length */} t_d2cs_client_chardata;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -