yossi12

Packet.h (CLIENT)

Sep 5th, 2021
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 67.23 KB | None | 0 0
  1. #pragma once
  2.  
  3. #ifdef USE_AHNLAB_HACKSHIELD
  4. #include "Hackshield.h"
  5. #include METIN2HS_INCLUDE_ANTICPXSVR
  6. #else
  7. #pragma pack(push)
  8. #pragma pack(8)
  9.  
  10. #define ANTICPX_TRANS_BUFFER_MAX 400
  11.  
  12. typedef struct _AHNHS_TRANS_BUFFER
  13. {
  14. unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX];
  15. unsigned short nLength;
  16. } AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER;
  17.  
  18. #pragma pack(pop)
  19. #endif /* !USE_AHNLAB_HACKSHIELD */
  20.  
  21. #include "Locale.h"
  22. #include "../gamelib/RaceData.h"
  23. #include "../gamelib/ItemData.h"
  24.  
  25. typedef BYTE TPacketHeader;
  26.  
  27. enum
  28. {
  29. /////////////////////////////////////////////////
  30. // To Server
  31. // HEADER_BLANK is the not use(for future use)
  32. HEADER_CG_LOGIN = 1,
  33. HEADER_CG_ATTACK = 2,
  34. HEADER_CG_CHAT = 3,
  35. HEADER_CG_PLAYER_CREATE = 4,
  36. HEADER_CG_PLAYER_DESTROY = 5,
  37. HEADER_CG_PLAYER_SELECT = 6,
  38. HEADER_CG_CHARACTER_MOVE = 7,
  39. HEADER_CG_SYNC_POSITION = 8,
  40. HEADER_CG_DIRECT_ENTER = 9,
  41. HEADER_CG_ENTERGAME = 10,
  42. HEADER_CG_ITEM_USE = 11,
  43. HEADER_CG_ITEM_DROP = 12,
  44. HEADER_CG_ITEM_MOVE = 13,
  45. HEADER_CG_ITEM_PICKUP = 15,
  46. HEADER_CG_QUICKSLOT_ADD = 16,
  47. HEADER_CG_QUICKSLOT_DEL = 17,
  48. HEADER_CG_QUICKSLOT_SWAP = 18,
  49. HEADER_CG_WHISPER = 19,
  50. HEADER_CG_ITEM_DROP2 = 20,
  51. //HEADER_BLANK21 = 21,
  52. //HEADER_BLANK22 = 22,
  53. //HEADER_BLANK22 = 23,
  54. //HEADER_BLANK24 = 24,
  55. //HEADER_BLANK25 = 25,
  56. HEADER_CG_ON_CLICK = 26,
  57. HEADER_CG_EXCHANGE = 27,
  58. HEADER_CG_CHARACTER_POSITION = 28,
  59. HEADER_CG_SCRIPT_ANSWER = 29,
  60. HEADER_CG_QUEST_INPUT_STRING = 30,
  61. HEADER_CG_QUEST_CONFIRM = 31,
  62. //HEADER_BLANK32 = 32,
  63. //HEADER_BLANK33 = 33,
  64. //HEADER_BLANK34 = 34,
  65. //HEADER_BLANK35 = 35,
  66. //HEADER_BLANK36 = 36,
  67. //HEADER_BLANK37 = 37,
  68. //HEADER_BLANK38 = 38,
  69. //HEADER_BLANK39 = 39,
  70. //HEADER_BLANK40 = 40,
  71. HEADER_CG_PVP = 41,
  72. //HEADER_BLANK42 = 42,
  73. //HEADER_BLANK43 = 43,
  74. //HEADER_BLANK44 = 44,
  75. //HEADER_BLANK45 = 45,
  76. //HEADER_BLANK46 = 46,
  77. //HEADER_BLANK47 = 47,
  78. //HEADER_BLANK48 = 48,
  79. //HEADER_BLANK49 = 49,
  80. HEADER_CG_SHOP = 50,
  81. HEADER_CG_FLY_TARGETING = 51,
  82. HEADER_CG_USE_SKILL = 52,
  83. HEADER_CG_ADD_FLY_TARGETING = 53,
  84. HEADER_CG_SHOOT = 54,
  85. HEADER_CG_MYSHOP = 55,
  86. //HEADER_BLANK56 = 56,
  87. //HEADER_BLANK57 = 57,
  88. //HEADER_BLANK58 = 58,
  89. //HEADER_BLANK59 = 59,
  90. HEADER_CG_ITEM_USE_TO_ITEM = 60,
  91. HEADER_CG_TARGET = 61,
  92. //HEADER_BLANK62 = 62,
  93. //HEADER_BLANK63 = 63,
  94. //HEADER_BLANK64 = 64,
  95. HEADER_CG_WARP = 65,
  96. HEADER_CG_SCRIPT_BUTTON = 66,
  97. HEADER_CG_MESSENGER = 67,
  98. //HEADER_BLANK68 = 68,
  99. HEADER_CG_MALL_CHECKOUT = 69,
  100. HEADER_CG_SAFEBOX_CHECKIN = 70,
  101. HEADER_CG_SAFEBOX_CHECKOUT = 71,
  102. HEADER_CG_PARTY_INVITE = 72,
  103. HEADER_CG_PARTY_INVITE_ANSWER = 73,
  104. HEADER_CG_PARTY_REMOVE = 74,
  105. HEADER_CG_PARTY_SET_STATE = 75,
  106. HEADER_CG_PARTY_USE_SKILL = 76,
  107. HEADER_CG_SAFEBOX_ITEM_MOVE = 77,
  108. HEADER_CG_PARTY_PARAMETER = 78,
  109. //HEADER_BLANK68 = 79,
  110. HEADER_CG_GUILD = 80,
  111. HEADER_CG_ANSWER_MAKE_GUILD = 81,
  112. HEADER_CG_FISHING = 82,
  113. HEADER_CG_GIVE_ITEM = 83,
  114. //HEADER_BLANK84 = 84,
  115. //HEADER_BLANK85 = 85,
  116. //HEADER_BLANK86 = 86,
  117. //HEADER_BLANK87 = 87,
  118. //HEADER_BLANK88 = 88,
  119. //HEADER_BLANK89 = 89,
  120. HEADER_CG_EMPIRE = 90,
  121. //HEADER_BLANK91 = 91,
  122. //HEADER_BLANK92 = 92,
  123. //HEADER_BLANK93 = 93,
  124. //HEADER_BLANK94 = 94,
  125. //HEADER_BLANK95 = 95,
  126. HEADER_CG_REFINE = 96,
  127. //HEADER_BLANK97 = 97,
  128. //HEADER_BLANK98 = 98,
  129. //HEADER_BLANK99 = 99,
  130.  
  131. HEADER_CG_MARK_LOGIN = 100,
  132. HEADER_CG_MARK_CRCLIST = 101,
  133. HEADER_CG_MARK_UPLOAD = 102,
  134. HEADER_CG_MARK_IDXLIST = 104,
  135.  
  136. HEADER_CG_CRC_REPORT = 103,
  137.  
  138. HEADER_CG_HACK = 105,
  139. HEADER_CG_CHANGE_NAME = 106,
  140. HEADER_CG_SMS = 107,
  141. HEADER_CG_CHINA_MATRIX_CARD = 108,
  142. HEADER_CG_LOGIN2 = 109,
  143. HEADER_CG_DUNGEON = 110,
  144. HEADER_CG_LOGIN3 = 111,
  145. HEADER_CG_GUILD_SYMBOL_UPLOAD = 112,
  146. HEADER_CG_GUILD_SYMBOL_CRC = 113,
  147. HEADER_CG_SCRIPT_SELECT_ITEM = 114,
  148. HEADER_CG_LOGIN4 = 115,
  149. HEADER_CG_LOGIN5_OPENID = 116,
  150. #ifdef ENABLE_NEW_PET_SYSTEM
  151. HEADER_CG_PetSetName = 147,
  152. #endif
  153. HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
  154. HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
  155.  
  156. HEADER_CG_HS_ACK = 203,
  157. HEADER_CG_XTRAP_ACK = 204,
  158.  
  159. HEADER_CG_DRAGON_SOUL_REFINE = 205,
  160. HEADER_CG_STATE_CHECKER = 206,
  161. #if defined(BL_REMOTE_SHOP)
  162. HEADER_CG_REMOTE_SHOP = 215,
  163. #endif
  164. #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
  165. HEADER_CG_PRIVATE_SHOP_SEARCH = 216,
  166. HEADER_CG_PRIVATE_SHOP_SEARCH_CLOSE = 217,
  167. HEADER_CG_PRIVATE_SHOP_SEARCH_BUY_ITEM = 218,
  168. #endif
  169. #ifdef ENABLE_AURA_SYSTEM
  170. HEADER_CG_AURA = 220,
  171. #endif
  172.  
  173. HEADER_CG_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  174. HEADER_CG_TIME_SYNC = 0xfc,
  175. HEADER_CG_CLIENT_VERSION = 0xfd,
  176. HEADER_CG_CLIENT_VERSION2 = 0xf1,
  177. HEADER_CG_PONG = 0xfe,
  178. HEADER_CG_HANDSHAKE = 0xff,
  179. /////////////////////////////////////////////////
  180. // From Server
  181.  
  182. HEADER_GC_CHARACTER_ADD = 1,
  183. HEADER_GC_CHARACTER_DEL = 2,
  184. HEADER_GC_CHARACTER_MOVE = 3,
  185. HEADER_GC_CHAT = 4,
  186. HEADER_GC_SYNC_POSITION = 5,
  187. HEADER_GC_LOGIN_SUCCESS3 = 6,
  188. HEADER_GC_LOGIN_FAILURE = 7,
  189. HEADER_GC_PLAYER_CREATE_SUCCESS = 8,
  190. HEADER_GC_PLAYER_CREATE_FAILURE = 9,
  191. HEADER_GC_PLAYER_DELETE_SUCCESS = 10,
  192. HEADER_GC_PLAYER_DELETE_WRONG_SOCIAL_ID = 11,
  193. // 12
  194. HEADER_GC_STUN = 13,
  195. HEADER_GC_DEAD = 14,
  196.  
  197. HEADER_GC_MAIN_CHARACTER = 15,
  198. HEADER_GC_PLAYER_POINTS = 16,
  199. HEADER_GC_PLAYER_POINT_CHANGE = 17,
  200. HEADER_GC_CHANGE_SPEED = 18,
  201. HEADER_GC_CHARACTER_UPDATE = 19,
  202. #if defined(GAIDEN)
  203. HEADER_GC_ITEM_DEL = 20,
  204. HEADER_GC_ITEM_SET = 21,
  205. #else
  206. HEADER_GC_ITEM_SET = 20,
  207. HEADER_GC_ITEM_SET2 = 21,
  208. #endif
  209. HEADER_GC_ITEM_USE = 22,
  210. HEADER_GC_ITEM_DROP = 23,
  211. HEADER_GC_ITEM_UPDATE = 25,
  212. HEADER_GC_ITEM_GROUND_ADD = 26,
  213. HEADER_GC_ITEM_GROUND_DEL = 27,
  214. HEADER_GC_QUICKSLOT_ADD = 28,
  215. HEADER_GC_QUICKSLOT_DEL = 29,
  216. HEADER_GC_QUICKSLOT_SWAP = 30,
  217. HEADER_GC_ITEM_OWNERSHIP = 31,
  218. HEADER_GC_LOGIN_SUCCESS4 = 32,
  219. HEADER_GC_ITEM_UNBIND_TIME = 33,
  220. HEADER_GC_WHISPER = 34,
  221. HEADER_GC_ALERT = 35,
  222.  
  223. HEADER_GC_MOTION = 36,
  224.  
  225. HEADER_GC_SHOP = 38,
  226. HEADER_GC_SHOP_SIGN = 39,
  227.  
  228. // 39 ~ 41 Balnk
  229. HEADER_GC_DUEL_START = 40,
  230. HEADER_GC_PVP = 41,
  231. HEADER_GC_EXCHANGE = 42,
  232. HEADER_GC_CHARACTER_POSITION = 43,
  233.  
  234. HEADER_GC_PING = 44,
  235.  
  236. HEADER_GC_SCRIPT = 45,
  237. HEADER_GC_QUEST_CONFIRM = 46,
  238.  
  239. HEADER_GC_MOUNT = 61,
  240. HEADER_GC_OWNERSHIP = 62,
  241. HEADER_GC_TARGET = 63,
  242. HEADER_GC_WARP = 65,
  243. HEADER_GC_ADD_FLY_TARGETING = 69,
  244.  
  245. HEADER_GC_CREATE_FLY = 70,
  246. HEADER_GC_FLY_TARGETING = 71,
  247. HEADER_GC_SKILL_LEVEL = 72,
  248. HEADER_GC_SKILL_COOLTIME_END = 73,
  249. HEADER_GC_MESSENGER = 74,
  250. HEADER_GC_GUILD = 75,
  251. HEADER_GC_SKILL_LEVEL_NEW = 76,
  252.  
  253. HEADER_GC_PARTY_INVITE = 77,
  254. HEADER_GC_PARTY_ADD = 78,
  255. HEADER_GC_PARTY_UPDATE = 79,
  256. HEADER_GC_PARTY_REMOVE = 80,
  257.  
  258. HEADER_GC_QUEST_INFO = 81,
  259. HEADER_GC_REQUEST_MAKE_GUILD = 82,
  260. HEADER_GC_PARTY_PARAMETER = 83,
  261.  
  262. HEADER_GC_SAFEBOX_MONEY_CHANGE = 84,
  263. HEADER_GC_SAFEBOX_SET = 85,
  264. HEADER_GC_SAFEBOX_DEL = 86,
  265. HEADER_GC_SAFEBOX_WRONG_PASSWORD = 87,
  266. HEADER_GC_SAFEBOX_SIZE = 88,
  267.  
  268. HEADER_GC_FISHING = 89,
  269.  
  270. HEADER_GC_EMPIRE = 90,
  271.  
  272. HEADER_GC_PARTY_LINK = 91,
  273. HEADER_GC_PARTY_UNLINK = 92,
  274.  
  275. HEADER_GC_REFINE_INFORMATION = 95,
  276.  
  277. HEADER_GC_OBSERVER_ADD = 96,
  278. HEADER_GC_OBSERVER_REMOVE = 97,
  279. HEADER_GC_OBSERVER_MOVE = 98,
  280. HEADER_GC_VIEW_EQUIP = 99,
  281.  
  282. HEADER_GC_MARK_BLOCK = 100,
  283. HEADER_GC_MARK_DIFF_DATA = 101,
  284. HEADER_GC_MARK_IDXLIST = 102,
  285.  
  286. //HEADER_GC_SLOW_TIMER = 105,
  287. HEADER_GC_TIME = 106,
  288. HEADER_GC_CHANGE_NAME = 107,
  289.  
  290. HEADER_GC_DUNGEON = 110,
  291. HEADER_GC_WALK_MODE = 111,
  292. HEADER_GC_CHANGE_SKILL_GROUP = 112,
  293.  
  294. #if defined(GAIDEN)
  295. HEADER_GC_MAIN_CHARACTER = 113,
  296. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  297. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  298. #else
  299. // SUPPORT_BGM
  300. HEADER_GC_MAIN_CHARACTER2_EMPIRE = 113,
  301. // END_OF_SUPPORT_BGM
  302. #endif
  303.  
  304. HEADER_GC_SEPCIAL_EFFECT = 114,
  305. HEADER_GC_NPC_POSITION = 115,
  306.  
  307. HEADER_GC_CHINA_MATRIX_CARD = 116,
  308. HEADER_GC_CHARACTER_UPDATE2 = 117,
  309. HEADER_GC_LOGIN_KEY = 118,
  310. HEADER_GC_REFINE_INFORMATION_NEW = 119,
  311. HEADER_GC_CHARACTER_ADD2 = 120,
  312. HEADER_GC_CHANNEL = 121,
  313.  
  314. HEADER_GC_MALL_OPEN = 122,
  315. HEADER_GC_TARGET_UPDATE = 123,
  316. HEADER_GC_TARGET_DELETE = 124,
  317. HEADER_GC_TARGET_CREATE_NEW = 125,
  318.  
  319. HEADER_GC_AFFECT_ADD = 126,
  320. HEADER_GC_AFFECT_REMOVE = 127,
  321.  
  322. HEADER_GC_MALL_SET = 128,
  323. HEADER_GC_MALL_DEL = 129,
  324. HEADER_GC_LAND_LIST = 130,
  325. HEADER_GC_LOVER_INFO = 131,
  326. HEADER_GC_LOVE_POINT_UPDATE = 132,
  327. HEADER_GC_GUILD_SYMBOL_DATA = 133,
  328. HEADER_GC_DIG_MOTION = 134,
  329.  
  330. HEADER_GC_DAMAGE_INFO = 135,
  331. HEADER_GC_CHAR_ADDITIONAL_INFO = 136,
  332.  
  333. // SUPPORT_BGM
  334. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  335. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  336. // END_OF_SUPPORT_BGM
  337.  
  338. HEADER_GC_AUTH_SUCCESS = 150,
  339. HEADER_GC_PANAMA_PACK = 151,
  340.  
  341. //HYBRID CRYPT
  342. HEADER_GC_HYBRIDCRYPT_KEYS = 152,
  343. HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks
  344. //HYBRID CRYPT
  345.  
  346. HEADER_GC_AUTH_SUCCESS_OPENID = 154,
  347.  
  348. HEADER_GC_RUNUP_MATRIX_QUIZ = 201,
  349. HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202,
  350. HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203,
  351. #if defined(GAIDEN)
  352. HEADER_GC_ONTIME = 204,
  353. HEADER_GC_RESET_ONTIME = 205,
  354.  
  355. // AUTOBAN
  356. HEADER_GC_AUTOBAN_QUIZ = 206,
  357. // END_OF_AUTOBAN
  358.  
  359. HEADER_GC_HS_REQUEST = 207, // Origially it's 204 on devel branch
  360. #else
  361. HEADER_GC_HS_REQUEST = 204,
  362. HEADER_GC_XTRAP_CS1_REQUEST = 205,
  363. #endif
  364.  
  365. HEADER_GC_SPECIFIC_EFFECT = 208,
  366. HEADER_GC_DRAGON_SOUL_REFINE = 209,
  367. HEADER_GC_RESPOND_CHANNELSTATUS = 210,
  368.  
  369. #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
  370. HEADER_GC_PRIVATE_SHOP_SEARCH = 216,
  371. HEADER_GC_PRIVATE_SHOP_SEARCH_OPEN = 217,
  372. #endif
  373. #ifdef ENABLE_AURA_SYSTEM
  374. HEADER_GC_AURA = 220,
  375. #endif
  376.  
  377. // @fixme007
  378. HEADER_GC_UNK_213 = 213,
  379.  
  380. HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
  381. HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  382. HEADER_GC_HANDSHAKE_OK = 0xfc, // 252
  383. HEADER_GC_PHASE = 0xfd, // 253
  384. HEADER_GC_BINDUDP = 0xfe, // 254
  385. HEADER_GC_HANDSHAKE = 0xff, // 255
  386.  
  387. /////////////////////////////////////////////////
  388. // Client To Client for UDP
  389. /*
  390. HEADER_CC_STATE_WAITING = 1,
  391. HEADER_CC_STATE_WALKING = 2,
  392. HEADER_CC_STATE_GOING = 3,
  393. HEADER_CC_EVENT_NORMAL_ATTACKING = 4,
  394. HEADER_CC_EVENT_COMBO_ATTACKING = 5,
  395. HEADER_CC_EVENT_HIT = 6,
  396. */
  397. };
  398.  
  399. enum
  400. {
  401. ID_MAX_NUM = 30,
  402. PASS_MAX_NUM = 16,
  403. CHAT_MAX_NUM = 128,
  404. PATH_NODE_MAX_NUM = 64,
  405. SHOP_SIGN_MAX_LEN = 32,
  406.  
  407. PLAYER_PER_ACCOUNT3 = 3,
  408. #ifndef ENABLE_PLAYER_PER_ACCOUNT5
  409. PLAYER_PER_ACCOUNT4 = 4,
  410. #else
  411. PLAYER_PER_ACCOUNT4 = 5,
  412. PLAYER_PER_ACCOUNT5 = 5,
  413. #endif
  414.  
  415. PLAYER_ITEM_SLOT_MAX_NUM = 20,
  416.  
  417. QUICKSLOT_MAX_LINE = 4,
  418. QUICKSLOT_MAX_COUNT_PER_LINE = 8,
  419. QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
  420.  
  421. QUICKSLOT_MAX_NUM = 36,
  422.  
  423. SHOP_HOST_ITEM_MAX_NUM = 40,
  424.  
  425. METIN_SOCKET_COUNT = 6,
  426.  
  427. PARTY_AFFECT_SLOT_MAX_NUM = 7,
  428.  
  429. GUILD_GRADE_NAME_MAX_LEN = 8,
  430. GUILD_NAME_MAX_LEN = 12,
  431. GUILD_GRADE_COUNT = 15,
  432. GULID_COMMENT_MAX_LEN = 50,
  433.  
  434. MARK_CRC_NUM = 8*8,
  435. MARK_DATA_SIZE = 16*12,
  436. SYMBOL_DATA_SIZE = 128*256,
  437. QUEST_INPUT_STRING_MAX_NUM = 64,
  438.  
  439. PRIVATE_CODE_LENGTH = 8,
  440.  
  441. REFINE_MATERIAL_MAX_NUM = 5,
  442.  
  443. CHINA_MATRIX_ANSWER_MAX_LEN = 8,
  444.  
  445. RUNUP_MATRIX_QUIZ_MAX_LEN = 8,
  446. RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  447. NEWCIBN_PASSPOD_ANSWER_MAX_LEN = 8,
  448. NEWCIBN_PASSPOD_FAILURE_MAX_LEN = 128,
  449.  
  450. WEAR_MAX_NUM = CItemData::WEAR_MAX_NUM,
  451.  
  452. OPENID_AUTHKEY_LEN = 32,
  453.  
  454. SHOP_TAB_NAME_MAX = 32,
  455. SHOP_TAB_COUNT_MAX = 3,
  456. };
  457.  
  458. #pragma pack(push)
  459. #pragma pack(1)
  460.  
  461. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  462. // Mark
  463. typedef struct command_mark_login
  464. {
  465. BYTE header;
  466. DWORD handle;
  467. DWORD random_key;
  468. } TPacketCGMarkLogin;
  469.  
  470. typedef struct command_mark_upload
  471. {
  472. BYTE header;
  473. DWORD gid;
  474. BYTE image[16*12*4];
  475. } TPacketCGMarkUpload;
  476.  
  477. typedef struct command_mark_idxlist
  478. {
  479. BYTE header;
  480. } TPacketCGMarkIDXList;
  481.  
  482. typedef struct command_mark_crclist
  483. {
  484. BYTE header;
  485. BYTE imgIdx;
  486. DWORD crclist[80];
  487. } TPacketCGMarkCRCList;
  488.  
  489. typedef struct packet_mark_idxlist
  490. {
  491. BYTE header;
  492. DWORD bufSize;
  493. WORD count;
  494. } TPacketGCMarkIDXList;
  495.  
  496. typedef struct packet_mark_block
  497. {
  498. BYTE header;
  499. DWORD bufSize;
  500. BYTE imgIdx;
  501. DWORD count;
  502. } TPacketGCMarkBlock;
  503.  
  504. typedef struct command_symbol_upload
  505. {
  506. BYTE header;
  507. WORD size;
  508. DWORD handle;
  509. } TPacketCGSymbolUpload;
  510.  
  511. typedef struct command_symbol_crc
  512. {
  513. BYTE header;
  514. DWORD dwGuildID;
  515. DWORD dwCRC;
  516. DWORD dwSize;
  517. } TPacketCGSymbolCRC;
  518.  
  519. typedef struct packet_symbol_data
  520. {
  521. BYTE header;
  522. WORD size;
  523. DWORD guild_id;
  524. } TPacketGCGuildSymbolData;
  525.  
  526. //
  527. //
  528. //
  529. typedef struct packet_observer_add
  530. {
  531. BYTE header;
  532. DWORD vid;
  533. WORD x;
  534. WORD y;
  535. } TPacketGCObserverAdd;
  536.  
  537. typedef struct packet_observer_move
  538. {
  539. BYTE header;
  540. DWORD vid;
  541. WORD x;
  542. WORD y;
  543. } TPacketGCObserverMove;
  544.  
  545.  
  546. typedef struct packet_observer_remove
  547. {
  548. BYTE header;
  549. DWORD vid;
  550. } TPacketGCObserverRemove;
  551.  
  552.  
  553. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  554. // To Server
  555.  
  556. typedef struct command_checkin
  557. {
  558. BYTE header;
  559. char name[ID_MAX_NUM+1];
  560. char pwd[PASS_MAX_NUM+1];
  561. } TPacketCGCheckin;
  562.  
  563. typedef struct command_login
  564. {
  565. BYTE header;
  566. char name[ID_MAX_NUM + 1];
  567. char pwd[PASS_MAX_NUM + 1];
  568. } TPacketCGLogin;
  569.  
  570. typedef struct command_login2
  571. {
  572. BYTE header;
  573. char name[ID_MAX_NUM + 1];
  574. DWORD login_key;
  575. DWORD adwClientKey[4];
  576. } TPacketCGLogin2;
  577.  
  578. typedef struct command_login3
  579. {
  580. BYTE header;
  581. char name[ID_MAX_NUM + 1];
  582. char pwd[PASS_MAX_NUM + 1];
  583. DWORD adwClientKey[4];
  584. } TPacketCGLogin3;
  585.  
  586. typedef struct command_login5
  587. {
  588. BYTE header;
  589. char authKey[OPENID_AUTHKEY_LEN + 1];
  590. DWORD adwClientKey[4];
  591. } TPacketCGLogin5;
  592.  
  593. #ifdef ENABLE_NEW_PET_SYSTEM
  594. typedef struct packet_RequestPetName
  595. {
  596. BYTE byHeader;
  597. char petname[13];
  598. } TPacketCGRequestPetName;
  599. #endif
  600.  
  601. typedef struct command_direct_enter
  602. {
  603. BYTE bHeader;
  604. char login[ID_MAX_NUM + 1];
  605. char passwd[PASS_MAX_NUM + 1];
  606. BYTE index;
  607. } TPacketCGDirectEnter;
  608.  
  609. typedef struct command_player_select
  610. {
  611. BYTE header;
  612. BYTE player_index;
  613. } TPacketCGSelectCharacter;
  614.  
  615. typedef struct command_attack
  616. {
  617. BYTE header;
  618. BYTE bType;
  619. DWORD dwVictimVID;
  620. BYTE bCRCMagicCubeProcPiece;
  621. BYTE bCRCMagicCubeFilePiece;
  622. } TPacketCGAttack;
  623.  
  624. typedef struct command_chat
  625. {
  626. BYTE header;
  627. WORD length;
  628. BYTE type;
  629. } TPacketCGChat;
  630.  
  631. typedef struct command_whisper
  632. {
  633. BYTE bHeader;
  634. WORD wSize;
  635. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  636. } TPacketCGWhisper;
  637.  
  638. typedef struct command_sms
  639. {
  640. BYTE bHeader;
  641. WORD wSize;
  642. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  643. } TPacketCGSMS;
  644.  
  645. enum EBattleMode
  646. {
  647. BATTLEMODE_ATTACK = 0,
  648. BATTLEMODE_DEFENSE = 1,
  649. };
  650.  
  651. typedef struct command_EnterFrontGame
  652. {
  653. BYTE header;
  654. } TPacketCGEnterFrontGame;
  655.  
  656. typedef struct command_item_use
  657. {
  658. BYTE header;
  659. TItemPos pos;
  660. } TPacketCGItemUse;
  661.  
  662. #if defined(BL_REMOTE_SHOP)
  663. typedef struct command_remote_shop
  664. {
  665. BYTE header;
  666. BYTE shop_index;
  667. } TPacketCGRemoteShop;
  668. #endif
  669.  
  670. typedef struct command_item_use_to_item
  671. {
  672. BYTE header;
  673. TItemPos source_pos;
  674. TItemPos target_pos;
  675. } TPacketCGItemUseToItem;
  676.  
  677. typedef struct command_item_drop
  678. {
  679. BYTE header;
  680. TItemPos pos;
  681. DWORD elk;
  682. #ifdef ENABLE_CHEQUE_SYSTEM
  683. DWORD cheque;
  684. #endif
  685. } TPacketCGItemDrop;
  686.  
  687. typedef struct command_item_drop2
  688. {
  689. BYTE header;
  690. TItemPos pos;
  691. DWORD gold;
  692. #ifdef ENABLE_CHEQUE_SYSTEM
  693. DWORD cheque;
  694. #endif
  695. BYTE count;
  696. } TPacketCGItemDrop2;
  697.  
  698. typedef struct command_item_move
  699. {
  700. BYTE header;
  701. TItemPos pos;
  702. TItemPos change_pos;
  703. BYTE num;
  704. } TPacketCGItemMove;
  705.  
  706. typedef struct command_item_pickup
  707. {
  708. BYTE header;
  709. DWORD vid;
  710. } TPacketCGItemPickUp;
  711.  
  712. typedef struct command_quickslot_add
  713. {
  714. BYTE header;
  715. BYTE pos;
  716. TQuickSlot slot;
  717. }TPacketCGQuickSlotAdd;
  718.  
  719. typedef struct command_quickslot_del
  720. {
  721. BYTE header;
  722. BYTE pos;
  723. }TPacketCGQuickSlotDel;
  724.  
  725. typedef struct command_quickslot_swap
  726. {
  727. BYTE header;
  728. BYTE pos;
  729. BYTE change_pos;
  730. }TPacketCGQuickSlotSwap;
  731.  
  732. typedef struct command_on_click
  733. {
  734. BYTE header;
  735. DWORD vid;
  736. } TPacketCGOnClick;
  737.  
  738.  
  739. enum
  740. {
  741. SHOP_SUBHEADER_CG_END,
  742. SHOP_SUBHEADER_CG_BUY,
  743. SHOP_SUBHEADER_CG_SELL,
  744. SHOP_SUBHEADER_CG_SELL2,
  745. };
  746.  
  747. typedef struct command_shop
  748. {
  749. BYTE header;
  750. BYTE subheader;
  751. } TPacketCGShop;
  752.  
  753. enum
  754. {
  755. EXCHANGE_SUBHEADER_CG_START, // arg1 == vid of target character
  756. EXCHANGE_SUBHEADER_CG_ITEM_ADD, // arg1 == position of item
  757. EXCHANGE_SUBHEADER_CG_ITEM_DEL, // arg1 == position of item
  758. EXCHANGE_SUBHEADER_CG_ELK_ADD, // arg1 == amount of elk
  759. EXCHANGE_SUBHEADER_CG_ACCEPT, // arg1 == not used
  760. EXCHANGE_SUBHEADER_CG_CANCEL, // arg1 == not used
  761. #ifdef ENABLE_CHEQUE_SYSTEM
  762. EXCHANGE_SUBHEADER_CG_CHEQUE_ADD,
  763. #endif
  764. };
  765.  
  766. typedef struct command_exchange
  767. {
  768. BYTE header;
  769. BYTE subheader;
  770. DWORD arg1;
  771. BYTE arg2;
  772. TItemPos Pos;
  773. } TPacketCGExchange;
  774.  
  775. typedef struct command_position
  776. {
  777. BYTE header;
  778. BYTE position;
  779. } TPacketCGPosition;
  780.  
  781. typedef struct command_script_answer
  782. {
  783. BYTE header;
  784. BYTE answer;
  785. } TPacketCGScriptAnswer;
  786.  
  787. typedef struct command_script_button
  788. {
  789. BYTE header;
  790. unsigned int idx;
  791. } TPacketCGScriptButton;
  792.  
  793. typedef struct command_target
  794. {
  795. BYTE header;
  796. DWORD dwVID;
  797. } TPacketCGTarget;
  798.  
  799. typedef struct command_move
  800. {
  801. BYTE bHeader;
  802. BYTE bFunc;
  803. BYTE bArg;
  804. BYTE bRot;
  805. LONG lX;
  806. LONG lY;
  807. DWORD dwTime;
  808. } TPacketCGMove;
  809.  
  810. typedef struct command_sync_position_element
  811. {
  812. DWORD dwVID;
  813. long lX;
  814. long lY;
  815. } TPacketCGSyncPositionElement;
  816.  
  817. typedef struct command_sync_position
  818. {
  819. BYTE bHeader;
  820. WORD wSize;
  821. } TPacketCGSyncPosition;
  822.  
  823. typedef struct command_fly_targeting
  824. {
  825. BYTE bHeader;
  826. DWORD dwTargetVID;
  827. long lX;
  828. long lY;
  829. } TPacketCGFlyTargeting;
  830.  
  831. typedef struct packet_fly_targeting
  832. {
  833. BYTE bHeader;
  834. DWORD dwShooterVID;
  835. DWORD dwTargetVID;
  836. long lX;
  837. long lY;
  838. } TPacketGCFlyTargeting;
  839.  
  840. typedef struct packet_shoot
  841. {
  842. BYTE bHeader;
  843. BYTE bType;
  844. } TPacketCGShoot;
  845.  
  846. typedef struct command_warp
  847. {
  848. BYTE bHeader;
  849. } TPacketCGWarp;
  850.  
  851. enum
  852. {
  853. MESSENGER_SUBHEADER_GC_LIST,
  854. MESSENGER_SUBHEADER_GC_LOGIN,
  855. MESSENGER_SUBHEADER_GC_LOGOUT,
  856. MESSENGER_SUBHEADER_GC_INVITE,
  857. MESSENGER_SUBHEADER_GC_MOBILE,
  858. };
  859.  
  860. typedef struct packet_messenger
  861. {
  862. BYTE header;
  863. WORD size;
  864. BYTE subheader;
  865. } TPacketGCMessenger;
  866.  
  867. typedef struct packet_messenger_list_offline
  868. {
  869. BYTE connected; // always 0
  870. BYTE length;
  871. } TPacketGCMessengerListOffline;
  872.  
  873. enum
  874. {
  875. MESSENGER_CONNECTED_STATE_OFFLINE,
  876. MESSENGER_CONNECTED_STATE_ONLINE,
  877. MESSENGER_CONNECTED_STATE_MOBILE,
  878. };
  879.  
  880. typedef struct packet_messenger_list_online
  881. {
  882. BYTE connected;
  883. BYTE length;
  884. //BYTE length_char_name;
  885. } TPacketGCMessengerListOnline;
  886.  
  887. typedef struct packet_messenger_login
  888. {
  889. //BYTE length_login;
  890. //BYTE length_char_name;
  891. BYTE length;
  892. } TPacketGCMessengerLogin;
  893.  
  894. typedef struct packet_messenger_logout
  895. {
  896. BYTE length;
  897. } TPacketGCMessengerLogout;
  898.  
  899. enum
  900. {
  901. MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  902. MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  903. MESSENGER_SUBHEADER_CG_REMOVE,
  904. };
  905.  
  906. typedef struct command_messenger
  907. {
  908. BYTE header;
  909. BYTE subheader;
  910. } TPacketCGMessenger;
  911.  
  912. typedef struct command_messenger_remove
  913. {
  914. BYTE length;
  915. } TPacketCGMessengerRemove;
  916.  
  917. enum
  918. {
  919. SAFEBOX_MONEY_STATE_SAVE,
  920. SAFEBOX_MONEY_STATE_WITHDRAW,
  921. };
  922.  
  923. typedef struct command_safebox_money
  924. {
  925. BYTE bHeader;
  926. BYTE bState;
  927. DWORD dwMoney;
  928. } TPacketCGSafeboxMoney;
  929.  
  930. typedef struct command_safebox_checkout
  931. {
  932. BYTE bHeader;
  933. BYTE bSafePos;
  934. TItemPos ItemPos;
  935. } TPacketCGSafeboxCheckout;
  936.  
  937. typedef struct command_safebox_checkin
  938. {
  939. BYTE bHeader;
  940. BYTE bSafePos;
  941. TItemPos ItemPos;
  942. } TPacketCGSafeboxCheckin;
  943.  
  944. typedef struct command_mall_checkout
  945. {
  946. BYTE bHeader;
  947. BYTE bMallPos;
  948. TItemPos ItemPos;
  949. } TPacketCGMallCheckout;
  950.  
  951. ///////////////////////////////////////////////////////////////////////////////////
  952. // Party
  953.  
  954. typedef struct command_use_skill
  955. {
  956. BYTE bHeader;
  957. DWORD dwVnum;
  958. DWORD dwTargetVID;
  959. } TPacketCGUseSkill;
  960.  
  961. typedef struct command_party_invite
  962. {
  963. BYTE header;
  964. DWORD vid;
  965. } TPacketCGPartyInvite;
  966.  
  967. typedef struct command_party_invite_answer
  968. {
  969. BYTE header;
  970. DWORD leader_pid;
  971. BYTE accept;
  972. } TPacketCGPartyInviteAnswer;
  973.  
  974. typedef struct command_party_remove
  975. {
  976. BYTE header;
  977. DWORD pid;
  978. } TPacketCGPartyRemove;
  979.  
  980. typedef struct command_party_set_state
  981. {
  982. BYTE byHeader;
  983. DWORD dwVID;
  984. BYTE byState;
  985. BYTE byFlag;
  986. } TPacketCGPartySetState;
  987.  
  988. typedef struct packet_party_link
  989. {
  990. BYTE header;
  991. DWORD pid;
  992. DWORD vid;
  993. } TPacketGCPartyLink;
  994.  
  995. typedef struct packet_party_unlink
  996. {
  997. BYTE header;
  998. DWORD pid;
  999. DWORD vid;
  1000. } TPacketGCPartyUnlink;
  1001.  
  1002. typedef struct command_party_use_skill
  1003. {
  1004. BYTE byHeader;
  1005. BYTE bySkillIndex;
  1006. DWORD dwTargetVID;
  1007. } TPacketCGPartyUseSkill;
  1008.  
  1009. enum
  1010. {
  1011. GUILD_SUBHEADER_CG_ADD_MEMBER,
  1012. GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  1013. GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  1014. GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  1015. GUILD_SUBHEADER_CG_OFFER,
  1016. GUILD_SUBHEADER_CG_POST_COMMENT,
  1017. GUILD_SUBHEADER_CG_DELETE_COMMENT,
  1018. GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  1019. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  1020. GUILD_SUBHEADER_CG_USE_SKILL,
  1021. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  1022. GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  1023. GUILD_SUBHEADER_CG_CHARGE_GSP,
  1024. GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  1025. GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  1026. };
  1027.  
  1028. typedef struct command_guild
  1029. {
  1030. BYTE byHeader;
  1031. BYTE bySubHeader;
  1032. } TPacketCGGuild;
  1033.  
  1034. typedef struct command_guild_answer_make_guild
  1035. {
  1036. BYTE header;
  1037. char guild_name[GUILD_NAME_MAX_LEN+1];
  1038. } TPacketCGAnswerMakeGuild;
  1039.  
  1040. typedef struct command_give_item
  1041. {
  1042. BYTE byHeader;
  1043. DWORD dwTargetVID;
  1044. TItemPos ItemPos;
  1045. BYTE byItemCount;
  1046. } TPacketCGGiveItem;
  1047.  
  1048. typedef struct SPacketCGHack
  1049. {
  1050. BYTE bHeader;
  1051. char szBuf[255 + 1];
  1052. } TPacketCGHack;
  1053.  
  1054. typedef struct command_dungeon
  1055. {
  1056. BYTE bHeader;
  1057. WORD size;
  1058. } TPacketCGDungeon;
  1059.  
  1060. // Private Shop
  1061. typedef struct SShopItemTable
  1062. {
  1063. DWORD vnum;
  1064. BYTE count;
  1065.  
  1066. TItemPos pos;
  1067. DWORD price;
  1068. #ifdef ENABLE_CHEQUE_SYSTEM
  1069. DWORD cheque;
  1070. #endif
  1071. BYTE display_pos;
  1072. } TShopItemTable;
  1073.  
  1074. typedef struct SPacketCGMyShop
  1075. {
  1076. BYTE bHeader;
  1077. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1078. BYTE bCount; // count of TShopItemTable, max 39
  1079. #ifdef ENABLE_OFFLINE_SHOP
  1080. BYTE days;
  1081. #endif
  1082. } TPacketCGMyShop;
  1083.  
  1084. typedef struct SPacketCGRefine
  1085. {
  1086. BYTE header;
  1087. BYTE pos;
  1088. BYTE type;
  1089. } TPacketCGRefine;
  1090.  
  1091. typedef struct SPacketCGChangeName
  1092. {
  1093. BYTE header;
  1094. BYTE index;
  1095. char name[CHARACTER_NAME_MAX_LEN+1];
  1096. } TPacketCGChangeName;
  1097.  
  1098. typedef struct command_client_version
  1099. {
  1100. BYTE header;
  1101. char filename[32+1];
  1102. char timestamp[32+1];
  1103. } TPacketCGClientVersion;
  1104.  
  1105. typedef struct command_client_version2
  1106. {
  1107. BYTE header;
  1108. char filename[32+1];
  1109. char timestamp[32+1];
  1110. } TPacketCGClientVersion2;
  1111.  
  1112. typedef struct command_crc_report
  1113. {
  1114. BYTE header;
  1115. BYTE byPackMode;
  1116. DWORD dwBinaryCRC32;
  1117. DWORD dwProcessCRC32;
  1118. DWORD dwRootPackCRC32;
  1119. } TPacketCGCRCReport;
  1120.  
  1121. typedef struct command_china_matrix_card
  1122. {
  1123. BYTE bHeader;
  1124. char szAnswer[CHINA_MATRIX_ANSWER_MAX_LEN + 1];
  1125. } TPacketCGChinaMatrixCard;
  1126.  
  1127. typedef struct command_runup_matrix_answer
  1128. {
  1129. BYTE bHeader;
  1130. char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  1131. } TPacketCGRunupMatrixAnswer;
  1132.  
  1133. typedef struct command_newcibn_passpod_answer
  1134. {
  1135. BYTE bHeader;
  1136. char szAnswer[NEWCIBN_PASSPOD_ANSWER_MAX_LEN + 1];
  1137. } TPacketCGNEWCIBNPasspodAnswer;
  1138.  
  1139. enum EPartyExpDistributionType
  1140. {
  1141. PARTY_EXP_DISTRIBUTION_NON_PARITY,
  1142. PARTY_EXP_DISTRIBUTION_PARITY,
  1143. };
  1144.  
  1145. typedef struct command_party_parameter
  1146. {
  1147. BYTE bHeader;
  1148. BYTE bDistributeMode;
  1149. } TPacketCGPartyParameter;
  1150.  
  1151. typedef struct command_quest_input_string
  1152. {
  1153. BYTE bHeader;
  1154. char szString[QUEST_INPUT_STRING_MAX_NUM+1];
  1155. } TPacketCGQuestInputString;
  1156.  
  1157. typedef struct command_quest_confirm
  1158. {
  1159. BYTE header;
  1160. BYTE answer;
  1161. DWORD requestPID;
  1162. } TPacketCGQuestConfirm;
  1163.  
  1164. typedef struct command_script_select_item
  1165. {
  1166. BYTE header;
  1167. DWORD selection;
  1168. } TPacketCGScriptSelectItem;
  1169.  
  1170. #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
  1171. typedef struct command_privateshop_searchcg
  1172. {
  1173. BYTE header;
  1174. BYTE bJob;
  1175. BYTE bMaskType;
  1176. int iMaskSub;
  1177. int iMinRefine;
  1178. int iMaxRefine;
  1179. int iMinLevel;
  1180. int iMaxLevel;
  1181. int iMinGold;
  1182. int iMaxGold;
  1183. char szItemName[CItemData::ITEM_NAME_MAX_LEN + 1];
  1184. #if defined(ENABLE_CHEQUE_SYSTEM)
  1185. int iMinCheque;
  1186. int iMaxCheque;
  1187. #endif
  1188. } TPacketCGPrivateShopSearch;
  1189.  
  1190. typedef struct command_privateshopsearch_item
  1191. {
  1192. packet_shop_item item;
  1193. char szSellerName[CHARACTER_NAME_MAX_LEN + 1];
  1194. DWORD dwShopPID;
  1195. } TPacketGCPrivateShopSearchItem;
  1196.  
  1197. typedef struct command_privateshop_searchgc
  1198. {
  1199. BYTE header;
  1200. WORD size;
  1201. } TPacketGCPrivateShopSearch;
  1202.  
  1203. typedef struct command_privateshop_searchopengc
  1204. {
  1205. BYTE header;
  1206. } TPacketGCPrivateShopSearchOpen;
  1207.  
  1208. typedef struct command_privateshop_closecg
  1209. {
  1210. BYTE header;
  1211. } TPacketCGPrivateShopSearchClose;
  1212. typedef struct command_privateshop_buy_item
  1213. {
  1214. BYTE header;
  1215. BYTE pos;
  1216. DWORD dwShopPID;
  1217. } TPacketCGPrivateShopSearchBuyItem;
  1218. #endif
  1219.  
  1220. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1221. // From Server
  1222. enum EPhase
  1223. {
  1224. PHASE_CLOSE,
  1225. PHASE_HANDSHAKE,
  1226. PHASE_LOGIN,
  1227. PHASE_SELECT,
  1228. PHASE_LOADING,
  1229. PHASE_GAME,
  1230. PHASE_DEAD,
  1231.  
  1232. PHASE_DBCLIENT_CONNECTING,
  1233. PHASE_DBCLIENT,
  1234. PHASE_P2P,
  1235. PHASE_AUTH,
  1236. };
  1237.  
  1238. typedef struct packet_phase
  1239. {
  1240. BYTE header;
  1241. BYTE phase;
  1242. } TPacketGCPhase;
  1243.  
  1244. typedef struct packet_blank
  1245. {
  1246. BYTE header;
  1247. } TPacketGCBlank;
  1248.  
  1249. typedef struct packet_blank_dynamic
  1250. {
  1251. BYTE header;
  1252. WORD size;
  1253. } TPacketGCBlankDynamic;
  1254.  
  1255. typedef struct packet_header_handshake
  1256. {
  1257. BYTE header;
  1258. DWORD dwHandshake;
  1259. DWORD dwTime;
  1260. LONG lDelta;
  1261. } TPacketGCHandshake;
  1262.  
  1263. typedef struct packet_header_bindudp
  1264. {
  1265. BYTE header;
  1266. DWORD addr;
  1267. WORD port;
  1268. } TPacketGCBindUDP;
  1269.  
  1270. typedef struct packet_header_dynamic_size
  1271. {
  1272. BYTE header;
  1273. WORD size;
  1274. } TDynamicSizePacketHeader;
  1275.  
  1276. typedef struct SSimplePlayerInformation
  1277. {
  1278. DWORD dwID;
  1279. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1280. BYTE byJob;
  1281. BYTE byLevel;
  1282. #ifdef ENABLE_CONQUEROR_LEVEL
  1283. BYTE byConquerorLevel;
  1284. BYTE bySungmaST, bySungmaHP, bySungmaMV, bySungmaINM;
  1285. #endif
  1286. DWORD dwPlayMinutes;
  1287. BYTE byST, byHT, byDX, byIQ;
  1288. // WORD wParts[CRaceData::PART_MAX_NUM];
  1289. WORD wMainPart;
  1290. BYTE bChangeName;
  1291. WORD wHairPart;
  1292. #ifdef ENABLE_ACCE_SYSTEM
  1293. WORD wAccePart;
  1294. #endif
  1295. BYTE bDummy[4];
  1296. long x, y;
  1297. LONG lAddr;
  1298. WORD wPort;
  1299. BYTE bySkillGroup;
  1300. #if defined(__LOADING_TIP__)
  1301. long lMapIndex;
  1302. #endif
  1303. } TSimplePlayerInformation;
  1304.  
  1305. typedef struct packet_login_success3
  1306. {
  1307. BYTE header;
  1308. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT3];
  1309. DWORD guild_id[PLAYER_PER_ACCOUNT3];
  1310. char guild_name[PLAYER_PER_ACCOUNT3][GUILD_NAME_MAX_LEN+1];
  1311. DWORD handle;
  1312. DWORD random_key;
  1313. } TPacketGCLoginSuccess3;
  1314.  
  1315. typedef struct packet_login_success4
  1316. {
  1317. BYTE header;
  1318. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT4];
  1319. DWORD guild_id[PLAYER_PER_ACCOUNT4];
  1320. char guild_name[PLAYER_PER_ACCOUNT4][GUILD_NAME_MAX_LEN+1];
  1321. DWORD handle;
  1322. DWORD random_key;
  1323. } TPacketGCLoginSuccess4;
  1324.  
  1325.  
  1326. #ifdef ENABLE_PLAYER_PER_ACCOUNT5
  1327. typedef struct packet_login_success5
  1328. {
  1329. BYTE header;
  1330. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT5];
  1331. DWORD guild_id[PLAYER_PER_ACCOUNT5];
  1332. char guild_name[PLAYER_PER_ACCOUNT5][GUILD_NAME_MAX_LEN+1];
  1333. DWORD handle;
  1334. DWORD random_key;
  1335. } TPacketGCLoginSuccess5;
  1336. #endif
  1337.  
  1338. enum { LOGIN_STATUS_MAX_LEN = 8 };
  1339. typedef struct packet_login_failure
  1340. {
  1341. BYTE header;
  1342. char szStatus[LOGIN_STATUS_MAX_LEN + 1];
  1343. } TPacketGCLoginFailure;
  1344.  
  1345. typedef struct command_player_create
  1346. {
  1347. BYTE header;
  1348. BYTE index;
  1349. char name[CHARACTER_NAME_MAX_LEN + 1];
  1350. WORD job;
  1351. BYTE shape;
  1352. BYTE CON;
  1353. BYTE INT;
  1354. BYTE STR;
  1355. BYTE DEX;
  1356. } TPacketCGCreateCharacter;
  1357.  
  1358. typedef struct command_player_create_success
  1359. {
  1360. BYTE header;
  1361. BYTE bAccountCharacterSlot;
  1362. TSimplePlayerInformation kSimplePlayerInfomation;
  1363. } TPacketGCPlayerCreateSuccess;
  1364.  
  1365. typedef struct command_create_failure
  1366. {
  1367. BYTE header;
  1368. BYTE bType;
  1369. } TPacketGCCreateFailure;
  1370.  
  1371. typedef struct command_player_delete
  1372. {
  1373. BYTE header;
  1374. BYTE index;
  1375. char szPrivateCode[PRIVATE_CODE_LENGTH];
  1376. } TPacketCGDestroyCharacter;
  1377.  
  1378. typedef struct packet_player_delete_success
  1379. {
  1380. BYTE header;
  1381. BYTE account_index;
  1382. } TPacketGCDestroyCharacterSuccess;
  1383.  
  1384. enum
  1385. {
  1386. ADD_CHARACTER_STATE_DEAD = (1 << 0),
  1387. ADD_CHARACTER_STATE_SPAWN = (1 << 1),
  1388. ADD_CHARACTER_STATE_GUNGON = (1 << 2),
  1389. ADD_CHARACTER_STATE_KILLER = (1 << 3),
  1390. ADD_CHARACTER_STATE_PARTY = (1 << 4),
  1391. };
  1392.  
  1393. enum EPKModes
  1394. {
  1395. PK_MODE_PEACE,
  1396. PK_MODE_REVENGE,
  1397. PK_MODE_FREE,
  1398. PK_MODE_PROTECT,
  1399. PK_MODE_GUILD,
  1400. PK_MODE_MAX_NUM,
  1401. };
  1402.  
  1403. enum ECharacterEquipmentPart
  1404. {
  1405. CHR_EQUIPPART_ARMOR,
  1406. CHR_EQUIPPART_WEAPON,
  1407. CHR_EQUIPPART_HEAD,
  1408. CHR_EQUIPPART_HAIR,
  1409.  
  1410. #ifdef ENABLE_ACCE_SYSTEM
  1411. CHR_EQUIPPART_ACCE,
  1412. #endif
  1413. #ifdef ENABLE_AURA_SYSTEM
  1414. CHR_EQUIPPART_AURA,
  1415. #endif
  1416. CHR_EQUIPPART_NUM,
  1417. };
  1418.  
  1419. typedef struct packet_char_additional_info
  1420. {
  1421. BYTE header;
  1422. DWORD dwVID;
  1423. char name[CHARACTER_NAME_MAX_LEN + 1];
  1424. WORD awPart[CHR_EQUIPPART_NUM];
  1425. BYTE bEmpire;
  1426. DWORD dwGuildID;
  1427. DWORD dwLevel;
  1428. #ifdef ENABLE_CONQUEROR_LEVEL
  1429. DWORD dwConquerorLevel;
  1430. #endif
  1431. short sAlignment;
  1432. BYTE bPKMode;
  1433. DWORD dwMountVnum;
  1434. BYTE dwNewIsGuildName;
  1435. } TPacketGCCharacterAdditionalInfo;
  1436.  
  1437. typedef struct packet_add_char
  1438. {
  1439. BYTE header;
  1440.  
  1441. DWORD dwVID;
  1442.  
  1443. //char name[CHARACTER_NAME_MAX_LEN + 1];
  1444.  
  1445. float angle;
  1446. long x;
  1447. long y;
  1448. long z;
  1449.  
  1450. BYTE bType;
  1451. WORD wRaceNum;
  1452. //WORD awPart[CHR_EQUIPPART_NUM];
  1453. BYTE bMovingSpeed;
  1454. BYTE bAttackSpeed;
  1455.  
  1456. BYTE bStateFlag;
  1457. DWORD dwAffectFlag[2]; // ??
  1458. //BYTE bEmpire;
  1459. //DWORD dwGuild;
  1460. //short sAlignment;
  1461. //BYTE bPKMode;
  1462. //DWORD dwMountVnum;
  1463. } TPacketGCCharacterAdd;
  1464.  
  1465. typedef struct packet_add_char2
  1466. {
  1467. BYTE header;
  1468.  
  1469. DWORD dwVID;
  1470.  
  1471. char name[CHARACTER_NAME_MAX_LEN + 1];
  1472.  
  1473. float angle;
  1474. long x;
  1475. long y;
  1476. long z;
  1477.  
  1478. BYTE bType;
  1479. WORD wRaceNum;
  1480. WORD awPart[CHR_EQUIPPART_NUM];
  1481. BYTE bMovingSpeed;
  1482. BYTE bAttackSpeed;
  1483.  
  1484. BYTE bStateFlag;
  1485. DWORD dwAffectFlag[2]; // ??
  1486. BYTE bEmpire;
  1487.  
  1488. DWORD dwGuild;
  1489. short sAlignment;
  1490. BYTE bPKMode;
  1491. DWORD dwMountVnum;
  1492. BYTE dwNewIsGuildName;
  1493. } TPacketGCCharacterAdd2;
  1494.  
  1495. typedef struct packet_update_char
  1496. {
  1497. BYTE header;
  1498. DWORD dwVID;
  1499.  
  1500. WORD awPart[CHR_EQUIPPART_NUM];
  1501. BYTE bMovingSpeed;
  1502. BYTE bAttackSpeed;
  1503.  
  1504. BYTE bStateFlag;
  1505. DWORD dwAffectFlag[2];
  1506.  
  1507. DWORD dwGuildID;
  1508. short sAlignment;
  1509. #ifdef ENABLE_NEW_PET_SYSTEM
  1510. DWORD dwLevel;
  1511. #endif
  1512. #ifdef ENABLE_CONQUEROR_LEVEL
  1513. DWORD dwConquerorLevel;
  1514. #endif
  1515. BYTE bPKMode;
  1516. DWORD dwMountVnum;
  1517. BYTE dwNewIsGuildName;
  1518. } TPacketGCCharacterUpdate;
  1519.  
  1520. typedef struct packet_update_char2
  1521. {
  1522. BYTE header;
  1523. DWORD dwVID;
  1524.  
  1525. WORD awPart[CHR_EQUIPPART_NUM];
  1526. BYTE bMovingSpeed;
  1527. BYTE bAttackSpeed;
  1528.  
  1529. BYTE bStateFlag;
  1530. DWORD dwAffectFlag[2];
  1531.  
  1532. DWORD dwGuildID;
  1533. short sAlignment;
  1534. BYTE bPKMode;
  1535. DWORD dwMountVnum;
  1536. BYTE dwNewIsGuildName;
  1537. } TPacketGCCharacterUpdate2;
  1538.  
  1539. typedef struct packet_del_char
  1540. {
  1541. BYTE header;
  1542. DWORD dwVID;
  1543. } TPacketGCCharacterDelete;
  1544.  
  1545. typedef struct packet_GlobalTime
  1546. {
  1547. BYTE header;
  1548. float GlobalTime;
  1549. } TPacketGCGlobalTime;
  1550.  
  1551. enum EChatType
  1552. {
  1553. CHAT_TYPE_TALKING,
  1554. CHAT_TYPE_INFO,
  1555. CHAT_TYPE_NOTICE,
  1556. CHAT_TYPE_PARTY,
  1557. CHAT_TYPE_GUILD,
  1558. CHAT_TYPE_COMMAND,
  1559. CHAT_TYPE_SHOUT,
  1560. CHAT_TYPE_WHISPER,
  1561. CHAT_TYPE_BIG_NOTICE,
  1562. CHAT_TYPE_MONARCH_NOTICE,
  1563. #ifdef ENABLE_DICE_SYSTEM
  1564. CHAT_TYPE_DICE_INFO, //11
  1565. #endif
  1566. CHAT_TYPE_MAX_NUM,
  1567. };
  1568.  
  1569. typedef struct packet_chatting
  1570. {
  1571. BYTE header;
  1572. WORD size;
  1573. BYTE type;
  1574. DWORD dwVID;
  1575. BYTE bEmpire;
  1576. } TPacketGCChat;
  1577.  
  1578. typedef struct packet_whisper
  1579. {
  1580. BYTE bHeader;
  1581. WORD wSize;
  1582. BYTE bType;
  1583. char szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1584. } TPacketGCWhisper;
  1585.  
  1586. typedef struct packet_stun
  1587. {
  1588. BYTE header;
  1589. DWORD vid;
  1590. } TPacketGCStun;
  1591.  
  1592. typedef struct packet_dead
  1593. {
  1594. BYTE header;
  1595. DWORD vid;
  1596. } TPacketGCDead;
  1597.  
  1598. typedef struct packet_main_character
  1599. {
  1600. BYTE header;
  1601. DWORD dwVID;
  1602. WORD wRaceNum;
  1603. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1604. long lX, lY, lZ;
  1605. BYTE bySkillGroup;
  1606. } TPacketGCMainCharacter;
  1607.  
  1608. // SUPPORT_BGM
  1609. typedef struct packet_main_character2_empire
  1610. {
  1611. BYTE header;
  1612. DWORD dwVID;
  1613. WORD wRaceNum;
  1614. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1615. long lX, lY, lZ;
  1616. BYTE byEmpire;
  1617. BYTE bySkillGroup;
  1618. } TPacketGCMainCharacter2_EMPIRE;
  1619.  
  1620. typedef struct packet_main_character3_bgm
  1621. {
  1622. enum
  1623. {
  1624. MUSIC_NAME_MAX_LEN = 24,
  1625. };
  1626. BYTE header;
  1627. DWORD dwVID;
  1628. WORD wRaceNum;
  1629. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1630. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1631. long lX, lY, lZ;
  1632. BYTE byEmpire;
  1633. BYTE bySkillGroup;
  1634. } TPacketGCMainCharacter3_BGM;
  1635.  
  1636. typedef struct packet_main_character4_bgm_vol
  1637. {
  1638. enum
  1639. {
  1640. MUSIC_NAME_MAX_LEN = 24,
  1641. };
  1642. BYTE header;
  1643. DWORD dwVID;
  1644. WORD wRaceNum;
  1645. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1646. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1647. float fBGMVol;
  1648. long lX, lY, lZ;
  1649. BYTE byEmpire;
  1650. BYTE bySkillGroup;
  1651. } TPacketGCMainCharacter4_BGM_VOL;
  1652. // END_OF_SUPPORT_BGM
  1653.  
  1654. enum EPointTypes
  1655. {
  1656. POINT_NONE, // 0
  1657. POINT_LEVEL, // 1
  1658. POINT_VOICE, // 2
  1659. POINT_EXP, // 3
  1660. POINT_NEXT_EXP, // 4
  1661. POINT_HP, // 5
  1662. POINT_MAX_HP, // 6
  1663. POINT_SP, // 7
  1664. POINT_MAX_SP, // 8
  1665. POINT_STAMINA,
  1666. POINT_MAX_STAMINA,
  1667.  
  1668. POINT_GOLD, // 11
  1669. POINT_ST,
  1670. POINT_HT,
  1671. POINT_DX,
  1672. POINT_IQ,
  1673. POINT_ATT_POWER,
  1674. POINT_ATT_SPEED,
  1675. POINT_EVADE_RATE,
  1676. POINT_MOV_SPEED,
  1677. POINT_DEF_GRADE,
  1678. POINT_CASTING_SPEED,
  1679. POINT_MAGIC_ATT_GRADE,
  1680. POINT_MAGIC_DEF_GRADE,
  1681. POINT_EMPIRE_POINT,
  1682. POINT_LEVEL_STEP,
  1683. POINT_STAT,
  1684. POINT_SUB_SKILL,
  1685. POINT_SKILL,
  1686. POINT_MIN_ATK,
  1687. POINT_MAX_ATK,
  1688. POINT_PLAYTIME,
  1689. POINT_HP_REGEN,
  1690. POINT_SP_REGEN,
  1691.  
  1692. POINT_BOW_DISTANCE,
  1693.  
  1694. POINT_HP_RECOVERY,
  1695. POINT_SP_RECOVERY,
  1696.  
  1697. POINT_POISON_PCT,
  1698. POINT_STUN_PCT,
  1699. POINT_SLOW_PCT,
  1700. POINT_CRITICAL_PCT,
  1701. POINT_PENETRATE_PCT,
  1702. POINT_CURSE_PCT,
  1703.  
  1704. POINT_ATTBONUS_HUMAN,
  1705. POINT_ATTBONUS_ANIMAL,
  1706. POINT_ATTBONUS_ORC,
  1707. POINT_ATTBONUS_MILGYO,
  1708. POINT_ATTBONUS_UNDEAD,
  1709. POINT_ATTBONUS_DEVIL,
  1710. POINT_ATTBONUS_INSECT,
  1711. POINT_ATTBONUS_FIRE,
  1712. POINT_ATTBONUS_ICE,
  1713. POINT_ATTBONUS_DESERT,
  1714. POINT_ATTBONUS_UNUSED0, // 53 UNUSED0
  1715. POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
  1716. POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
  1717. POINT_ATTBONUS_UNUSED3, // 56 UNUSED3
  1718. POINT_ATTBONUS_UNUSED4, // 57 UNUSED4
  1719. POINT_ATTBONUS_UNUSED5, // 58 UNUSED5
  1720. POINT_ATTBONUS_UNUSED6, // 59 UNUSED6
  1721. POINT_ATTBONUS_UNUSED7, // 60 UNUSED7
  1722. POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
  1723. POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
  1724.  
  1725. POINT_STEAL_HP,
  1726. POINT_STEAL_SP,
  1727.  
  1728. POINT_MANA_BURN_PCT,
  1729.  
  1730.  
  1731. POINT_DAMAGE_SP_RECOVER,
  1732.  
  1733. POINT_BLOCK,
  1734. POINT_DODGE,
  1735.  
  1736. POINT_RESIST_SWORD, // 69
  1737. POINT_RESIST_TWOHAND, // 70
  1738. POINT_RESIST_DAGGER, // 71
  1739. POINT_RESIST_BELL, // 72
  1740. POINT_RESIST_FAN, // 73
  1741. POINT_RESIST_BOW,
  1742. POINT_RESIST_FIRE,
  1743. POINT_RESIST_ELEC,
  1744. POINT_RESIST_MAGIC,
  1745. POINT_RESIST_WIND,
  1746.  
  1747. POINT_REFLECT_MELEE,
  1748.  
  1749. POINT_REFLECT_CURSE,
  1750. POINT_POISON_REDUCE,
  1751.  
  1752. POINT_KILL_SP_RECOVER,
  1753. POINT_EXP_DOUBLE_BONUS, // 83
  1754. POINT_GOLD_DOUBLE_BONUS, // 84
  1755. POINT_ITEM_DROP_BONUS, // 85
  1756.  
  1757. POINT_POTION_BONUS, // 86
  1758. POINT_KILL_HP_RECOVER, // 87
  1759.  
  1760. POINT_IMMUNE_STUN, // 88
  1761. POINT_IMMUNE_SLOW, // 89
  1762. POINT_IMMUNE_FALL, // 90
  1763. //////////////////
  1764.  
  1765. POINT_PARTY_ATT_GRADE, // 91
  1766. POINT_PARTY_DEF_GRADE, // 92
  1767.  
  1768. POINT_ATT_BONUS, // 93
  1769. POINT_DEF_BONUS, // 94
  1770.  
  1771. POINT_ATT_GRADE_BONUS, // 95
  1772. POINT_DEF_GRADE_BONUS, // 96
  1773. POINT_MAGIC_ATT_GRADE_BONUS, // 97
  1774. POINT_MAGIC_DEF_GRADE_BONUS, // 98
  1775.  
  1776. POINT_RESIST_NORMAL_DAMAGE, // 99
  1777.  
  1778. POINT_STAT_RESET_COUNT = 112,
  1779. POINT_HORSE_SKILL = 113,
  1780.  
  1781. POINT_MALL_ATTBONUS,
  1782. POINT_MALL_DEFBONUS,
  1783. POINT_MALL_EXPBONUS,
  1784. POINT_MALL_ITEMBONUS,
  1785. POINT_MALL_GOLDBONUS,
  1786. POINT_MAX_HP_PCT,
  1787. POINT_MAX_SP_PCT,
  1788.  
  1789. POINT_SKILL_DAMAGE_BONUS,
  1790. POINT_NORMAL_HIT_DAMAGE_BONUS,
  1791.  
  1792. POINT_SKILL_DEFEND_BONUS,
  1793. POINT_NORMAL_HIT_DEFEND_BONUS,
  1794. POINT_PC_BANG_EXP_BONUS, // 125
  1795. POINT_PC_BANG_DROP_BONUS,
  1796.  
  1797. POINT_ENERGY = 128,
  1798.  
  1799. POINT_ENERGY_END_TIME = 129,
  1800. POINT_COSTUME_ATTR_BONUS = 130,
  1801. POINT_MAGIC_ATT_BONUS_PER = 131,
  1802. POINT_MELEE_MAGIC_ATT_BONUS_PER = 132,
  1803.  
  1804.  
  1805. POINT_RESIST_ICE = 133,
  1806. POINT_RESIST_EARTH = 134,
  1807. POINT_RESIST_DARK = 135,
  1808.  
  1809. POINT_RESIST_CRITICAL = 136,
  1810. POINT_RESIST_PENETRATE = 137,
  1811. #ifdef ENABLE_ACCE_SYSTEM
  1812. POINT_ACCEDRAIN_RATE = 138,
  1813. #endif
  1814. #ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
  1815. POINT_RESIST_MAGIC_REDUCTION = 139,
  1816. #endif
  1817. POINT_FREEZE_PCT = 140,
  1818. POINT_LASTING_FIRE_PCT = 141,
  1819. #ifdef ENABLE_EXTRA_APPLY_BONUS
  1820. POINT_ATTBONUS_STONE = 142,
  1821. POINT_ATTBONUS_BOSS = 143,
  1822. POINT_ATTBONUS_DUNGEON = 144,
  1823. POINT_RESIST_HUMAN = 145,
  1824. #endif
  1825. #ifdef ENABLE_ELEMENTAL_APPLY_BONUS
  1826. POINT_ATTBONUS_ELEC = 146,
  1827. POINT_ATTBONUS_WIND = 147,
  1828. POINT_ATTBONUS_EARTH = 148,
  1829. POINT_ATTBONUS_DARK = 149,
  1830. POINT_ATTBONUS_ZODIAC = 150,
  1831. #endif
  1832.  
  1833. POINT_MIN_WEP = 200,
  1834. POINT_MAX_WEP,
  1835. POINT_MIN_MAGIC_WEP,
  1836. POINT_MAX_MAGIC_WEP,
  1837. POINT_HIT_RATE,
  1838. #ifdef ENABLE_CONQUEROR_LEVEL
  1839. POINT_CONQUEROR_LEVEL,
  1840. POINT_CONQUEROR_LEVEL_STEP,
  1841. POINT_SUNGMA_STR,
  1842. POINT_SUNGMA_HP,
  1843. POINT_SUNGMA_MOVE,
  1844. POINT_SUNGMA_INMUNE,
  1845. POINT_CONQUEROR_POINT,
  1846. POINT_CONQUEROR_EXP,
  1847. POINT_CONQUEROR_NEXT_EXP,
  1848. #endif
  1849. #ifdef ENABLE_CHEQUE_SYSTEM
  1850. POINT_CHEQUE = 214, // Check if "145" is not been used for other
  1851. #endif
  1852.  
  1853. };
  1854.  
  1855. typedef struct packet_points
  1856. {
  1857. BYTE header;
  1858. long points[POINT_MAX_NUM];
  1859. } TPacketGCPoints;
  1860.  
  1861. typedef struct packet_point_change
  1862. {
  1863. int header;
  1864.  
  1865. DWORD dwVID;
  1866. BYTE Type;
  1867.  
  1868. long amount;
  1869. long value;
  1870. } TPacketGCPointChange;
  1871.  
  1872. typedef struct packet_motion
  1873. {
  1874. BYTE header;
  1875. DWORD vid;
  1876. DWORD victim_vid;
  1877. WORD motion;
  1878. } TPacketGCMotion;
  1879.  
  1880. #if defined(GAIDEN)
  1881. struct TPacketGCItemDelDeprecate
  1882. {
  1883. TPacketGCItemDelDeprecate() :
  1884. header(HEADER_GC_ITEM_DEL),
  1885. pos(0),
  1886. vnum(0),
  1887. count(0)
  1888. {
  1889. memset(&alSockets, 0, sizeof(alSockets));
  1890. memset(&aAttr, 0, sizeof(aAttr));
  1891. }
  1892.  
  1893. BYTE header;
  1894. BYTE pos;
  1895. DWORD vnum;
  1896. BYTE count;
  1897. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1898. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1899. };
  1900.  
  1901. typedef struct packet_set_item
  1902. {
  1903. BYTE header;
  1904. BYTE pos;
  1905. DWORD vnum;
  1906. BYTE count;
  1907. DWORD flags;
  1908. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1909. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1910. } TPacketGCItemSet;
  1911.  
  1912. typedef struct packet_item_del
  1913. {
  1914. BYTE header;
  1915. BYTE pos;
  1916. } TPacketGCItemDel;
  1917. #else
  1918. typedef struct packet_set_item
  1919. {
  1920. BYTE header;
  1921. TItemPos Cell;
  1922. DWORD vnum;
  1923. BYTE count;
  1924. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1925. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1926. } TPacketGCItemSet;
  1927.  
  1928. typedef struct packet_set_item2
  1929. {
  1930. BYTE header;
  1931. TItemPos Cell;
  1932. DWORD vnum;
  1933. BYTE count;
  1934. DWORD flags;
  1935. DWORD anti_flags;
  1936. bool highlight;
  1937. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1938. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1939. } TPacketGCItemSet2;
  1940. #endif
  1941.  
  1942. typedef struct packet_item_del
  1943. {
  1944. BYTE header;
  1945. BYTE pos;
  1946. } TPacketGCItemDel;
  1947.  
  1948. typedef struct packet_use_item
  1949. {
  1950. BYTE header;
  1951. TItemPos Cell;
  1952. DWORD ch_vid;
  1953. DWORD victim_vid;
  1954.  
  1955. DWORD vnum;
  1956. } TPacketGCItemUse;
  1957.  
  1958. typedef struct packet_update_item
  1959. {
  1960. BYTE header;
  1961. TItemPos Cell;
  1962. BYTE count;
  1963. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1964. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1965. } TPacketGCItemUpdate;
  1966.  
  1967. typedef struct packet_ground_add_item
  1968. {
  1969. BYTE bHeader;
  1970. long lX;
  1971. long lY;
  1972. long lZ;
  1973.  
  1974. DWORD dwVID;
  1975. DWORD dwVnum;
  1976. } TPacketGCItemGroundAdd;
  1977.  
  1978. typedef struct packet_ground_del_item
  1979. {
  1980. BYTE header;
  1981. DWORD vid;
  1982. } TPacketGCItemGroundDel;
  1983.  
  1984. typedef struct packet_item_ownership
  1985. {
  1986. BYTE bHeader;
  1987. DWORD dwVID;
  1988. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1989. } TPacketGCItemOwnership;
  1990.  
  1991. typedef struct packet_quickslot_add
  1992. {
  1993. BYTE header;
  1994. BYTE pos;
  1995. TQuickSlot slot;
  1996. } TPacketGCQuickSlotAdd;
  1997.  
  1998. typedef struct packet_quickslot_del
  1999. {
  2000. BYTE header;
  2001. BYTE pos;
  2002. } TPacketGCQuickSlotDel;
  2003.  
  2004. typedef struct packet_quickslot_swap
  2005. {
  2006. BYTE header;
  2007. BYTE pos;
  2008. BYTE change_pos;
  2009. } TPacketGCQuickSlotSwap;
  2010.  
  2011. typedef struct packet_shop_start
  2012. {
  2013. struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  2014. } TPacketGCShopStart;
  2015.  
  2016. typedef struct packet_shop_start_ex
  2017. {
  2018. typedef struct sub_packet_shop_tab
  2019. {
  2020. char name[SHOP_TAB_NAME_MAX];
  2021. BYTE coin_type;
  2022. packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  2023. } TSubPacketShopTab;
  2024. DWORD owner_vid;
  2025. BYTE shop_tab_count;
  2026. } TPacketGCShopStartEx;
  2027.  
  2028.  
  2029. typedef struct packet_shop_update_item
  2030. {
  2031. BYTE pos;
  2032. struct packet_shop_item item;
  2033. } TPacketGCShopUpdateItem;
  2034.  
  2035. typedef struct packet_shop_update_price
  2036. {
  2037. int iElkAmount;
  2038. } TPacketGCShopUpdatePrice;
  2039.  
  2040. enum EPacketShopSubHeaders
  2041. {
  2042. SHOP_SUBHEADER_GC_START,
  2043. SHOP_SUBHEADER_GC_END,
  2044. SHOP_SUBHEADER_GC_UPDATE_ITEM,
  2045. SHOP_SUBHEADER_GC_UPDATE_PRICE,
  2046. SHOP_SUBHEADER_GC_OK,
  2047. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  2048. SHOP_SUBHEADER_GC_SOLDOUT,
  2049. SHOP_SUBHEADER_GC_INVENTORY_FULL,
  2050. SHOP_SUBHEADER_GC_INVALID_POS,
  2051. SHOP_SUBHEADER_GC_SOLD_OUT,
  2052. SHOP_SUBHEADER_GC_START_EX,
  2053. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  2054. #ifdef ENABLE_CHEQUE_SYSTEM
  2055. SHOP_SUBHEADER_GC_NOT_ENOUGH_CHEQUE,
  2056. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_CHEQUE,
  2057. #endif
  2058. };
  2059.  
  2060. typedef struct packet_shop
  2061. {
  2062. BYTE header;
  2063. WORD size;
  2064. BYTE subheader;
  2065. } TPacketGCShop;
  2066.  
  2067. typedef struct packet_exchange
  2068. {
  2069. BYTE header;
  2070. BYTE subheader;
  2071. BYTE is_me;
  2072. DWORD arg1;
  2073. TItemPos arg2;
  2074. DWORD arg3;
  2075. long alValues[ITEM_SOCKET_SLOT_MAX_NUM];
  2076. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  2077. } TPacketGCExchange;
  2078.  
  2079. enum
  2080. {
  2081. EXCHANGE_SUBHEADER_GC_START, // arg1 == vid
  2082. EXCHANGE_SUBHEADER_GC_ITEM_ADD, // arg1 == vnum arg2 == pos arg3 == count
  2083. EXCHANGE_SUBHEADER_GC_ITEM_DEL, // arg1 == pos
  2084. EXCHANGE_SUBHEADER_GC_ELK_ADD, // arg1 == elk
  2085. EXCHANGE_SUBHEADER_GC_ACCEPT, // arg1 == accept
  2086. EXCHANGE_SUBHEADER_GC_END, // arg1 == not used
  2087. EXCHANGE_SUBHEADER_GC_ALREADY, // arg1 == not used
  2088. EXCHANGE_SUBHEADER_GC_LESS_ELK, // arg1 == not used
  2089. #ifdef ENABLE_CHEQUE_SYSTEM
  2090. EXCHANGE_SUBHEADER_GC_CHEQUE_ADD,
  2091. EXCHANGE_SUBHEADER_GC_LESS_CHEQUE,
  2092. #endif
  2093. };
  2094.  
  2095. typedef struct packet_position
  2096. {
  2097. BYTE header;
  2098. DWORD vid;
  2099. BYTE position;
  2100. } TPacketGCPosition;
  2101.  
  2102. typedef struct packet_ping
  2103. {
  2104. BYTE header;
  2105. } TPacketGCPing;
  2106.  
  2107. typedef struct packet_pong
  2108. {
  2109. BYTE bHeader;
  2110. } TPacketCGPong;
  2111.  
  2112. typedef struct packet_script
  2113. {
  2114. BYTE header;
  2115. WORD size;
  2116. BYTE skin;
  2117. WORD src_size;
  2118. } TPacketGCScript;
  2119.  
  2120. typedef struct packet_target
  2121. {
  2122. BYTE header;
  2123. DWORD dwVID;
  2124. BYTE bHPPercent;
  2125. } TPacketGCTarget;
  2126.  
  2127. typedef struct packet_damage_info
  2128. {
  2129. BYTE header;
  2130. DWORD dwVID;
  2131. BYTE flag;
  2132. int damage;
  2133. } TPacketGCDamageInfo;
  2134.  
  2135. typedef struct packet_mount
  2136. {
  2137. BYTE header;
  2138. DWORD vid;
  2139. DWORD mount_vid;
  2140. BYTE pos;
  2141. DWORD _x, _y;
  2142. } TPacketGCMount;
  2143.  
  2144. typedef struct packet_change_speed
  2145. {
  2146. BYTE header;
  2147. DWORD vid;
  2148. WORD moving_speed;
  2149. } TPacketGCChangeSpeed;
  2150.  
  2151. typedef struct packet_move
  2152. {
  2153. BYTE bHeader;
  2154. BYTE bFunc;
  2155. BYTE bArg;
  2156. BYTE bRot;
  2157. DWORD dwVID;
  2158. LONG lX;
  2159. LONG lY;
  2160. DWORD dwTime;
  2161. DWORD dwDuration;
  2162. } TPacketGCMove;
  2163.  
  2164. enum
  2165. {
  2166. QUEST_SEND_IS_BEGIN = 1 << 0,
  2167. QUEST_SEND_TITLE = 1 << 1,
  2168. QUEST_SEND_CLOCK_NAME = 1 << 2,
  2169. QUEST_SEND_CLOCK_VALUE = 1 << 3,
  2170. QUEST_SEND_COUNTER_NAME = 1 << 4,
  2171. QUEST_SEND_COUNTER_VALUE = 1 << 5,
  2172. QUEST_SEND_ICON_FILE = 1 << 6,
  2173. };
  2174.  
  2175. typedef struct packet_quest_info
  2176. {
  2177. BYTE header;
  2178. WORD size;
  2179. WORD index;
  2180. #ifdef ENABLE_QUEST_RENEWAL
  2181. WORD c_index;
  2182. #endif
  2183. BYTE flag;
  2184. } TPacketGCQuestInfo;
  2185.  
  2186. typedef struct packet_quest_confirm
  2187. {
  2188. BYTE header;
  2189. char msg[64+1];
  2190. long timeout;
  2191. DWORD requestPID;
  2192. } TPacketGCQuestConfirm;
  2193.  
  2194. typedef struct packet_attack
  2195. {
  2196. BYTE header;
  2197. DWORD dwVID;
  2198. DWORD dwVictimVID;
  2199. BYTE bType;
  2200. } TPacketGCAttack;
  2201.  
  2202. typedef struct packet_c2c
  2203. {
  2204. BYTE header;
  2205. WORD wSize;
  2206. } TPacketGCC2C;
  2207.  
  2208. typedef struct packetd_sync_position_element
  2209. {
  2210. DWORD dwVID;
  2211. long lX;
  2212. long lY;
  2213. } TPacketGCSyncPositionElement;
  2214.  
  2215. typedef struct packetd_sync_position
  2216. {
  2217. BYTE bHeader;
  2218. WORD wSize;
  2219. } TPacketGCSyncPosition;
  2220.  
  2221. typedef struct packet_ownership
  2222. {
  2223. BYTE bHeader;
  2224. DWORD dwOwnerVID;
  2225. DWORD dwVictimVID;
  2226. } TPacketGCOwnership;
  2227.  
  2228. #define SKILL_MAX_NUM 255
  2229.  
  2230. typedef struct packet_skill_level
  2231. {
  2232. BYTE bHeader;
  2233. BYTE abSkillLevels[SKILL_MAX_NUM];
  2234. } TPacketGCSkillLevel;
  2235.  
  2236. typedef struct SPlayerSkill
  2237. {
  2238. BYTE bMasterType;
  2239. BYTE bLevel;
  2240. time_t tNextRead;
  2241. } TPlayerSkill;
  2242.  
  2243. typedef struct packet_skill_level_new
  2244. {
  2245. BYTE bHeader;
  2246. TPlayerSkill skills[SKILL_MAX_NUM];
  2247. } TPacketGCSkillLevelNew;
  2248.  
  2249. // fly
  2250. typedef struct packet_fly
  2251. {
  2252. BYTE bHeader;
  2253. BYTE bType;
  2254. DWORD dwStartVID;
  2255. DWORD dwEndVID;
  2256. } TPacketGCCreateFly;
  2257.  
  2258. enum EPVPModes
  2259. {
  2260. PVP_MODE_NONE,
  2261. PVP_MODE_AGREE,
  2262. PVP_MODE_FIGHT,
  2263. PVP_MODE_REVENGE,
  2264. };
  2265.  
  2266. typedef struct packet_duel_start
  2267. {
  2268. BYTE header ;
  2269. WORD wSize ;
  2270. } TPacketGCDuelStart ;
  2271.  
  2272. typedef struct packet_pvp
  2273. {
  2274. BYTE header;
  2275. DWORD dwVIDSrc;
  2276. DWORD dwVIDDst;
  2277. BYTE bMode;
  2278. } TPacketGCPVP;
  2279.  
  2280. typedef struct packet_skill_cooltime_end
  2281. {
  2282. BYTE header;
  2283. BYTE bSkill;
  2284. } TPacketGCSkillCoolTimeEnd;
  2285.  
  2286. typedef struct packet_warp
  2287. {
  2288. BYTE bHeader;
  2289. LONG lX;
  2290. LONG lY;
  2291. LONG lAddr;
  2292. WORD wPort;
  2293. #if defined(__LOADING_TIP__)
  2294. long l_MapIndex;
  2295. #endif
  2296. } TPacketGCWarp;
  2297.  
  2298. typedef struct packet_party_invite
  2299. {
  2300. BYTE header;
  2301. DWORD leader_pid;
  2302. } TPacketGCPartyInvite;
  2303.  
  2304. typedef struct packet_party_add
  2305. {
  2306. BYTE header;
  2307. DWORD pid;
  2308. char name[CHARACTER_NAME_MAX_LEN+1];
  2309. } TPacketGCPartyAdd;
  2310.  
  2311. typedef struct packet_party_update
  2312. {
  2313. BYTE header;
  2314. DWORD pid;
  2315. BYTE state;
  2316. BYTE percent_hp;
  2317. short affects[PARTY_AFFECT_SLOT_MAX_NUM];
  2318. } TPacketGCPartyUpdate;
  2319.  
  2320. typedef struct packet_party_remove
  2321. {
  2322. BYTE header;
  2323. DWORD pid;
  2324. } TPacketGCPartyRemove;
  2325.  
  2326. typedef TPacketCGSafeboxCheckout TPacketGCSafeboxCheckout;
  2327. typedef TPacketCGSafeboxCheckin TPacketGCSafeboxCheckin;
  2328.  
  2329. typedef struct packet_safebox_wrong_password
  2330. {
  2331. BYTE bHeader;
  2332. } TPacketGCSafeboxWrongPassword;
  2333.  
  2334. typedef struct packet_safebox_size
  2335. {
  2336. BYTE bHeader;
  2337. BYTE bSize;
  2338. } TPacketGCSafeboxSize;
  2339.  
  2340. typedef struct packet_safebox_money_change
  2341. {
  2342. BYTE bHeader;
  2343. DWORD dwMoney;
  2344. } TPacketGCSafeboxMoneyChange;
  2345.  
  2346. typedef struct command_empire
  2347. {
  2348. BYTE bHeader;
  2349. BYTE bEmpire;
  2350. } TPacketCGEmpire;
  2351.  
  2352. typedef struct packet_empire
  2353. {
  2354. BYTE bHeader;
  2355. BYTE bEmpire;
  2356. } TPacketGCEmpire;
  2357.  
  2358. enum
  2359. {
  2360. FISHING_SUBHEADER_GC_START,
  2361. FISHING_SUBHEADER_GC_STOP,
  2362. FISHING_SUBHEADER_GC_REACT,
  2363. FISHING_SUBHEADER_GC_SUCCESS,
  2364. FISHING_SUBHEADER_GC_FAIL,
  2365. FISHING_SUBHEADER_GC_FISH,
  2366. };
  2367.  
  2368. typedef struct packet_fishing
  2369. {
  2370. BYTE header;
  2371. BYTE subheader;
  2372. DWORD info;
  2373. BYTE dir;
  2374. } TPacketGCFishing;
  2375.  
  2376. typedef struct paryt_parameter
  2377. {
  2378. BYTE bHeader;
  2379. BYTE bDistributeMode;
  2380. } TPacketGCPartyParameter;
  2381.  
  2382. //////////////////////////////////////////////////////////////////////////
  2383. // Guild
  2384.  
  2385. enum
  2386. {
  2387. GUILD_SUBHEADER_GC_LOGIN,
  2388. GUILD_SUBHEADER_GC_LOGOUT,
  2389. GUILD_SUBHEADER_GC_LIST,
  2390. GUILD_SUBHEADER_GC_GRADE,
  2391. GUILD_SUBHEADER_GC_ADD,
  2392. GUILD_SUBHEADER_GC_REMOVE,
  2393. GUILD_SUBHEADER_GC_GRADE_NAME,
  2394. GUILD_SUBHEADER_GC_GRADE_AUTH,
  2395. GUILD_SUBHEADER_GC_INFO,
  2396. GUILD_SUBHEADER_GC_COMMENTS,
  2397. GUILD_SUBHEADER_GC_CHANGE_EXP,
  2398. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  2399. GUILD_SUBHEADER_GC_SKILL_INFO,
  2400. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  2401. GUILD_SUBHEADER_GC_GUILD_INVITE,
  2402. GUILD_SUBHEADER_GC_WAR,
  2403. GUILD_SUBHEADER_GC_GUILD_NAME,
  2404. GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  2405. GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  2406. GUILD_SUBHEADER_GC_WAR_POINT,
  2407. GUILD_SUBHEADER_GC_MONEY_CHANGE,
  2408. };
  2409.  
  2410. typedef struct packet_guild
  2411. {
  2412. BYTE header;
  2413. WORD size;
  2414. BYTE subheader;
  2415. } TPacketGCGuild;
  2416.  
  2417. // SubHeader - Grade
  2418. enum
  2419. {
  2420. GUILD_AUTH_ADD_MEMBER = (1 << 0),
  2421. GUILD_AUTH_REMOVE_MEMBER = (1 << 1),
  2422. GUILD_AUTH_NOTICE = (1 << 2),
  2423. GUILD_AUTH_SKILL = (1 << 3),
  2424. };
  2425.  
  2426. typedef struct packet_guild_sub_grade
  2427. {
  2428. char grade_name[GUILD_GRADE_NAME_MAX_LEN+1];
  2429. BYTE auth_flag;
  2430. } TPacketGCGuildSubGrade;
  2431.  
  2432. typedef struct packet_guild_sub_member
  2433. {
  2434. DWORD pid;
  2435. BYTE byGrade;
  2436. BYTE byIsGeneral;
  2437. BYTE byJob;
  2438. BYTE byLevel;
  2439. DWORD dwOffer;
  2440. BYTE byNameFlag;
  2441. // if NameFlag is TRUE, name is sent from server.
  2442. // char szName[CHARACTER_ME_MAX_LEN+1];
  2443. } TPacketGCGuildSubMember;
  2444.  
  2445. typedef struct packet_guild_sub_info
  2446. {
  2447. WORD member_count;
  2448. WORD max_member_count;
  2449. DWORD guild_id;
  2450. DWORD master_pid;
  2451. DWORD exp;
  2452. BYTE level;
  2453. char name[GUILD_NAME_MAX_LEN+1];
  2454. DWORD gold;
  2455. BYTE hasLand;
  2456. } TPacketGCGuildInfo;
  2457.  
  2458. enum EGuildWarState
  2459. {
  2460. GUILD_WAR_NONE,
  2461. GUILD_WAR_SEND_DECLARE,
  2462. GUILD_WAR_REFUSE,
  2463. GUILD_WAR_RECV_DECLARE,
  2464. GUILD_WAR_WAIT_START,
  2465. GUILD_WAR_CANCEL,
  2466. GUILD_WAR_ON_WAR,
  2467. GUILD_WAR_END,
  2468.  
  2469. GUILD_WAR_DURATION = 2*60*60,
  2470. };
  2471.  
  2472. typedef struct packet_guild_war
  2473. {
  2474. DWORD dwGuildSelf;
  2475. DWORD dwGuildOpp;
  2476. BYTE bType;
  2477. BYTE bWarState;
  2478. } TPacketGCGuildWar;
  2479.  
  2480. typedef struct SPacketGuildWarPoint
  2481. {
  2482. DWORD dwGainGuildID;
  2483. DWORD dwOpponentGuildID;
  2484. long lPoint;
  2485. } TPacketGuildWarPoint;
  2486.  
  2487. // SubHeader - Dungeon
  2488. enum
  2489. {
  2490. DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  2491. DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  2492. };
  2493.  
  2494. typedef struct packet_dungeon
  2495. {
  2496. BYTE bHeader;
  2497. WORD size;
  2498. BYTE subheader;
  2499. } TPacketGCDungeon;
  2500.  
  2501. // Private Shop
  2502. typedef struct SPacketGCShopSign
  2503. {
  2504. BYTE bHeader;
  2505. DWORD dwVID;
  2506. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2507. } TPacketGCShopSign;
  2508.  
  2509. typedef struct SPacketGCTime
  2510. {
  2511. BYTE bHeader;
  2512. time_t time;
  2513. } TPacketGCTime;
  2514.  
  2515. enum
  2516. {
  2517. WALKMODE_RUN,
  2518. WALKMODE_WALK,
  2519. };
  2520.  
  2521. typedef struct SPacketGCWalkMode
  2522. {
  2523. BYTE header;
  2524. DWORD vid;
  2525. BYTE mode;
  2526. } TPacketGCWalkMode;
  2527.  
  2528. typedef struct SPacketGCChangeSkillGroup
  2529. {
  2530. BYTE header;
  2531. BYTE skill_group;
  2532. } TPacketGCChangeSkillGroup;
  2533.  
  2534. struct TMaterial
  2535. {
  2536. DWORD vnum;
  2537. DWORD count;
  2538. };
  2539.  
  2540. typedef struct SRefineTable
  2541. {
  2542. DWORD src_vnum;
  2543. DWORD result_vnum;
  2544. BYTE material_count;
  2545. int cost;
  2546. int prob;
  2547. TMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2548. } TRefineTable;
  2549.  
  2550. typedef struct SPacketGCRefineInformation
  2551. {
  2552. BYTE header;
  2553. BYTE pos;
  2554. TRefineTable refine_table;
  2555. } TPacketGCRefineInformation;
  2556.  
  2557. typedef struct SPacketGCRefineInformationNew
  2558. {
  2559. BYTE header;
  2560. BYTE type;
  2561. BYTE pos;
  2562. TRefineTable refine_table;
  2563. } TPacketGCRefineInformationNew;
  2564.  
  2565. enum SPECIAL_EFFECT
  2566. {
  2567. SE_NONE,
  2568. SE_HPUP_RED,
  2569. SE_SPUP_BLUE,
  2570. SE_SPEEDUP_GREEN,
  2571. SE_DXUP_PURPLE,
  2572. SE_CRITICAL,
  2573. SE_PENETRATE,
  2574. SE_BLOCK,
  2575. SE_DODGE,
  2576. SE_CHINA_FIREWORK,
  2577. SE_SPIN_TOP,
  2578. SE_SUCCESS,
  2579. SE_FAIL,
  2580. SE_FR_SUCCESS,
  2581. SE_LEVELUP_ON_14_FOR_GERMANY,
  2582. SE_LEVELUP_UNDER_15_FOR_GERMANY,
  2583. SE_PERCENT_DAMAGE1,
  2584. SE_PERCENT_DAMAGE2,
  2585. SE_PERCENT_DAMAGE3,
  2586. SE_AUTO_HPUP,
  2587. SE_AUTO_SPUP,
  2588. SE_EQUIP_RAMADAN_RING,
  2589. SE_EQUIP_HALLOWEEN_CANDY,
  2590. SE_EQUIP_HAPPINESS_RING,
  2591. SE_EQUIP_LOVE_PENDANT,
  2592.  
  2593. #ifdef ENABLE_ACCE_SYSTEM
  2594. SE_EFFECT_ACCE_SUCCEDED,
  2595. SE_EFFECT_ACCE_EQUIP,
  2596. #endif
  2597.  
  2598.  
  2599. };
  2600.  
  2601. typedef struct SPacketGCSpecialEffect
  2602. {
  2603. BYTE header;
  2604. BYTE type;
  2605. DWORD vid;
  2606. } TPacketGCSpecialEffect;
  2607.  
  2608. typedef struct SPacketGCNPCPosition
  2609. {
  2610. BYTE header;
  2611. WORD size;
  2612. WORD count;
  2613. } TPacketGCNPCPosition;
  2614.  
  2615. struct TNPCPosition
  2616. {
  2617. BYTE bType;
  2618. char name[CHARACTER_NAME_MAX_LEN+1];
  2619. long x;
  2620. long y;
  2621. };
  2622.  
  2623. typedef struct SPacketGCChangeName
  2624. {
  2625. BYTE header;
  2626. DWORD pid;
  2627. char name[CHARACTER_NAME_MAX_LEN+1];
  2628. } TPacketGCChangeName;
  2629.  
  2630. enum EBlockAction
  2631. {
  2632. BLOCK_EXCHANGE = (1 << 0),
  2633. BLOCK_PARTY_INVITE = (1 << 1),
  2634. BLOCK_GUILD_INVITE = (1 << 2),
  2635. BLOCK_WHISPER = (1 << 3),
  2636. BLOCK_MESSENGER_INVITE = (1 << 4),
  2637. BLOCK_PARTY_REQUEST = (1 << 5),
  2638. };
  2639.  
  2640. typedef struct packet_china_matrixd_card
  2641. {
  2642. BYTE bHeader;
  2643. DWORD dwRows;
  2644. DWORD dwCols;
  2645. } TPacketGCChinaMatrixCard;
  2646.  
  2647. typedef struct packet_runup_matrixd_quiz
  2648. {
  2649. BYTE bHeader;
  2650. char szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2651. } TPacketGCRunupMatrixQuiz;
  2652.  
  2653. typedef struct packet_newcibn_passpod_request
  2654. {
  2655. BYTE bHeader;
  2656. } TPacketGCNEWCIBNPasspodRequest;
  2657.  
  2658. typedef struct packet_newcibn_passpod_failure
  2659. {
  2660. BYTE bHeader;
  2661. char szMessage[NEWCIBN_PASSPOD_FAILURE_MAX_LEN + 1];
  2662. } TPacketGCNEWCIBNPasspodFailure;
  2663.  
  2664. typedef struct packet_login_key
  2665. {
  2666. BYTE bHeader;
  2667. DWORD dwLoginKey;
  2668. } TPacketGCLoginKey;
  2669.  
  2670. typedef struct packet_auth_success
  2671. {
  2672. BYTE bHeader;
  2673. DWORD dwLoginKey;
  2674. BYTE bResult;
  2675. } TPacketGCAuthSuccess;
  2676.  
  2677. typedef struct packet_auth_success_openid
  2678. {
  2679. BYTE bHeader;
  2680. DWORD dwLoginKey;
  2681. BYTE bResult;
  2682. char login[ID_MAX_NUM + 1];
  2683. } TPacketGCAuthSuccessOpenID;
  2684.  
  2685. typedef struct packet_channel
  2686. {
  2687. BYTE header;
  2688. BYTE channel;
  2689. } TPacketGCChannel;
  2690.  
  2691. typedef struct SEquipmentItemSet
  2692. {
  2693. DWORD vnum;
  2694. BYTE count;
  2695. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  2696. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  2697. } TEquipmentItemSet;
  2698.  
  2699. typedef struct pakcet_view_equip
  2700. {
  2701. BYTE header;
  2702. DWORD dwVID;
  2703. TEquipmentItemSet equips[WEAR_MAX_NUM];
  2704. } TPacketGCViewEquip;
  2705.  
  2706. typedef struct
  2707. {
  2708. DWORD dwID;
  2709. long x, y;
  2710. long width, height;
  2711. DWORD dwGuildID;
  2712. } TLandPacketElement;
  2713.  
  2714. typedef struct packet_land_list
  2715. {
  2716. BYTE header;
  2717. WORD size;
  2718. } TPacketGCLandList;
  2719.  
  2720. typedef struct
  2721. {
  2722. BYTE bHeader;
  2723. long lID;
  2724. char szTargetName[32+1];
  2725. } TPacketGCTargetCreate;
  2726.  
  2727. enum
  2728. {
  2729. CREATE_TARGET_TYPE_NONE,
  2730. CREATE_TARGET_TYPE_LOCATION,
  2731. CREATE_TARGET_TYPE_CHARACTER,
  2732. #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
  2733. CREATE_TARGET_TYPE_SHOP_SEARCH = 1 << 2,
  2734. #endif
  2735. };
  2736.  
  2737. typedef struct
  2738. {
  2739. BYTE bHeader;
  2740. long lID;
  2741. char szTargetName[32+1];
  2742. DWORD dwVID;
  2743. BYTE byType;
  2744. } TPacketGCTargetCreateNew;
  2745.  
  2746. typedef struct
  2747. {
  2748. BYTE bHeader;
  2749. long lID;
  2750. long lX, lY;
  2751. #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
  2752. bool bIsShopSearch;
  2753. #endif
  2754. } TPacketGCTargetUpdate;
  2755.  
  2756. typedef struct
  2757. {
  2758. BYTE bHeader;
  2759. long lID;
  2760. } TPacketGCTargetDelete;
  2761.  
  2762. typedef struct
  2763. {
  2764. DWORD dwType;
  2765. BYTE bPointIdxApplyOn;
  2766. long lApplyValue;
  2767. DWORD dwFlag;
  2768. long lDuration;
  2769. long lSPCost;
  2770. } TPacketAffectElement;
  2771.  
  2772. typedef struct
  2773. {
  2774. BYTE bHeader;
  2775. TPacketAffectElement elem;
  2776. } TPacketGCAffectAdd;
  2777.  
  2778. typedef struct
  2779. {
  2780. BYTE bHeader;
  2781. DWORD dwType;
  2782. BYTE bApplyOn;
  2783. } TPacketGCAffectRemove;
  2784.  
  2785. typedef struct packet_mall_open
  2786. {
  2787. BYTE bHeader;
  2788. BYTE bSize;
  2789. } TPacketGCMallOpen;
  2790.  
  2791. typedef struct packet_lover_info
  2792. {
  2793. BYTE bHeader;
  2794. char szName[CHARACTER_NAME_MAX_LEN + 1];
  2795. BYTE byLovePoint;
  2796. } TPacketGCLoverInfo;
  2797.  
  2798. typedef struct packet_love_point_update
  2799. {
  2800. BYTE bHeader;
  2801. BYTE byLovePoint;
  2802. } TPacketGCLovePointUpdate;
  2803.  
  2804. typedef struct packet_dig_motion
  2805. {
  2806. BYTE header;
  2807. DWORD vid;
  2808. DWORD target_vid;
  2809. BYTE count;
  2810. } TPacketGCDigMotion;
  2811.  
  2812. typedef struct SPacketGCOnTime
  2813. {
  2814. BYTE header;
  2815. int ontime; // sec
  2816. } TPacketGCOnTime;
  2817.  
  2818. typedef struct SPacketGCResetOnTime
  2819. {
  2820. BYTE header;
  2821. } TPacketGCResetOnTime;
  2822.  
  2823. typedef struct SPacketGCPanamaPack
  2824. {
  2825. BYTE bHeader;
  2826. char szPackName[256];
  2827. BYTE abIV[32];
  2828. } TPacketGCPanamaPack;
  2829.  
  2830. typedef struct SPacketGCHybridCryptKeys
  2831. {
  2832. private:
  2833. SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2834.  
  2835. public:
  2836. SPacketGCHybridCryptKeys(int iStreamSize) : iKeyStreamLen(iStreamSize)
  2837. {
  2838. m_pStream = new BYTE[iStreamSize];
  2839. }
  2840. ~SPacketGCHybridCryptKeys()
  2841. {
  2842. if( m_pStream )
  2843. {
  2844. delete[] m_pStream;
  2845. m_pStream = NULL;
  2846. }
  2847. }
  2848. static int GetFixedHeaderSize()
  2849. {
  2850. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2851. }
  2852.  
  2853. BYTE bHeader;
  2854. WORD wDynamicPacketSize;
  2855. int iKeyStreamLen;
  2856. BYTE* m_pStream;
  2857.  
  2858. } TPacketGCHybridCryptKeys;
  2859.  
  2860.  
  2861. typedef struct SPacketGCHybridSDB
  2862. {
  2863. private:
  2864. SPacketGCHybridSDB() : m_pStream(NULL) {}
  2865.  
  2866. public:
  2867. SPacketGCHybridSDB(int iStreamSize) : iSDBStreamLen(iStreamSize)
  2868. {
  2869. m_pStream = new BYTE[iStreamSize];
  2870. }
  2871. ~SPacketGCHybridSDB()
  2872. {
  2873. delete[] m_pStream;
  2874. m_pStream = NULL;
  2875. }
  2876. static int GetFixedHeaderSize()
  2877. {
  2878. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2879. }
  2880.  
  2881. BYTE bHeader;
  2882. WORD wDynamicPacketSize;
  2883. int iSDBStreamLen;
  2884. BYTE* m_pStream;
  2885.  
  2886. } TPacketGCHybridSDB;
  2887. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2888. // Client To Client
  2889.  
  2890. typedef struct packet_state
  2891. {
  2892. BYTE bHeader;
  2893. BYTE bFunc;
  2894. BYTE bArg;
  2895. BYTE bRot;
  2896. DWORD dwVID;
  2897. DWORD dwTime;
  2898. TPixelPosition kPPos;
  2899. } TPacketCCState;
  2900.  
  2901. typedef struct packet_hs_check_req
  2902. {
  2903. BYTE bHeader;
  2904. AHNHS_TRANS_BUFFER Req;
  2905. } TPacketHSCheck;
  2906.  
  2907. typedef struct packet_xtrap_verify
  2908. {
  2909. BYTE bHeader;
  2910. BYTE bPacketData[128];
  2911.  
  2912. } TPacketXTrapCSVerify;
  2913. // AUTOBAN
  2914. typedef struct packet_autoban_quiz
  2915. {
  2916. BYTE bHeader;
  2917. BYTE bDuration;
  2918. BYTE bCaptcha[64*32];
  2919. char szQuiz[256];
  2920. } TPacketGCAutoBanQuiz;
  2921. // END_OF_AUTOBAN
  2922.  
  2923. #ifdef _IMPROVED_PACKET_ENCRYPTION_
  2924. struct TPacketKeyAgreement
  2925. {
  2926. static const int MAX_DATA_LEN = 256;
  2927. BYTE bHeader;
  2928. WORD wAgreedLength;
  2929. WORD wDataLength;
  2930. BYTE data[MAX_DATA_LEN];
  2931. };
  2932.  
  2933. struct TPacketKeyAgreementCompleted
  2934. {
  2935. BYTE bHeader;
  2936. BYTE data[3]; // dummy (not used)
  2937. };
  2938. #endif // _IMPROVED_PACKET_ENCRYPTION_
  2939.  
  2940. typedef struct SPacketGCSpecificEffect
  2941. {
  2942. BYTE header;
  2943. DWORD vid;
  2944. char effect_file[128];
  2945. } TPacketGCSpecificEffect;
  2946.  
  2947. enum EDragonSoulRefineWindowRefineType
  2948. {
  2949. DragonSoulRefineWindow_UPGRADE,
  2950. DragonSoulRefineWindow_IMPROVEMENT,
  2951. DragonSoulRefineWindow_REFINE,
  2952. };
  2953.  
  2954. enum EPacketCGDragonSoulSubHeaderType
  2955. {
  2956. DS_SUB_HEADER_OPEN,
  2957. DS_SUB_HEADER_CLOSE,
  2958. DS_SUB_HEADER_DO_UPGRADE,
  2959. DS_SUB_HEADER_DO_IMPROVEMENT,
  2960. DS_SUB_HEADER_DO_REFINE,
  2961. DS_SUB_HEADER_REFINE_FAIL,
  2962. DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2963. DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2964. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2965. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2966. DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2967. DS_SUB_HEADER_REFINE_SUCCEED,
  2968. };
  2969.  
  2970. typedef struct SPacketCGDragonSoulRefine
  2971. {
  2972. SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2973. {}
  2974. BYTE header;
  2975. BYTE bSubType;
  2976. TItemPos ItemGrid[DS_REFINE_WINDOW_MAX_NUM];
  2977. } TPacketCGDragonSoulRefine;
  2978.  
  2979. typedef struct SPacketGCDragonSoulRefine
  2980. {
  2981. SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2982. {}
  2983. BYTE header;
  2984. BYTE bSubType;
  2985. TItemPos Pos;
  2986. } TPacketGCDragonSoulRefine;
  2987.  
  2988. typedef struct SChannelStatus
  2989. {
  2990. short nPort;
  2991. BYTE bStatus;
  2992. } TChannelStatus;
  2993.  
  2994.  
  2995. #ifdef ENABLE_ACCE_SYSTEM
  2996. enum EAcceInfo
  2997. {
  2998. ACCE_ABSORPTION_SOCKET = 0,
  2999. ACCE_ABSORBED_SOCKET = 1,
  3000. ACCE_CLEAN_ATTR_VALUE0 = 7,
  3001. ACCE_WINDOW_MAX_MATERIALS = 2,
  3002. };
  3003.  
  3004. enum
  3005. {
  3006. HEADER_CG_ACCE = 211,
  3007. HEADER_GC_ACCE = 215,
  3008. ACCE_SUBHEADER_GC_OPEN = 0,
  3009. ACCE_SUBHEADER_GC_CLOSE,
  3010. ACCE_SUBHEADER_GC_ADDED,
  3011. ACCE_SUBHEADER_GC_REMOVED,
  3012. ACCE_SUBHEADER_CG_REFINED,
  3013. ACCE_SUBHEADER_CG_CLOSE = 0,
  3014. ACCE_SUBHEADER_CG_ADD,
  3015. ACCE_SUBHEADER_CG_REMOVE,
  3016. ACCE_SUBHEADER_CG_REFINE,
  3017. };
  3018.  
  3019. typedef struct SPacketAcce
  3020. {
  3021. BYTE header;
  3022. BYTE subheader;
  3023. bool bWindow;
  3024. DWORD dwPrice;
  3025. BYTE bPos;
  3026. TItemPos tPos;
  3027. DWORD dwItemVnum;
  3028. DWORD dwMinAbs;
  3029. DWORD dwMaxAbs;
  3030. } TPacketAcce;
  3031.  
  3032. typedef struct SAcceMaterial
  3033. {
  3034. BYTE bHere;
  3035. WORD wCell;
  3036. } TAcceMaterial;
  3037.  
  3038. typedef struct SAcceResult
  3039. {
  3040. DWORD dwItemVnum;
  3041. DWORD dwMinAbs;
  3042. DWORD dwMaxAbs;
  3043. } TAcceResult;
  3044. #endif
  3045.  
  3046.  
  3047. // @fixme007 length 2
  3048. typedef struct packet_unk_213
  3049. {
  3050. BYTE bHeader;
  3051. BYTE bUnk2;
  3052. } TPacketGCUnk213;
  3053. #ifdef ENABLE_AURA_SYSTEM
  3054. enum EPacketGCAuraSubHeader
  3055. {
  3056. AURA_SUBHEADER_GC_OPEN,
  3057. AURA_SUBHEADER_GC_CLOSE,
  3058. AURA_SUBHEADER_GC_SET_ITEM,
  3059. AURA_SUBHEADER_GC_CLEAR_SLOT,
  3060. AURA_SUBHEADER_GC_CLEAR_ALL,
  3061. AURA_SUBHEADER_GC_CLEAR_RIGHT,
  3062. AURA_SUBHEADER_GC_REFINE_INFO,
  3063. };
  3064.  
  3065. typedef struct SSubPacketGCAuraOpenClose
  3066. {
  3067. BYTE bAuraWindowType;
  3068. } TSubPacketGCAuraOpenClose;
  3069.  
  3070. typedef struct SSubPacketGCAuraSetItem
  3071. {
  3072. TItemPos Cell;
  3073. TItemPos AuraCell;
  3074. TItemData pItem;
  3075. } TSubPacketGCAuraSetItem;
  3076.  
  3077. typedef struct SSubPacketGCAuraClearSlot
  3078. {
  3079. BYTE bAuraSlotPos;
  3080. } TSubPacketGCAuraClearSlot;
  3081.  
  3082. typedef struct SSubPacketGCAuraRefineInfo
  3083. {
  3084. BYTE bAuraRefineInfoType;
  3085. BYTE bAuraRefineInfoLevel;
  3086. BYTE bAuraRefineInfoExpPercent;
  3087. } TSubPacketGCAuraRefineInfo;
  3088.  
  3089. enum EPacketCGAuraSubHeader
  3090. {
  3091. AURA_SUBHEADER_CG_REFINE_CHECKIN,
  3092. AURA_SUBHEADER_CG_REFINE_CHECKOUT,
  3093. AURA_SUBHEADER_CG_REFINE_ACCEPT,
  3094. AURA_SUBHEADER_CG_REFINE_CANCEL,
  3095. };
  3096.  
  3097. typedef struct SSubPacketCGAuraRefineCheckIn
  3098. {
  3099. TItemPos ItemCell;
  3100. TItemPos AuraCell;
  3101. BYTE byAuraRefineWindowType;
  3102. } TSubPacketCGAuraRefineCheckIn;
  3103.  
  3104. typedef struct SSubPacketCGAuraRefineCheckOut
  3105. {
  3106. TItemPos AuraCell;
  3107. BYTE byAuraRefineWindowType;
  3108. } TSubPacketCGAuraRefineCheckOut;
  3109.  
  3110. typedef struct SSubPacketCGAuraRefineAccept
  3111. {
  3112. BYTE byAuraRefineWindowType;
  3113. } TSubPacketCGAuraRefineAccept;
  3114.  
  3115. typedef struct SPacketGCAura
  3116. {
  3117. SPacketGCAura() : bHeader(HEADER_GC_AURA) {}
  3118. BYTE bHeader;
  3119. WORD wSize;
  3120. BYTE bSubHeader;
  3121. } TPacketGCAura;
  3122.  
  3123. typedef struct SPacketCGAura
  3124. {
  3125. SPacketCGAura() : bHeader(HEADER_CG_AURA) {}
  3126. BYTE bHeader;
  3127. WORD wSize;
  3128. BYTE bSubHeader;
  3129. } TPacketCGAura;
  3130. #endif
  3131.  
  3132. #pragma pack(pop)
Advertisement
Add Comment
Please, Sign In to add comment