Guest User

Packet.h client source

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