Advertisement
Guest User

packet client

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