Guest User

Untitled

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