Advertisement
Guest User

Untitled

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