d2cs_protocol.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:9k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 2000,2001 Onlyer (onlyer@263.net)
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #ifndef INCLUDED_D2CS_PROTOCOL_H
  19. #define INCLUDED_D2CS_PROTOCOL_H
  20. #include "common/bn_type.h"
  21. typedef struct
  22. {
  23. bn_short size;
  24. bn_byte type;
  25. } t_d2cs_client_header;
  26. typedef struct
  27. {
  28. t_d2cs_client_header h;
  29. } t_d2cs_client_generic;
  30. #define CLIENT_D2CS_LOGINREQ 0x01
  31. typedef struct
  32. {
  33. t_d2cs_client_header h;
  34. bn_int seqno;
  35. bn_int u1;
  36. bn_int bncs_addr1;
  37. bn_int sessionnum;
  38. bn_int sessionkey; /* always zero,self define */
  39. bn_int cdkey_id;
  40. bn_int u5;
  41. bn_int clienttag;
  42. bn_int bnversion;
  43. bn_int bncs_addr2;
  44. bn_int u6; /* zero */
  45. bn_int secret_hash[5];
  46. /* account name */
  47. } t_client_d2cs_loginreq;
  48. #define D2CS_CLIENT_LOGINREPLY 0x01
  49. typedef struct
  50. {
  51. t_d2cs_client_header h;
  52. bn_int reply;
  53. } t_d2cs_client_loginreply;
  54. #define D2CS_CLIENT_LOGINREPLY_SUCCEED 0x00
  55. #define D2CS_CLIENT_LOGINREPLY_BADPASS 0x0c
  56. #define CLIENT_D2CS_CREATECHARREQ 0x02
  57. typedef struct
  58. {
  59. t_d2cs_client_header h;
  60. bn_short class; /* character class */
  61. bn_short u1; /* always zero */
  62. bn_short status; /* same as in .d2s file */
  63. /* character name */
  64. } t_client_d2cs_createcharreq;
  65. #define D2CS_CLIENT_CREATECHARREPLY 0x02
  66. typedef struct
  67. {
  68. t_d2cs_client_header h;
  69. bn_int reply;
  70. } t_d2cs_client_createcharreply;
  71. #define D2CS_CLIENT_CREATECHARREPLY_SUCCEED 0x00
  72. #define D2CS_CLIENT_CREATECHARREPLY_FAILED 0x01
  73. #define D2CS_CLIENT_CREATECHARREPLY_ALREADY_EXIST 0x14
  74. #define D2CS_CLIENT_CREATECHARREPLY_NAME_REJECT 0x15
  75. #define CLIENT_D2CS_CREATEGAMEREQ 0x03
  76. typedef struct
  77. {
  78. t_d2cs_client_header h;
  79. bn_short seqno;
  80. bn_int gameflag; /* just difficulty is set here */
  81. bn_byte u1; /* always 1 */
  82. bn_byte leveldiff; /* Only allow people of +/- n level to join */
  83. bn_byte maxchar; /* Maximum number of chars allowed in game */
  84. /* game name */
  85. /* game pass */
  86. /* game desc */
  87. } t_client_d2cs_creategamereq;
  88. #define D2CS_CLIENT_CREATEGAMEREPLY 0x03
  89. typedef struct
  90. {
  91. t_d2cs_client_header h;
  92. bn_short seqno;
  93. bn_short gameid;
  94. bn_short u1; /* always zero */
  95. bn_int reply;
  96. } t_d2cs_client_creategamereply;
  97. #define D2CS_CLIENT_CREATEGAMEREPLY_SUCCEED 0x00
  98. #define D2CS_CLIENT_CREATEGAMEREPLY_FAILED 0x01
  99. #define D2CS_CLIENT_CREATEGAMEREPLY_INVALID_NAME 0x1e
  100. #define D2CS_CLIENT_CREATEGAMEREPLY_NAME_EXIST 0x1f
  101. #define D2CS_CLIENT_CREATEGAMEREPLY_SERVER_DOWN 0x20
  102. #define D2CS_CLIENT_CREATEGAMEREPLY_NOT_AVAILABLE 0x32
  103. #define D2CS_CLIENT_CREATEGAMEREPLY_U1 0x33
  104. #define CLIENT_D2CS_JOINGAMEREQ 0x04
  105. typedef struct
  106. {
  107. t_d2cs_client_header h;
  108. bn_short seqno;
  109. /* game name */
  110. /* game pass */
  111. } t_client_d2cs_joingamereq;
  112. #define D2CS_CLIENT_JOINGAMEREPLY 0x04
  113. typedef struct
  114. {
  115. t_d2cs_client_header h;
  116. bn_short seqno;
  117. bn_short gameid;
  118. bn_short u1; /* always zero */
  119. bn_int addr;
  120. bn_int token;
  121. bn_int reply;
  122. } t_d2cs_client_joingamereply;
  123. #define D2CS_CLIENT_JOINGAMEREPLY_SUCCEED 0x00
  124. #define D2CS_CLIENT_JOINGAMEREPLY_BAD_PASS 0x29
  125. #define D2CS_CLIENT_JOINGAMEREPLY_NOT_EXIST 0x2a
  126. #define D2CS_CLIENT_JOINGAMEREPLY_GAME_FULL 0x2b
  127. #define D2CS_CLIENT_JOINGAMEREPLY_LEVEL_LIMIT 0x2c
  128. #define D2CS_CLIENT_JOINGAMEREPLY_HARDCORE_SOFTCORE 0x71
  129. #define D2CS_CLIENT_JOINGAMEREPLY_NORMAL_NIGHTMARE 0x73
  130. #define D2CS_CLIENT_JOINGAMEREPLY_NIGHTMARE_HELL 0x74
  131. #define D2CS_CLIENT_JOINGAMEREPLY_CLASSIC_EXPANSION 0x78
  132. #define D2CS_CLIENT_JOINGAMEREPLY_EXPANSION_CLASSIC 0x79
  133. #define D2CS_CLIENT_JOINGAMEREPLY_NORMAL_LADDER 0x7D
  134. #define D2CS_CLIENT_JOINGAMEREPLY_FAILED 0x01
  135. #define CLIENT_D2CS_GAMELISTREQ 0x05
  136. typedef struct
  137. {
  138. t_d2cs_client_header h;
  139. bn_short seqno;
  140. bn_int gameflag; /* only hardcore is set here */
  141. /* bn_byte u1; string game name to search? */
  142. } t_client_d2cs_gamelistreq;
  143. #define D2CS_CLIENT_GAMELISTREPLY 0x05
  144. typedef struct
  145. {
  146. t_d2cs_client_header h;
  147. bn_short seqno;
  148. bn_int token;
  149. bn_byte currchar; /* current number of characters in game */
  150. bn_int gameflag; /* 0x04 is always set here */
  151. /* game name */
  152. /* game desc */
  153. } t_d2cs_client_gamelistreply;
  154. #define CLIENT_D2CS_GAMEINFOREQ 0x06
  155. typedef struct
  156. {
  157. t_d2cs_client_header h;
  158. bn_short seqno;
  159. /* game name */
  160. } t_client_d2cs_gameinforeq;
  161. #define D2CS_CLIENT_GAMEINFOREPLY 0x06
  162. typedef struct
  163. {
  164. t_d2cs_client_header h;
  165. bn_short seqno;
  166. bn_int gameflag;
  167. bn_int etime;
  168. bn_byte charlevel;
  169. bn_byte leveldiff;
  170. bn_byte maxchar;
  171. bn_byte currchar;
  172. bn_byte class[16]; /* 16 character class */
  173. bn_byte level[16]; /* 16 character level */
  174. /* game description */
  175. /* currchar number of character names */
  176. } t_d2cs_client_gameinforeply;
  177. #define CLIENT_D2CS_CHARLOGINREQ 0x07
  178. typedef struct
  179. {
  180. t_d2cs_client_header h;
  181. /* character name */
  182. } t_client_d2cs_charloginreq;
  183. #define D2CS_CLIENT_CHARLOGINREPLY 0x07
  184. typedef struct
  185. {
  186. t_d2cs_client_header h;
  187. bn_int reply;
  188. } t_d2cs_client_charloginreply;
  189. #define D2CS_CLIENT_CHARLOGINREPLY_SUCCEED 0x00
  190. #define D2CS_CLIENT_CHARLOGINREPLY_FAILED 0x01
  191. #define D2CS_CLIENT_CHARLOGINREPLY_NOT_FOUND 0x46
  192. #define D2CS_CLIENT_CHARLOGINREPLY_EXPIRED 0x7b
  193. #define CLIENT_D2CS_DELETECHARREQ 0x0a
  194. typedef struct
  195. {
  196. t_d2cs_client_header h;
  197. bn_short u1; /* always zero */
  198. /* character name */
  199. } t_client_d2cs_deletecharreq;
  200. #define D2CS_CLIENT_DELETECHARREPLY 0x0a
  201. typedef struct
  202. {
  203. t_d2cs_client_header h;
  204. bn_short u1; /* always zero */
  205. bn_int reply;
  206. } t_d2cs_client_deletecharreply;
  207. #define D2CS_CLIENT_DELETECHARREPLY_SUCCEED 0x00
  208. #define D2CS_CLIENT_DELETECHARREPLY_FAILED 0x01
  209. #define CLIENT_D2CS_LADDERREQ 0x11
  210. typedef struct
  211. {
  212. t_d2cs_client_header h;
  213. bn_byte type; /* jadder type request */
  214. bn_short start_pos; /* list ladder from what position */
  215. } t_client_d2cs_ladderreq;
  216. #define D2CS_CLIENT_LADDERREPLY 0x11
  217. typedef struct
  218. {
  219. t_d2cs_client_header h;
  220. bn_byte type; /* ladder type request */
  221. bn_short total_len; /* total length of the ladder data */
  222. bn_short curr_len; /* length of ladder data in this packet */
  223. bn_short cont_len; /* length of ladder data in previous packets */
  224. /* length here include the header but
  225. exclude this packet */
  226. } t_d2cs_client_ladderreply;
  227. typedef struct
  228. {
  229. bn_short start_pos; /* start position of ladder */
  230. bn_short u1; /* always zero */
  231. bn_int count1; /* always 0x10 */
  232. } t_d2cs_client_ladderheader;
  233. typedef struct
  234. {
  235. bn_int count2; /* 0x10 for first packet or 0x0 for continue */
  236. } t_d2cs_client_ladderinfoheader;
  237. typedef struct
  238. {
  239. bn_int explow;
  240. bn_int exphigh; /* always zero */
  241. bn_short status;
  242. bn_byte level;
  243. bn_byte u1; /* always zero */
  244. char charname[16];
  245. } t_d2cs_client_ladderinfo;
  246. #define LADDERSTATUS_FLAG_DEAD 0x10
  247. #define LADDERSTATUS_FLAG_HARDCORE 0x20
  248. #define LADDERSTATUS_FLAG_EXPANSION 0x40
  249. #define LADDERSTATUS_FLAG_DIFFICULTY 0x0f00
  250. #define CLIENT_D2CS_MOTDREQ 0x12
  251. typedef struct
  252. {
  253. t_d2cs_client_header h;
  254. } t_client_d2cs_motdreq;
  255. #define D2CS_CLIENT_MOTDREPLY 0x12
  256. typedef struct
  257. {
  258. t_d2cs_client_header h;
  259. bn_byte u1;
  260. /* message */
  261. } t_d2cs_client_motdreply;
  262. #define CLIENT_D2CS_CANCELCREATEGAME 0x13
  263. typedef struct
  264. {
  265. t_d2cs_client_header h;
  266. } t_client_d2cs_cancelcreategame;
  267. #define D2CS_CLIENT_CREATEGAMEWAIT 0x14
  268. typedef struct
  269. {
  270. t_d2cs_client_header h;
  271. bn_int position;
  272. } t_d2cs_client_creategamewait;
  273. #define D2CS_CLIENT_CHARLADDERREQ 0x16
  274. typedef struct
  275. {
  276. t_d2cs_client_header h;
  277. bn_int hardcore;
  278. bn_int expansion;
  279. /* character name */
  280. } t_client_d2cs_charladderreq;
  281. /* use 0x11 LADDER reply for this request */
  282. #define CLIENT_D2CS_CHARLISTREQ 0x17
  283. typedef struct
  284. {
  285. t_d2cs_client_header h;
  286. bn_short maxchar;
  287. bn_short u1;
  288. } t_client_d2cs_charlistreq;
  289. #define D2CS_CLIENT_CHARLISTREPLY 0x17
  290. typedef struct
  291. {
  292. t_d2cs_client_header h;
  293. bn_short maxchar;
  294. bn_short currchar;
  295. bn_short u1; /* always zero */
  296. bn_short currchar2;
  297. /* character name */
  298. /* character portrait blocks */
  299. /* each block is 0x22 bytes static length */
  300. } t_d2cs_client_charlistreply;
  301. #define CLIENT_D2CS_CONVERTCHARREQ 0x18
  302. typedef struct
  303. {
  304. t_d2cs_client_header h;
  305. /* character name */
  306. } t_client_d2cs_convertcharreq;
  307. #define D2CS_CLIENT_CONVERTCHARREPLY 0x18
  308. typedef struct
  309. {
  310. t_d2cs_client_header h;
  311. bn_int reply;
  312. } t_d2cs_client_convertcharreply;
  313. #define D2CS_CLIENT_CONVERTCHARREPLY_SUCCEED 0x00
  314. #define D2CS_CLIENT_CONVERTCHARREPLY_FAILED 0x01
  315. #define CLIENT_D2CS_CHARLISTREQ_110 0x19
  316. typedef struct
  317. {
  318. t_d2cs_client_header h;
  319. bn_short maxchar;
  320. bn_short u1;
  321. } t_client_d2cs_charlistreq_110;
  322. #define D2CS_CLIENT_CHARLISTREPLY_110 0x19
  323. typedef struct
  324. {
  325. t_d2cs_client_header h;
  326. bn_short maxchar;
  327. bn_short currchar;
  328. bn_short u1; /* always zero */
  329. bn_short currchar2;
  330. } t_d2cs_client_charlistreply_110;
  331. typedef struct
  332. {
  333. bn_int expire_time; /* character expire time (in seconds) */
  334. /* character name */
  335. /* character portrait blocks */
  336. /* each block is 0x22 bytes static length */
  337. } t_d2cs_client_chardata;
  338. #endif