1. #pragma once
  2. #include "../gamelib/RaceData.h"
  3. typedef BYTE TPacketHeader;
  4. enum
  5. {
  6. HEADER_CG_LOGIN = 1,
  7. HEADER_CG_ATTACK = 2,
  8. HEADER_CG_CHAT = 3,
  9. HEADER_CG_PLAYER_CREATE = 4,
  10. HEADER_CG_PLAYER_DESTROY = 5,
  11. HEADER_CG_PLAYER_SELECT = 6,
  12. HEADER_CG_CHARACTER_MOVE = 7,
  13. HEADER_CG_SYNC_POSITION = 8,
  14. HEADER_CG_DIRECT_ENTER = 9,
  15. HEADER_CG_ENTERGAME = 10,
  16. HEADER_CG_ITEM_USE = 11,
  17. HEADER_CG_ITEM_DROP = 12,
  18. HEADER_CG_ITEM_MOVE = 13,
  19. HEADER_CG_ITEM_PICKUP = 15,
  20. HEADER_CG_QUICKSLOT_ADD = 16,
  21. HEADER_CG_QUICKSLOT_DEL = 17,
  22. HEADER_CG_QUICKSLOT_SWAP = 18,
  23. HEADER_CG_WHISPER = 19,
  24. HEADER_CG_ITEM_DROP2 = 20,
  25. #ifdef ENABLE_DESTROY_SELL
  26. HEADER_CG_ITEM_DESTROY = 21,
  27. HEADER_CG_ITEM_SELL = 22,
  28. #endif
  29. HEADER_CG_ON_CLICK = 26,
  30. HEADER_CG_EXCHANGE = 27,
  31. HEADER_CG_CHARACTER_POSITION = 28,
  32. HEADER_CG_SCRIPT_ANSWER = 29,
  33. HEADER_CG_QUEST_INPUT_STRING = 30,
  34. HEADER_CG_QUEST_CONFIRM = 31,
  35. HEADER_CG_PVP = 41,
  36. HEADER_CG_SHOP = 50,
  37. HEADER_CG_FLY_TARGETING = 51,
  38. HEADER_CG_USE_SKILL = 52,
  39. HEADER_CG_ADD_FLY_TARGETING = 53,
  40. HEADER_CG_SHOOT = 54,
  41. HEADER_CG_MYSHOP = 55,
  42. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  43. HEADER_CG_OFFLINE_SHOP = 56,
  44. HEADER_CG_MY_OFFLINE_SHOP = 57,
  45. #endif
  46. HEADER_CG_ITEM_USE_TO_ITEM = 60,
  47. HEADER_CG_TARGET = 61,
  48. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  49. HEADER_CG_OFFLINE_SHOP_CHANGE_SHOP_NAME = 62,
  50. #endif
  51. HEADER_CG_WARP = 65,
  52. HEADER_CG_SCRIPT_BUTTON = 66,
  53. HEADER_CG_MESSENGER = 67,
  54. #if defined(__BL_SAFEBOX_MONEY__)
  55. HEADER_CG_SAFEBOX_MONEY = 68,
  56. #endif
  57. HEADER_CG_MALL_CHECKOUT = 69,
  58. HEADER_CG_SAFEBOX_CHECKIN = 70,
  59. HEADER_CG_SAFEBOX_CHECKOUT = 71,
  60. HEADER_CG_PARTY_INVITE = 72,
  61. HEADER_CG_PARTY_INVITE_ANSWER = 73,
  62. HEADER_CG_PARTY_REMOVE = 74,
  63. HEADER_CG_PARTY_SET_STATE = 75,
  64. HEADER_CG_PARTY_USE_SKILL = 76,
  65. HEADER_CG_SAFEBOX_ITEM_MOVE = 77,
  66. HEADER_CG_PARTY_PARAMETER = 78,
  67. HEADER_CG_GUILD = 80,
  68. HEADER_CG_ANSWER_MAKE_GUILD = 81,
  69. HEADER_CG_FISHING = 82,
  70. HEADER_CG_GIVE_ITEM = 83,
  71. HEADER_CG_EMPIRE = 90,
  72. HEADER_CG_REFINE = 96,
  73. HEADER_CG_MARK_LOGIN = 100,
  74. HEADER_CG_MARK_CRCLIST = 101,
  75. HEADER_CG_MARK_UPLOAD = 102,
  76. HEADER_CG_MARK_IDXLIST = 104,
  77. HEADER_CG_CRC_REPORT = 103,
  78. HEADER_CG_HACK = 105,
  79. HEADER_CG_CHANGE_NAME = 106,
  80. HEADER_CG_SMS = 107,
  81. HEADER_CG_CHINA_MATRIX_CARD = 108,
  82. HEADER_CG_LOGIN2 = 109,
  83. HEADER_CG_DUNGEON = 110,
  84. HEADER_CG_LOGIN3 = 111,
  85. HEADER_CG_GUILD_SYMBOL_UPLOAD = 112,
  86. HEADER_CG_GUILD_SYMBOL_CRC = 113,
  87. HEADER_CG_SCRIPT_SELECT_ITEM = 114,
  88. HEADER_CG_LOGIN4 = 115,
  89. HEADER_CG_LOGIN5_OPENID = 116,
  90. HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
  91. HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
  92. HEADER_CG_HS_ACK = 203,
  93. HEADER_CG_XTRAP_ACK = 204,
  94. HEADER_CG_DRAGON_SOUL_REFINE = 205,
  95. HEADER_CG_STATE_CHECKER = 206,
  96. #ifdef ENABLE_PRIVATE_SHOP_SEARCH_SYSTEM
  97. HEADER_CG_SHOP_SEARCH = 220,
  98. HEADER_CG_SHOP_SEARCH_SUB = 221,
  99. HEADER_CG_SHOP_SEARCH_BUY = 222,
  100. #endif
  101. #if defined(ENABLE_NEW_PRIVATE_SHOP_SEARCH_SYSTEM)
  102. HEADER_CG_NEW_SHOP_SEARCH = 223,
  103. #endif
  104. #ifdef __AUCTION__
  105. HEADER_CG_AUCTION_CMD = 224,
  106. #endif
  107. #if defined(__BL_MOVE_COSTUME_ATTR__)
  108. HEADER_CG_ITEM_COMBINATION = 225,
  109. HEADER_CG_ITEM_COMBINATION_CANCEL = 226,
  110. #endif
  111. /////////////////////////////////////////////////
  112. HEADER_CG_KEY_AGREEMENT = 0xfb,
  113. HEADER_CG_TIME_SYNC = 0xfc,
  114. HEADER_CG_CLIENT_VERSION = 0xfd,
  115. HEADER_CG_CLIENT_VERSION2 = 0xf1,
  116. HEADER_CG_PONG = 0xfe,
  117. HEADER_CG_HANDSHAKE = 0xff,
  118. HEADER_GC_CHARACTER_ADD = 1,
  119. HEADER_GC_CHARACTER_DEL = 2,
  120. HEADER_GC_CHARACTER_MOVE = 3,
  121. HEADER_GC_CHAT = 4,
  122. HEADER_GC_SYNC_POSITION = 5,
  123. HEADER_GC_LOGIN_SUCCESS3 = 6,
  124. HEADER_GC_LOGIN_FAILURE = 7,
  125. HEADER_GC_PLAYER_CREATE_SUCCESS = 8,
  126. HEADER_GC_PLAYER_CREATE_FAILURE = 9,
  127. HEADER_GC_PLAYER_DELETE_SUCCESS = 10,
  128. HEADER_GC_PLAYER_DELETE_WRONG_SOCIAL_ID = 11,
  129. HEADER_GC_STUN = 13,
  130. HEADER_GC_DEAD = 14,
  131. HEADER_GC_MAIN_CHARACTER = 15,
  132. HEADER_GC_PLAYER_POINTS = 16,
  133. HEADER_GC_PLAYER_POINT_CHANGE = 17,
  134. HEADER_GC_CHANGE_SPEED = 18,
  135. HEADER_GC_CHARACTER_UPDATE = 19,
  136. #if defined(GAIDEN)
  137. HEADER_GC_ITEM_DEL = 20,
  138. HEADER_GC_ITEM_SET = 21,
  139. #else
  140. HEADER_GC_ITEM_SET = 20,
  141. HEADER_GC_ITEM_SET2 = 21,
  142. #endif
  143. HEADER_GC_ITEM_USE = 22,
  144. HEADER_GC_ITEM_DROP = 23,
  145. HEADER_GC_CHARACTER_UPDATE_NEW = 24,
  146. HEADER_GC_ITEM_UPDATE = 25,
  147. HEADER_GC_ITEM_GROUND_ADD = 26,
  148. HEADER_GC_ITEM_GROUND_DEL = 27,
  149. HEADER_GC_QUICKSLOT_ADD = 28,
  150. HEADER_GC_QUICKSLOT_DEL = 29,
  151. HEADER_GC_QUICKSLOT_SWAP = 30,
  152. HEADER_GC_ITEM_OWNERSHIP = 31,
  153. HEADER_GC_LOGIN_SUCCESS4 = 32,
  154. HEADER_GC_ITEM_UNBIND_TIME = 33,
  155. HEADER_GC_WHISPER = 34,
  156. HEADER_GC_ALERT = 35,
  157. HEADER_GC_MOTION = 36,
  158. HEADER_GC_SHOP = 38,
  159. HEADER_GC_SHOP_SIGN = 39,
  160. HEADER_GC_DUEL_START = 40,
  161. HEADER_GC_PVP = 41,
  162. HEADER_GC_EXCHANGE = 42,
  163. HEADER_GC_CHARACTER_POSITION = 43,
  164. HEADER_GC_PING = 44,
  165. HEADER_GC_SCRIPT = 45,
  166. HEADER_GC_QUEST_CONFIRM = 46,
  167. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  168. HEADER_GC_OFFLINE_SHOP = 47,
  169. HEADER_GC_OFFLINE_SHOP_SIGN = 48,
  170. HEADER_GC_OFFLINE_SHOP_OPEN_PANEL = 49,
  171. HEADER_GC_OFFLINE_SHOP_START_P2P = 50,
  172. HEADER_GC_OFFLINE_CHANGE_SHOP_SIGN = 51,
  173. HEADER_GC_OFFLINE_CHANGE_SHOP_SIGN_P2P = 52,
  174. HEADER_GC_OFFLINE_ADVISE_PLAYER_BUY = 53,
  175. #endif
  176. #ifdef ENABLE_SEND_TARGET_INFO
  177. HEADER_GC_TARGET_INFO = 58,
  178. HEADER_CG_TARGET_INFO_LOAD = 59,
  179. #endif
  180. HEADER_GC_MOUNT = 61,
  181. HEADER_GC_OWNERSHIP = 62,
  182. HEADER_GC_TARGET = 63,
  183. HEADER_GC_WARP = 65,
  184. HEADER_GC_ADD_FLY_TARGETING = 69,
  185. HEADER_GC_CREATE_FLY = 70,
  186. HEADER_GC_FLY_TARGETING = 71,
  187. HEADER_GC_SKILL_LEVEL = 72,
  188. HEADER_GC_SKILL_COOLTIME_END = 73,
  189. HEADER_GC_MESSENGER = 74,
  190. HEADER_GC_GUILD = 75,
  191. HEADER_GC_SKILL_LEVEL_NEW = 76,
  192. HEADER_GC_PARTY_INVITE = 77,
  193. HEADER_GC_PARTY_ADD = 78,
  194. HEADER_GC_PARTY_UPDATE = 79,
  195. HEADER_GC_PARTY_REMOVE = 80,
  196. HEADER_GC_QUEST_INFO = 81,
  197. HEADER_GC_REQUEST_MAKE_GUILD = 82,
  198. HEADER_GC_PARTY_PARAMETER = 83,
  199. HEADER_GC_SAFEBOX_MONEY_CHANGE = 84,
  200. HEADER_GC_SAFEBOX_SET = 85,
  201. HEADER_GC_SAFEBOX_DEL = 86,
  202. HEADER_GC_SAFEBOX_WRONG_PASSWORD = 87,
  203. HEADER_GC_SAFEBOX_SIZE = 88,
  204. HEADER_GC_FISHING = 89,
  205. HEADER_GC_EMPIRE = 90,
  206. HEADER_GC_PARTY_LINK = 91,
  207. HEADER_GC_PARTY_UNLINK = 92,
  208. HEADER_GC_REFINE_INFORMATION = 95,
  209. HEADER_GC_OBSERVER_ADD = 96,
  210. HEADER_GC_OBSERVER_REMOVE = 97,
  211. HEADER_GC_OBSERVER_MOVE = 98,
  212. HEADER_GC_VIEW_EQUIP = 99,
  213. HEADER_GC_MARK_BLOCK = 100,
  214. HEADER_GC_MARK_DIFF_DATA = 101,
  215. HEADER_GC_MARK_IDXLIST = 102,
  216. HEADER_GC_TIME = 106,
  217. HEADER_GC_CHANGE_NAME = 107,
  218. HEADER_GC_DUNGEON = 110,
  219. HEADER_GC_WALK_MODE = 111,
  220. HEADER_GC_CHANGE_SKILL_GROUP = 112,
  221. #if defined(GAIDEN)
  222. HEADER_GC_MAIN_CHARACTER = 113,
  223. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  224. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  225. #else
  226. HEADER_GC_MAIN_CHARACTER2_EMPIRE = 113,
  227. #endif
  228. HEADER_GC_SEPCIAL_EFFECT = 114,
  229. HEADER_GC_NPC_POSITION = 115,
  230. HEADER_GC_CHINA_MATRIX_CARD = 116,
  231. HEADER_GC_CHARACTER_UPDATE2 = 117,
  232. HEADER_GC_LOGIN_KEY = 118,
  233. HEADER_GC_REFINE_INFORMATION_NEW = 119,
  234. HEADER_GC_CHARACTER_ADD2 = 120,
  235. HEADER_GC_CHANNEL = 121,
  236. HEADER_GC_MALL_OPEN = 122,
  237. HEADER_GC_TARGET_UPDATE = 123,
  238. HEADER_GC_TARGET_DELETE = 124,
  239. HEADER_GC_TARGET_CREATE_NEW = 125,
  240. HEADER_GC_AFFECT_ADD = 126,
  241. HEADER_GC_AFFECT_REMOVE = 127,
  242. HEADER_GC_MALL_SET = 128,
  243. HEADER_GC_MALL_DEL = 129,
  244. HEADER_GC_LAND_LIST = 130,
  245. HEADER_GC_LOVER_INFO = 131,
  246. HEADER_GC_LOVE_POINT_UPDATE = 132,
  247. HEADER_GC_GUILD_SYMBOL_DATA = 133,
  248. HEADER_GC_DIG_MOTION = 134,
  249. HEADER_GC_DAMAGE_INFO = 135,
  250. HEADER_GC_CHAR_ADDITIONAL_INFO = 136,
  251. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  252. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  253. #ifdef ENABLE_GUILD_RANKED_SYSTEM
  254. HEADER_GC_GUILD_RANK_SYSTEM = 139,
  255. #endif
  256. #ifdef ENABLE_PvP_PvM_SYSTEM
  257. HEADER_GC_KILL_STATISTICS = 140,
  258. #endif
  259. HEADER_GC_AUTH_SUCCESS = 150,
  260. HEADER_GC_PANAMA_PACK = 151,
  261. HEADER_GC_HYBRIDCRYPT_KEYS = 152,
  262. HEADER_GC_HYBRIDCRYPT_SDB = 153,
  263. HEADER_GC_AUTH_SUCCESS_OPENID = 154,
  264. #ifdef ENABLE_PRIVATE_SHOP_SEARCH_SYSTEM
  265. HEADER_GC_SHOPSEARCH_SET = 156,
  266. #endif
  267. #if defined(ENABLE_NEW_PRIVATE_SHOP_SEARCH_SYSTEM)
  268. HEADER_GC_NEW_SHOPSEARCH_SET = 157,
  269. #endif
  270. HEADER_GC_ROULETTE = 200,
  271. HEADER_GC_RUNUP_MATRIX_QUIZ = 201,
  272. HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202,
  273. HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203,
  274. #if defined(GAIDEN)
  275. HEADER_GC_ONTIME = 204,
  276. HEADER_GC_RESET_ONTIME = 205,
  277. HEADER_GC_AUTOBAN_QUIZ = 206,
  278. HEADER_GC_HS_REQUEST = 207,
  279. #else
  280. HEADER_GC_HS_REQUEST = 204,
  281. HEADER_GC_XTRAP_CS1_REQUEST = 205,
  282. #endif
  283. #ifdef __AUCTION__
  284. HEADER_GC_AUCTOIN_ITEM_LIST = 206,
  285. #endif
  286. HEADER_GC_SPECIFIC_EFFECT = 208,
  287. HEADER_GC_DRAGON_SOUL_REFINE = 209,
  288. HEADER_GC_RESPOND_CHANNELSTATUS = 210,
  289. HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa,
  290. HEADER_GC_KEY_AGREEMENT = 0xfb,
  291. HEADER_GC_HANDSHAKE_OK = 0xfc,
  292. HEADER_GC_PHASE = 0xfd,
  293. HEADER_GC_BINDUDP = 0xfe,
  294. HEADER_GC_HANDSHAKE = 0xff,
  295. };
  296. enum
  297. {
  298. ID_MAX_NUM = 30,
  299. PASS_MAX_NUM = 16,
  300. CHAT_MAX_NUM = 128,
  301. PATH_NODE_MAX_NUM = 64,
  302. SHOP_SIGN_MAX_LEN = 32,
  303. PLAYER_PER_ACCOUNT3 = 3,
  304. PLAYER_PER_ACCOUNT4 = 4,
  305. PLAYER_ITEM_SLOT_MAX_NUM = 20, // Ç÷¡À̾îÀÇ ½½·Ô´ç µé¾î°¡´Â °¹¼ö.
  306. QUICKSLOT_MAX_LINE = 4,
  307. QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ¶óÀÌ¾ğÆ® ÀÓÀÇ °áÁ¤°ª
  308. QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
  309. QUICKSLOT_MAX_NUM = 36, // ¼­¹ö¿Í ¸ÂÃçÁ® ÀÖ´Â °ª
  310. SHOP_HOST_ITEM_MAX_NUM = 40,
  311. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  312. OFFLINE_SHOP_HOST_ITEM_MAX_NUM = 80,
  313. #endif
  314. METIN_SOCKET_COUNT = 6,
  315. PARTY_AFFECT_SLOT_MAX_NUM = 7,
  316. GUILD_GRADE_NAME_MAX_LEN = 8,
  317. GUILD_NAME_MAX_LEN = 12,
  318. GUILD_GRADE_COUNT = 15,
  319. GULID_COMMENT_MAX_LEN = 50,
  320. MARK_CRC_NUM = 8*8,
  321. MARK_DATA_SIZE = 16*12,
  322. SYMBOL_DATA_SIZE = 128*256,
  323. QUEST_INPUT_STRING_MAX_NUM = 64,
  324. PRIVATE_CODE_LENGTH = 8,
  325. REFINE_MATERIAL_MAX_NUM = 5,
  326. CHINA_MATRIX_ANSWER_MAX_LEN = 8,
  327. RUNUP_MATRIX_QUIZ_MAX_LEN = 8,
  328. RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  329. NEWCIBN_PASSPOD_ANSWER_MAX_LEN = 8,
  330. NEWCIBN_PASSPOD_FAILURE_MAX_LEN = 128,
  331. WEAR_MAX_NUM = 11,
  332. OPENID_AUTHKEY_LEN = 32,
  333. SHOP_TAB_NAME_MAX = 32,
  334. SHOP_TAB_COUNT_MAX = 3,
  335. };
  336. #pragma pack(push)
  337. #pragma pack(1)
  338. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  339. // Mark
  340. typedef struct command_mark_login
  341. {
  342. BYTE header;
  343. DWORD handle;
  344. DWORD random_key;
  345. } TPacketCGMarkLogin;
  346. typedef struct command_mark_upload
  347. {
  348. BYTE header;
  349. DWORD gid;
  350. BYTE image[16*12*4];
  351. } TPacketCGMarkUpload;
  352. typedef struct command_mark_idxlist
  353. {
  354. BYTE header;
  355. } TPacketCGMarkIDXList;
  356. typedef struct command_mark_crclist
  357. {
  358. BYTE header;
  359. BYTE imgIdx;
  360. DWORD crclist[80];
  361. } TPacketCGMarkCRCList;
  362. typedef struct packet_mark_idxlist
  363. {
  364. BYTE header;
  365. DWORD bufSize;
  366. WORD count;
  367. //µÚ¿¡ size * (WORD + WORD)¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  368. } TPacketGCMarkIDXList;
  369. typedef struct packet_mark_block
  370. {
  371. BYTE header;
  372. DWORD bufSize;
  373. BYTE imgIdx;
  374. DWORD count;
  375. // µÚ¿¡ 64 x 48 x Çȼ¿Å©±â(4¹ÙÀÌÆ®) = 12288¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  376. } TPacketGCMarkBlock;
  377. typedef struct command_symbol_upload
  378. {
  379. BYTE header;
  380. WORD size;
  381. DWORD handle;
  382. } TPacketCGSymbolUpload;
  383. typedef struct command_symbol_crc
  384. {
  385. BYTE header;
  386. DWORD dwGuildID;
  387. DWORD dwCRC;
  388. DWORD dwSize;
  389. } TPacketCGSymbolCRC;
  390. typedef struct packet_symbol_data
  391. {
  392. BYTE header;
  393. WORD size;
  394. DWORD guild_id;
  395. } TPacketGCGuildSymbolData;
  396. //
  397. //
  398. //
  399. typedef struct packet_observer_add
  400. {
  401. BYTE header;
  402. DWORD vid;
  403. WORD x;
  404. WORD y;
  405. } TPacketGCObserverAdd;
  406. typedef struct packet_observer_move
  407. {
  408. BYTE header;
  409. DWORD vid;
  410. WORD x;
  411. WORD y;
  412. } TPacketGCObserverMove;
  413. typedef struct packet_observer_remove
  414. {
  415. BYTE header;
  416. DWORD vid;
  417. } TPacketGCObserverRemove;
  418. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  419. // To Server
  420. typedef struct command_checkin
  421. {
  422. BYTE header;
  423. char name[ID_MAX_NUM+1];
  424. char pwd[PASS_MAX_NUM+1];
  425. } TPacketCGCheckin;
  426. typedef struct command_login
  427. {
  428. BYTE header;
  429. char name[ID_MAX_NUM + 1];
  430. char pwd[PASS_MAX_NUM + 1];
  431. } TPacketCGLogin;
  432. // start - ±ÇÇÑ ¼­¹ö Á¢¼ÓÀ» À§ÇÑ ÆĞŶµé
  433. typedef struct command_login2
  434. {
  435. BYTE header;
  436. char name[ID_MAX_NUM + 1];
  437. DWORD login_key;
  438. DWORD adwClientKey[4];
  439. } TPacketCGLogin2;
  440. typedef struct command_login3
  441. {
  442. BYTE header;
  443. char name[ID_MAX_NUM + 1];
  444. char pwd[PASS_MAX_NUM + 1];
  445. DWORD adwClientKey[4];
  446. } TPacketCGLogin3;
  447. typedef struct command_login5
  448. {
  449. BYTE header;
  450. char authKey[OPENID_AUTHKEY_LEN + 1];
  451. DWORD adwClientKey[4];
  452. } TPacketCGLogin5;
  453. // end - ±ÇÇÑ ¼­¹ö Á¢¼ÓÀ» À§ÇÑ ÆĞŶµé
  454. typedef struct command_direct_enter
  455. {
  456. BYTE bHeader;
  457. char login[ID_MAX_NUM + 1];
  458. char passwd[PASS_MAX_NUM + 1];
  459. BYTE index;
  460. } TPacketCGDirectEnter;
  461. typedef struct command_player_select
  462. {
  463. BYTE header;
  464. BYTE player_index;
  465. } TPacketCGSelectCharacter;
  466. typedef struct command_attack
  467. {
  468. BYTE header;
  469. BYTE bType; // °ø°İ À¯Çü
  470. DWORD dwVictimVID; // Àû VID
  471. BYTE bCRCMagicCubeProcPiece;
  472. BYTE bCRCMagicCubeFilePiece;
  473. } TPacketCGAttack;
  474. typedef struct command_chat
  475. {
  476. BYTE header;
  477. WORD length;
  478. BYTE type;
  479. } TPacketCGChat;
  480. typedef struct command_whisper
  481. {
  482. BYTE bHeader;
  483. WORD wSize;
  484. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  485. } TPacketCGWhisper;
  486. typedef struct command_sms
  487. {
  488. BYTE bHeader;
  489. WORD wSize;
  490. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  491. } TPacketCGSMS;
  492. enum EBattleMode
  493. {
  494. BATTLEMODE_ATTACK = 0,
  495. BATTLEMODE_DEFENSE = 1,
  496. };
  497. typedef struct command_EnterFrontGame
  498. {
  499. BYTE header;
  500. } TPacketCGEnterFrontGame;
  501. typedef struct command_item_use
  502. {
  503. BYTE header;
  504. TItemPos pos;
  505. } TPacketCGItemUse;
  506. typedef struct command_item_use_to_item
  507. {
  508. BYTE header;
  509. TItemPos source_pos;
  510. TItemPos target_pos;
  511. } TPacketCGItemUseToItem;
  512. typedef struct command_item_drop
  513. {
  514. BYTE header;
  515. TItemPos pos;
  516. DWORD elk;
  517. } TPacketCGItemDrop;
  518. typedef struct command_item_drop2
  519. {
  520. BYTE header;
  521. TItemPos pos;
  522. DWORD gold;
  523. BYTE count;
  524. } TPacketCGItemDrop2;
  525. #ifdef ENABLE_DESTROY_SELL
  526. typedef struct command_item_destroy
  527. {
  528. BYTE header;
  529. TItemPos pos;
  530. } TPacketCGItemDestroy;
  531. typedef struct command_item_sell
  532. {
  533. BYTE header;
  534. TItemPos pos;
  535. } TPacketCGItemSell;
  536. #endif
  537. typedef struct command_item_move
  538. {
  539. BYTE header;
  540. TItemPos pos;
  541. TItemPos change_pos;
  542. BYTE num;
  543. } TPacketCGItemMove;
  544. typedef struct command_item_pickup
  545. {
  546. BYTE header;
  547. DWORD vid;
  548. } TPacketCGItemPickUp;
  549. typedef struct command_quickslot_add
  550. {
  551. BYTE header;
  552. BYTE pos;
  553. TQuickSlot slot;
  554. }TPacketCGQuickSlotAdd;
  555. typedef struct command_quickslot_del
  556. {
  557. BYTE header;
  558. BYTE pos;
  559. }TPacketCGQuickSlotDel;
  560. typedef struct command_quickslot_swap
  561. {
  562. BYTE header;
  563. BYTE pos;
  564. BYTE change_pos;
  565. }TPacketCGQuickSlotSwap;
  566. typedef struct command_on_click
  567. {
  568. BYTE header;
  569. DWORD vid;
  570. } TPacketCGOnClick;
  571. enum
  572. {
  573. SHOP_SUBHEADER_CG_END,
  574. SHOP_SUBHEADER_CG_BUY,
  575. SHOP_SUBHEADER_CG_SELL,
  576. SHOP_SUBHEADER_CG_SELL2,
  577. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  578. SHOP_SUBHEADER_CG_ADD_ITEM,
  579. SHOP_SUBHEADER_CG_REMOVE_ITEM,
  580. SHOP_SUBHEADER_CG_DESTROY_OFFLINE_SHOP,
  581. SHOP_SUBHEADER_CG_REFRESH,
  582. SHOP_SUBHEADER_CG_REFRESH_MONEY,
  583. SHOP_SUBHEADER_CG_WITHDRAW_MONEY,
  584. #ifdef ENABLE_CHEQUE_SYSTEM
  585. SHOP_SUBHEADER_CG_WITHDRAW_CHEQUE,
  586. #endif
  587. SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS,
  588. SHOP_SUBHEADER_CG_TAKE_ITEM,
  589. SHOP_SUBHEADER_CG_CHECK,
  590. SHOP_SUBHEADER_CG_CHANGE_ITEM_PRICE,
  591. #endif
  592. };
  593. typedef struct command_shop
  594. {
  595. BYTE header;
  596. BYTE subheader;
  597. } TPacketCGShop;
  598. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  599. typedef struct command_offline_shop
  600. {
  601. BYTE header;
  602. BYTE subheader;
  603. } TPacketCGOfflineShop;
  604. typedef struct SPacketCGChangeOfflineShopName
  605. {
  606. BYTE bHeader;
  607. char szSign[SHOP_SIGN_MAX_LEN + 1];
  608. } TPacketCGChangeOfflineShopName;
  609. #endif
  610. enum
  611. {
  612. EXCHANGE_SUBHEADER_CG_START, // arg1 == vid of target character
  613. EXCHANGE_SUBHEADER_CG_ITEM_ADD, // arg1 == position of item
  614. EXCHANGE_SUBHEADER_CG_ITEM_DEL, // arg1 == position of item
  615. EXCHANGE_SUBHEADER_CG_ELK_ADD, // arg1 == amount of elk
  616. EXCHANGE_SUBHEADER_CG_ACCEPT, // arg1 == not used
  617. EXCHANGE_SUBHEADER_CG_CANCEL, // arg1 == not used
  618. };
  619. typedef struct command_exchange
  620. {
  621. BYTE header;
  622. BYTE subheader;
  623. DWORD arg1;
  624. BYTE arg2;
  625. TItemPos Pos;
  626. } TPacketCGExchange;
  627. typedef struct command_position
  628. {
  629. BYTE header;
  630. BYTE position;
  631. } TPacketCGPosition;
  632. typedef struct command_script_answer
  633. {
  634. BYTE header;
  635. BYTE answer;
  636. } TPacketCGScriptAnswer;
  637. typedef struct command_script_button
  638. {
  639. BYTE header;
  640. unsigned int idx;
  641. } TPacketCGScriptButton;
  642. typedef struct command_target
  643. {
  644. BYTE header;
  645. DWORD dwVID;
  646. } TPacketCGTarget;
  647. typedef struct command_move
  648. {
  649. BYTE bHeader;
  650. BYTE bFunc;
  651. BYTE bArg;
  652. BYTE bRot;
  653. LONG lX;
  654. LONG lY;
  655. DWORD dwTime;
  656. } TPacketCGMove;
  657. typedef struct command_sync_position_element
  658. {
  659. DWORD dwVID;
  660. long lX;
  661. long lY;
  662. } TPacketCGSyncPositionElement;
  663. typedef struct command_sync_position
  664. {
  665. BYTE bHeader;
  666. WORD wSize;
  667. } TPacketCGSyncPosition;
  668. typedef struct command_fly_targeting
  669. {
  670. BYTE bHeader;
  671. DWORD dwTargetVID;
  672. long lX;
  673. long lY;
  674. } TPacketCGFlyTargeting;
  675. typedef struct packet_fly_targeting
  676. {
  677. BYTE bHeader;
  678. DWORD dwShooterVID;
  679. DWORD dwTargetVID;
  680. long lX;
  681. long lY;
  682. } TPacketGCFlyTargeting;
  683. typedef struct packet_shoot
  684. {
  685. BYTE bHeader;
  686. BYTE bType;
  687. } TPacketCGShoot;
  688. typedef struct command_warp
  689. {
  690. BYTE bHeader;
  691. } TPacketCGWarp;
  692. enum
  693. {
  694. MESSENGER_SUBHEADER_GC_LIST,
  695. MESSENGER_SUBHEADER_GC_LOGIN,
  696. MESSENGER_SUBHEADER_GC_LOGOUT,
  697. MESSENGER_SUBHEADER_GC_INVITE,
  698. MESSENGER_SUBHEADER_GC_MOBILE,
  699. };
  700. typedef struct packet_messenger
  701. {
  702. BYTE header;
  703. WORD size;
  704. BYTE subheader;
  705. } TPacketGCMessenger;
  706. typedef struct packet_messenger_list_offline
  707. {
  708. BYTE connected; // always 0
  709. BYTE length;
  710. } TPacketGCMessengerListOffline;
  711. enum
  712. {
  713. MESSENGER_CONNECTED_STATE_OFFLINE,
  714. MESSENGER_CONNECTED_STATE_ONLINE,
  715. MESSENGER_CONNECTED_STATE_MOBILE,
  716. };
  717. typedef struct packet_messenger_list_online
  718. {
  719. BYTE connected;
  720. BYTE length;
  721. //BYTE length_char_name;
  722. } TPacketGCMessengerListOnline;
  723. typedef struct packet_messenger_login
  724. {
  725. //BYTE length_login;
  726. //BYTE length_char_name;
  727. BYTE length;
  728. } TPacketGCMessengerLogin;
  729. typedef struct packet_messenger_logout
  730. {
  731. BYTE length;
  732. } TPacketGCMessengerLogout;
  733. enum
  734. {
  735. MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  736. MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  737. MESSENGER_SUBHEADER_CG_REMOVE,
  738. };
  739. typedef struct command_messenger
  740. {
  741. BYTE header;
  742. BYTE subheader;
  743. } TPacketCGMessenger;
  744. typedef struct command_messenger_remove
  745. {
  746. BYTE length;
  747. } TPacketCGMessengerRemove;
  748. enum
  749. {
  750. SAFEBOX_MONEY_STATE_SAVE,
  751. SAFEBOX_MONEY_STATE_WITHDRAW,
  752. };
  753. typedef struct command_safebox_money
  754. {
  755. BYTE bHeader;
  756. BYTE bState;
  757. DWORD dwMoney;
  758. } TPacketCGSafeboxMoney;
  759. typedef struct command_safebox_checkout
  760. {
  761. BYTE bHeader;
  762. BYTE bSafePos;
  763. TItemPos ItemPos;
  764. } TPacketCGSafeboxCheckout;
  765. typedef struct command_safebox_checkin
  766. {
  767. BYTE bHeader;
  768. BYTE bSafePos;
  769. TItemPos ItemPos;
  770. } TPacketCGSafeboxCheckin;
  771. typedef struct command_mall_checkout
  772. {
  773. BYTE bHeader;
  774. BYTE bMallPos;
  775. TItemPos ItemPos;
  776. } TPacketCGMallCheckout;
  777. ///////////////////////////////////////////////////////////////////////////////////
  778. // Party
  779. typedef struct command_use_skill
  780. {
  781. BYTE bHeader;
  782. DWORD dwVnum;
  783. DWORD dwTargetVID;
  784. } TPacketCGUseSkill;
  785. typedef struct command_party_invite
  786. {
  787. BYTE header;
  788. DWORD vid;
  789. } TPacketCGPartyInvite;
  790. typedef struct command_party_invite_answer
  791. {
  792. BYTE header;
  793. DWORD leader_pid;
  794. BYTE accept;
  795. } TPacketCGPartyInviteAnswer;
  796. typedef struct command_party_remove
  797. {
  798. BYTE header;
  799. DWORD pid;
  800. } TPacketCGPartyRemove;
  801. typedef struct command_party_set_state
  802. {
  803. BYTE byHeader;
  804. DWORD dwVID;
  805. BYTE byState;
  806. BYTE byFlag;
  807. } TPacketCGPartySetState;
  808. typedef struct packet_party_link
  809. {
  810. BYTE header;
  811. DWORD pid;
  812. DWORD vid;
  813. } TPacketGCPartyLink;
  814. typedef struct packet_party_unlink
  815. {
  816. BYTE header;
  817. DWORD pid;
  818. DWORD vid;
  819. } TPacketGCPartyUnlink;
  820. typedef struct command_party_use_skill
  821. {
  822. BYTE byHeader;
  823. BYTE bySkillIndex;
  824. DWORD dwTargetVID;
  825. } TPacketCGPartyUseSkill;
  826. enum
  827. {
  828. GUILD_SUBHEADER_CG_ADD_MEMBER,
  829. GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  830. GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  831. GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  832. GUILD_SUBHEADER_CG_OFFER,
  833. GUILD_SUBHEADER_CG_POST_COMMENT,
  834. GUILD_SUBHEADER_CG_DELETE_COMMENT,
  835. GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  836. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  837. GUILD_SUBHEADER_CG_USE_SKILL,
  838. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  839. GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  840. GUILD_SUBHEADER_CG_CHARGE_GSP,
  841. GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  842. GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  843. };
  844. typedef struct command_guild
  845. {
  846. BYTE byHeader;
  847. BYTE bySubHeader;
  848. } TPacketCGGuild;
  849. typedef struct command_guild_answer_make_guild
  850. {
  851. BYTE header;
  852. char guild_name[GUILD_NAME_MAX_LEN+1];
  853. } TPacketCGAnswerMakeGuild;
  854. typedef struct command_give_item
  855. {
  856. BYTE byHeader;
  857. DWORD dwTargetVID;
  858. TItemPos ItemPos;
  859. BYTE byItemCount;
  860. } TPacketCGGiveItem;
  861. typedef struct SPacketCGHack
  862. {
  863. BYTE bHeader;
  864. char szBuf[255 + 1];
  865. } TPacketCGHack;
  866. typedef struct command_dungeon
  867. {
  868. BYTE bHeader;
  869. WORD size;
  870. } TPacketCGDungeon;
  871. // Private Shop
  872. typedef struct SShopItemTable
  873. {
  874. DWORD vnum;
  875. BYTE count;
  876. TItemPos pos; // PC »óÁ¡¿¡¸¸ ÀÌ¿ë
  877. DWORD price; // PC »óÁ¡¿¡¸¸ ÀÌ¿ë
  878. BYTE display_pos; // PC »óÁ¡¿¡¸¸ ÀÌ¿ë, º¸ÀÏ À§Ä¡.
  879. } TShopItemTable;
  880. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  881. typedef struct SOfflineShopItemTable
  882. {
  883. DWORD vnum;
  884. #ifdef ENABLE_EXTENDED_ITEM_COUNT
  885. short count;
  886. #else
  887. BYTE count;
  888. #endif
  889. TItemPos pos;
  890. long long price;
  891. #ifdef ENABLE_CHEQUE_SYSTEM
  892. DWORD price_cheque;
  893. #endif
  894. BYTE display_pos;
  895. } TOfflineShopItemTable;
  896. typedef struct SOfflineShopItemTable2
  897. {
  898. TItemPos bDisplayPos;
  899. BYTE bPos;
  900. long long dwPrice;
  901. #ifdef ENABLE_CHEQUE_SYSTEM
  902. DWORD dwPriceCheque;
  903. #endif
  904. } TOfflineShopItemTable2;
  905. #endif
  906. typedef struct SPacketCGMyShop
  907. {
  908. BYTE bHeader;
  909. char szSign[SHOP_SIGN_MAX_LEN + 1];
  910. BYTE bCount; // count of TShopItemTable, max 39
  911. } TPacketCGMyShop;
  912. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  913. typedef struct TPacketCGMyOfflineShop
  914. {
  915. BYTE bHeader;
  916. char szSign[SHOP_SIGN_MAX_LEN + 1];
  917. #ifdef ENABLE_EXTENDED_ITEM_COUNT
  918. short bCount;
  919. #else
  920. BYTE bCount;
  921. #endif
  922. BYTE bNpcType;
  923. BYTE bBoardStyle;
  924. } TPacketCGMyOfflineShop;
  925. #endif
  926. typedef struct SPacketCGRefine
  927. {
  928. BYTE header;
  929. BYTE pos;
  930. BYTE type;
  931. } TPacketCGRefine;
  932. typedef struct SPacketCGChangeName
  933. {
  934. BYTE header;
  935. BYTE index;
  936. char name[CHARACTER_NAME_MAX_LEN+1];
  937. } TPacketCGChangeName;
  938. typedef struct command_client_version
  939. {
  940. BYTE header;
  941. char filename[32+1];
  942. char timestamp[32+1];
  943. } TPacketCGClientVersion;
  944. typedef struct command_client_version2
  945. {
  946. BYTE header;
  947. char filename[32+1];
  948. char timestamp[32+1];
  949. } TPacketCGClientVersion2;
  950. typedef struct command_crc_report
  951. {
  952. BYTE header;
  953. BYTE byPackMode;
  954. DWORD dwBinaryCRC32;
  955. DWORD dwProcessCRC32;
  956. DWORD dwRootPackCRC32;
  957. } TPacketCGCRCReport;
  958. typedef struct command_china_matrix_card
  959. {
  960. BYTE bHeader;
  961. char szAnswer[CHINA_MATRIX_ANSWER_MAX_LEN + 1];
  962. } TPacketCGChinaMatrixCard;
  963. typedef struct command_runup_matrix_answer
  964. {
  965. BYTE bHeader;
  966. char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  967. } TPacketCGRunupMatrixAnswer;
  968. typedef struct command_newcibn_passpod_answer
  969. {
  970. BYTE bHeader;
  971. char szAnswer[NEWCIBN_PASSPOD_ANSWER_MAX_LEN + 1];
  972. } TPacketCGNEWCIBNPasspodAnswer;
  973. enum EPartyExpDistributionType
  974. {
  975. PARTY_EXP_DISTRIBUTION_NON_PARITY,
  976. PARTY_EXP_DISTRIBUTION_PARITY,
  977. };
  978. typedef struct command_party_parameter
  979. {
  980. BYTE bHeader;
  981. BYTE bDistributeMode;
  982. } TPacketCGPartyParameter;
  983. typedef struct command_quest_input_string
  984. {
  985. BYTE bHeader;
  986. char szString[QUEST_INPUT_STRING_MAX_NUM+1];
  987. } TPacketCGQuestInputString;
  988. typedef struct command_quest_confirm
  989. {
  990. BYTE header;
  991. BYTE answer;
  992. DWORD requestPID;
  993. } TPacketCGQuestConfirm;
  994. typedef struct command_script_select_item
  995. {
  996. BYTE header;
  997. DWORD selection;
  998. } TPacketCGScriptSelectItem;
  999. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1000. // From Server
  1001. enum EPhase
  1002. {
  1003. PHASE_CLOSE, // ²÷±â´Â »óÅ (¶Ç´Â ²÷±â Àü »óÅÂ)
  1004. PHASE_HANDSHAKE, // ¾Ç¼ö..;;
  1005. PHASE_LOGIN, // ·Î±×ÀÎ Áß
  1006. PHASE_SELECT, // ij¸¯ÅÍ ¼±Åà ȭ¸é
  1007. PHASE_LOADING, // ¼±Åà ÈÄ ·Îµù È­¸é
  1008. PHASE_GAME, // °ÔÀÓ È­¸é
  1009. PHASE_DEAD, // Á×¾úÀ» ¶§.. (°ÔÀÓ ¾È¿¡ ÀÖ´Â °ÍÀÏ ¼öµµ..)
  1010. PHASE_DBCLIENT_CONNECTING, // ¼­¹ö¿ë
  1011. PHASE_DBCLIENT, // ¼­¹ö¿ë
  1012. PHASE_P2P, // ¼­¹ö¿ë
  1013. PHASE_AUTH, // ·Î±×ÀÎ ÀÎÁõ ¿ë
  1014. };
  1015. typedef struct packet_phase
  1016. {
  1017. BYTE header;
  1018. BYTE phase;
  1019. } TPacketGCPhase;
  1020. typedef struct packet_blank // °ø¹éÆĞŶ.
  1021. {
  1022. BYTE header;
  1023. } TPacketGCBlank;
  1024. typedef struct packet_blank_dynamic
  1025. {
  1026. BYTE header;
  1027. WORD size;
  1028. } TPacketGCBlankDynamic;
  1029. typedef struct packet_header_handshake
  1030. {
  1031. BYTE header;
  1032. DWORD dwHandshake;
  1033. DWORD dwTime;
  1034. LONG lDelta;
  1035. } TPacketGCHandshake;
  1036. typedef struct packet_header_bindudp
  1037. {
  1038. BYTE header;
  1039. DWORD addr;
  1040. WORD port;
  1041. } TPacketGCBindUDP;
  1042. typedef struct packet_header_dynamic_size
  1043. {
  1044. BYTE header;
  1045. WORD size;
  1046. } TDynamicSizePacketHeader;
  1047. typedef struct SSimplePlayerInformation
  1048. {
  1049. DWORD dwID;
  1050. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1051. BYTE byJob;
  1052. BYTE byLevel;
  1053. DWORD dwPlayMinutes;
  1054. BYTE byST, byHT, byDX, byIQ;
  1055. // WORD wParts[CRaceData::PART_MAX_NUM];
  1056. WORD wMainPart;
  1057. BYTE bChangeName;
  1058. WORD wHairPart;
  1059. #ifdef ENABLE_SASH_SYSTEM
  1060. WORD wSashPart;
  1061. #endif
  1062. BYTE bDummy[4];
  1063. long x, y;
  1064. LONG lAddr;
  1065. WORD wPort;
  1066. BYTE bySkillGroup;
  1067. } TSimplePlayerInformation;
  1068. typedef struct packet_login_success3
  1069. {
  1070. BYTE header;
  1071. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT3];
  1072. DWORD guild_id[PLAYER_PER_ACCOUNT3];
  1073. char guild_name[PLAYER_PER_ACCOUNT3][GUILD_NAME_MAX_LEN+1];
  1074. DWORD handle;
  1075. DWORD random_key;
  1076. } TPacketGCLoginSuccess3;
  1077. typedef struct packet_login_success4
  1078. {
  1079. BYTE header;
  1080. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT4];
  1081. DWORD guild_id[PLAYER_PER_ACCOUNT4];
  1082. char guild_name[PLAYER_PER_ACCOUNT4][GUILD_NAME_MAX_LEN+1];
  1083. DWORD handle;
  1084. DWORD random_key;
  1085. } TPacketGCLoginSuccess4;
  1086. enum { LOGIN_STATUS_MAX_LEN = 8 };
  1087. typedef struct packet_login_failure
  1088. {
  1089. BYTE header;
  1090. char szStatus[LOGIN_STATUS_MAX_LEN + 1];
  1091. } TPacketGCLoginFailure;
  1092. typedef struct command_player_create
  1093. {
  1094. BYTE header;
  1095. BYTE index;
  1096. char name[CHARACTER_NAME_MAX_LEN + 1];
  1097. WORD job;
  1098. BYTE shape;
  1099. BYTE CON;
  1100. BYTE INT;
  1101. BYTE STR;
  1102. BYTE DEX;
  1103. } TPacketCGCreateCharacter;
  1104. typedef struct command_player_create_success
  1105. {
  1106. BYTE header;
  1107. BYTE bAccountCharacterSlot;
  1108. TSimplePlayerInformation kSimplePlayerInfomation;
  1109. } TPacketGCPlayerCreateSuccess;
  1110. typedef struct command_create_failure
  1111. {
  1112. BYTE header;
  1113. BYTE bType;
  1114. } TPacketGCCreateFailure;
  1115. typedef struct command_player_delete
  1116. {
  1117. BYTE header;
  1118. BYTE index;
  1119. char szPrivateCode[PRIVATE_CODE_LENGTH];
  1120. } TPacketCGDestroyCharacter;
  1121. typedef struct packet_player_delete_success
  1122. {
  1123. BYTE header;
  1124. BYTE account_index;
  1125. } TPacketGCDestroyCharacterSuccess;
  1126. enum
  1127. {
  1128. ADD_CHARACTER_STATE_DEAD = (1 << 0),
  1129. ADD_CHARACTER_STATE_SPAWN = (1 << 1),
  1130. ADD_CHARACTER_STATE_GUNGON = (1 << 2),
  1131. ADD_CHARACTER_STATE_KILLER = (1 << 3),
  1132. ADD_CHARACTER_STATE_PARTY = (1 << 4),
  1133. };
  1134. enum EPKModes
  1135. {
  1136. PK_MODE_PEACE,
  1137. PK_MODE_REVENGE,
  1138. PK_MODE_FREE,
  1139. PK_MODE_PROTECT,
  1140. PK_MODE_GUILD,
  1141. PK_MODE_MAX_NUM,
  1142. };
  1143. // 2004.11.20.myevan.CRaceData::PART_MAX_NUM »ç¿ë¾ÈÇÏ°Ô ¼öÁ¤ - ¼­¹ö¿¡¼­ »ç¿ëÇϴ°Ͱú ÀÏÄ¡ÇÏÁö ¾ÊÀ½
  1144. enum ECharacterEquipmentPart
  1145. {
  1146. CHR_EQUIPPART_ARMOR,
  1147. CHR_EQUIPPART_WEAPON,
  1148. CHR_EQUIPPART_HEAD,
  1149. CHR_EQUIPPART_HAIR,
  1150. #ifdef ENABLE_SASH_SYSTEM
  1151. CHR_EQUIPPART_SASH,
  1152. #endif
  1153. CHR_EQUIPPART_NUM,
  1154. };
  1155. typedef struct packet_char_additional_info
  1156. {
  1157. BYTE header;
  1158. DWORD dwVID;
  1159. char name[CHARACTER_NAME_MAX_LEN + 1];
  1160. WORD awPart[CHR_EQUIPPART_NUM];
  1161. BYTE bEmpire;
  1162. DWORD dwGuildID;
  1163. DWORD dwLevel;
  1164. short sAlignment; //¼±¾ÇÄ¡
  1165. BYTE bPKMode;
  1166. DWORD dwMountVnum;
  1167. BYTE dwNewIsGuildName;
  1168. #if defined(ENABLE_OFFLINE_SHOP_SYSTEM)
  1169. DWORD dwMyShopVID;
  1170. #endif
  1171. } TPacketGCCharacterAdditionalInfo;
  1172. typedef struct packet_add_char
  1173. {
  1174. BYTE header;
  1175. DWORD dwVID;
  1176. #ifdef ENABLE_LEVEL_SHOW_HIDE
  1177. DWORD dwLevel;
  1178. #endif
  1179. //char name[CHARACTER_NAME_MAX_LEN + 1];
  1180. float angle;
  1181. long x;
  1182. long y;
  1183. long z;
  1184. BYTE bType;
  1185. WORD wRaceNum;
  1186. //WORD awPart[CHR_EQUIPPART_NUM];
  1187. BYTE bMovingSpeed;
  1188. BYTE bAttackSpeed;
  1189. BYTE bStateFlag;
  1190. DWORD dwAffectFlag[2]; // ??
  1191. //BYTE bEmpire;
  1192. //DWORD dwGuild;
  1193. //short sAlignment;
  1194. //BYTE bPKMode;
  1195. //DWORD dwMountVnum;
  1196. } TPacketGCCharacterAdd;
  1197. typedef struct packet_add_char2
  1198. {
  1199. BYTE header;
  1200. DWORD dwVID;
  1201. #ifdef ENABLE_LEVEL_SHOW_HIDE
  1202. DWORD dwLevel;
  1203. #endif
  1204. char name[CHARACTER_NAME_MAX_LEN + 1];
  1205. float angle;
  1206. long x;
  1207. long y;
  1208. long z;
  1209. BYTE bType;
  1210. WORD wRaceNum;
  1211. WORD awPart[CHR_EQUIPPART_NUM];
  1212. BYTE bMovingSpeed;
  1213. BYTE bAttackSpeed;
  1214. BYTE bStateFlag;
  1215. DWORD dwAffectFlag[2]; // ??
  1216. BYTE bEmpire;
  1217. DWORD dwGuild;
  1218. short sAlignment;
  1219. BYTE bPKMode;
  1220. DWORD dwMountVnum;
  1221. BYTE dwNewIsGuildName;
  1222. } TPacketGCCharacterAdd2;
  1223. typedef struct packet_update_char
  1224. {
  1225. BYTE header;
  1226. DWORD dwVID;
  1227. WORD awPart[CHR_EQUIPPART_NUM];
  1228. BYTE bMovingSpeed;
  1229. BYTE bAttackSpeed;
  1230. BYTE bStateFlag;
  1231. DWORD dwAffectFlag[2];
  1232. DWORD dwGuildID;
  1233. short sAlignment;
  1234. DWORD dwLevel;
  1235. BYTE bPKMode;
  1236. DWORD dwMountVnum;
  1237. BYTE dwNewIsGuildName;
  1238. #if defined(ENABLE_OFFLINE_SHOP_SYSTEM)
  1239. DWORD dwMyShopVID;
  1240. #endif
  1241. } TPacketGCCharacterUpdate;
  1242. typedef struct packet_update_char2
  1243. {
  1244. BYTE header;
  1245. DWORD dwVID;
  1246. WORD awPart[CHR_EQUIPPART_NUM];
  1247. BYTE bMovingSpeed;
  1248. BYTE bAttackSpeed;
  1249. BYTE bStateFlag;
  1250. DWORD dwAffectFlag[2];
  1251. DWORD dwGuildID;
  1252. short sAlignment;
  1253. BYTE bPKMode;
  1254. DWORD dwMountVnum;
  1255. BYTE dwNewIsGuildName;
  1256. } TPacketGCCharacterUpdate2;
  1257. typedef struct packet_del_char
  1258. {
  1259. BYTE header;
  1260. DWORD dwVID;
  1261. } TPacketGCCharacterDelete;
  1262. typedef struct packet_GlobalTime
  1263. {
  1264. BYTE header;
  1265. float GlobalTime;
  1266. } TPacketGCGlobalTime;
  1267. enum EChatType
  1268. {
  1269. CHAT_TYPE_TALKING, /* ±×³É äÆÃ */
  1270. CHAT_TYPE_INFO, /* Á¤º¸ (¾ÆÀÌÅÛÀ» Áı¾ú´Ù, °æÇèÄ¡¸¦ ¾ò¾ú´Ù. µî) */
  1271. CHAT_TYPE_NOTICE, /* °øÁö»çÇ× */
  1272. CHAT_TYPE_PARTY, /* ÆÄƼ¸» */
  1273. CHAT_TYPE_GUILD, /* ±æµå¸» */
  1274. CHAT_TYPE_COMMAND, /* ¸í·É */
  1275. CHAT_TYPE_SHOUT, /* ¿ÜÄ¡±â */
  1276. CHAT_TYPE_WHISPER, // ¼­¹ö¿Í´Â ¿¬µ¿µÇÁö ¾Ê´Â Only Client Enum
  1277. CHAT_TYPE_BIG_NOTICE,
  1278. CHAT_TYPE_MAX_NUM,
  1279. };
  1280. typedef struct packet_chatting
  1281. {
  1282. BYTE header;
  1283. WORD size;
  1284. BYTE type;
  1285. DWORD dwVID;
  1286. BYTE bEmpire;
  1287. } TPacketGCChat;
  1288. typedef struct packet_whisper // °¡º¯ ÆĞŶ
  1289. {
  1290. BYTE bHeader;
  1291. WORD wSize;
  1292. BYTE bType;
  1293. char szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1294. } TPacketGCWhisper;
  1295. typedef struct packet_stun
  1296. {
  1297. BYTE header;
  1298. DWORD vid;
  1299. } TPacketGCStun;
  1300. typedef struct packet_dead
  1301. {
  1302. BYTE header;
  1303. DWORD vid;
  1304. } TPacketGCDead;
  1305. typedef struct packet_main_character
  1306. {
  1307. BYTE header;
  1308. DWORD dwVID;
  1309. WORD wRaceNum;
  1310. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1311. long lX, lY, lZ;
  1312. BYTE bySkillGroup;
  1313. } TPacketGCMainCharacter;
  1314. // SUPPORT_BGM
  1315. typedef struct packet_main_character2_empire
  1316. {
  1317. BYTE header;
  1318. DWORD dwVID;
  1319. WORD wRaceNum;
  1320. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1321. long lX, lY, lZ;
  1322. BYTE byEmpire;
  1323. BYTE bySkillGroup;
  1324. } TPacketGCMainCharacter2_EMPIRE;
  1325. typedef struct packet_main_character3_bgm
  1326. {
  1327. enum
  1328. {
  1329. MUSIC_NAME_MAX_LEN = 24,
  1330. };
  1331. BYTE header;
  1332. DWORD dwVID;
  1333. WORD wRaceNum;
  1334. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1335. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1336. long lX, lY, lZ;
  1337. BYTE byEmpire;
  1338. BYTE bySkillGroup;
  1339. } TPacketGCMainCharacter3_BGM;
  1340. typedef struct packet_main_character4_bgm_vol
  1341. {
  1342. enum
  1343. {
  1344. MUSIC_NAME_MAX_LEN = 24,
  1345. };
  1346. BYTE header;
  1347. DWORD dwVID;
  1348. WORD wRaceNum;
  1349. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1350. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1351. float fBGMVol;
  1352. long lX, lY, lZ;
  1353. BYTE byEmpire;
  1354. BYTE bySkillGroup;
  1355. } TPacketGCMainCharacter4_BGM_VOL;
  1356. // END_OF_SUPPORT_BGM
  1357. enum EPointTypes
  1358. {
  1359. POINT_NONE, // 0
  1360. POINT_LEVEL, // 1
  1361. POINT_VOICE, // 2
  1362. POINT_EXP, // 3
  1363. POINT_NEXT_EXP, // 4
  1364. POINT_HP, // 5
  1365. POINT_MAX_HP, // 6
  1366. POINT_SP, // 7
  1367. POINT_MAX_SP, // 8
  1368. POINT_STAMINA, // 9 ½ºÅ׹̳Ê
  1369. POINT_MAX_STAMINA, // 10 ÃÖ´ë ½ºÅ׹̳Ê
  1370. POINT_GOLD, // 11
  1371. POINT_ST, // 12 ±Ù·Â
  1372. POINT_HT, // 13 ü·Â
  1373. POINT_DX, // 14 ¹Îø¼º
  1374. POINT_IQ, // 15 Á¤½Å·Â
  1375. POINT_ATT_POWER, // 16 °ø°İ·Â
  1376. POINT_ATT_SPEED, // 17 °ø°İ¼Óµµ
  1377. POINT_EVADE_RATE, // 18 ȸÇÇÀ²
  1378. POINT_MOV_SPEED, // 19 À̵¿¼Óµµ
  1379. POINT_DEF_GRADE, // 20 ¹æ¾îµî±Ş
  1380. POINT_CASTING_SPEED, // 21 ÁÖ¹®¼Óµµ (Äğ´Ù¿îŸÀÓ*100) / (100 + À̰ª) = ÃÖÁ¾ Äğ´Ù¿î ŸÀÓ
  1381. POINT_MAGIC_ATT_GRADE, // 22 ¸¶¹ı°ø°İ·Â
  1382. POINT_MAGIC_DEF_GRADE, // 23 ¸¶¹ı¹æ¾î·Â
  1383. POINT_EMPIRE_POINT, // 24 Á¦±¹Á¡¼ö
  1384. POINT_LEVEL_STEP, // 25 ÇÑ ·¹º§¿¡¼­ÀÇ ´Ü°è.. (1 2 3 µÉ ¶§ º¸»ó, 4 µÇ¸é ·¹º§ ¾÷)
  1385. POINT_STAT, // 26 ´É·ÂÄ¡ ¿Ã¸± ¼ö ÀÖ´Â °³¼ö
  1386. POINT_SUB_SKILL, // 27 º¸Á¶ ½ºÅ³ Æ÷ÀÎÆ®
  1387. POINT_SKILL, // 28 ¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ®
  1388. // POINT_SKILL_PASV, // 27 ÆĞ½Ãºê ±â¼ú ¿Ã¸± ¼ö ÀÖ´Â °³¼ö
  1389. // POINT_SKILL_ACTIVE, // 28 ¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ®
  1390. POINT_MIN_ATK, // 29 ÃÖ¼Ò ÆÄ±«·Â
  1391. POINT_MAX_ATK, // 30 ÃÖ´ë ÆÄ±«·Â
  1392. POINT_PLAYTIME, // 31 Ç÷¹À̽ð£
  1393. POINT_HP_REGEN, // 32 HP ȸº¹·ü
  1394. POINT_SP_REGEN, // 33 SP ȸº¹·ü
  1395. POINT_BOW_DISTANCE, // 34 Ȱ »çÁ¤°Å¸® Áõ°¡Ä¡ (meter)
  1396. POINT_HP_RECOVERY, // 35 ü·Â ȸº¹ Áõ°¡·®
  1397. POINT_SP_RECOVERY, // 36 Á¤½Å·Â ȸº¹ Áõ°¡·®
  1398. POINT_POISON_PCT, // 37 µ¶ È®·ü
  1399. POINT_STUN_PCT, // 38 ±âÀı È®·ü
  1400. POINT_SLOW_PCT, // 39 ½½·Î¿ì È®·ü
  1401. POINT_CRITICAL_PCT, // 40 Å©¸®Æ¼Äà Ȯ·ü
  1402. POINT_PENETRATE_PCT, // 41 °üÅëŸ°İ È®·ü
  1403. POINT_CURSE_PCT, // 42 ÀúÁÖ È®·ü
  1404. POINT_ATTBONUS_HUMAN, // 43 Àΰ£¿¡°Ô °­ÇÔ
  1405. POINT_ATTBONUS_ANIMAL, // 44 µ¿¹°¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1406. POINT_ATTBONUS_ORC, // 45 ¿õ±Í¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1407. POINT_ATTBONUS_MILGYO, // 46 ¹Ğ±³¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1408. POINT_ATTBONUS_UNDEAD, // 47 ½Ãü¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1409. POINT_ATTBONUS_DEVIL, // 48 ¸¶±Í(¾Ç¸¶)¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1410. POINT_ATTBONUS_INSECT, // 49 ¹ú·¹Á·
  1411. POINT_ATTBONUS_FIRE, // 50 È­¿°Á·
  1412. POINT_ATTBONUS_ICE, // 51 ºù¼³Á·
  1413. POINT_ATTBONUS_DESERT, // 52 »ç¸·Á·
  1414. POINT_ATTBONUS_UNUSED0, // 53 UNUSED0
  1415. POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
  1416. POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
  1417. POINT_ATTBONUS_UNUSED3, // 56 UNUSED3
  1418. POINT_ATTBONUS_UNUSED4, // 57 UNUSED4
  1419. POINT_ATTBONUS_UNUSED5, // 58 UNUSED5
  1420. POINT_ATTBONUS_UNUSED6, // 59 UNUSED6
  1421. POINT_ATTBONUS_UNUSED7, // 60 UNUSED7
  1422. POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
  1423. POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
  1424. POINT_STEAL_HP, // 63 »ı¸í·Â Èí¼ö
  1425. POINT_STEAL_SP, // 64 Á¤½Å·Â Èí¼ö
  1426. POINT_MANA_BURN_PCT, // 65 ¸¶³ª ¹ø
  1427. /// ÇÇÇØ½Ã º¸³Ê½º ///
  1428. POINT_DAMAGE_SP_RECOVER, // 66 °ø°İ´çÇÒ ½Ã Á¤½Å·Â ȸº¹ È®·ü
  1429. POINT_BLOCK, // 67 ºí·°À²
  1430. POINT_DODGE, // 68 ȸÇÇÀ²
  1431. POINT_RESIST_SWORD, // 69
  1432. POINT_RESIST_TWOHAND, // 70
  1433. POINT_RESIST_DAGGER, // 71
  1434. POINT_RESIST_BELL, // 72
  1435. POINT_RESIST_FAN, // 73
  1436. POINT_RESIST_BOW, // 74 È­»ì ÀúÇ× : ´ë¹ÌÁö °¨¼Ò
  1437. POINT_RESIST_FIRE, // 75 È­¿° ÀúÇ× : È­¿°°ø°İ¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1438. POINT_RESIST_ELEC, // 76 Àü±â ÀúÇ× : Àü±â°ø°İ¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1439. POINT_RESIST_MAGIC, // 77 ¼ú¹ı ÀúÇ× : ¸ğµç¼ú¹ı¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1440. POINT_RESIST_WIND, // 78 ¹Ù¶÷ ÀúÇ× : ¹Ù¶÷°ø°İ¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1441. POINT_REFLECT_MELEE, // 79 °ø°İ ¹İ»ç
  1442. /// Ư¼ö ÇÇÇØ½Ã ///
  1443. POINT_REFLECT_CURSE, // 80 ÀúÁÖ ¹İ»ç
  1444. POINT_POISON_REDUCE, // 81 µ¶µ¥¹ÌÁö °¨¼Ò
  1445. /// Àû ¼Ò¸ê½Ã ///
  1446. POINT_KILL_SP_RECOVER, // 82 Àû ¼Ò¸ê½Ã MP ȸº¹
  1447. POINT_EXP_DOUBLE_BONUS, // 83
  1448. POINT_GOLD_DOUBLE_BONUS, // 84
  1449. POINT_ITEM_DROP_BONUS, // 85
  1450. /// ȸº¹ °ü·Ã ///
  1451. POINT_POTION_BONUS, // 86
  1452. POINT_KILL_HP_RECOVER, // 87
  1453. POINT_IMMUNE_STUN, // 88
  1454. POINT_IMMUNE_SLOW, // 89
  1455. POINT_IMMUNE_FALL, // 90
  1456. //////////////////
  1457. POINT_PARTY_ATT_GRADE, // 91
  1458. POINT_PARTY_DEF_GRADE, // 92
  1459. POINT_ATT_BONUS, // 93
  1460. POINT_DEF_BONUS, // 94
  1461. POINT_ATT_GRADE_BONUS, // 95
  1462. POINT_DEF_GRADE_BONUS, // 96
  1463. POINT_MAGIC_ATT_GRADE_BONUS, // 97
  1464. POINT_MAGIC_DEF_GRADE_BONUS, // 98
  1465. POINT_RESIST_NORMAL_DAMAGE, // 99
  1466. POINT_STAT_RESET_COUNT = 112,
  1467. POINT_HORSE_SKILL = 113,
  1468. POINT_MALL_ATTBONUS, // 114 °ø°İ·Â +x%
  1469. POINT_MALL_DEFBONUS, // 115 ¹æ¾î·Â +x%
  1470. POINT_MALL_EXPBONUS, // 116 °æÇèÄ¡ +x%
  1471. POINT_MALL_ITEMBONUS, // 117 ¾ÆÀÌÅÛ µå·ÓÀ² x/10¹è
  1472. POINT_MALL_GOLDBONUS, // 118 µ· µå·ÓÀ² x/10¹è
  1473. POINT_MAX_HP_PCT, // 119 ÃÖ´ë»ı¸í·Â +x%
  1474. POINT_MAX_SP_PCT, // 120 ÃÖ´ëÁ¤½Å·Â +x%
  1475. POINT_SKILL_DAMAGE_BONUS, // 121 ½ºÅ³ µ¥¹ÌÁö *(100+x)%
  1476. POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 ÆòŸ µ¥¹ÌÁö *(100+x)%
  1477. POINT_SKILL_DEFEND_BONUS, // 123 ½ºÅ³ ¹æ¾î µ¥¹ÌÁö
  1478. POINT_NORMAL_HIT_DEFEND_BONUS, // 124 ÆòŸ ¹æ¾î µ¥¹ÌÁö
  1479. POINT_PC_BANG_EXP_BONUS, // 125
  1480. POINT_PC_BANG_DROP_BONUS, // 126 PC¹æ Àü¿ë µå·Ó·ü º¸³Ê½º
  1481. POINT_ENERGY = 128, // 128 ±â·Â
  1482. // ±â·Â ui ¿ë.
  1483. // ÀÌ·¸°Ô ÇÏ°í ½ÍÁö ¾Ê¾ÒÁö¸¸,
  1484. // uiTaskBar¿¡¼­´Â affect¿¡ Á¢±ÙÇÒ ¼ö ¾ø°í,
  1485. // ´õ±¸³ª Ŭ¶ó¸®¾ğÆ®¿¡¼­´Â blend_affect´Â °ü¸®ÇÏÁö ¾Ê¾Æ,
  1486. // Àӽ÷ΠÀÌ·¸°Ô µĞ´Ù.
  1487. POINT_ENERGY_END_TIME = 129, // 129 ±â·Â Á¾·á ½Ã°£
  1488. // Ŭ¶óÀÌ¾ğÆ® Æ÷ÀÎÆ®
  1489. POINT_MIN_WEP = 200,
  1490. POINT_MAX_WEP,
  1491. POINT_MIN_MAGIC_WEP,
  1492. POINT_MAX_MAGIC_WEP,
  1493. POINT_HIT_RATE,
  1494. //POINT_MAX_NUM = 255,=>stdafx.h ·Î/
  1495. };
  1496. typedef struct packet_points
  1497. {
  1498. BYTE header;
  1499. long points[POINT_MAX_NUM];
  1500. } TPacketGCPoints;
  1501. typedef struct packet_point_change
  1502. {
  1503. int header;
  1504. DWORD dwVID;
  1505. BYTE Type;
  1506. long amount; // ¹Ù²ï °ª
  1507. long value; // ÇöÀç °ª
  1508. } TPacketGCPointChange;
  1509. typedef struct packet_motion
  1510. {
  1511. BYTE header;
  1512. DWORD vid;
  1513. DWORD victim_vid;
  1514. WORD motion;
  1515. } TPacketGCMotion;
  1516. #if defined(GAIDEN)
  1517. struct TPacketGCItemDelDeprecate
  1518. {
  1519. TPacketGCItemDelDeprecate() :
  1520. header(HEADER_GC_ITEM_DEL),
  1521. pos(0),
  1522. vnum(0),
  1523. count(0)
  1524. {
  1525. memset(&alSockets, 0, sizeof(alSockets));
  1526. memset(&aAttr, 0, sizeof(aAttr));
  1527. }
  1528. BYTE header;
  1529. BYTE pos;
  1530. DWORD vnum;
  1531. BYTE count;
  1532. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1533. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1534. };
  1535. typedef struct packet_set_item
  1536. {
  1537. BYTE header;
  1538. BYTE pos;
  1539. DWORD vnum;
  1540. BYTE count;
  1541. DWORD flags; // Ç÷¡±× Ãß°¡
  1542. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1543. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1544. } TPacketGCItemSet;
  1545. typedef struct packet_item_del
  1546. {
  1547. BYTE header;
  1548. BYTE pos;
  1549. } TPacketGCItemDel;
  1550. #else
  1551. typedef struct packet_set_item
  1552. {
  1553. BYTE header;
  1554. TItemPos Cell;
  1555. DWORD vnum;
  1556. BYTE count;
  1557. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1558. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1559. } TPacketGCItemSet;
  1560. typedef struct packet_set_item2
  1561. {
  1562. BYTE header;
  1563. TItemPos Cell;
  1564. DWORD vnum;
  1565. BYTE count;
  1566. DWORD flags; // Ç÷¡±× Ãß°¡
  1567. DWORD anti_flags; // Ç÷¡±× Ãß°¡
  1568. bool highlight;
  1569. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1570. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1571. } TPacketGCItemSet2;
  1572. #endif
  1573. typedef struct packet_item_del
  1574. {
  1575. BYTE header;
  1576. BYTE pos;
  1577. } TPacketGCItemDel;
  1578. typedef struct packet_use_item
  1579. {
  1580. BYTE header;
  1581. TItemPos Cell;
  1582. DWORD ch_vid;
  1583. DWORD victim_vid;
  1584. DWORD vnum;
  1585. } TPacketGCItemUse;
  1586. typedef struct packet_update_item
  1587. {
  1588. BYTE header;
  1589. TItemPos Cell;
  1590. BYTE count;
  1591. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1592. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1593. } TPacketGCItemUpdate;
  1594. typedef struct packet_ground_add_item
  1595. {
  1596. BYTE bHeader;
  1597. long lX;
  1598. long lY;
  1599. long lZ;
  1600. DWORD dwVID;
  1601. DWORD dwVnum;
  1602. } TPacketGCItemGroundAdd;
  1603. typedef struct packet_ground_del_item
  1604. {
  1605. BYTE header;
  1606. DWORD vid;
  1607. } TPacketGCItemGroundDel;
  1608. typedef struct packet_item_ownership
  1609. {
  1610. BYTE bHeader;
  1611. DWORD dwVID;
  1612. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1613. } TPacketGCItemOwnership;
  1614. typedef struct packet_quickslot_add
  1615. {
  1616. BYTE header;
  1617. BYTE pos;
  1618. TQuickSlot slot;
  1619. } TPacketGCQuickSlotAdd;
  1620. typedef struct packet_quickslot_del
  1621. {
  1622. BYTE header;
  1623. BYTE pos;
  1624. } TPacketGCQuickSlotDel;
  1625. typedef struct packet_quickslot_swap
  1626. {
  1627. BYTE header;
  1628. BYTE pos;
  1629. BYTE change_pos;
  1630. } TPacketGCQuickSlotSwap;
  1631. typedef struct packet_shop_start
  1632. {
  1633. struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1634. } TPacketGCShopStart;
  1635. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  1636. typedef struct packet_offline_shop_start
  1637. {
  1638. struct packet_offline_shop_item items[OFFLINE_SHOP_HOST_ITEM_MAX_NUM];
  1639. DWORD m_dwDisplayedCount;
  1640. } TPacketGCOfflineShopStart;
  1641. typedef struct packet_offline_shop_start_p2p
  1642. {
  1643. BYTE header;
  1644. DWORD owner_vid;
  1645. struct packet_offline_shop_item items[OFFLINE_SHOP_HOST_ITEM_MAX_NUM];
  1646. DWORD m_dwDisplayedCount;
  1647. packet_offline_shop_start_p2p() : owner_vid(0), m_dwDisplayedCount(0)
  1648. {
  1649. memset(&items, 0, sizeof(items));
  1650. };
  1651. } TPacketGCOfflineShopStartP2P;
  1652. /*Usado para abrir o painel do utilizador
  1653. */
  1654. typedef struct SPacketGCOpenOffShopPanel
  1655. {
  1656. BYTE bHeader;
  1657. BYTE hasOfflineShop;
  1658. long lMapIndex;
  1659. BYTE shopChannel;
  1660. int iTime;
  1661. BYTE isPremium;
  1662. DWORD displayedCount;
  1663. char shopName[SHOP_SIGN_MAX_LEN + 1];
  1664. } TPacketGCOpenOffShopPanel;
  1665. #endif
  1666. typedef struct packet_shop_start_ex // ´ÙÀ½¿¡ TSubPacketShopTab* shop_tabs ÀÌ µû¶ó¿È.
  1667. {
  1668. typedef struct sub_packet_shop_tab
  1669. {
  1670. char name[SHOP_TAB_NAME_MAX];
  1671. BYTE coin_type;
  1672. packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1673. } TSubPacketShopTab;
  1674. DWORD owner_vid;
  1675. BYTE shop_tab_count;
  1676. } TPacketGCShopStartEx;
  1677. typedef struct packet_shop_update_item
  1678. {
  1679. BYTE pos;
  1680. struct packet_shop_item item;
  1681. } TPacketGCShopUpdateItem;
  1682. #if defined(__BL_MOVE_COSTUME_ATTR__)
  1683. typedef struct packet_cg_item_combination
  1684. {
  1685. BYTE Header;
  1686. short MediumIndex;
  1687. short BaseIndex;
  1688. short MaterialIndex;
  1689. } TPacketCGItemCombination;
  1690. typedef struct packet_cg_item_combination_cancel
  1691. {
  1692. BYTE Header;
  1693. } TPacketCGItemCombinationCancel;
  1694. #endif
  1695. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  1696. typedef struct packet_offline_shop_update_item
  1697. {
  1698. BYTE pos;
  1699. struct packet_offline_shop_item item;
  1700. } TPacketGCOfflineShopUpdateItem;
  1701. typedef struct packet_offline_shop_money
  1702. {
  1703. long long llMoney;
  1704. #ifdef ENABLE_CHEQUE_SYSTEM
  1705. DWORD dwCheque;
  1706. #endif
  1707. } TPacketGCOfflineShopMoney;
  1708. #endif
  1709. typedef struct packet_shop_update_price
  1710. {
  1711. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  1712. BYTE bPos;
  1713. DWORD dwShopVid;
  1714. #endif
  1715. long long iPrice;
  1716. int iElkAmount;
  1717. } TPacketGCShopUpdatePrice;
  1718. enum EPacketShopSubHeaders
  1719. {
  1720. SHOP_SUBHEADER_GC_START,
  1721. SHOP_SUBHEADER_GC_END,
  1722. SHOP_SUBHEADER_GC_UPDATE_ITEM,
  1723. SHOP_SUBHEADER_GC_UPDATE_PRICE,
  1724. SHOP_SUBHEADER_GC_OK,
  1725. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  1726. SHOP_SUBHEADER_GC_SOLDOUT,
  1727. SHOP_SUBHEADER_GC_INVENTORY_FULL,
  1728. SHOP_SUBHEADER_GC_INVALID_POS,
  1729. SHOP_SUBHEADER_GC_SOLD_OUT,
  1730. SHOP_SUBHEADER_GC_START_EX,
  1731. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  1732. #ifdef ENABLE_OFFLINE_SHOP_SYSTEM
  1733. SHOP_SUBHEADER_GC_UPDATE_ITEM2,
  1734. SHOP_SUBHEADER_GC_REFRESH_MONEY,
  1735. SHOP_SUBHEADER_GC_CHECK_RESULT,
  1736. #endif
  1737. SHOP_SUBHEADER_GC_BUY_FROM_OWNSHOP,
  1738. SHOP_SUBHEADER_GC_REMOVED_FROM_SHOP,
  1739. SHOP_SUBHEADER_GC_PRICE_CHANGED,
  1740. SHOP_SUBHEADER_GC_YOU_ALREADY_HAVE_ONE,
  1741. SHOP_SUBHEADER_GC_YOU_DONT_HAVE_DS,
  1742. };
  1743. typedef struct packet_shop
  1744. {
  1745. BYTE header;
  1746. WORD size;
  1747. BYTE subheader;
  1748. } TPacketGCShop;
  1749. typedef struct packet_exchange
  1750. {
  1751. BYTE header;
  1752. BYTE subheader;
  1753. BYTE is_me;
  1754. DWORD arg1;
  1755. TItemPos arg2;
  1756. DWORD arg3;
  1757. #ifdef WJ_ENABLE_TRADABLE_ICON
  1758. TItemPos arg4;
  1759. #endif
  1760. long alValues[ITEM_SOCKET_SLOT_MAX_NUM];
  1761. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1762. } TPacketGCExchange;
  1763. enum
  1764. {
  1765. EXCHANGE_SUBHEADER_GC_START, // arg1 == vid
  1766. EXCHANGE_SUBHEADER_GC_ITEM_ADD, // arg1 == vnum arg2 == pos arg3 == count
  1767. EXCHANGE_SUBHEADER_GC_ITEM_DEL, // arg1 == pos
  1768. EXCHANGE_SUBHEADER_GC_ELK_ADD, // arg1 == elk
  1769. EXCHANGE_SUBHEADER_GC_ACCEPT, // arg1 == accept
  1770. EXCHANGE_SUBHEADER_GC_END, // arg1 == not used
  1771. EXCHANGE_SUBHEADER_GC_ALREADY, // arg1 == not used
  1772. EXCHANGE_SUBHEADER_GC_LESS_ELK, // arg1 == not used
  1773. };
  1774. typedef struct packet_position
  1775. {
  1776. BYTE header;
  1777. DWORD vid;
  1778. BYTE position;
  1779. } TPacketGCPosition;
  1780. typedef struct packet_ping
  1781. {
  1782. BYTE header;
  1783. } TPacketGCPing;
  1784. typedef struct packet_pong
  1785. {
  1786. BYTE bHeader;
  1787. } TPacketCGPong;
  1788. typedef struct packet_script
  1789. {
  1790. BYTE header;
  1791. WORD size;
  1792. BYTE skin;
  1793. WORD src_size;
  1794. } TPacketGCScript;
  1795. typedef struct packet_target
  1796. {
  1797. BYTE header;
  1798. DWORD dwVID;
  1799. BYTE bHPPercent;
  1800. } TPacketGCTarget;
  1801. #ifdef ENABLE_SEND_TARGET_INFO
  1802. typedef struct packet_target_info
  1803. {
  1804. BYTE header;
  1805. DWORD dwVID;
  1806. DWORD race;
  1807. DWORD dwVnum;
  1808. BYTE count;
  1809. } TPacketGCTargetInfo;
  1810. typedef struct packet_target_info_load
  1811. {
  1812. BYTE header;
  1813. DWORD dwVID;
  1814. } TPacketCGTargetInfoLoad;
  1815. #endif
  1816. typedef struct packet_damage_info
  1817. {
  1818. BYTE header;
  1819. DWORD dwVID;
  1820. BYTE flag;
  1821. int damage;
  1822. } TPacketGCDamageInfo;
  1823. typedef struct packet_mount
  1824. {
  1825. BYTE header;
  1826. DWORD vid;
  1827. DWORD mount_vid;
  1828. BYTE pos;
  1829. DWORD _x, _y;
  1830. } TPacketGCMount;
  1831. typedef struct packet_change_speed
  1832. {
  1833. BYTE header;
  1834. DWORD vid;
  1835. WORD moving_speed;
  1836. } TPacketGCChangeSpeed;
  1837. typedef struct packet_move
  1838. {
  1839. BYTE bHeader;
  1840. BYTE bFunc;
  1841. BYTE bArg;
  1842. BYTE bRot;
  1843. DWORD dwVID;
  1844. LONG lX;
  1845. LONG lY;
  1846. DWORD dwTime;
  1847. DWORD dwDuration;
  1848. } TPacketGCMove;
  1849. enum
  1850. {
  1851. QUEST_SEND_IS_BEGIN = 1 << 0,
  1852. QUEST_SEND_TITLE = 1 << 1, // 28ÀÚ ±îÁö
  1853. QUEST_SEND_CLOCK_NAME = 1 << 2, // 16ÀÚ ±îÁö
  1854. QUEST_SEND_CLOCK_VALUE = 1 << 3,
  1855. QUEST_SEND_COUNTER_NAME = 1 << 4, // 16ÀÚ ±îÁö
  1856. QUEST_SEND_COUNTER_VALUE = 1 << 5,
  1857. QUEST_SEND_ICON_FILE = 1 << 6, // 24ÀÚ ±îÁö
  1858. };
  1859. typedef struct packet_quest_info
  1860. {
  1861. BYTE header;
  1862. WORD size;
  1863. WORD index;
  1864. BYTE flag;
  1865. char szTitle[30 + 1];
  1866. BYTE isBegin;
  1867. char szClockName[16 + 1];
  1868. int iClockValue;
  1869. char szCounterName[16 + 1];
  1870. int iCounterValue;
  1871. char szIconFileName[24 + 1];
  1872. } TPacketGCQuestInfo;
  1873. typedef struct packet_quest_confirm
  1874. {
  1875. BYTE header;
  1876. char msg[64+1];
  1877. long timeout;
  1878. DWORD requestPID;
  1879. } TPacketGCQuestConfirm;
  1880. typedef struct packet_attack
  1881. {
  1882. BYTE header;
  1883. DWORD dwVID;
  1884. DWORD dwVictimVID; // Àû VID
  1885. BYTE bType; // °ø°İ À¯Çü
  1886. } TPacketGCAttack;
  1887. typedef struct packet_c2c
  1888. {
  1889. BYTE header;
  1890. WORD wSize;
  1891. } TPacketGCC2C;
  1892. typedef struct packetd_sync_position_element
  1893. {
  1894. DWORD dwVID;
  1895. long lX;
  1896. long lY;
  1897. } TPacketGCSyncPositionElement;
  1898. typedef struct packetd_sync_position
  1899. {
  1900. BYTE bHeader;
  1901. WORD wSize;
  1902. } TPacketGCSyncPosition;
  1903. typedef struct packet_ownership
  1904. {
  1905. BYTE bHeader;
  1906. DWORD dwOwnerVID;
  1907. DWORD dwVictimVID;
  1908. } TPacketGCOwnership;
  1909. #define SKILL_MAX_NUM 255
  1910. typedef struct packet_skill_level
  1911. {
  1912. BYTE bHeader;
  1913. BYTE abSkillLevels[SKILL_MAX_NUM];
  1914. } TPacketGCSkillLevel;
  1915. typedef struct SPlayerSkill
  1916. {
  1917. BYTE bMasterType;
  1918. BYTE bLevel;
  1919. time_t tNextRead;
  1920. } TPlayerSkill;
  1921. typedef struct packet_skill_level_new
  1922. {
  1923. BYTE bHeader;
  1924. TPlayerSkill skills[SKILL_MAX_NUM];
  1925. } TPacketGCSkillLevelNew;
  1926. // fly
  1927. typedef struct packet_fly
  1928. {
  1929. BYTE bHeader;
  1930. BYTE bType;
  1931. DWORD dwStartVID;
  1932. DWORD dwEndVID;
  1933. } TPacketGCCreateFly;
  1934. enum EPVPModes
  1935. {
  1936. PVP_MODE_NONE,
  1937. PVP_MODE_AGREE,
  1938. PVP_MODE_FIGHT,
  1939. PVP_MODE_REVENGE,
  1940. };
  1941. typedef struct packet_duel_start
  1942. {
  1943. BYTE header ;
  1944. WORD wSize ; // DWORD°¡ ¸î°³? °³¼ö = (wSize - sizeof(TPacketGCPVPList)) / 4
  1945. } TPacketGCDuelStart ;
  1946. typedef struct packet_pvp
  1947. {
  1948. BYTE header;
  1949. DWORD dwVIDSrc;
  1950. DWORD dwVIDDst;
  1951. BYTE bMode;
  1952. } TPacketGCPVP;
  1953. typedef struct packet_skill_cooltime_end
  1954. {
  1955. BYTE header;
  1956. BYTE bSkill;
  1957. } TPacketGCSkillCoolTimeEnd;
  1958. typedef struct packet_warp
  1959. {
  1960. BYTE bHeader;
  1961. LONG lX;
  1962. LONG lY;
  1963. LONG lAddr;
  1964. WORD wPort;
  1965. } TPacketGCWarp;
  1966. typedef struct packet_party_invite
  1967. {
  1968. BYTE header;
  1969. DWORD leader_pid;
  1970. } TPacketGCPartyInvite;
  1971. typedef struct packet_party_add
  1972. {
  1973. BYTE header;
  1974. DWORD pid;
  1975. char name[CHARACTER_NAME_MAX_LEN+1];
  1976. } TPacketGCPartyAdd;
  1977. typedef struct packet_party_update
  1978. {
  1979. BYTE header;
  1980. DWORD pid;
  1981. BYTE state;
  1982. BYTE percent_hp;
  1983. short affects[PARTY_AFFECT_SLOT_MAX_NUM];
  1984. } TPacketGCPartyUpdate;
  1985. typedef struct packet_party_remove
  1986. {
  1987. BYTE header;
  1988. DWORD pid;
  1989. } TPacketGCPartyRemove;
  1990. typedef TPacketCGSafeboxCheckout TPacketGCSafeboxCheckout;
  1991. typedef TPacketCGSafeboxCheckin TPacketGCSafeboxCheckin;
  1992. typedef struct packet_safebox_wrong_password
  1993. {
  1994. BYTE bHeader;
  1995. } TPacketGCSafeboxWrongPassword;
  1996. typedef struct packet_safebox_size
  1997. {
  1998. BYTE bHeader;
  1999. BYTE bSize;
  2000. } TPacketGCSafeboxSize;
  2001. typedef struct packet_safebox_money_change
  2002. {
  2003. BYTE bHeader;
  2004. DWORD dwMoney;
  2005. } TPacketGCSafeboxMoneyChange;
  2006. typedef struct command_empire
  2007. {
  2008. BYTE bHeader;
  2009. BYTE bEmpire;
  2010. } TPacketCGEmpire;
  2011. typedef struct packet_empire
  2012. {
  2013. BYTE bHeader;
  2014. BYTE bEmpire;
  2015. } TPacketGCEmpire;
  2016. enum
  2017. {
  2018. FISHING_SUBHEADER_GC_START,
  2019. FISHING_SUBHEADER_GC_STOP,
  2020. FISHING_SUBHEADER_GC_REACT,
  2021. FISHING_SUBHEADER_GC_SUCCESS,
  2022. FISHING_SUBHEADER_GC_FAIL,
  2023. FISHING_SUBHEADER_GC_FISH,
  2024. };
  2025. typedef struct packet_fishing
  2026. {
  2027. BYTE header;
  2028. BYTE subheader;
  2029. DWORD info;
  2030. BYTE dir;
  2031. } TPacketGCFishing;
  2032. typedef struct paryt_parameter
  2033. {
  2034. BYTE bHeader;
  2035. BYTE bDistributeMode;
  2036. } TPacketGCPartyParameter;
  2037. //////////////////////////////////////////////////////////////////////////
  2038. // Guild
  2039. enum
  2040. {
  2041. GUILD_SUBHEADER_GC_LOGIN,
  2042. GUILD_SUBHEADER_GC_LOGOUT,
  2043. GUILD_SUBHEADER_GC_LIST,
  2044. GUILD_SUBHEADER_GC_GRADE,
  2045. GUILD_SUBHEADER_GC_ADD,
  2046. GUILD_SUBHEADER_GC_REMOVE,
  2047. GUILD_SUBHEADER_GC_GRADE_NAME,
  2048. GUILD_SUBHEADER_GC_GRADE_AUTH,
  2049. GUILD_SUBHEADER_GC_INFO,
  2050. GUILD_SUBHEADER_GC_COMMENTS,
  2051. GUILD_SUBHEADER_GC_CHANGE_EXP,
  2052. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  2053. GUILD_SUBHEADER_GC_SKILL_INFO,
  2054. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  2055. GUILD_SUBHEADER_GC_GUILD_INVITE,
  2056. GUILD_SUBHEADER_GC_WAR,
  2057. GUILD_SUBHEADER_GC_GUILD_NAME,
  2058. GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  2059. GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  2060. GUILD_SUBHEADER_GC_WAR_POINT,
  2061. GUILD_SUBHEADER_GC_MONEY_CHANGE,
  2062. };
  2063. typedef struct packet_guild
  2064. {
  2065. BYTE header;
  2066. WORD size;
  2067. BYTE subheader;
  2068. } TPacketGCGuild;
  2069. // SubHeader - Grade
  2070. enum
  2071. {
  2072. GUILD_AUTH_ADD_MEMBER = (1 << 0),
  2073. GUILD_AUTH_REMOVE_MEMBER = (1 << 1),
  2074. GUILD_AUTH_NOTICE = (1 << 2),
  2075. GUILD_AUTH_SKILL = (1 << 3),
  2076. GUILD_AUTH_WAR = (1 << 4),
  2077. };
  2078. typedef struct packet_guild_sub_grade
  2079. {
  2080. char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 ±æµåÀå, ±æµå¿ø µîÀÇ À̸§
  2081. BYTE auth_flag;
  2082. } TPacketGCGuildSubGrade;
  2083. typedef struct packet_guild_sub_member
  2084. {
  2085. DWORD pid;
  2086. BYTE byGrade;
  2087. BYTE byIsGeneral;
  2088. BYTE byJob;
  2089. BYTE byLevel;
  2090. DWORD dwOffer;
  2091. BYTE byNameFlag;
  2092. // if NameFlag is TRUE, name is sent from server.
  2093. // char szName[CHARACTER_ME_MAX_LEN+1];
  2094. } TPacketGCGuildSubMember;
  2095. typedef struct packet_guild_sub_info
  2096. {
  2097. WORD member_count;
  2098. WORD max_member_count;
  2099. DWORD guild_id;
  2100. DWORD master_pid;
  2101. DWORD exp;
  2102. BYTE level;
  2103. char name[GUILD_NAME_MAX_LEN+1];
  2104. DWORD gold;
  2105. BYTE hasLand;
  2106. } TPacketGCGuildInfo;
  2107. enum EGuildWarState
  2108. {
  2109. GUILD_WAR_NONE,
  2110. GUILD_WAR_SEND_DECLARE,
  2111. GUILD_WAR_REFUSE,
  2112. GUILD_WAR_RECV_DECLARE,
  2113. GUILD_WAR_WAIT_START,
  2114. GUILD_WAR_CANCEL,
  2115. GUILD_WAR_ON_WAR,
  2116. GUILD_WAR_END,
  2117. GUILD_WAR_DURATION = 2*60*60, // 2½Ã°£
  2118. };
  2119. typedef struct packet_guild_war
  2120. {
  2121. DWORD dwGuildSelf;
  2122. DWORD dwGuildOpp;
  2123. BYTE bType;
  2124. int bScore;
  2125. BYTE bMinLevel;
  2126. BYTE bMaxPlayer;
  2127. BYTE bBinekkullanimi;
  2128. BYTE bWarState;
  2129. } TPacketGCGuildWar;
  2130. typedef struct SPacketGuildWarPoint
  2131. {
  2132. DWORD dwGainGuildID;
  2133. DWORD dwOpponentGuildID;
  2134. long lPoint;
  2135. } TPacketGuildWarPoint;
  2136. // SubHeader - Dungeon
  2137. enum
  2138. {
  2139. DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  2140. DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  2141. };
  2142. typedef struct packet_dungeon
  2143. {
  2144. BYTE bHeader;
  2145. WORD size;
  2146. BYTE subheader;
  2147. } TPacketGCDungeon;
  2148. // Private Shop
  2149. typedef struct SPacketGCShopSign
  2150. {
  2151. BYTE bHeader;
  2152. DWORD dwVID;
  2153. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2154. BYTE bBorderStyle;
  2155. SPacketGCShopSign() : bBorderStyle(0) {};
  2156. } TPacketGCShopSign;
  2157. typedef struct SPacketGCTime
  2158. {
  2159. BYTE bHeader;
  2160. time_t time;
  2161. } TPacketGCTime;
  2162. enum
  2163. {
  2164. WALKMODE_RUN,
  2165. WALKMODE_WALK,
  2166. };
  2167. typedef struct SPacketGCWalkMode
  2168. {
  2169. BYTE header;
  2170. DWORD vid;
  2171. BYTE mode;
  2172. } TPacketGCWalkMode;
  2173. typedef struct SPacketGCChangeSkillGroup
  2174. {
  2175. BYTE header;
  2176. BYTE skill_group;
  2177. } TPacketGCChangeSkillGroup;
  2178. struct TMaterial
  2179. {
  2180. DWORD vnum;
  2181. DWORD count;
  2182. };
  2183. typedef struct SRefineTable
  2184. {
  2185. DWORD src_vnum;
  2186. DWORD result_vnum;
  2187. BYTE material_count;
  2188. int cost; // ¼Ò¿ä ºñ¿ë
  2189. int prob; // È®·ü
  2190. TMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2191. } TRefineTable;
  2192. typedef struct SPacketGCRefineInformation
  2193. {
  2194. BYTE header;
  2195. BYTE pos;
  2196. TRefineTable refine_table;
  2197. } TPacketGCRefineInformation;
  2198. typedef struct SPacketGCRefineInformationNew
  2199. {
  2200. BYTE header;
  2201. BYTE type;
  2202. BYTE pos;
  2203. TRefineTable refine_table;
  2204. } TPacketGCRefineInformationNew;
  2205. enum SPECIAL_EFFECT
  2206. {
  2207. SE_NONE,
  2208. SE_HPUP_RED,
  2209. SE_SPUP_BLUE,
  2210. SE_SPEEDUP_GREEN,
  2211. SE_DXUP_PURPLE,
  2212. SE_CRITICAL,
  2213. SE_PENETRATE,
  2214. SE_BLOCK,
  2215. SE_DODGE,
  2216. SE_CHINA_FIREWORK,
  2217. SE_SPIN_TOP,
  2218. SE_SUCCESS,
  2219. SE_FAIL,
  2220. SE_FR_SUCCESS,
  2221. SE_LEVELUP_ON_14_FOR_GERMANY, //·¹º§¾÷ 14À϶§ ( µ¶ÀÏÀü¿ë )
  2222. SE_LEVELUP_UNDER_15_FOR_GERMANY,//·¹º§¾÷ 15À϶§ ( µ¶ÀÏÀü¿ë )
  2223. SE_PERCENT_DAMAGE1,
  2224. SE_PERCENT_DAMAGE2,
  2225. SE_PERCENT_DAMAGE3,
  2226. SE_AUTO_HPUP,
  2227. SE_AUTO_SPUP,
  2228. SE_EQUIP_RAMADAN_RING, // Ãʽ´ŞÀÇ ¹İÁö¸¦ Âø¿ëÇÏ´Â ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2229. SE_EQUIP_HALLOWEEN_CANDY, // ÇÒ·ÎÀ© »çÅÁÀ» Âø¿ë(-_-;)ÇÑ ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2230. SE_EQUIP_HAPPINESS_RING, // Å©¸®½º¸¶½º ÇູÀÇ ¹İÁö¸¦ Âø¿ëÇÏ´Â ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2231. SE_EQUIP_LOVE_PENDANT, // ¹ß·»Å¸ÀÎ »ç¶ûÀÇ ÆÒ´øÆ®(71145) Âø¿ëÇÒ ¶§ ÀÌÆåÆ® (¹ßµ¿ÀÌÆåÆ®ÀÓ, Áö¼ÓÀÌÆåÆ® ¾Æ´Ô)
  2232. #ifdef ENABLE_SASH_SYSTEM
  2233. SE_EFFECT_SASH_SUCCEDED,
  2234. SE_EFFECT_SASH_EQUIP,
  2235. #endif
  2236. SE_EQUIP_WILL_RING,
  2237. SE_EQUIP_DEADLY_RING,
  2238. SE_EQUIP_HERO_MEDAL,
  2239. SE_EQUIP_BLUE_CANDY,
  2240. SE_EQUIP_GREEN_CANDY,
  2241. SE_EQUIP_YELLOW_CANDY,
  2242. SE_EQUIP_CHOCOLATE_PENDANT,
  2243. SE_EQUIP_EVIL_PENDANT,
  2244. SE_EQUIP_GUARD_PENDANT,
  2245. };
  2246. typedef struct SPacketGCSpecialEffect
  2247. {
  2248. BYTE header;
  2249. BYTE type;
  2250. DWORD vid;
  2251. } TPacketGCSpecialEffect;
  2252. typedef struct SPacketGCNPCPosition
  2253. {
  2254. BYTE header;
  2255. WORD size;
  2256. WORD count;
  2257. } TPacketGCNPCPosition;
  2258. struct TNPCPosition
  2259. {
  2260. BYTE bType;
  2261. char name[CHARACTER_NAME_MAX_LEN+1];
  2262. long x;
  2263. long y;
  2264. };
  2265. typedef struct SPacketGCChangeName
  2266. {
  2267. BYTE header;
  2268. DWORD pid;
  2269. char name[CHARACTER_NAME_MAX_LEN+1];
  2270. } TPacketGCChangeName;
  2271. enum EBlockAction
  2272. {
  2273. BLOCK_EXCHANGE = (1 << 0),
  2274. BLOCK_PARTY_INVITE = (1 << 1),
  2275. BLOCK_GUILD_INVITE = (1 << 2),
  2276. BLOCK_WHISPER = (1 << 3),
  2277. BLOCK_MESSENGER_INVITE = (1 << 4),
  2278. BLOCK_PARTY_REQUEST = (1 << 5),
  2279. };
  2280. typedef struct packet_china_matrixd_card
  2281. {
  2282. BYTE bHeader;
  2283. DWORD dwRows;
  2284. DWORD dwCols;
  2285. } TPacketGCChinaMatrixCard;
  2286. typedef struct packet_runup_matrixd_quiz
  2287. {
  2288. BYTE bHeader;
  2289. char szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2290. } TPacketGCRunupMatrixQuiz;
  2291. typedef struct packet_newcibn_passpod_request
  2292. {
  2293. BYTE bHeader;
  2294. } TPacketGCNEWCIBNPasspodRequest;
  2295. typedef struct packet_newcibn_passpod_failure
  2296. {
  2297. BYTE bHeader;
  2298. char szMessage[NEWCIBN_PASSPOD_FAILURE_MAX_LEN + 1];
  2299. } TPacketGCNEWCIBNPasspodFailure;
  2300. typedef struct packet_login_key
  2301. {
  2302. BYTE bHeader;
  2303. DWORD dwLoginKey;
  2304. } TPacketGCLoginKey;
  2305. typedef struct packet_auth_success
  2306. {
  2307. BYTE bHeader;
  2308. DWORD dwLoginKey;
  2309. BYTE bResult;
  2310. } TPacketGCAuthSuccess;
  2311. typedef struct packet_auth_success_openid
  2312. {
  2313. BYTE bHeader;
  2314. DWORD dwLoginKey;
  2315. BYTE bResult;
  2316. char login[ID_MAX_NUM + 1];
  2317. } TPacketGCAuthSuccessOpenID;
  2318. typedef struct packet_channel
  2319. {
  2320. BYTE header;
  2321. BYTE channel;
  2322. } TPacketGCChannel;
  2323. typedef struct SEquipmentItemSet
  2324. {
  2325. DWORD vnum;
  2326. BYTE count;
  2327. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  2328. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  2329. } TEquipmentItemSet;
  2330. typedef struct pakcet_view_equip
  2331. {
  2332. BYTE header;
  2333. DWORD dwVID;
  2334. TEquipmentItemSet equips[WEAR_MAX_NUM];
  2335. } TPacketGCViewEquip;
  2336. typedef struct
  2337. {
  2338. DWORD dwID;
  2339. long x, y;
  2340. long width, height;
  2341. DWORD dwGuildID;
  2342. } TLandPacketElement;
  2343. typedef struct packet_land_list
  2344. {
  2345. BYTE header;
  2346. WORD size;
  2347. } TPacketGCLandList;
  2348. typedef struct
  2349. {
  2350. BYTE bHeader;
  2351. long lID;
  2352. char szTargetName[32+1];
  2353. } TPacketGCTargetCreate;
  2354. enum
  2355. {
  2356. CREATE_TARGET_TYPE_NONE,
  2357. CREATE_TARGET_TYPE_LOCATION,
  2358. CREATE_TARGET_TYPE_CHARACTER,
  2359. };
  2360. typedef struct
  2361. {
  2362. BYTE bHeader;
  2363. long lID;
  2364. char szTargetName[32+1];
  2365. DWORD dwVID;
  2366. BYTE byType;
  2367. } TPacketGCTargetCreateNew;
  2368. typedef struct
  2369. {
  2370. BYTE bHeader;
  2371. long lID;
  2372. long lX, lY;
  2373. } TPacketGCTargetUpdate;
  2374. typedef struct
  2375. {
  2376. BYTE bHeader;
  2377. long lID;
  2378. } TPacketGCTargetDelete;
  2379. typedef struct
  2380. {
  2381. DWORD dwType;
  2382. BYTE bPointIdxApplyOn;
  2383. long lApplyValue;
  2384. DWORD dwFlag;
  2385. long lDuration;
  2386. long lSPCost;
  2387. } TPacketAffectElement;
  2388. typedef struct
  2389. {
  2390. BYTE bHeader;
  2391. TPacketAffectElement elem;
  2392. } TPacketGCAffectAdd;
  2393. typedef struct
  2394. {
  2395. BYTE bHeader;
  2396. DWORD dwType;
  2397. BYTE bApplyOn;
  2398. } TPacketGCAffectRemove;
  2399. typedef struct packet_mall_open
  2400. {
  2401. BYTE bHeader;
  2402. BYTE bSize;
  2403. } TPacketGCMallOpen;
  2404. typedef struct packet_lover_info
  2405. {
  2406. BYTE bHeader;
  2407. char szName[CHARACTER_NAME_MAX_LEN + 1];
  2408. BYTE byLovePoint;
  2409. } TPacketGCLoverInfo;
  2410. typedef struct packet_love_point_update
  2411. {
  2412. BYTE bHeader;
  2413. BYTE byLovePoint;
  2414. } TPacketGCLovePointUpdate;
  2415. typedef struct packet_dig_motion
  2416. {
  2417. BYTE header;
  2418. DWORD vid;
  2419. DWORD target_vid;
  2420. BYTE count;
  2421. } TPacketGCDigMotion;
  2422. typedef struct SPacketGCOnTime
  2423. {
  2424. BYTE header;
  2425. int ontime; // sec
  2426. } TPacketGCOnTime;
  2427. typedef struct SPacketGCResetOnTime
  2428. {
  2429. BYTE header;
  2430. } TPacketGCResetOnTime;
  2431. typedef struct SPacketGCPanamaPack
  2432. {
  2433. BYTE bHeader;
  2434. char szPackName[256];
  2435. BYTE abIV[32];
  2436. } TPacketGCPanamaPack;
  2437. typedef struct SPacketGCHybridCryptKeys
  2438. {
  2439. private:
  2440. SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2441. public:
  2442. SPacketGCHybridCryptKeys(int iStreamSize) : iKeyStreamLen(iStreamSize)
  2443. {
  2444. m_pStream = new BYTE[iStreamSize];
  2445. }
  2446. ~SPacketGCHybridCryptKeys()
  2447. {
  2448. if( m_pStream )
  2449. {
  2450. delete[] m_pStream;
  2451. m_pStream = NULL;
  2452. }
  2453. }
  2454. static int GetFixedHeaderSize()
  2455. {
  2456. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2457. }
  2458. BYTE bHeader;
  2459. WORD wDynamicPacketSize;
  2460. int iKeyStreamLen;
  2461. BYTE* m_pStream;
  2462. } TPacketGCHybridCryptKeys;
  2463. typedef struct SPacketGCHybridSDB
  2464. {
  2465. private:
  2466. SPacketGCHybridSDB() : m_pStream(NULL) {}
  2467. public:
  2468. SPacketGCHybridSDB(int iStreamSize) : iSDBStreamLen(iStreamSize)
  2469. {
  2470. m_pStream = new BYTE[iStreamSize];
  2471. }
  2472. ~SPacketGCHybridSDB()
  2473. {
  2474. delete[] m_pStream;
  2475. m_pStream = NULL;
  2476. }
  2477. static int GetFixedHeaderSize()
  2478. {
  2479. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2480. }
  2481. BYTE bHeader;
  2482. WORD wDynamicPacketSize;
  2483. int iSDBStreamLen;
  2484. BYTE* m_pStream;
  2485. } TPacketGCHybridSDB;
  2486. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2487. // Client To Client
  2488. typedef struct packet_state
  2489. {
  2490. BYTE bHeader;
  2491. BYTE bFunc;
  2492. BYTE bArg;
  2493. BYTE bRot;
  2494. DWORD dwVID;
  2495. DWORD dwTime;
  2496. TPixelPosition kPPos;
  2497. } TPacketCCState;
  2498. //NOTE : recv/send¿¡ °øÅëÀ¸·Î »ı±è, bPacketDataÀÇ ³»¿ë¸¸ ¹Ù²ï´Ù.
  2499. typedef struct packet_xtrap_verify
  2500. {
  2501. BYTE bHeader;
  2502. BYTE bPacketData[128];
  2503. } TPacketXTrapCSVerify;
  2504. // AUTOBAN
  2505. typedef struct packet_autoban_quiz
  2506. {
  2507. BYTE bHeader;
  2508. BYTE bDuration;
  2509. BYTE bCaptcha[64*32];
  2510. char szQuiz[256];
  2511. } TPacketGCAutoBanQuiz;
  2512. // END_OF_AUTOBAN
  2513. #ifdef _IMPROVED_PACKET_ENCRYPTION_
  2514. struct TPacketKeyAgreement
  2515. {
  2516. static const int MAX_DATA_LEN = 256;
  2517. BYTE bHeader;
  2518. WORD wAgreedLength;
  2519. WORD wDataLength;
  2520. BYTE data[MAX_DATA_LEN];
  2521. };
  2522. struct TPacketKeyAgreementCompleted
  2523. {
  2524. BYTE bHeader;
  2525. BYTE data[3]; // dummy (not used)
  2526. };
  2527. #endif // _IMPROVED_PACKET_ENCRYPTION_
  2528. #ifdef __AUCTION__
  2529. // ArgumentÀÇ ¿ëµµ´Â cmd¿¡ µû¶ó ´Ù¸£´Ù.
  2530. typedef struct SPacketCGAuctionCmd
  2531. {
  2532. BYTE bHeader;
  2533. BYTE cmd;
  2534. int arg1;
  2535. int arg2;
  2536. int arg3;
  2537. int arg4;
  2538. } TPacketCGAuctionCmd;
  2539. typedef struct SPacketGCAuctionItemListPack
  2540. {
  2541. BYTE bHeader;
  2542. BYTE bNumbers;
  2543. } TPacketGCAuctionItemListPack;
  2544. #endif
  2545. typedef struct SPacketGCSpecificEffect
  2546. {
  2547. BYTE header;
  2548. DWORD vid;
  2549. char effect_file[128];
  2550. } TPacketGCSpecificEffect;
  2551. // ¿ëÈ¥¼®
  2552. enum EDragonSoulRefineWindowRefineType
  2553. {
  2554. DragonSoulRefineWindow_UPGRADE,
  2555. DragonSoulRefineWindow_IMPROVEMENT,
  2556. DragonSoulRefineWindow_REFINE,
  2557. };
  2558. enum EPacketCGDragonSoulSubHeaderType
  2559. {
  2560. DS_SUB_HEADER_OPEN,
  2561. DS_SUB_HEADER_CLOSE,
  2562. DS_SUB_HEADER_DO_UPGRADE,
  2563. DS_SUB_HEADER_DO_IMPROVEMENT,
  2564. DS_SUB_HEADER_DO_REFINE,
  2565. DS_SUB_HEADER_REFINE_FAIL,
  2566. DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2567. DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2568. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2569. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2570. DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2571. DS_SUB_HEADER_REFINE_SUCCEED,
  2572. };
  2573. typedef struct SPacketCGDragonSoulRefine
  2574. {
  2575. SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2576. {}
  2577. BYTE header;
  2578. BYTE bSubType;
  2579. TItemPos ItemGrid[DS_REFINE_WINDOW_MAX_NUM];
  2580. } TPacketCGDragonSoulRefine;
  2581. typedef struct SPacketGCDragonSoulRefine
  2582. {
  2583. SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2584. {}
  2585. BYTE header;
  2586. BYTE bSubType;
  2587. TItemPos Pos;
  2588. } TPacketGCDragonSoulRefine;
  2589. typedef struct SChannelStatus
  2590. {
  2591. short nPort;
  2592. BYTE bStatus;
  2593. } TChannelStatus;
  2594. #ifdef ENABLE_SASH_SYSTEM
  2595. enum ESashInfo
  2596. {
  2597. SASH_ABSORPTION_SOCKET = 0,
  2598. SASH_ABSORBED_SOCKET = 1,
  2599. SASH_CLEAN_ATTR_VALUE0 = 7,
  2600. SASH_WINDOW_MAX_MATERIALS = 2,
  2601. };
  2602. enum
  2603. {
  2604. HEADER_CG_SASH = 211,
  2605. HEADER_GC_SASH = 215,
  2606. SASH_SUBHEADER_GC_OPEN = 0,
  2607. SASH_SUBHEADER_GC_CLOSE,
  2608. SASH_SUBHEADER_GC_ADDED,
  2609. SASH_SUBHEADER_GC_REMOVED,
  2610. SASH_SUBHEADER_CG_REFINED,
  2611. SASH_SUBHEADER_CG_CLOSE = 0,
  2612. SASH_SUBHEADER_CG_ADD,
  2613. SASH_SUBHEADER_CG_REMOVE,
  2614. SASH_SUBHEADER_CG_REFINE,
  2615. };
  2616. typedef struct SPacketSash
  2617. {
  2618. BYTE header;
  2619. BYTE subheader;
  2620. bool bWindow;
  2621. DWORD dwPrice;
  2622. BYTE bPos;
  2623. TItemPos tPos;
  2624. DWORD dwItemVnum;
  2625. DWORD dwMinAbs;
  2626. DWORD dwMaxAbs;
  2627. } TPacketSash;
  2628. typedef struct SSashMaterial
  2629. {
  2630. BYTE bHere;
  2631. WORD wCell;
  2632. } TSashMaterial;
  2633. typedef struct SSashResult
  2634. {
  2635. DWORD dwItemVnum;
  2636. DWORD dwMinAbs;
  2637. DWORD dwMaxAbs;
  2638. } TSashResult;
  2639. #endif
  2640. #ifdef ENABLE_GUILD_RANKED_SYSTEM
  2641. typedef struct packet_guildrank_system
  2642. {
  2643. BYTE header;
  2644. char guild_name[64];
  2645. DWORD master;
  2646. DWORD win;
  2647. DWORD loss;
  2648. } TPacketGCGuildRankSystem;
  2649. #endif
  2650. #ifdef ENABLE_PvP_PvM_SYSTEM
  2651. typedef struct command_kill_statistics_packet
  2652. {
  2653. BYTE bHeader;
  2654. int Kesilen_Jinno;
  2655. int Kesilen_Shinsoo;
  2656. int Kesilen_Chunjo;
  2657. int Toplam_Oldurme;
  2658. int Toplam_Olum;
  2659. int Pvp_Oldurme;
  2660. int Pvp_Olum;
  2661. int Kesilen_Slot;
  2662. int Kesilen_Boss;
  2663. int Kesilen_Metin;
  2664. } TPacketGCKillStatistics;
  2665. #endif
  2666. #if defined(ENABLE_PRIVATE_SHOP_SEARCH_SYSTEM) || defined(ENABLE_NEW_PRIVATE_SHOP_SEARCH_SYSTEM)
  2667. typedef struct packet_priv_shop_item_set
  2668. {
  2669. BYTE header;
  2670. DWORD vid;
  2671. BYTE Cell;
  2672. long long price;
  2673. #ifdef ENABLE_CHEQUE_SYSTEM
  2674. DWORD price_cheque;
  2675. #endif
  2676. DWORD vnum;
  2677. short count;
  2678. DWORD flags;
  2679. DWORD anti_flags;
  2680. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  2681. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  2682. #ifdef __BL_TRANSMUTATION__
  2683. DWORD dwTransmutationVnum;
  2684. #endif
  2685. int shop_time;
  2686. long ch_map_index;
  2687. long off_shop_map_index;
  2688. DWORD item_id;
  2689. char sellerName[20];
  2690. } TPacketGCShopSearchItemSet;
  2691. typedef struct SPacketGCOfflineShopAdviseOwnerSell
  2692. {
  2693. BYTE bHeader;
  2694. DWORD dwOwnerPID;
  2695. DWORD itemSelled;
  2696. long long itemPrice;
  2697. char buyerName[CHARACTER_NAME_MAX_LEN + 1];
  2698. } TPacketGCOfflineShopAdviseOwnerSell;
  2699. typedef struct command_shop_search
  2700. {
  2701. BYTE header;
  2702. WORD Race;
  2703. int ItemCat;
  2704. int SubCat;
  2705. int MinLevel;
  2706. int MaxLevel;
  2707. int MinRefine;
  2708. int MaxRefine;
  2709. unsigned int MinGold;
  2710. unsigned int MaxGold;
  2711. #ifdef ENABLE_CHEQUE_SYSTEM
  2712. unsigned int MinCheque;
  2713. unsigned int MaxCheque;
  2714. #endif
  2715. char ItemName[SHOP_TAB_NAME_MAX + 1];
  2716. } TPacketCGShopSearch;
  2717. typedef struct command_shop_search_buy
  2718. {
  2719. BYTE header;
  2720. int shopVid;
  2721. BYTE shopItemPos;
  2722. int shopPos;
  2723. DWORD item_id;
  2724. long long item_price;
  2725. } TPacketCGShopSearchBuy;
  2726. #endif
  2727. #if defined(ENABLE_NEW_PRIVATE_SHOP_SEARCH_SYSTEM)
  2728. enum NewSearchShopErrors
  2729. {
  2730. NPSS_HAVE_PAGE_OPENED,
  2731. NPSS_PLEASE_WAIT,
  2732. NPSS_NEED_TO_BE_IN_EMPIRE,
  2733. NPSS_NEED_OTHER_ERROR,
  2734. };
  2735. typedef struct SPacketCGNewShopSearch
  2736. {
  2737. BYTE bHeader;
  2738. int ItemCat;
  2739. int SubCat;
  2740. char ItemName[SHOP_TAB_NAME_MAX + 1];
  2741. int minLevelValue;
  2742. int maxLevelValue;
  2743. int minDHValue;
  2744. int maxDHValue;
  2745. int minDMValue;
  2746. int maxDMValue;
  2747. int itemRefineLevel;
  2748. int acceAbsPerc;
  2749. int dsClarityValue;
  2750. int bonusChoose;
  2751. int itemGender;
  2752. int have_name;
  2753. } TPacketCGNewShopSearch;
  2754. #endif
  2755. #pragma pack(pop)

Client --> Packet.h