Guest User

Packet serveur

a guest
Aug 7th, 2018
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.16 KB | None | 0 0
  1. #ifndef __INC_PACKET_H__
  2. #define __INC_PACKET_H__
  3.  
  4. enum
  5. {
  6. HEADER_CG_HANDSHAKE = 0xff,
  7. HEADER_CG_PONG = 0xfe,
  8. HEADER_CG_TIME_SYNC = 0xfc,
  9. HEADER_CG_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  10.  
  11. HEADER_CG_LOGIN = 1,
  12. HEADER_CG_ATTACK = 2,
  13. HEADER_CG_CHAT = 3,
  14. HEADER_CG_CHARACTER_CREATE = 4,
  15. HEADER_CG_CHARACTER_DELETE = 5,
  16. HEADER_CG_CHARACTER_SELECT = 6,
  17. HEADER_CG_MOVE = 7,
  18. HEADER_CG_SYNC_POSITION = 8,
  19. HEADER_CG_ENTERGAME = 10,
  20.  
  21. HEADER_CG_ITEM_USE = 11,
  22. HEADER_CG_ITEM_DROP = 12,
  23. HEADER_CG_ITEM_MOVE = 13,
  24. HEADER_CG_ITEM_PICKUP = 15,
  25.  
  26. HEADER_CG_QUICKSLOT_ADD = 16,
  27. HEADER_CG_QUICKSLOT_DEL = 17,
  28. HEADER_CG_QUICKSLOT_SWAP = 18,
  29. HEADER_CG_WHISPER = 19,
  30. HEADER_CG_ITEM_DROP2 = 20,
  31. HEADER_CG_ITEM_DESTROY = 21,
  32.  
  33. HEADER_CG_ON_CLICK = 26,
  34. HEADER_CG_EXCHANGE = 27,
  35. HEADER_CG_CHARACTER_POSITION = 28,
  36. HEADER_CG_SCRIPT_ANSWER = 29,
  37. HEADER_CG_QUEST_INPUT_STRING = 30,
  38. HEADER_CG_QUEST_CONFIRM = 31,
  39.  
  40. HEADER_CG_SHOP = 50,
  41. HEADER_CG_FLY_TARGETING = 51,
  42. HEADER_CG_USE_SKILL = 52,
  43. HEADER_CG_ADD_FLY_TARGETING = 53,
  44. HEADER_CG_SHOOT = 54,
  45. HEADER_CG_MYSHOP = 55,
  46.  
  47. HEADER_CG_ITEM_USE_TO_ITEM = 60,
  48. HEADER_CG_TARGET = 61,
  49.  
  50. HEADER_CG_TEXT = 64, // @ 로 시작되면 텍스트를 파싱한다.
  51. HEADER_CG_WARP = 65,
  52. HEADER_CG_SCRIPT_BUTTON = 66,
  53. HEADER_CG_MESSENGER = 67,
  54.  
  55. HEADER_CG_MALL_CHECKOUT = 69,
  56. HEADER_CG_SAFEBOX_CHECKIN = 70, // 아이템을 창고에 넣†š는다.
  57. HEADER_CG_SAFEBOX_CHECKOUT = 71, // 아이템을 창고로 부터 빼온다.
  58.  
  59. HEADER_CG_PARTY_INVITE = 72,
  60. HEADER_CG_PARTY_INVITE_ANSWER = 73,
  61. HEADER_CG_PARTY_REMOVE = 74,
  62. HEADER_CG_PARTY_SET_STATE = 75,
  63. HEADER_CG_PARTY_USE_SKILL = 76,
  64. HEADER_CG_SAFEBOX_ITEM_MOVE = 77,
  65. HEADER_CG_PARTY_PARAMETER = 78,
  66.  
  67. HEADER_CG_GUILD = 80,
  68. HEADER_CG_ANSWER_MAKE_GUILD = 81,
  69.  
  70. HEADER_CG_FISHING = 82,
  71.  
  72. HEADER_CG_ITEM_GIVE = 83,
  73.  
  74. HEADER_CG_EMPIRE = 90,
  75.  
  76. HEADER_CG_REFINE = 96,
  77.  
  78. HEADER_CG_MARK_LOGIN = 100,
  79. HEADER_CG_MARK_CRCLIST = 101,
  80. HEADER_CG_MARK_UPLOAD = 102,
  81. HEADER_CG_MARK_IDXLIST = 104,
  82.  
  83. HEADER_CG_HACK = 105,
  84. HEADER_CG_CHANGE_NAME = 106,
  85. HEADER_CG_LOGIN2 = 109,
  86. HEADER_CG_DUNGEON = 110,
  87. HEADER_CG_LOGIN3 = 111,
  88.  
  89. HEADER_CG_GUILD_SYMBOL_UPLOAD = 112,
  90. HEADER_CG_SYMBOL_CRC = 113,
  91.  
  92. // SCRIPT_SELECT_ITEM
  93. HEADER_CG_SCRIPT_SELECT_ITEM = 114,
  94. // END_OF_SCRIPT_SELECT_ITEM
  95.  
  96. HEADER_CG_LOGIN5_OPENID = 116, //OpenID : 클라이언트로부터 OpenID 인증키를 받는다.
  97.  
  98. // HEADER_CG_ROULETTE = 200,
  99. // HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
  100.  
  101. //
  102. HEADER_CG_PASSPOD_ANSWER = 202,
  103.  
  104. //NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나.
  105. //enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가..
  106. //정말 packet generator까지는 바라지도 않는다. 이런 씨XX
  107. //이러다가 숫자 겹치면 누가 책임지는데???
  108. HEADER_CG_HS_ACK = 203,
  109. HEADER_CG_XTRAP_ACK = 204,
  110.  
  111. HEADER_CG_DRAGON_SOUL_REFINE = 205,
  112. HEADER_CG_STATE_CHECKER = 206,
  113.  
  114. HEADER_CG_CLIENT_VERSION = 0xfd,
  115. HEADER_CG_CLIENT_VERSION2 = 0xf1,
  116.  
  117. /********************************************************/
  118. HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
  119. HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  120. HEADER_GC_TIME_SYNC = 0xfc,
  121. HEADER_GC_PHASE = 0xfd,
  122. HEADER_GC_BINDUDP = 0xfe,
  123. HEADER_GC_HANDSHAKE = 0xff,
  124.  
  125. HEADER_GC_CHARACTER_ADD = 1,
  126. HEADER_GC_CHARACTER_DEL = 2,
  127. HEADER_GC_MOVE = 3,
  128. HEADER_GC_CHAT = 4,
  129. HEADER_GC_SYNC_POSITION = 5,
  130.  
  131. HEADER_GC_LOGIN_SUCCESS = 6,
  132. HEADER_GC_LOGIN_SUCCESS_NEWSLOT = 32,
  133. HEADER_GC_LOGIN_FAILURE = 7,
  134.  
  135. HEADER_GC_CHARACTER_CREATE_SUCCESS = 8,
  136. HEADER_GC_CHARACTER_CREATE_FAILURE = 9,
  137. HEADER_GC_CHARACTER_DELETE_SUCCESS = 10,
  138. HEADER_GC_CHARACTER_DELETE_WRONG_SOCIAL_ID = 11,
  139.  
  140. HEADER_GC_ATTACK = 12,
  141. HEADER_GC_STUN = 13,
  142. HEADER_GC_DEAD = 14,
  143.  
  144. HEADER_GC_MAIN_CHARACTER_OLD = 15,
  145. HEADER_GC_CHARACTER_POINTS = 16,
  146. HEADER_GC_CHARACTER_POINT_CHANGE = 17,
  147. HEADER_GC_CHANGE_SPEED = 18,
  148. HEADER_GC_CHARACTER_UPDATE = 19,
  149. HEADER_GC_CHARACTER_UPDATE_NEW = 24,
  150.  
  151. HEADER_GC_ITEM_DEL = 20,
  152. HEADER_GC_ITEM_SET = 21,
  153. HEADER_GC_ITEM_USE = 22,
  154. HEADER_GC_ITEM_DROP = 23,
  155. HEADER_GC_ITEM_UPDATE = 25,
  156.  
  157. HEADER_GC_ITEM_GROUND_ADD = 26,
  158. HEADER_GC_ITEM_GROUND_DEL = 27,
  159.  
  160. HEADER_GC_QUICKSLOT_ADD = 28,
  161. HEADER_GC_QUICKSLOT_DEL = 29,
  162. HEADER_GC_QUICKSLOT_SWAP = 30,
  163.  
  164. HEADER_GC_ITEM_OWNERSHIP = 31,
  165.  
  166. HEADER_GC_WHISPER = 34,
  167.  
  168. HEADER_GC_MOTION = 36,
  169. HEADER_GC_PARTS = 37,
  170.  
  171. HEADER_GC_SHOP = 38,
  172. HEADER_GC_SHOP_SIGN = 39,
  173.  
  174. HEADER_GC_DUEL_START = 40,
  175. HEADER_GC_PVP = 41,
  176. HEADER_GC_EXCHANGE = 42,
  177. HEADER_GC_CHARACTER_POSITION = 43,
  178.  
  179. HEADER_GC_PING = 44,
  180. HEADER_GC_SCRIPT = 45,
  181. HEADER_GC_QUEST_CONFIRM = 46,
  182.  
  183. HEADER_GC_MOUNT = 61,
  184. HEADER_GC_OWNERSHIP = 62,
  185. HEADER_GC_TARGET = 63,
  186. #ifdef __SEND_TARGET_INFO__
  187. HEADER_GC_TARGET_INFO = 58,
  188. HEADER_CG_TARGET_INFO_LOAD = 59,
  189. #endif
  190.  
  191. HEADER_GC_WARP = 65,
  192.  
  193. HEADER_GC_ADD_FLY_TARGETING = 69,
  194. HEADER_GC_CREATE_FLY = 70,
  195. HEADER_GC_FLY_TARGETING = 71,
  196. HEADER_GC_SKILL_LEVEL_OLD = 72,
  197. HEADER_GC_SKILL_LEVEL = 76,
  198.  
  199. HEADER_GC_MESSENGER = 74,
  200. HEADER_GC_GUILD = 75,
  201.  
  202. HEADER_GC_PARTY_INVITE = 77,
  203. HEADER_GC_PARTY_ADD = 78,
  204. HEADER_GC_PARTY_UPDATE = 79,
  205. HEADER_GC_PARTY_REMOVE = 80,
  206. HEADER_GC_QUEST_INFO = 81,
  207. HEADER_GC_REQUEST_MAKE_GUILD = 82,
  208. HEADER_GC_PARTY_PARAMETER = 83,
  209.  
  210. HEADER_GC_SAFEBOX_SET = 85,
  211. HEADER_GC_SAFEBOX_DEL = 86,
  212. HEADER_GC_SAFEBOX_WRONG_PASSWORD = 87,
  213. HEADER_GC_SAFEBOX_SIZE = 88,
  214.  
  215. HEADER_GC_FISHING = 89,
  216.  
  217. HEADER_GC_EMPIRE = 90,
  218.  
  219. HEADER_GC_PARTY_LINK = 91,
  220. HEADER_GC_PARTY_UNLINK = 92,
  221.  
  222. HEADER_GC_REFINE_INFORMATION_OLD = 95,
  223.  
  224. HEADER_GC_VIEW_EQUIP = 99,
  225.  
  226. HEADER_GC_MARK_BLOCK = 100,
  227. HEADER_GC_MARK_IDXLIST = 102,
  228.  
  229. HEADER_GC_TIME = 106,
  230. HEADER_GC_CHANGE_NAME = 107,
  231.  
  232. HEADER_GC_DUNGEON = 110,
  233.  
  234. HEADER_GC_WALK_MODE = 111,
  235. HEADER_GC_SKILL_GROUP = 112,
  236. HEADER_GC_MAIN_CHARACTER = 113,
  237.  
  238. // HEADER_GC_USE_POTION = 114,
  239. HEADER_GC_SEPCIAL_EFFECT = 114,
  240.  
  241. HEADER_GC_NPC_POSITION = 115,
  242.  
  243. HEADER_GC_MATRIX_CARD = 116,
  244. HEADER_GC_LOGIN_KEY = 118,
  245. HEADER_GC_REFINE_INFORMATION = 119,
  246. HEADER_GC_CHANNEL = 121,
  247.  
  248. // 122 HEADER_GC_MALL_OPEN
  249. HEADER_GC_TARGET_UPDATE = 123,
  250. HEADER_GC_TARGET_DELETE = 124,
  251. HEADER_GC_TARGET_CREATE = 125,
  252.  
  253. HEADER_GC_AFFECT_ADD = 126,
  254. HEADER_GC_AFFECT_REMOVE = 127,
  255.  
  256. HEADER_GC_MALL_OPEN = 122,
  257. HEADER_GC_MALL_SET = 128,
  258. HEADER_GC_MALL_DEL = 129,
  259.  
  260. HEADER_GC_LAND_LIST = 130,
  261. HEADER_GC_LOVER_INFO = 131,
  262. HEADER_GC_LOVE_POINT_UPDATE = 132,
  263.  
  264. HEADER_GC_SYMBOL_DATA = 133,
  265.  
  266. // MINING
  267. HEADER_GC_DIG_MOTION = 134,
  268. // END_OF_MINING
  269.  
  270. HEADER_GC_DAMAGE_INFO = 135,
  271. HEADER_GC_CHAR_ADDITIONAL_INFO = 136,
  272.  
  273. // SUPPORT_BGM
  274. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  275. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  276. // END_OF_SUPPORT_BGM
  277.  
  278. HEADER_GC_AUTH_SUCCESS = 150,
  279.  
  280. HEADER_GC_PANAMA_PACK = 151,
  281.  
  282. //HYBRID CRYPT
  283. HEADER_GC_HYBRIDCRYPT_KEYS = 152,
  284. HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks
  285. //HYBRID CRYPT
  286.  
  287. HEADER_GC_AUTH_SUCCESS_OPENID = 154,
  288.  
  289. // ROULETTE
  290. HEADER_GC_ROULETTE = 200,
  291. // END_ROULETTE
  292. //
  293. HEADER_GC_REQUEST_PASSPOD = 202,
  294. HEADER_GC_REQUEST_PASSPOD_FAILED = 203,
  295.  
  296. HEADER_GC_HS_REQUEST = 204,
  297. HEADER_GC_XTRAP_CS1_REQUEST = 205,
  298.  
  299. HEADER_GC_SPECIFIC_EFFECT = 208,
  300.  
  301. HEADER_GC_DRAGON_SOUL_REFINE = 209,
  302. HEADER_GC_RESPOND_CHANNELSTATUS = 210,
  303.  
  304.  
  305. /////////////////////////////////////////////////////////////////////////////
  306.  
  307. HEADER_GG_LOGIN = 1,
  308. HEADER_GG_LOGOUT = 2,
  309. HEADER_GG_RELAY = 3,
  310. HEADER_GG_NOTICE = 4,
  311. HEADER_GG_SHUTDOWN = 5,
  312. HEADER_GG_GUILD = 6,
  313. HEADER_GG_DISCONNECT = 7, // 누군가의 접속을 강제로 끊을 때
  314. HEADER_GG_SHOUT = 8,
  315. HEADER_GG_SETUP = 9,
  316. HEADER_GG_MESSENGER_ADD = 10,
  317. HEADER_GG_MESSENGER_REMOVE = 11,
  318. HEADER_GG_FIND_POSITION = 12,
  319. HEADER_GG_WARP_CHARACTER = 13,
  320. HEADER_GG_MESSENGER_MOBILE = 14,
  321. HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX = 15,
  322. HEADER_GG_TRANSFER = 16,
  323. HEADER_GG_XMAS_WARP_SANTA = 17,
  324. HEADER_GG_XMAS_WARP_SANTA_REPLY = 18,
  325. HEADER_GG_RELOAD_CRC_LIST = 19,
  326. HEADER_GG_LOGIN_PING = 20,
  327. HEADER_GG_CHECK_CLIENT_VERSION = 21,
  328. HEADER_GG_BLOCK_CHAT = 22,
  329.  
  330. HEADER_GG_BLOCK_EXCEPTION = 24,
  331. HEADER_GG_SIEGE = 25,
  332. HEADER_GG_MONARCH_NOTICE = 26,
  333. HEADER_GG_MONARCH_TRANSFER = 27,
  334. HEADER_GG_PCBANG_UPDATE = 28,
  335.  
  336. HEADER_GG_CHECK_AWAKENESS = 29,
  337. };
  338.  
  339. #pragma pack(1)
  340. typedef struct SPacketGGSetup
  341. {
  342. BYTE bHeader;
  343. WORD wPort;
  344. BYTE bChannel;
  345. } TPacketGGSetup;
  346.  
  347. typedef struct SPacketGGLogin
  348. {
  349. BYTE bHeader;
  350. char szName[CHARACTER_NAME_MAX_LEN + 1];
  351. DWORD dwPID;
  352. BYTE bEmpire;
  353. long lMapIndex;
  354. BYTE bChannel;
  355. } TPacketGGLogin;
  356.  
  357. typedef struct SPacketGGLogout
  358. {
  359. BYTE bHeader;
  360. char szName[CHARACTER_NAME_MAX_LEN + 1];
  361. } TPacketGGLogout;
  362.  
  363. typedef struct SPacketGGRelay
  364. {
  365. BYTE bHeader;
  366. char szName[CHARACTER_NAME_MAX_LEN + 1];
  367. long lSize;
  368. } TPacketGGRelay;
  369.  
  370. typedef struct SPacketGGNotice
  371. {
  372. BYTE bHeader;
  373. long lSize;
  374. } TPacketGGNotice;
  375.  
  376. typedef struct SPacketGGMonarchNotice
  377. {
  378. BYTE bHeader;
  379. BYTE bEmpire;
  380. long lSize;
  381. } TPacketGGMonarchNotice;
  382.  
  383. //FORKED_ROAD
  384. typedef struct SPacketGGForkedMapInfo
  385. {
  386. BYTE bHeader;
  387. BYTE bPass;
  388. BYTE bSungzi;
  389. } TPacketGGForkedMapInfo;
  390. //END_FORKED_ROAD
  391. typedef struct SPacketGGShutdown
  392. {
  393. BYTE bHeader;
  394. } TPacketGGShutdown;
  395.  
  396. typedef struct SPacketGGGuild
  397. {
  398. BYTE bHeader;
  399. BYTE bSubHeader;
  400. DWORD dwGuild;
  401. } TPacketGGGuild;
  402.  
  403. enum
  404. {
  405. GUILD_SUBHEADER_GG_CHAT,
  406. GUILD_SUBHEADER_GG_SET_MEMBER_COUNT_BONUS,
  407. };
  408.  
  409. typedef struct SPacketGGGuildChat
  410. {
  411. BYTE bHeader;
  412. BYTE bSubHeader;
  413. DWORD dwGuild;
  414. char szText[CHAT_MAX_LEN + 1];
  415. } TPacketGGGuildChat;
  416.  
  417. typedef struct SPacketGGParty
  418. {
  419. BYTE header;
  420. BYTE subheader;
  421. DWORD pid;
  422. DWORD leaderpid;
  423. } TPacketGGParty;
  424.  
  425. enum
  426. {
  427. PARTY_SUBHEADER_GG_CREATE,
  428. PARTY_SUBHEADER_GG_DESTROY,
  429. PARTY_SUBHEADER_GG_JOIN,
  430. PARTY_SUBHEADER_GG_QUIT,
  431. };
  432.  
  433. typedef struct SPacketGGDisconnect
  434. {
  435. BYTE bHeader;
  436. char szLogin[LOGIN_MAX_LEN + 1];
  437. } TPacketGGDisconnect;
  438.  
  439. typedef struct SPacketGGShout
  440. {
  441. BYTE bHeader;
  442. BYTE bEmpire;
  443. char szText[CHAT_MAX_LEN + 1];
  444. } TPacketGGShout;
  445.  
  446. typedef struct SPacketGGXmasWarpSanta
  447. {
  448. BYTE bHeader;
  449. BYTE bChannel;
  450. long lMapIndex;
  451. } TPacketGGXmasWarpSanta;
  452.  
  453. typedef struct SPacketGGXmasWarpSantaReply
  454. {
  455. BYTE bHeader;
  456. BYTE bChannel;
  457. } TPacketGGXmasWarpSantaReply;
  458.  
  459. typedef struct SMessengerData
  460. {
  461. char szMobile[MOBILE_MAX_LEN + 1];
  462. } TMessengerData;
  463.  
  464. typedef struct SPacketGGMessenger
  465. {
  466. BYTE bHeader;
  467. char szAccount[CHARACTER_NAME_MAX_LEN + 1];
  468. char szCompanion[CHARACTER_NAME_MAX_LEN + 1];
  469. } TPacketGGMessenger;
  470.  
  471. typedef struct SPacketGGMessengerMobile
  472. {
  473. BYTE bHeader;
  474. char szName[CHARACTER_NAME_MAX_LEN + 1];
  475. char szMobile[MOBILE_MAX_LEN + 1];
  476. } TPacketGGMessengerMobile;
  477.  
  478. typedef struct SPacketGGFindPosition
  479. {
  480. BYTE header;
  481. DWORD dwFromPID; // 저 위치로 워프하려는 사람
  482. DWORD dwTargetPID; // 찾는 사람
  483. } TPacketGGFindPosition;
  484.  
  485. typedef struct SPacketGGWarpCharacter
  486. {
  487. BYTE header;
  488. DWORD pid;
  489. long x;
  490. long y;
  491. } TPacketGGWarpCharacter;
  492.  
  493. // HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX = 15,
  494.  
  495. typedef struct SPacketGGGuildWarMapIndex
  496. {
  497. BYTE bHeader;
  498. DWORD dwGuildID1;
  499. DWORD dwGuildID2;
  500. long lMapIndex;
  501. } TPacketGGGuildWarMapIndex;
  502.  
  503. typedef struct SPacketGGTransfer
  504. {
  505. BYTE bHeader;
  506. char szName[CHARACTER_NAME_MAX_LEN + 1];
  507. long lX, lY;
  508. } TPacketGGTransfer;
  509.  
  510. typedef struct SPacketGGLoginPing
  511. {
  512. BYTE bHeader;
  513. char szLogin[LOGIN_MAX_LEN + 1];
  514. } TPacketGGLoginPing;
  515.  
  516. typedef struct SPacketGGBlockChat
  517. {
  518. BYTE bHeader;
  519. char szName[CHARACTER_NAME_MAX_LEN + 1];
  520. long lBlockDuration;
  521. } TPacketGGBlockChat;
  522.  
  523. /* 클라이언트 측에서 보내는 패킷 */
  524.  
  525. typedef struct command_text
  526. {
  527. BYTE bHeader;
  528. } TPacketCGText;
  529.  
  530. /* 로그인 (1) */
  531. typedef struct command_handshake
  532. {
  533. BYTE bHeader;
  534. DWORD dwHandshake;
  535. DWORD dwTime;
  536. long lDelta;
  537. } TPacketCGHandshake;
  538.  
  539. typedef struct command_login
  540. {
  541. BYTE header;
  542. char login[LOGIN_MAX_LEN + 1];
  543. char passwd[PASSWD_MAX_LEN + 1];
  544. } TPacketCGLogin;
  545.  
  546. typedef struct command_login2
  547. {
  548. BYTE header;
  549. char login[LOGIN_MAX_LEN + 1];
  550. DWORD dwLoginKey;
  551. DWORD adwClientKey[4];
  552. } TPacketCGLogin2;
  553.  
  554. typedef struct command_login3
  555. {
  556. BYTE header;
  557. char login[LOGIN_MAX_LEN + 1];
  558. char passwd[PASSWD_MAX_LEN + 1];
  559. DWORD adwClientKey[4];
  560. } TPacketCGLogin3;
  561.  
  562. typedef struct command_login5
  563. {
  564. BYTE header;
  565. char authKey[OPENID_AUTHKEY_LEN + 1];
  566. DWORD adwClientKey[4];
  567. } TPacketCGLogin5;
  568.  
  569. typedef struct command_matrix_card
  570. {
  571. BYTE bHeader;
  572. char szAnswer[MATRIX_ANSWER_MAX_LEN + 1];
  573. } TPacketCGMatrixCard;
  574.  
  575. typedef struct packet_matrix_card
  576. {
  577. BYTE bHeader;
  578. DWORD dwRows;
  579. DWORD dwCols;
  580. } TPacketGCMatrixCard;
  581.  
  582. typedef struct packet_login_key
  583. {
  584. BYTE bHeader;
  585. DWORD dwLoginKey;
  586. } TPacketGCLoginKey;
  587.  
  588. typedef struct command_player_select
  589. {
  590. BYTE header;
  591. BYTE index;
  592. } TPacketCGPlayerSelect;
  593.  
  594. typedef struct command_player_delete
  595. {
  596. BYTE header;
  597. BYTE index;
  598. char private_code[8];
  599. } TPacketCGPlayerDelete;
  600.  
  601. typedef struct command_player_create
  602. {
  603. BYTE header;
  604. BYTE index;
  605. char name[CHARACTER_NAME_MAX_LEN + 1];
  606. WORD job;
  607. BYTE shape;
  608. BYTE Con;
  609. BYTE Int;
  610. BYTE Str;
  611. BYTE Dex;
  612. } TPacketCGPlayerCreate;
  613.  
  614. typedef struct command_player_create_success
  615. {
  616. BYTE header;
  617. BYTE bAccountCharacterIndex;
  618. TSimplePlayer player;
  619. } TPacketGCPlayerCreateSuccess;
  620.  
  621. // 공격
  622. typedef struct command_attack
  623. {
  624. BYTE bHeader;
  625. BYTE bType;
  626. DWORD dwVID;
  627. BYTE bCRCMagicCubeProcPiece;
  628. BYTE bCRCMagicCubeFilePiece;
  629. } TPacketCGAttack;
  630.  
  631. enum EMoveFuncType
  632. {
  633. FUNC_WAIT,
  634. FUNC_MOVE,
  635. FUNC_ATTACK,
  636. FUNC_COMBO,
  637. FUNC_MOB_SKILL,
  638. _FUNC_SKILL,
  639. FUNC_MAX_NUM,
  640. FUNC_SKILL = 0x80,
  641. };
  642.  
  643. // 이동
  644. typedef struct command_move
  645. {
  646. BYTE bHeader;
  647. BYTE bFunc;
  648. BYTE bArg;
  649. BYTE bRot;
  650. long lX;
  651. long lY;
  652. DWORD dwTime;
  653. } TPacketCGMove;
  654.  
  655. typedef struct command_sync_position_element
  656. {
  657. DWORD dwVID;
  658. long lX;
  659. long lY;
  660. } TPacketCGSyncPositionElement;
  661.  
  662. // 위치 동기화
  663. typedef struct command_sync_position // 가변 패킷
  664. {
  665. BYTE bHeader;
  666. WORD wSize;
  667. } TPacketCGSyncPosition;
  668.  
  669. /* 채팅 (3) */
  670. typedef struct command_chat // 가변 패킷
  671. {
  672. BYTE header;
  673. WORD size;
  674. BYTE type;
  675. } TPacketCGChat;
  676.  
  677. /* 귓속말 */
  678. typedef struct command_whisper
  679. {
  680. BYTE bHeader;
  681. WORD wSize;
  682. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  683. } TPacketCGWhisper;
  684.  
  685. typedef struct command_entergame
  686. {
  687. BYTE header;
  688. } TPacketCGEnterGame;
  689.  
  690. typedef struct command_item_use
  691. {
  692. BYTE header;
  693. TItemPos Cell;
  694. } TPacketCGItemUse;
  695.  
  696. typedef struct command_item_use_to_item
  697. {
  698. BYTE header;
  699. TItemPos Cell;
  700. TItemPos TargetCell;
  701. } TPacketCGItemUseToItem;
  702.  
  703. typedef struct command_item_drop
  704. {
  705. BYTE header;
  706. TItemPos Cell;
  707. DWORD gold;
  708. } TPacketCGItemDrop;
  709.  
  710. typedef struct command_item_drop2
  711. {
  712. BYTE header;
  713. TItemPos Cell;
  714. DWORD gold;
  715. BYTE count;
  716. } TPacketCGItemDrop2;
  717.  
  718. typedef struct command_item_destroy
  719. {
  720. BYTE header;
  721. TItemPos Cell;
  722. } TPacketCGItemDestroy;
  723.  
  724. typedef struct command_item_move
  725. {
  726. BYTE header;
  727. TItemPos Cell;
  728. TItemPos CellTo;
  729. BYTE count;
  730. } TPacketCGItemMove;
  731.  
  732. typedef struct command_item_pickup
  733. {
  734. BYTE header;
  735. DWORD vid;
  736. } TPacketCGItemPickup;
  737.  
  738. typedef struct command_quickslot_add
  739. {
  740. BYTE header;
  741. BYTE pos;
  742. TQuickslot slot;
  743. } TPacketCGQuickslotAdd;
  744.  
  745. typedef struct command_quickslot_del
  746. {
  747. BYTE header;
  748. BYTE pos;
  749. } TPacketCGQuickslotDel;
  750.  
  751. typedef struct command_quickslot_swap
  752. {
  753. BYTE header;
  754. BYTE pos;
  755. BYTE change_pos;
  756. } TPacketCGQuickslotSwap;
  757.  
  758. enum
  759. {
  760. SHOP_SUBHEADER_CG_END,
  761. SHOP_SUBHEADER_CG_BUY,
  762. SHOP_SUBHEADER_CG_SELL,
  763. SHOP_SUBHEADER_CG_SELL2
  764. };
  765.  
  766. typedef struct command_shop_buy
  767. {
  768. BYTE count;
  769. } TPacketCGShopBuy;
  770.  
  771. typedef struct command_shop_sell
  772. {
  773. BYTE pos;
  774. BYTE count;
  775. } TPacketCGShopSell;
  776.  
  777. typedef struct command_shop
  778. {
  779. BYTE header;
  780. BYTE subheader;
  781. } TPacketCGShop;
  782.  
  783. typedef struct command_on_click
  784. {
  785. BYTE header;
  786. DWORD vid;
  787. } TPacketCGOnClick;
  788.  
  789. enum
  790. {
  791. EXCHANGE_SUBHEADER_CG_START, /* arg1 == vid of target character */
  792. EXCHANGE_SUBHEADER_CG_ITEM_ADD, /* arg1 == position of item */
  793. EXCHANGE_SUBHEADER_CG_ITEM_DEL, /* arg1 == position of item */
  794. EXCHANGE_SUBHEADER_CG_ELK_ADD, /* arg1 == amount of gold */
  795. EXCHANGE_SUBHEADER_CG_ACCEPT, /* arg1 == not used */
  796. EXCHANGE_SUBHEADER_CG_CANCEL, /* arg1 == not used */
  797. };
  798.  
  799. typedef struct command_exchange
  800. {
  801. BYTE header;
  802. BYTE sub_header;
  803. long long arg1;
  804. BYTE arg2;
  805. TItemPos Pos;
  806. } TPacketCGExchange;
  807.  
  808. typedef struct command_position
  809. {
  810. BYTE header;
  811. BYTE position;
  812. } TPacketCGPosition;
  813.  
  814. typedef struct command_script_answer
  815. {
  816. BYTE header;
  817. BYTE answer;
  818. //char file[32 + 1];
  819. //BYTE answer[16 + 1];
  820. } TPacketCGScriptAnswer;
  821.  
  822.  
  823. typedef struct command_script_button
  824. {
  825. BYTE header;
  826. unsigned int idx;
  827. } TPacketCGScriptButton;
  828.  
  829. typedef struct command_quest_input_string
  830. {
  831. BYTE header;
  832. char msg[64+1];
  833. } TPacketCGQuestInputString;
  834.  
  835. typedef struct command_quest_confirm
  836. {
  837. BYTE header;
  838. BYTE answer;
  839. DWORD requestPID;
  840. } TPacketCGQuestConfirm;
  841.  
  842. /*
  843. * 서버 측에서 보내는 패킷
  844. */
  845. typedef struct packet_quest_confirm
  846. {
  847. BYTE header;
  848. char msg[64+1];
  849. long timeout;
  850. DWORD requestPID;
  851. } TPacketGCQuestConfirm;
  852.  
  853. typedef struct packet_handshake
  854. {
  855. BYTE bHeader;
  856. DWORD dwHandshake;
  857. DWORD dwTime;
  858. long lDelta;
  859. } TPacketGCHandshake;
  860.  
  861. enum EPhase
  862. {
  863. PHASE_CLOSE,
  864. PHASE_HANDSHAKE,
  865. PHASE_LOGIN,
  866. PHASE_SELECT,
  867. PHASE_LOADING,
  868. PHASE_GAME,
  869. PHASE_DEAD,
  870.  
  871. PHASE_CLIENT_CONNECTING,
  872. PHASE_DBCLIENT,
  873. PHASE_P2P,
  874. PHASE_AUTH,
  875. PHASE_TEEN,
  876. PHASE_PASSPOD,
  877. };
  878.  
  879. typedef struct packet_phase
  880. {
  881. BYTE header;
  882. BYTE phase;
  883. } TPacketGCPhase;
  884.  
  885. typedef struct packet_bindudp
  886. {
  887. BYTE header;
  888. DWORD addr;
  889. WORD port;
  890. } TPacketGCBindUDP;
  891.  
  892. enum
  893. {
  894. LOGIN_FAILURE_ALREADY = 1,
  895. LOGIN_FAILURE_ID_NOT_EXIST = 2,
  896. LOGIN_FAILURE_WRONG_PASS = 3,
  897. LOGIN_FAILURE_FALSE = 4,
  898. LOGIN_FAILURE_NOT_TESTOR = 5,
  899. LOGIN_FAILURE_NOT_TEST_TIME = 6,
  900. LOGIN_FAILURE_FULL = 7
  901. };
  902.  
  903. typedef struct packet_login_success
  904. {
  905. BYTE bHeader;
  906. TSimplePlayer players[PLAYER_PER_ACCOUNT];
  907. DWORD guild_id[PLAYER_PER_ACCOUNT];
  908. char guild_name[PLAYER_PER_ACCOUNT][GUILD_NAME_MAX_LEN+1];
  909.  
  910. DWORD handle;
  911. DWORD random_key;
  912. } TPacketGCLoginSuccess;
  913.  
  914. typedef struct packet_auth_success
  915. {
  916. BYTE bHeader;
  917. DWORD dwLoginKey;
  918. BYTE bResult;
  919. } TPacketGCAuthSuccess;
  920.  
  921. typedef struct packet_auth_success_openid
  922. {
  923. BYTE bHeader;
  924. DWORD dwLoginKey;
  925. BYTE bResult;
  926. char login[LOGIN_MAX_LEN + 1];
  927. } TPacketGCAuthSuccessOpenID;
  928.  
  929. typedef struct packet_login_failure
  930. {
  931. BYTE header;
  932. char szStatus[ACCOUNT_STATUS_MAX_LEN + 1];
  933. } TPacketGCLoginFailure;
  934.  
  935. typedef struct packet_create_failure
  936. {
  937. BYTE header;
  938. BYTE bType;
  939. } TPacketGCCreateFailure;
  940.  
  941. enum
  942. {
  943. ADD_CHARACTER_STATE_DEAD = (1 << 0),
  944. ADD_CHARACTER_STATE_SPAWN = (1 << 1),
  945. ADD_CHARACTER_STATE_GUNGON = (1 << 2),
  946. ADD_CHARACTER_STATE_KILLER = (1 << 3),
  947. ADD_CHARACTER_STATE_PARTY = (1 << 4),
  948. };
  949.  
  950. enum ECharacterEquipmentPart
  951. {
  952. CHR_EQUIPPART_ARMOR,
  953. CHR_EQUIPPART_WEAPON,
  954. CHR_EQUIPPART_HEAD,
  955. CHR_EQUIPPART_HAIR,
  956. #ifdef __ACCE_SYSTEM__
  957. CHR_EQUIPPART_ACCE,
  958. #endif
  959. CHR_EQUIPPART_NUM,
  960. };
  961.  
  962. typedef struct packet_add_char
  963. {
  964. BYTE header;
  965. DWORD dwVID;
  966.  
  967. float angle;
  968. long x;
  969. long y;
  970. long z;
  971.  
  972. BYTE bType;
  973. WORD wRaceNum;
  974. BYTE bMovingSpeed;
  975. BYTE bAttackSpeed;
  976.  
  977. BYTE bStateFlag;
  978. DWORD dwAffectFlag[2]; // 효과
  979. } TPacketGCCharacterAdd;
  980.  
  981. typedef struct packet_char_additional_info
  982. {
  983. BYTE header;
  984. DWORD dwVID;
  985. char name[CHARACTER_NAME_MAX_LEN + 1];
  986. WORD awPart[CHR_EQUIPPART_NUM];
  987. BYTE bEmpire;
  988. DWORD dwGuildID;
  989. DWORD dwLevel;
  990. short sAlignment;
  991. BYTE bPKMode;
  992. DWORD dwMountVnum;
  993. } TPacketGCCharacterAdditionalInfo;
  994.  
  995. /*
  996. typedef struct packet_update_char_old
  997. {
  998. BYTE header;
  999. DWORD dwVID;
  1000.  
  1001. WORD awPart[CHR_EQUIPPART_NUM];
  1002. BYTE bMovingSpeed;
  1003. BYTE bAttackSpeed;
  1004.  
  1005. BYTE bStateFlag;
  1006. DWORD dwAffectFlag[2];
  1007.  
  1008. DWORD dwGuildID;
  1009. short sAlignment;
  1010. BYTE bPKMode;
  1011. DWORD dwMountVnum;
  1012. } TPacketGCCharacterUpdateOld;
  1013. */
  1014.  
  1015. typedef struct packet_update_char
  1016. {
  1017. BYTE header;
  1018. DWORD dwVID;
  1019.  
  1020. WORD awPart[CHR_EQUIPPART_NUM];
  1021. BYTE bMovingSpeed;
  1022. BYTE bAttackSpeed;
  1023.  
  1024. BYTE bStateFlag;
  1025. DWORD dwAffectFlag[2];
  1026.  
  1027. DWORD dwGuildID;
  1028. short sAlignment;
  1029. DWORD dwLevel;
  1030. BYTE bPKMode;
  1031. DWORD dwMountVnum;
  1032. //WORD wRaceNum;
  1033. } TPacketGCCharacterUpdate;
  1034.  
  1035. typedef struct packet_del_char
  1036. {
  1037. BYTE header;
  1038. DWORD id;
  1039. } TPacketGCCharacterDelete;
  1040.  
  1041. typedef struct packet_chat // 가변 패킷
  1042. {
  1043. BYTE header;
  1044. WORD size;
  1045. BYTE type;
  1046. DWORD id;
  1047. BYTE bEmpire;
  1048. } TPacketGCChat;
  1049.  
  1050. typedef struct packet_whisper // 가변 패킷
  1051. {
  1052. BYTE bHeader;
  1053. WORD wSize;
  1054. BYTE bType;
  1055. char szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1056. } TPacketGCWhisper;
  1057.  
  1058. typedef struct packet_main_character
  1059. {
  1060. BYTE header;
  1061. DWORD dwVID;
  1062. WORD wRaceNum;
  1063. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1064. long lx, ly, lz;
  1065. BYTE empire;
  1066. BYTE skill_group;
  1067. } TPacketGCMainCharacter;
  1068.  
  1069. // SUPPORT_BGM
  1070. typedef struct packet_main_character3_bgm
  1071. {
  1072. enum
  1073. {
  1074. MUSIC_NAME_LEN = 24,
  1075. };
  1076.  
  1077. BYTE header;
  1078. DWORD dwVID;
  1079. WORD wRaceNum;
  1080. char szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1081. char szBGMName[MUSIC_NAME_LEN + 1];
  1082. long lx, ly, lz;
  1083. BYTE empire;
  1084. BYTE skill_group;
  1085. } TPacketGCMainCharacter3_BGM;
  1086.  
  1087. typedef struct packet_main_character4_bgm_vol
  1088. {
  1089. enum
  1090. {
  1091. MUSIC_NAME_LEN = 24,
  1092. };
  1093.  
  1094. BYTE header;
  1095. DWORD dwVID;
  1096. WORD wRaceNum;
  1097. char szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1098. char szBGMName[MUSIC_NAME_LEN + 1];
  1099. float fBGMVol;
  1100. long lx, ly, lz;
  1101. BYTE empire;
  1102. BYTE skill_group;
  1103. } TPacketGCMainCharacter4_BGM_VOL;
  1104. // END_OF_SUPPORT_BGM
  1105.  
  1106. typedef struct packet_points
  1107. {
  1108. BYTE header;
  1109. long long points[POINT_MAX_NUM];
  1110. } TPacketGCPoints;
  1111.  
  1112. typedef struct packet_skill_level
  1113. {
  1114. BYTE bHeader;
  1115. TPlayerSkill skills[SKILL_MAX_NUM];
  1116. } TPacketGCSkillLevel;
  1117.  
  1118. typedef struct packet_point_change
  1119. {
  1120. int header;
  1121. DWORD dwVID;
  1122. BYTE type;
  1123. long long amount;
  1124. long long value;
  1125. } TPacketGCPointChange;
  1126.  
  1127. typedef struct packet_stun
  1128. {
  1129. BYTE header;
  1130. DWORD vid;
  1131. } TPacketGCStun;
  1132.  
  1133. typedef struct packet_dead
  1134. {
  1135. BYTE header;
  1136. DWORD vid;
  1137. } TPacketGCDead;
  1138.  
  1139. struct TPacketGCItemDelDeprecated
  1140. {
  1141. BYTE header;
  1142. TItemPos Cell;
  1143. DWORD vnum;
  1144. BYTE count;
  1145. long alSockets[ITEM_SOCKET_MAX_NUM];
  1146. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1147. #ifdef __CHANGE_LOOK_SYSTEM__
  1148. DWORD dwVnum;
  1149. #endif
  1150. };
  1151.  
  1152. typedef struct packet_item_set
  1153. {
  1154. BYTE header;
  1155. TItemPos Cell;
  1156. DWORD vnum;
  1157. BYTE count;
  1158. DWORD flags;
  1159. DWORD anti_flags;
  1160. bool highlight;
  1161. long alSockets[ITEM_SOCKET_MAX_NUM];
  1162. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1163. #ifdef __CHANGE_LOOK_SYSTEM__
  1164. DWORD dwVnum;
  1165. #endif
  1166. } TPacketGCItemSet;
  1167.  
  1168. typedef struct packet_item_del
  1169. {
  1170. BYTE header;
  1171. BYTE pos;
  1172. } TPacketGCItemDel;
  1173.  
  1174. struct packet_item_use
  1175. {
  1176. BYTE header;
  1177. TItemPos Cell;
  1178. DWORD ch_vid;
  1179. DWORD victim_vid;
  1180. DWORD vnum;
  1181. };
  1182.  
  1183. struct packet_item_move
  1184. {
  1185. BYTE header;
  1186. TItemPos Cell;
  1187. TItemPos CellTo;
  1188. };
  1189.  
  1190. typedef struct packet_item_update
  1191. {
  1192. BYTE header;
  1193. TItemPos Cell;
  1194. BYTE count;
  1195. long alSockets[ITEM_SOCKET_MAX_NUM];
  1196. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1197. #ifdef __CHANGE_LOOK_SYSTEM__
  1198. DWORD dwVnum;
  1199. #endif
  1200. } TPacketGCItemUpdate;
  1201.  
  1202. typedef struct packet_item_ground_add
  1203. {
  1204. BYTE bHeader;
  1205. long x, y, z;
  1206. DWORD dwVID;
  1207. DWORD dwVnum;
  1208. } TPacketGCItemGroundAdd;
  1209.  
  1210. typedef struct packet_item_ownership
  1211. {
  1212. BYTE bHeader;
  1213. DWORD dwVID;
  1214. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1215. } TPacketGCItemOwnership;
  1216.  
  1217. typedef struct packet_item_ground_del
  1218. {
  1219. BYTE bHeader;
  1220. DWORD dwVID;
  1221. } TPacketGCItemGroundDel;
  1222.  
  1223. struct packet_quickslot_add
  1224. {
  1225. BYTE header;
  1226. BYTE pos;
  1227. TQuickslot slot;
  1228. };
  1229.  
  1230. struct packet_quickslot_del
  1231. {
  1232. BYTE header;
  1233. BYTE pos;
  1234. };
  1235.  
  1236. struct packet_quickslot_swap
  1237. {
  1238. BYTE header;
  1239. BYTE pos;
  1240. BYTE pos_to;
  1241. };
  1242.  
  1243. struct packet_motion
  1244. {
  1245. BYTE header;
  1246. DWORD vid;
  1247. DWORD victim_vid;
  1248. WORD motion;
  1249. };
  1250.  
  1251. enum EPacketShopSubHeaders
  1252. {
  1253. SHOP_SUBHEADER_GC_START,
  1254. SHOP_SUBHEADER_GC_END,
  1255. SHOP_SUBHEADER_GC_UPDATE_ITEM,
  1256. SHOP_SUBHEADER_GC_UPDATE_PRICE,
  1257. SHOP_SUBHEADER_GC_OK,
  1258. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  1259. SHOP_SUBHEADER_GC_SOLDOUT,
  1260. SHOP_SUBHEADER_GC_INVENTORY_FULL,
  1261. SHOP_SUBHEADER_GC_INVALID_POS,
  1262. SHOP_SUBHEADER_GC_SOLD_OUT,
  1263. SHOP_SUBHEADER_GC_START_EX,
  1264. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  1265. };
  1266.  
  1267. struct packet_shop_item
  1268. {
  1269. DWORD vnum;
  1270. long long price;
  1271. BYTE count;
  1272. BYTE display_pos;
  1273. long alSockets[ITEM_SOCKET_MAX_NUM];
  1274. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1275. #ifdef __CHANGE_LOOK_SYSTEM__
  1276. DWORD dwLookVnum;
  1277. #endif
  1278. };
  1279.  
  1280. typedef struct packet_shop_start
  1281. {
  1282. DWORD owner_vid;
  1283. struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1284. } TPacketGCShopStart;
  1285.  
  1286. typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴.
  1287. {
  1288. typedef struct sub_packet_shop_tab
  1289. {
  1290. char name[SHOP_TAB_NAME_MAX];
  1291. BYTE coin_type;
  1292. packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1293. } TSubPacketShopTab;
  1294. DWORD owner_vid;
  1295. BYTE shop_tab_count;
  1296. } TPacketGCShopStartEx;
  1297.  
  1298. typedef struct packet_shop_update_item
  1299. {
  1300. BYTE pos;
  1301. struct packet_shop_item item;
  1302. } TPacketGCShopUpdateItem;
  1303.  
  1304. typedef struct packet_shop_update_price
  1305. {
  1306. long long iPrice;
  1307. } TPacketGCShopUpdatePrice;
  1308.  
  1309. typedef struct packet_shop // 가변 패킷
  1310. {
  1311. BYTE header;
  1312. WORD size;
  1313. BYTE subheader;
  1314. } TPacketGCShop;
  1315.  
  1316. struct packet_exchange
  1317. {
  1318. BYTE header;
  1319. BYTE sub_header;
  1320. BYTE is_me;
  1321. long long arg1; // vnum
  1322. TItemPos arg2; // cell
  1323. DWORD arg3; // count
  1324. long alSockets[ITEM_SOCKET_MAX_NUM];
  1325. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1326. #ifdef __CHANGE_LOOK_SYSTEM__
  1327. DWORD dwLookVnum;
  1328. #endif
  1329. };
  1330.  
  1331. enum EPacketTradeSubHeaders
  1332. {
  1333. EXCHANGE_SUBHEADER_GC_START, /* arg1 == vid */
  1334. EXCHANGE_SUBHEADER_GC_ITEM_ADD, /* arg1 == vnum arg2 == pos arg3 == count */
  1335. EXCHANGE_SUBHEADER_GC_ITEM_DEL,
  1336. EXCHANGE_SUBHEADER_GC_GOLD_ADD, /* arg1 == gold */
  1337. EXCHANGE_SUBHEADER_GC_ACCEPT, /* arg1 == accept */
  1338. EXCHANGE_SUBHEADER_GC_END, /* arg1 == not used */
  1339. EXCHANGE_SUBHEADER_GC_ALREADY, /* arg1 == not used */
  1340. EXCHANGE_SUBHEADER_GC_LESS_GOLD, /* arg1 == not used */
  1341. };
  1342.  
  1343. struct packet_position
  1344. {
  1345. BYTE header;
  1346. DWORD vid;
  1347. BYTE position;
  1348. };
  1349.  
  1350. typedef struct packet_ping
  1351. {
  1352. BYTE header;
  1353. } TPacketGCPing;
  1354.  
  1355. struct packet_script
  1356. {
  1357. BYTE header;
  1358. WORD size;
  1359. BYTE skin;
  1360. WORD src_size;
  1361. };
  1362.  
  1363. typedef struct packet_change_speed
  1364. {
  1365. BYTE header;
  1366. DWORD vid;
  1367. WORD moving_speed;
  1368. } TPacketGCChangeSpeed;
  1369.  
  1370. struct packet_mount
  1371. {
  1372. BYTE header;
  1373. DWORD vid;
  1374. DWORD mount_vid;
  1375. BYTE pos;
  1376. DWORD x, y;
  1377. };
  1378.  
  1379. typedef struct packet_move
  1380. {
  1381. BYTE bHeader;
  1382. BYTE bFunc;
  1383. BYTE bArg;
  1384. BYTE bRot;
  1385. DWORD dwVID;
  1386. long lX;
  1387. long lY;
  1388. DWORD dwTime;
  1389. DWORD dwDuration;
  1390. } TPacketGCMove;
  1391.  
  1392. // 소유권
  1393. typedef struct packet_ownership
  1394. {
  1395. BYTE bHeader;
  1396. DWORD dwOwnerVID;
  1397. DWORD dwVictimVID;
  1398. } TPacketGCOwnership;
  1399.  
  1400. // 위치 동기화 패킷의 bCount 만큼 붙는 단위
  1401. typedef struct packet_sync_position_element
  1402. {
  1403. DWORD dwVID;
  1404. long lX;
  1405. long lY;
  1406. } TPacketGCSyncPositionElement;
  1407.  
  1408. // 위치 동기화
  1409. typedef struct packet_sync_position // 가변 패킷
  1410. {
  1411. BYTE bHeader;
  1412. WORD wSize; // 개수 = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement)
  1413. } TPacketGCSyncPosition;
  1414.  
  1415. typedef struct packet_fly
  1416. {
  1417. BYTE bHeader;
  1418. BYTE bType;
  1419. DWORD dwStartVID;
  1420. DWORD dwEndVID;
  1421. } TPacketGCCreateFly;
  1422.  
  1423. typedef struct command_fly_targeting
  1424. {
  1425. BYTE bHeader;
  1426. DWORD dwTargetVID;
  1427. long x, y;
  1428. } TPacketCGFlyTargeting;
  1429.  
  1430. typedef struct packet_fly_targeting
  1431. {
  1432. BYTE bHeader;
  1433. DWORD dwShooterVID;
  1434. DWORD dwTargetVID;
  1435. long x, y;
  1436. } TPacketGCFlyTargeting;
  1437.  
  1438. typedef struct packet_shoot
  1439. {
  1440. BYTE bHeader;
  1441. BYTE bType;
  1442. } TPacketCGShoot;
  1443.  
  1444. typedef struct packet_duel_start
  1445. {
  1446. BYTE header;
  1447. WORD wSize; // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4
  1448. } TPacketGCDuelStart;
  1449.  
  1450. enum EPVPModes
  1451. {
  1452. PVP_MODE_NONE,
  1453. PVP_MODE_AGREE,
  1454. PVP_MODE_FIGHT,
  1455. PVP_MODE_REVENGE
  1456. };
  1457.  
  1458. typedef struct packet_pvp
  1459. {
  1460. BYTE bHeader;
  1461. DWORD dwVIDSrc;
  1462. DWORD dwVIDDst;
  1463. BYTE bMode; // 0 이면 끔, 1이면 켬
  1464. } TPacketGCPVP;
  1465.  
  1466. typedef struct command_use_skill
  1467. {
  1468. BYTE bHeader;
  1469. DWORD dwVnum;
  1470. DWORD dwVID;
  1471. } TPacketCGUseSkill;
  1472.  
  1473. typedef struct command_target
  1474. {
  1475. BYTE header;
  1476. DWORD dwVID;
  1477. } TPacketCGTarget;
  1478.  
  1479. typedef struct packet_target
  1480. {
  1481. BYTE header;
  1482. DWORD dwVID;
  1483. BYTE bHPPercent;
  1484. } TPacketGCTarget;
  1485.  
  1486. #ifdef __SEND_TARGET_INFO__
  1487. typedef struct packet_target_info
  1488. {
  1489. BYTE header;
  1490. DWORD dwVID;
  1491. DWORD race;
  1492. DWORD dwVnum;
  1493. BYTE count;
  1494. } TPacketGCTargetInfo;
  1495.  
  1496. typedef struct packet_target_info_load
  1497. {
  1498. BYTE header;
  1499. DWORD dwVID;
  1500. } TPacketCGTargetInfoLoad;
  1501. #endif
  1502.  
  1503. typedef struct packet_warp
  1504. {
  1505. BYTE bHeader;
  1506. long lX;
  1507. long lY;
  1508. long lAddr;
  1509. WORD wPort;
  1510. } TPacketGCWarp;
  1511.  
  1512. typedef struct command_warp
  1513. {
  1514. BYTE bHeader;
  1515. } TPacketCGWarp;
  1516.  
  1517. struct packet_quest_info
  1518. {
  1519. BYTE header;
  1520. WORD size;
  1521. WORD index;
  1522. BYTE flag;
  1523. };
  1524.  
  1525. enum
  1526. {
  1527. MESSENGER_SUBHEADER_GC_LIST,
  1528. MESSENGER_SUBHEADER_GC_LOGIN,
  1529. MESSENGER_SUBHEADER_GC_LOGOUT,
  1530. MESSENGER_SUBHEADER_GC_INVITE,
  1531. MESSENGER_SUBHEADER_GC_MOBILE
  1532. };
  1533.  
  1534. typedef struct packet_messenger
  1535. {
  1536. BYTE header;
  1537. WORD size;
  1538. BYTE subheader;
  1539. } TPacketGCMessenger;
  1540.  
  1541. typedef struct packet_messenger_guild_list
  1542. {
  1543. BYTE connected;
  1544. BYTE length;
  1545. //char login[LOGIN_MAX_LEN+1];
  1546. } TPacketGCMessengerGuildList;
  1547.  
  1548. typedef struct packet_messenger_guild_login
  1549. {
  1550. BYTE length;
  1551. //char login[LOGIN_MAX_LEN+1];
  1552. } TPacketGCMessengerGuildLogin;
  1553.  
  1554. typedef struct packet_messenger_guild_logout
  1555. {
  1556. BYTE length;
  1557.  
  1558. //char login[LOGIN_MAX_LEN+1];
  1559. } TPacketGCMessengerGuildLogout;
  1560.  
  1561. typedef struct packet_messenger_list_offline
  1562. {
  1563. BYTE connected; // always 0
  1564. BYTE length;
  1565. } TPacketGCMessengerListOffline;
  1566.  
  1567. typedef struct packet_messenger_list_online
  1568. {
  1569. BYTE connected; // always 1
  1570. BYTE length;
  1571. } TPacketGCMessengerListOnline;
  1572.  
  1573. enum
  1574. {
  1575. MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  1576. MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  1577. MESSENGER_SUBHEADER_CG_REMOVE,
  1578. MESSENGER_SUBHEADER_CG_INVITE_ANSWER,
  1579. };
  1580.  
  1581. typedef struct command_messenger
  1582. {
  1583. BYTE header;
  1584. BYTE subheader;
  1585. } TPacketCGMessenger;
  1586.  
  1587. typedef struct command_messenger_add_by_vid
  1588. {
  1589. DWORD vid;
  1590. } TPacketCGMessengerAddByVID;
  1591.  
  1592. typedef struct command_messenger_add_by_name
  1593. {
  1594. BYTE length;
  1595. //char login[LOGIN_MAX_LEN+1];
  1596. } TPacketCGMessengerAddByName;
  1597.  
  1598. typedef struct command_messenger_remove
  1599. {
  1600. char login[LOGIN_MAX_LEN+1];
  1601. //DWORD account;
  1602. } TPacketCGMessengerRemove;
  1603.  
  1604. typedef struct command_safebox_checkout
  1605. {
  1606. BYTE bHeader;
  1607. BYTE bSafePos;
  1608. TItemPos ItemPos;
  1609. } TPacketCGSafeboxCheckout;
  1610.  
  1611. typedef struct command_safebox_checkin
  1612. {
  1613. BYTE bHeader;
  1614. BYTE bSafePos;
  1615. TItemPos ItemPos;
  1616. } TPacketCGSafeboxCheckin;
  1617.  
  1618. ///////////////////////////////////////////////////////////////////////////////////
  1619. // Party
  1620.  
  1621. typedef struct command_party_parameter
  1622. {
  1623. BYTE bHeader;
  1624. BYTE bDistributeMode;
  1625. } TPacketCGPartyParameter;
  1626.  
  1627. typedef struct paryt_parameter
  1628. {
  1629. BYTE bHeader;
  1630. BYTE bDistributeMode;
  1631. } TPacketGCPartyParameter;
  1632.  
  1633. typedef struct packet_party_add
  1634. {
  1635. BYTE header;
  1636. DWORD pid;
  1637. char name[CHARACTER_NAME_MAX_LEN+1];
  1638. } TPacketGCPartyAdd;
  1639.  
  1640. typedef struct command_party_invite
  1641. {
  1642. BYTE header;
  1643. DWORD vid;
  1644. } TPacketCGPartyInvite;
  1645.  
  1646. typedef struct packet_party_invite
  1647. {
  1648. BYTE header;
  1649. DWORD leader_vid;
  1650. } TPacketGCPartyInvite;
  1651.  
  1652. typedef struct command_party_invite_answer
  1653. {
  1654. BYTE header;
  1655. DWORD leader_vid;
  1656. BYTE accept;
  1657. } TPacketCGPartyInviteAnswer;
  1658.  
  1659. typedef struct packet_party_update
  1660. {
  1661. BYTE header;
  1662. DWORD pid;
  1663. BYTE role;
  1664. BYTE percent_hp;
  1665. short affects[7];
  1666. } TPacketGCPartyUpdate;
  1667.  
  1668. typedef struct packet_party_remove
  1669. {
  1670. BYTE header;
  1671. DWORD pid;
  1672. } TPacketGCPartyRemove;
  1673.  
  1674. typedef struct packet_party_link
  1675. {
  1676. BYTE header;
  1677. DWORD pid;
  1678. DWORD vid;
  1679. } TPacketGCPartyLink;
  1680.  
  1681. typedef struct packet_party_unlink
  1682. {
  1683. BYTE header;
  1684. DWORD pid;
  1685. DWORD vid;
  1686. } TPacketGCPartyUnlink;
  1687.  
  1688. typedef struct command_party_remove
  1689. {
  1690. BYTE header;
  1691. DWORD pid;
  1692. } TPacketCGPartyRemove;
  1693.  
  1694. typedef struct command_party_set_state
  1695. {
  1696. BYTE header;
  1697. DWORD pid;
  1698. BYTE byRole;
  1699. BYTE flag;
  1700. } TPacketCGPartySetState;
  1701.  
  1702. enum
  1703. {
  1704. PARTY_SKILL_HEAL = 1,
  1705. PARTY_SKILL_WARP = 2
  1706. };
  1707.  
  1708. typedef struct command_party_use_skill
  1709. {
  1710. BYTE header;
  1711. BYTE bySkillIndex;
  1712. DWORD vid;
  1713. } TPacketCGPartyUseSkill;
  1714.  
  1715. typedef struct packet_safebox_size
  1716. {
  1717. BYTE bHeader;
  1718. BYTE bSize;
  1719. } TPacketCGSafeboxSize;
  1720.  
  1721. typedef struct packet_safebox_wrong_password
  1722. {
  1723. BYTE bHeader;
  1724. } TPacketCGSafeboxWrongPassword;
  1725.  
  1726. typedef struct command_empire
  1727. {
  1728. BYTE bHeader;
  1729. BYTE bEmpire;
  1730. } TPacketCGEmpire;
  1731.  
  1732. typedef struct packet_empire
  1733. {
  1734. BYTE bHeader;
  1735. BYTE bEmpire;
  1736. } TPacketGCEmpire;
  1737.  
  1738. enum
  1739. {
  1740. SAFEBOX_MONEY_STATE_SAVE,
  1741. SAFEBOX_MONEY_STATE_WITHDRAW,
  1742. };
  1743.  
  1744. typedef struct command_safebox_money
  1745. {
  1746. BYTE bHeader;
  1747. BYTE bState;
  1748. long lMoney;
  1749. } TPacketCGSafeboxMoney;
  1750.  
  1751. typedef struct packet_safebox_money_change
  1752. {
  1753. BYTE bHeader;
  1754. long lMoney;
  1755. } TPacketGCSafeboxMoneyChange;
  1756.  
  1757. // Guild
  1758.  
  1759. enum
  1760. {
  1761. GUILD_SUBHEADER_GC_LOGIN,
  1762. GUILD_SUBHEADER_GC_LOGOUT,
  1763. GUILD_SUBHEADER_GC_LIST,
  1764. GUILD_SUBHEADER_GC_GRADE,
  1765. GUILD_SUBHEADER_GC_ADD,
  1766. GUILD_SUBHEADER_GC_REMOVE,
  1767. GUILD_SUBHEADER_GC_GRADE_NAME,
  1768. GUILD_SUBHEADER_GC_GRADE_AUTH,
  1769. GUILD_SUBHEADER_GC_INFO,
  1770. GUILD_SUBHEADER_GC_COMMENTS,
  1771. GUILD_SUBHEADER_GC_CHANGE_EXP,
  1772. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  1773. GUILD_SUBHEADER_GC_SKILL_INFO,
  1774. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  1775. GUILD_SUBHEADER_GC_GUILD_INVITE,
  1776. GUILD_SUBHEADER_GC_WAR,
  1777. GUILD_SUBHEADER_GC_GUILD_NAME,
  1778. GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  1779. GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  1780. GUILD_SUBHEADER_GC_WAR_SCORE,
  1781. GUILD_SUBHEADER_GC_MONEY_CHANGE,
  1782. };
  1783.  
  1784. enum GUILD_SUBHEADER_CG
  1785. {
  1786. GUILD_SUBHEADER_CG_ADD_MEMBER,
  1787. GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  1788. GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  1789. GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  1790. GUILD_SUBHEADER_CG_OFFER,
  1791. GUILD_SUBHEADER_CG_POST_COMMENT,
  1792. GUILD_SUBHEADER_CG_DELETE_COMMENT,
  1793. GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  1794. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  1795. GUILD_SUBHEADER_CG_USE_SKILL,
  1796. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  1797. GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  1798. GUILD_SUBHEADER_CG_CHARGE_GSP,
  1799. GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  1800. GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  1801. };
  1802.  
  1803. typedef struct packet_guild
  1804. {
  1805. BYTE header;
  1806. WORD size;
  1807. BYTE subheader;
  1808. } TPacketGCGuild;
  1809.  
  1810. typedef struct packet_guild_name_t
  1811. {
  1812. BYTE header;
  1813. WORD size;
  1814. BYTE subheader;
  1815. DWORD guildID;
  1816. char guildName[GUILD_NAME_MAX_LEN];
  1817. } TPacketGCGuildName;
  1818.  
  1819. typedef struct packet_guild_war
  1820. {
  1821. DWORD dwGuildSelf;
  1822. DWORD dwGuildOpp;
  1823. BYTE bType;
  1824. BYTE bWarState;
  1825. } TPacketGCGuildWar;
  1826.  
  1827. typedef struct command_guild
  1828. {
  1829. BYTE header;
  1830. BYTE subheader;
  1831. } TPacketCGGuild;
  1832.  
  1833. typedef struct command_guild_answer_make_guild
  1834. {
  1835. BYTE header;
  1836. char guild_name[GUILD_NAME_MAX_LEN+1];
  1837. } TPacketCGAnswerMakeGuild;
  1838.  
  1839. typedef struct command_guild_use_skill
  1840. {
  1841. DWORD dwVnum;
  1842. DWORD dwPID;
  1843. } TPacketCGGuildUseSkill;
  1844.  
  1845. // Guild Mark
  1846. typedef struct command_mark_login
  1847. {
  1848. BYTE header;
  1849. DWORD handle;
  1850. DWORD random_key;
  1851. } TPacketCGMarkLogin;
  1852.  
  1853. typedef struct command_mark_upload
  1854. {
  1855. BYTE header;
  1856. DWORD gid;
  1857. BYTE image[16*12*4];
  1858. } TPacketCGMarkUpload;
  1859.  
  1860. typedef struct command_mark_idxlist
  1861. {
  1862. BYTE header;
  1863. } TPacketCGMarkIDXList;
  1864.  
  1865. typedef struct command_mark_crclist
  1866. {
  1867. BYTE header;
  1868. BYTE imgIdx;
  1869. DWORD crclist[80];
  1870. } TPacketCGMarkCRCList;
  1871.  
  1872. typedef struct packet_mark_idxlist
  1873. {
  1874. BYTE header;
  1875. DWORD bufSize;
  1876. WORD count;
  1877. //뒤에 size * (WORD + WORD)만큼 데이터 붙음
  1878. } TPacketGCMarkIDXList;
  1879.  
  1880. typedef struct packet_mark_block
  1881. {
  1882. BYTE header;
  1883. DWORD bufSize;
  1884. BYTE imgIdx;
  1885. DWORD count;
  1886. // 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
  1887. } TPacketGCMarkBlock;
  1888.  
  1889. typedef struct command_symbol_upload
  1890. {
  1891. BYTE header;
  1892. WORD size;
  1893. DWORD guild_id;
  1894. } TPacketCGGuildSymbolUpload;
  1895.  
  1896. typedef struct command_symbol_crc
  1897. {
  1898. BYTE header;
  1899. DWORD guild_id;
  1900. DWORD crc;
  1901. DWORD size;
  1902. } TPacketCGSymbolCRC;
  1903.  
  1904. typedef struct packet_symbol_data
  1905. {
  1906. BYTE header;
  1907. WORD size;
  1908. DWORD guild_id;
  1909. } TPacketGCGuildSymbolData;
  1910.  
  1911. // Fishing
  1912.  
  1913. typedef struct command_fishing
  1914. {
  1915. BYTE header;
  1916. BYTE dir;
  1917. } TPacketCGFishing;
  1918.  
  1919. typedef struct packet_fishing
  1920. {
  1921. BYTE header;
  1922. BYTE subheader;
  1923. DWORD info;
  1924. BYTE dir;
  1925. } TPacketGCFishing;
  1926.  
  1927. enum
  1928. {
  1929. FISHING_SUBHEADER_GC_START,
  1930. FISHING_SUBHEADER_GC_STOP,
  1931. FISHING_SUBHEADER_GC_REACT,
  1932. FISHING_SUBHEADER_GC_SUCCESS,
  1933. FISHING_SUBHEADER_GC_FAIL,
  1934. FISHING_SUBHEADER_GC_FISH,
  1935. };
  1936.  
  1937. typedef struct command_give_item
  1938. {
  1939. BYTE byHeader;
  1940. DWORD dwTargetVID;
  1941. TItemPos ItemPos;
  1942. BYTE byItemCount;
  1943. } TPacketCGGiveItem;
  1944.  
  1945. typedef struct SPacketCGHack
  1946. {
  1947. BYTE bHeader;
  1948. char szBuf[255 + 1];
  1949. } TPacketCGHack;
  1950.  
  1951. // SubHeader - Dungeon
  1952. enum
  1953. {
  1954. DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  1955. DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  1956. };
  1957.  
  1958. typedef struct packet_dungeon
  1959. {
  1960. BYTE bHeader;
  1961. WORD size;
  1962. BYTE subheader;
  1963. } TPacketGCDungeon;
  1964.  
  1965. typedef struct packet_dungeon_dest_position
  1966. {
  1967. long x;
  1968. long y;
  1969. } TPacketGCDungeonDestPosition;
  1970.  
  1971. typedef struct SPacketGCShopSign
  1972. {
  1973. BYTE bHeader;
  1974. DWORD dwVID;
  1975. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1976. } TPacketGCShopSign;
  1977.  
  1978. typedef struct SPacketCGMyShop
  1979. {
  1980. BYTE bHeader;
  1981. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1982. BYTE bCount;
  1983. } TPacketCGMyShop;
  1984.  
  1985. typedef struct SPacketGCTime
  1986. {
  1987. BYTE bHeader;
  1988. time_t time;
  1989. } TPacketGCTime;
  1990.  
  1991. enum
  1992. {
  1993. WALKMODE_RUN,
  1994. WALKMODE_WALK,
  1995. };
  1996.  
  1997. typedef struct SPacketGCWalkMode
  1998. {
  1999. BYTE header;
  2000. DWORD vid;
  2001. BYTE mode;
  2002. } TPacketGCWalkMode;
  2003.  
  2004. typedef struct SPacketGCChangeSkillGroup
  2005. {
  2006. BYTE header;
  2007. BYTE skill_group;
  2008. } TPacketGCChangeSkillGroup;
  2009.  
  2010. typedef struct SPacketCGRefine
  2011. {
  2012. BYTE header;
  2013. BYTE pos;
  2014. BYTE type;
  2015. } TPacketCGRefine;
  2016.  
  2017. typedef struct SPacketCGRequestRefineInfo
  2018. {
  2019. BYTE header;
  2020. BYTE pos;
  2021. } TPacketCGRequestRefineInfo;
  2022.  
  2023. typedef struct SPacketGCRefineInformaion
  2024. {
  2025. BYTE header;
  2026. BYTE type;
  2027. BYTE pos;
  2028. DWORD src_vnum;
  2029. DWORD result_vnum;
  2030. BYTE material_count;
  2031. int cost; // 소요 비용
  2032. int prob; // 확률
  2033. TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2034. } TPacketGCRefineInformation;
  2035.  
  2036. struct TNPCPosition
  2037. {
  2038. BYTE bType;
  2039. char name[CHARACTER_NAME_MAX_LEN+1];
  2040. long x;
  2041. long y;
  2042. };
  2043.  
  2044. typedef struct SPacketGCNPCPosition
  2045. {
  2046. BYTE header;
  2047. WORD size;
  2048. WORD count;
  2049.  
  2050. // array of TNPCPosition
  2051. } TPacketGCNPCPosition;
  2052.  
  2053. typedef struct SPacketGCSpecialEffect
  2054. {
  2055. BYTE header;
  2056. BYTE type;
  2057. DWORD vid;
  2058. } TPacketGCSpecialEffect;
  2059.  
  2060. typedef struct SPacketCGChangeName
  2061. {
  2062. BYTE header;
  2063. BYTE index;
  2064. char name[CHARACTER_NAME_MAX_LEN+1];
  2065. } TPacketCGChangeName;
  2066.  
  2067. typedef struct SPacketGCChangeName
  2068. {
  2069. BYTE header;
  2070. DWORD pid;
  2071. char name[CHARACTER_NAME_MAX_LEN+1];
  2072. } TPacketGCChangeName;
  2073.  
  2074.  
  2075. typedef struct command_client_version
  2076. {
  2077. BYTE header;
  2078. char filename[32+1];
  2079. char timestamp[32+1];
  2080. } TPacketCGClientVersion;
  2081.  
  2082. typedef struct command_client_version2
  2083. {
  2084. BYTE header;
  2085. char filename[32+1];
  2086. char timestamp[32+1];
  2087. } TPacketCGClientVersion2;
  2088.  
  2089. typedef struct packet_channel
  2090. {
  2091. BYTE header;
  2092. BYTE channel;
  2093. } TPacketGCChannel;
  2094.  
  2095. typedef struct pakcet_view_equip
  2096. {
  2097. BYTE header;
  2098. DWORD vid;
  2099. struct {
  2100. DWORD vnum;
  2101. BYTE count;
  2102. long alSockets[ITEM_SOCKET_MAX_NUM];
  2103. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  2104. } equips[WEAR_MAX_NUM];
  2105. } TPacketViewEquip;
  2106.  
  2107. typedef struct
  2108. {
  2109. DWORD dwID;
  2110. long x, y;
  2111. long width, height;
  2112. DWORD dwGuildID;
  2113. } TLandPacketElement;
  2114.  
  2115. typedef struct packet_land_list
  2116. {
  2117. BYTE header;
  2118. WORD size;
  2119. } TPacketGCLandList;
  2120.  
  2121. typedef struct
  2122. {
  2123. BYTE bHeader;
  2124. long lID;
  2125. char szName[32+1];
  2126. DWORD dwVID;
  2127. BYTE bType;
  2128. } TPacketGCTargetCreate;
  2129.  
  2130. typedef struct
  2131. {
  2132. BYTE bHeader;
  2133. long lID;
  2134. long lX, lY;
  2135. } TPacketGCTargetUpdate;
  2136.  
  2137. typedef struct
  2138. {
  2139. BYTE bHeader;
  2140. long lID;
  2141. } TPacketGCTargetDelete;
  2142.  
  2143. typedef struct
  2144. {
  2145. BYTE bHeader;
  2146. TPacketAffectElement elem;
  2147. } TPacketGCAffectAdd;
  2148.  
  2149. typedef struct
  2150. {
  2151. BYTE bHeader;
  2152. DWORD dwType;
  2153. BYTE bApplyOn;
  2154. } TPacketGCAffectRemove;
  2155.  
  2156. typedef struct packet_lover_info
  2157. {
  2158. BYTE header;
  2159. char name[CHARACTER_NAME_MAX_LEN + 1];
  2160. BYTE love_point;
  2161. } TPacketGCLoverInfo;
  2162.  
  2163. typedef struct packet_love_point_update
  2164. {
  2165. BYTE header;
  2166. BYTE love_point;
  2167. } TPacketGCLovePointUpdate;
  2168.  
  2169. // MINING
  2170. typedef struct packet_dig_motion
  2171. {
  2172. BYTE header;
  2173. DWORD vid;
  2174. DWORD target_vid;
  2175. BYTE count;
  2176. } TPacketGCDigMotion;
  2177. // END_OF_MINING
  2178.  
  2179. // SCRIPT_SELECT_ITEM
  2180. typedef struct command_script_select_item
  2181. {
  2182. BYTE header;
  2183. DWORD selection;
  2184. } TPacketCGScriptSelectItem;
  2185. // END_OF_SCRIPT_SELECT_ITEM
  2186.  
  2187. typedef struct packet_damage_info
  2188. {
  2189. BYTE header;
  2190. DWORD dwVID;
  2191. BYTE flag;
  2192. int damage;
  2193. } TPacketGCDamageInfo;
  2194.  
  2195. enum
  2196. {
  2197. RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  2198. RUNUP_MATRIX_QUIZ_MAX_LEN = 8 ,
  2199.  
  2200. };
  2201.  
  2202. typedef struct packet_runup_matrix_quiz
  2203. {
  2204. BYTE bHeader;
  2205. char szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2206. } TPacketGCRunupMatrixQuiz;
  2207.  
  2208. typedef struct command_runup_matrix_answer
  2209. {
  2210. BYTE bHeader;
  2211. char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  2212. } TPacketCGRunupMatrixAnswer;
  2213.  
  2214. typedef struct packet_passpod
  2215. {
  2216. BYTE bHeader;
  2217. char szAnswer[8+1];
  2218. } TPacketCGPasspod;
  2219.  
  2220. typedef struct packet_passpod_failed
  2221. {
  2222. BYTE bHeader;
  2223. char szMessage[128];
  2224. } TPacketCGPasspodFailed;
  2225.  
  2226. typedef struct tag_GGSiege
  2227. {
  2228. BYTE bHeader;
  2229. BYTE bEmpire;
  2230. BYTE bTowerCount;
  2231. } TPacketGGSiege;
  2232.  
  2233. typedef struct SPacketGGMonarchTransfer
  2234. {
  2235. BYTE bHeader;
  2236. DWORD dwTargetPID;
  2237. long x;
  2238. long y;
  2239. } TPacketMonarchGGTransfer;
  2240.  
  2241. typedef struct SPacketGGPCBangUpdate
  2242. {
  2243. BYTE bHeader;
  2244. unsigned long ulPCBangID;
  2245. } TPacketPCBangUpdate;
  2246.  
  2247. typedef struct SPacketGGCheckAwakeness
  2248. {
  2249. BYTE bHeader;
  2250. } TPacketGGCheckAwakeness;
  2251.  
  2252. typedef struct SPacketGCPanamaPack
  2253. {
  2254. BYTE bHeader;
  2255. char szPackName[256];
  2256. BYTE abIV[32];
  2257. } TPacketGCPanamaPack;
  2258.  
  2259. //TODO : 아우 짱나..가변패킷 사이즈 받아들일수 있게 패킷 핸들러 Refactoring 하자.
  2260. typedef struct SPacketGCHybridCryptKeys
  2261. {
  2262. SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2263. ~SPacketGCHybridCryptKeys()
  2264. {
  2265. //GCC 에선 NULL delete 해도 괜찮나? 일단 안전하게 NULL 체크 하자. ( 근데 이거 C++ 표준아니었나 --a )
  2266. if( m_pStream )
  2267. {
  2268. delete[] m_pStream;
  2269. m_pStream = NULL;
  2270. }
  2271. }
  2272.  
  2273. DWORD GetStreamSize()
  2274. {
  2275. return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + KeyStreamLen;
  2276. }
  2277.  
  2278. BYTE* GetStreamData()
  2279. {
  2280. if( m_pStream )
  2281. delete[] m_pStream;
  2282.  
  2283. uDynamicPacketSize = (WORD)GetStreamSize();
  2284.  
  2285. m_pStream = new BYTE[ uDynamicPacketSize ];
  2286.  
  2287. memcpy( m_pStream, &bHeader, 1 );
  2288. memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2289. memcpy( m_pStream+3, &KeyStreamLen, 4 );
  2290.  
  2291. if( KeyStreamLen > 0 )
  2292. memcpy( m_pStream+7, pDataKeyStream, KeyStreamLen );
  2293.  
  2294. return m_pStream;
  2295. }
  2296.  
  2297. BYTE bHeader;
  2298. WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
  2299. int KeyStreamLen;
  2300. BYTE* pDataKeyStream;
  2301.  
  2302. private:
  2303. BYTE* m_pStream;
  2304.  
  2305.  
  2306. } TPacketGCHybridCryptKeys;
  2307.  
  2308.  
  2309. typedef struct SPacketGCPackageSDB
  2310. {
  2311. SPacketGCPackageSDB() : m_pDataSDBStream(NULL), m_pStream(NULL) {}
  2312. ~SPacketGCPackageSDB()
  2313. {
  2314. if( m_pStream )
  2315. {
  2316. delete[] m_pStream;
  2317. m_pStream = NULL;
  2318. }
  2319. }
  2320.  
  2321. DWORD GetStreamSize()
  2322. {
  2323. return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + iStreamLen;
  2324. }
  2325.  
  2326. BYTE* GetStreamData()
  2327. {
  2328. if( m_pStream )
  2329. delete[] m_pStream;
  2330.  
  2331. uDynamicPacketSize = GetStreamSize();
  2332.  
  2333. m_pStream = new BYTE[ uDynamicPacketSize ];
  2334.  
  2335. memcpy( m_pStream, &bHeader, 1 );
  2336. memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2337. memcpy( m_pStream+3, &iStreamLen, 4 );
  2338.  
  2339. if( iStreamLen > 0 )
  2340. memcpy( m_pStream+7, m_pDataSDBStream, iStreamLen );
  2341.  
  2342. return m_pStream;
  2343. }
  2344.  
  2345. BYTE bHeader;
  2346. WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
  2347. int iStreamLen;
  2348. BYTE* m_pDataSDBStream;
  2349.  
  2350. private:
  2351. BYTE* m_pStream;
  2352.  
  2353.  
  2354. } TPacketGCPackageSDB;
  2355.  
  2356. #ifdef _IMPROVED_PACKET_ENCRYPTION_
  2357. struct TPacketKeyAgreement
  2358. {
  2359. static const int MAX_DATA_LEN = 256;
  2360. BYTE bHeader;
  2361. WORD wAgreedLength;
  2362. WORD wDataLength;
  2363. BYTE data[MAX_DATA_LEN];
  2364. };
  2365.  
  2366. struct TPacketKeyAgreementCompleted
  2367. {
  2368. BYTE bHeader;
  2369. BYTE data[3]; // dummy (not used)
  2370. };
  2371.  
  2372. #endif // _IMPROVED_PACKET_ENCRYPTION_
  2373.  
  2374. #define MAX_EFFECT_FILE_NAME 128
  2375. typedef struct SPacketGCSpecificEffect
  2376. {
  2377. BYTE header;
  2378. DWORD vid;
  2379. char effect_file[MAX_EFFECT_FILE_NAME];
  2380. } TPacketGCSpecificEffect;
  2381.  
  2382. // 용혼석
  2383. enum EDragonSoulRefineWindowRefineType
  2384. {
  2385. DragonSoulRefineWindow_UPGRADE,
  2386. DragonSoulRefineWindow_IMPROVEMENT,
  2387. DragonSoulRefineWindow_REFINE,
  2388. };
  2389.  
  2390. enum EPacketCGDragonSoulSubHeaderType
  2391. {
  2392. DS_SUB_HEADER_OPEN,
  2393. DS_SUB_HEADER_CLOSE,
  2394. DS_SUB_HEADER_DO_REFINE_GRADE,
  2395. DS_SUB_HEADER_DO_REFINE_STEP,
  2396. DS_SUB_HEADER_DO_REFINE_STRENGTH,
  2397. DS_SUB_HEADER_REFINE_FAIL,
  2398. DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2399. DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2400. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2401. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2402. DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2403. DS_SUB_HEADER_REFINE_SUCCEED,
  2404. };
  2405. typedef struct SPacketCGDragonSoulRefine
  2406. {
  2407. SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2408. {}
  2409. BYTE header;
  2410. BYTE bSubType;
  2411. TItemPos ItemGrid[DRAGON_SOUL_REFINE_GRID_SIZE];
  2412. } TPacketCGDragonSoulRefine;
  2413.  
  2414. typedef struct SPacketGCDragonSoulRefine
  2415. {
  2416. SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2417. {}
  2418. BYTE header;
  2419. BYTE bSubType;
  2420. TItemPos Pos;
  2421. } TPacketGCDragonSoulRefine;
  2422.  
  2423. typedef struct SPacketCGStateCheck
  2424. {
  2425. BYTE header;
  2426. unsigned long key;
  2427. unsigned long index;
  2428. } TPacketCGStateCheck;
  2429.  
  2430. typedef struct SPacketGCStateCheck
  2431. {
  2432. BYTE header;
  2433. unsigned long key;
  2434. unsigned long index;
  2435. unsigned char state;
  2436. } TPacketGCStateCheck;
  2437.  
  2438. #ifdef __ACCE_SYSTEM__
  2439. enum
  2440. {
  2441. HEADER_CG_ACCE = 211,
  2442. HEADER_GC_ACCE = 215,
  2443. ACCE_SUBHEADER_GC_OPEN = 0,
  2444. ACCE_SUBHEADER_GC_CLOSE,
  2445. ACCE_SUBHEADER_GC_ADDED,
  2446. ACCE_SUBHEADER_GC_REMOVED,
  2447. ACCE_SUBHEADER_CG_REFINED,
  2448. ACCE_SUBHEADER_CG_CLOSE = 0,
  2449. ACCE_SUBHEADER_CG_ADD,
  2450. ACCE_SUBHEADER_CG_REMOVE,
  2451. ACCE_SUBHEADER_CG_REFINE,
  2452. };
  2453.  
  2454. typedef struct SPacketAcce
  2455. {
  2456. BYTE header;
  2457. BYTE subheader;
  2458. bool bWindow;
  2459. DWORD dwPrice;
  2460. BYTE bPos;
  2461. TItemPos tPos;
  2462. DWORD dwItemVnum;
  2463. DWORD dwMinAbs;
  2464. DWORD dwMaxAbs;
  2465. } TPacketAcce;
  2466. #endif
  2467.  
  2468. #pragma pack()
  2469. #endif
Advertisement
Add Comment
Please, Sign In to add comment