1. #include "../../common/service.h"
  2. #ifndef __INC_PACKET_H__
  3. #define __INC_PACKET_H__
  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,
  10. HEADER_CG_LOGIN = 1,
  11. HEADER_CG_ATTACK = 2,
  12. HEADER_CG_CHAT = 3,
  13. HEADER_CG_CHARACTER_CREATE = 4,
  14. HEADER_CG_CHARACTER_DELETE = 5,
  15. HEADER_CG_CHARACTER_SELECT = 6,
  16. HEADER_CG_MOVE = 7,
  17. HEADER_CG_SYNC_POSITION = 8,
  18. HEADER_CG_ENTERGAME = 10,
  19. HEADER_CG_ITEM_USE = 11,
  20. HEADER_CG_ITEM_DROP = 12,
  21. HEADER_CG_ITEM_MOVE = 13,
  22. HEADER_CG_ITEM_PICKUP = 15,
  23. HEADER_CG_QUICKSLOT_ADD = 16,
  24. HEADER_CG_QUICKSLOT_DEL = 17,
  25. HEADER_CG_QUICKSLOT_SWAP = 18,
  26. HEADER_CG_WHISPER = 19,
  27. HEADER_CG_ITEM_DROP2 = 20,
  28. #ifdef ENABLE_DELETE_ITEMS_SYSTEM
  29. HEADER_CG_ITEM_DESTROY = 21,
  30. #endif
  31. HEADER_CG_ITEM_SELL = 22,
  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. #ifdef ENABLE_GROUP_MATCH
  39. HEADER_CG_GROUP_MATCH = 32,
  40. #endif
  41. #ifdef ENABLE_OX_RENEWAL
  42. HEADER_CG_QUEST_INPUT_LONG_STRING = 33,
  43. #endif
  44. HEADER_CG_SHOP = 50,
  45. HEADER_CG_FLY_TARGETING = 51,
  46. HEADER_CG_USE_SKILL = 52,
  47. HEADER_CG_ADD_FLY_TARGETING = 53,
  48. HEADER_CG_SHOOT = 54,
  49. HEADER_CG_MYSHOP = 55,
  50. HEADER_CG_OFFLINE_SHOP = 56,
  51. HEADER_CG_MY_OFFLINE_SHOP = 57,
  52. HEADER_CG_ITEM_USE_TO_ITEM = 60,
  53. HEADER_CG_TARGET = 61,
  54. HEADER_CG_TEXT = 64,
  55. HEADER_CG_WARP = 65,
  56. HEADER_CG_SCRIPT_BUTTON = 66,
  57. HEADER_CG_MESSENGER = 67,
  58. HEADER_CG_MALL_CHECKOUT = 69,
  59. HEADER_CG_SAFEBOX_CHECKIN = 70,
  60. HEADER_CG_SAFEBOX_CHECKOUT = 71,
  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. HEADER_CG_GUILD = 80,
  69. HEADER_CG_ANSWER_MAKE_GUILD = 81,
  70. HEADER_CG_FISHING = 82,
  71. HEADER_CG_ITEM_GIVE = 83,
  72. HEADER_CG_EMPIRE = 90,
  73. HEADER_CG_REFINE = 96,
  74. HEADER_CG_MARK_LOGIN = 100,
  75. HEADER_CG_MARK_CRCLIST = 101,
  76. HEADER_CG_MARK_UPLOAD = 102,
  77. HEADER_CG_MARK_IDXLIST = 104,
  78. HEADER_CG_HACK = 105,
  79. HEADER_CG_CHANGE_NAME = 106,
  80. HEADER_CG_LOGIN2 = 109,
  81. HEADER_CG_DUNGEON = 110,
  82. HEADER_CG_GUILD_SYMBOL_UPLOAD = 112,
  83. HEADER_CG_SYMBOL_CRC = 113,
  84. HEADER_CG_SCRIPT_SELECT_ITEM = 114,
  85. HEADER_CG_LOGIN5_OPENID = 116,
  86. #ifdef ENABLE_PRIVATESHOP_SEARCH_SYSTEM
  87. HEADER_CG_SHOP_SEARCH = 117,
  88. HEADER_CG_SHOP_SEARCH_SUB = 118,
  89. HEADER_CG_SHOP_SEARCH_BUY = 119,
  90. #endif
  91. #ifdef ENABLE_NEW_PET_SYSTEM
  92. HEADER_CG_PetSetName = 147,
  93. #endif
  94. HEADER_CG_PASSPOD_ANSWER = 202,
  95. HEADER_CG_DRAGON_SOUL_REFINE = 205,
  96. HEADER_CG_STATE_CHECKER = 206,
  97. #ifdef ENABLE_CHANGELOOK_SYSTEM
  98. HEADER_CG_CL = 213,
  99. #endif
  100. #if defined(ENABLE_COMBAT_ZONE)
  101. HEADER_CG_COMBAT_ZONE_REQUEST_ACTION = 214,
  102. #endif
  103. #ifdef ENABLE_WHISPER_ADMIN_SYSTEM
  104. HEADER_CG_WHISPER_ADMIN = 223,
  105. #endif
  106. HEADER_CG_SEND_MAIL = 230,
  107. #ifdef ENABLE_ADMIN_BAN_MANAGER
  108. HEADER_CG_ADMIN_BAN_MANAGER = 231,
  109. #endif
  110. #ifdef ENABLE_AURA_SYSTEM
  111. HEADER_CG_AURA = 232,
  112. #endif
  113. HEADER_CG_LOGIN3 = 236,
  114. #ifdef ENABLE_EXTEND_INVEN_SYSTEM
  115. HEADER_CG_EXTEND_INVENTORY = 240,
  116. #endif
  117. // HEADER_CG_ROULETTE = 200,
  118. // HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
  119. HEADER_CG_CLIENT_VERSION = 0xfd,
  120. HEADER_CG_CLIENT_VERSION2 = 0xf1,
  121. /********************************************************/
  122. HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // ENABLE_IMPROVED_PACKET_ENCRYPTION
  123. HEADER_GC_KEY_AGREEMENT = 0xfb, // ENABLE_IMPROVED_PACKET_ENCRYPTION
  124. HEADER_GC_TIME_SYNC = 0xfc,
  125. HEADER_GC_PHASE = 0xfd,
  126. HEADER_GC_BINDUDP = 0xfe,
  127. HEADER_GC_HANDSHAKE = 0xff,
  128. HEADER_GC_CHARACTER_ADD = 1,
  129. HEADER_GC_CHARACTER_DEL = 2,
  130. HEADER_GC_MOVE = 3,
  131. HEADER_GC_CHAT = 4,
  132. HEADER_GC_SYNC_POSITION = 5,
  133. HEADER_GC_LOGIN_SUCCESS = 6,
  134. HEADER_GC_LOGIN_FAILURE = 7,
  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. HEADER_GC_ATTACK = 12,
  140. HEADER_GC_STUN = 13,
  141. HEADER_GC_DEAD = 14,
  142. HEADER_GC_MAIN_CHARACTER_OLD = 15,
  143. HEADER_GC_CHARACTER_POINTS = 16,
  144. HEADER_GC_CHARACTER_POINT_CHANGE = 17,
  145. HEADER_GC_CHANGE_SPEED = 18,
  146. HEADER_GC_CHARACTER_UPDATE = 19,
  147. HEADER_GC_ITEM_DEL = 20,
  148. HEADER_GC_ITEM_SET = 21,
  149. HEADER_GC_ITEM_USE = 22,
  150. HEADER_GC_ITEM_DROP = 23,
  151. HEADER_GC_CHARACTER_UPDATE_NEW = 24,
  152. HEADER_GC_ITEM_UPDATE = 25,
  153. HEADER_GC_ITEM_GROUND_ADD = 26,
  154. HEADER_GC_ITEM_GROUND_DEL = 27,
  155. HEADER_GC_QUICKSLOT_ADD = 28,
  156. HEADER_GC_QUICKSLOT_DEL = 29,
  157. HEADER_GC_QUICKSLOT_SWAP = 30,
  158. HEADER_GC_ITEM_OWNERSHIP = 31,
  159. HEADER_GC_LOGIN_SUCCESS_NEWSLOT = 32,
  160. HEADER_GC_WHISPER = 34,
  161. HEADER_GC_MOTION = 36,
  162. HEADER_GC_PARTS = 37,
  163. HEADER_GC_SHOP = 38,
  164. HEADER_GC_SHOP_SIGN = 39,
  165. HEADER_GC_DUEL_START = 40,
  166. HEADER_GC_PVP = 41,
  167. HEADER_GC_EXCHANGE = 42,
  168. HEADER_GC_CHARACTER_POSITION = 43,
  169. HEADER_GC_PING = 44,
  170. HEADER_GC_SCRIPT = 45,
  171. HEADER_GC_QUEST_CONFIRM = 46,
  172. HEADER_GC_OFFLINE_SHOP = 47,
  173. HEADER_GC_OFFLINE_SHOP_SIGN = 48,
  174. #ifdef ENABLE_SEND_TARGET_INFO
  175. HEADER_GC_TARGET_INFO = 58,
  176. HEADER_CG_TARGET_INFO_LOAD = 59,
  177. #endif
  178. HEADER_GC_MOUNT = 61,
  179. HEADER_GC_OWNERSHIP = 62,
  180. HEADER_GC_TARGET = 63,
  181. HEADER_GC_WARP = 65,
  182. HEADER_GC_ADD_FLY_TARGETING = 69,
  183. HEADER_GC_CREATE_FLY = 70,
  184. HEADER_GC_FLY_TARGETING = 71,
  185. HEADER_GC_SKILL_LEVEL_OLD = 72,
  186. HEADER_GC_MESSENGER = 74,
  187. HEADER_GC_GUILD = 75,
  188. HEADER_GC_SKILL_LEVEL = 76,
  189. HEADER_GC_PARTY_INVITE = 77,
  190. HEADER_GC_PARTY_ADD = 78,
  191. HEADER_GC_PARTY_UPDATE = 79,
  192. HEADER_GC_PARTY_REMOVE = 80,
  193. HEADER_GC_QUEST_INFO = 81,
  194. HEADER_GC_REQUEST_MAKE_GUILD = 82,
  195. HEADER_GC_PARTY_PARAMETER = 83,
  196. HEADER_GC_SAFEBOX_SET = 85,
  197. HEADER_GC_SAFEBOX_DEL = 86,
  198. HEADER_GC_SAFEBOX_WRONG_PASSWORD = 87,
  199. HEADER_GC_SAFEBOX_SIZE = 88,
  200. HEADER_GC_FISHING = 89,
  201. HEADER_GC_EMPIRE = 90,
  202. HEADER_GC_PARTY_LINK = 91,
  203. HEADER_GC_PARTY_UNLINK = 92,
  204. HEADER_GC_REFINE_INFORMATION_OLD = 95,
  205. #ifdef ENABLE_VIEW_EQUIPMENT_SYSTEM
  206. HEADER_GC_VIEW_EQUIP = 99,
  207. #endif
  208. HEADER_GC_MARK_BLOCK = 100,
  209. HEADER_GC_MARK_IDXLIST = 102,
  210. HEADER_GC_TIME = 106,
  211. HEADER_GC_CHANGE_NAME = 107,
  212. HEADER_GC_DUNGEON = 110,
  213. HEADER_GC_WALK_MODE = 111,
  214. HEADER_GC_SKILL_GROUP = 112,
  215. HEADER_GC_MAIN_CHARACTER = 113,
  216. HEADER_GC_SEPCIAL_EFFECT = 114,
  217. HEADER_GC_NPC_POSITION = 115,
  218. HEADER_GC_MATRIX_CARD = 116,
  219. HEADER_GC_LOGIN_KEY = 118,
  220. HEADER_GC_REFINE_INFORMATION = 119,
  221. HEADER_GC_CHANNEL = 121,
  222. HEADER_GC_MALL_OPEN = 122,
  223. HEADER_GC_TARGET_UPDATE = 123,
  224. HEADER_GC_TARGET_DELETE = 124,
  225. HEADER_GC_TARGET_CREATE = 125,
  226. HEADER_GC_AFFECT_ADD = 126,
  227. HEADER_GC_AFFECT_REMOVE = 127,
  228. HEADER_GC_MALL_SET = 128,
  229. HEADER_GC_MALL_DEL = 129,
  230. HEADER_GC_LAND_LIST = 130,
  231. HEADER_GC_LOVER_INFO = 131,
  232. HEADER_GC_LOVE_POINT_UPDATE = 132,
  233. HEADER_GC_SYMBOL_DATA = 133,
  234. HEADER_GC_DIG_MOTION = 134,
  235. HEADER_GC_DAMAGE_INFO = 135,
  236. HEADER_GC_CHAR_ADDITIONAL_INFO = 136,
  237. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  238. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  239. #ifdef ENABLE_SUPPORT_SYSTEM
  240. HEADER_GC_SUPPORT_SKILL = 147,
  241. #endif
  242. HEADER_GC_AUTH_SUCCESS = 150,
  243. HEADER_GC_PANAMA_PACK = 151,
  244. HEADER_GC_HYBRIDCRYPT_KEYS = 152,
  245. HEADER_GC_HYBRIDCRYPT_SDB = 153,
  246. HEADER_GC_AUTH_SUCCESS_OPENID = 154,
  247. #ifdef ENABLE_PRIVATESHOP_SEARCH_SYSTEM
  248. HEADER_GC_SHOPSEARCH_SET = 156,
  249. #endif
  250. #ifdef ENABLE_AURA_SYSTEM
  251. HEADER_GC_AURA = 157,
  252. #endif
  253. HEADER_GC_ROULETTE = 200,
  254. HEADER_GC_REQUEST_PASSPOD = 202,
  255. HEADER_GC_REQUEST_PASSPOD_FAILED = 203,
  256. HEADER_GC_HS_REQUEST = 204,
  257. HEADER_GC_SPECIFIC_EFFECT = 208,
  258. HEADER_GC_DRAGON_SOUL_REFINE = 209,
  259. HEADER_GC_RESPOND_CHANNELSTATUS = 210,
  260. #ifdef ENABLE_CHANGELOOK_SYSTEM
  261. HEADER_GC_CL = 218,
  262. #endif
  263. #if defined(ENABLE_COMBAT_ZONE)
  264. HEADER_GC_RANKING_COMBAT_ZONE = 216,
  265. HEADER_GC_SEND_COMBAT_ZONE = 217,
  266. #endif
  267. HEADER_GC_MAILBOX_SEND = 219,
  268. #ifdef ENABLE_12ZI
  269. HEADER_GC_SEPCIAL_ZODIAC_EFFECT = 222,
  270. #endif
  271. #ifdef ENABLE_EXTEND_INVEN_SYSTEM
  272. HEADER_GC_EXTEND_INVENTORY = 241,
  273. #endif
  274. /////////////////////////////////////////////////////////////////////////////
  275. HEADER_GG_LOGIN = 1,
  276. HEADER_GG_LOGOUT = 2,
  277. HEADER_GG_RELAY = 3,
  278. HEADER_GG_NOTICE = 4,
  279. HEADER_GG_SHUTDOWN = 5,
  280. HEADER_GG_GUILD = 6,
  281. HEADER_GG_DISCONNECT = 7,
  282. HEADER_GG_SHOUT = 8,
  283. HEADER_GG_SETUP = 9,
  284. HEADER_GG_MESSENGER_ADD = 10,
  285. HEADER_GG_MESSENGER_REMOVE = 11,
  286. HEADER_GG_FIND_POSITION = 12,
  287. HEADER_GG_WARP_CHARACTER = 13,
  288. HEADER_GG_MESSENGER_MOBILE = 14,
  289. HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX = 15,
  290. HEADER_GG_TRANSFER = 16,
  291. HEADER_GG_XMAS_WARP_SANTA = 17,
  292. HEADER_GG_XMAS_WARP_SANTA_REPLY = 18,
  293. HEADER_GG_RELOAD_CRC_LIST = 19,
  294. HEADER_GG_LOGIN_PING = 20,
  295. HEADER_GG_CHECK_CLIENT_VERSION = 21,
  296. HEADER_GG_BLOCK_CHAT = 22,
  297. HEADER_GG_BLOCK_EXCEPTION = 24,
  298. HEADER_GG_SIEGE = 25,
  299. HEADER_GG_MONARCH_NOTICE = 26,
  300. HEADER_GG_MONARCH_TRANSFER = 27,
  301. HEADER_GG_PCBANG_UPDATE = 28,
  302. HEADER_GG_CHECK_AWAKENESS = 29,
  303. HEADER_GG_REMOVE_OFFLINE_SHOP = 30,
  304. HEADER_GG_CHANGE_OFFLINE_SHOP_TIME = 31,
  305. HEADER_GG_OFFLINE_SHOP_BUY = 32,
  306. HEADER_GG_BIG_NOTICE = 33,
  307. #ifdef ENABLE_MESSENGER_BLOCK
  308. HEADER_GG_MESSENGER_BLOCK_ADD = 34,
  309. HEADER_GG_MESSENGER_BLOCK_REMOVE = 35,
  310. #endif
  311. #ifdef ENABLE_WHISPER_ADMIN_SYSTEM
  312. HEADER_GG_WHISPER_SYSTEM = 38,
  313. #endif
  314. HEADER_GG_OFFLINE_SHOP_SEND_MESSAGE = 39,
  315. };
  316. #pragma pack(1)
  317. typedef struct SPacketGGSetup
  318. {
  319. BYTE bHeader;
  320. WORD wPort;
  321. BYTE bChannel;
  322. } TPacketGGSetup;
  323. #if defined(ENABLE_COMBAT_ZONE)
  324. typedef struct SPacketCGCombatZoneAction
  325. {
  326. BYTE header;
  327. int action;
  328. int value;
  329. } TPacketCGCombatZoneRequestAction;
  330. typedef struct SPacketGCCombatZone
  331. {
  332. int rank;
  333. char name[12 + 1];
  334. int empire;
  335. int points;
  336. } TPacketGCCombatZoneRanking;
  337. typedef struct SPacketGCCombatZoneData
  338. {
  339. BYTE header;
  340. TPacketGCCombatZoneRanking rankingData[11];
  341. } TPacketGCCombatZoneRankingData;
  342. typedef struct SPacketGCSendCombatZone
  343. {
  344. BYTE header;
  345. DWORD sub_header;
  346. DWORD m_pInfoData[4];
  347. DWORD m_pDataDays[7][8];
  348. bool isRunning;
  349. } TPacketGCSendCombatZone;
  350. #endif
  351. typedef struct SPacketGGLogin
  352. {
  353. BYTE bHeader;
  354. char szName[CHARACTER_NAME_MAX_LEN + 1];
  355. DWORD dwPID;
  356. BYTE bEmpire;
  357. long lMapIndex;
  358. BYTE bChannel;
  359. } TPacketGGLogin;
  360. typedef struct SPacketGGLogout
  361. {
  362. BYTE bHeader;
  363. char szName[CHARACTER_NAME_MAX_LEN + 1];
  364. } TPacketGGLogout;
  365. typedef struct SPacketGGRelay
  366. {
  367. BYTE bHeader;
  368. char szName[CHARACTER_NAME_MAX_LEN + 1];
  369. long lSize;
  370. } TPacketGGRelay;
  371. typedef struct SPacketGGNotice
  372. {
  373. BYTE bHeader;
  374. long lSize;
  375. } TPacketGGNotice;
  376. typedef struct SPacketGGBigNotice
  377. {
  378. BYTE bHeader;
  379. long lSize;
  380. } TPacketGGBigNotice;
  381. typedef struct SPacketGGMonarchNotice
  382. {
  383. BYTE bHeader;
  384. BYTE bEmpire;
  385. long lSize;
  386. } TPacketGGMonarchNotice;
  387. //FORKED_ROAD
  388. typedef struct SPacketGGForkedMapInfo
  389. {
  390. BYTE bHeader;
  391. BYTE bPass;
  392. BYTE bSungzi;
  393. } TPacketGGForkedMapInfo;
  394. //END_FORKED_ROAD
  395. typedef struct SPacketGGShutdown
  396. {
  397. BYTE bHeader;
  398. } TPacketGGShutdown;
  399. typedef struct SPacketGGGuild
  400. {
  401. BYTE bHeader;
  402. BYTE bSubHeader;
  403. DWORD dwGuild;
  404. } TPacketGGGuild;
  405. enum
  406. {
  407. GUILD_SUBHEADER_GG_CHAT,
  408. GUILD_SUBHEADER_GG_SET_MEMBER_COUNT_BONUS,
  409. };
  410. typedef struct SPacketGGGuildChat
  411. {
  412. BYTE bHeader;
  413. BYTE bSubHeader;
  414. DWORD dwGuild;
  415. char szText[CHAT_MAX_LEN + 1];
  416. } TPacketGGGuildChat;
  417. typedef struct SPacketGGParty
  418. {
  419. BYTE header;
  420. BYTE subheader;
  421. DWORD pid;
  422. DWORD leaderpid;
  423. } TPacketGGParty;
  424. enum
  425. {
  426. PARTY_SUBHEADER_GG_CREATE,
  427. PARTY_SUBHEADER_GG_DESTROY,
  428. PARTY_SUBHEADER_GG_JOIN,
  429. PARTY_SUBHEADER_GG_QUIT,
  430. };
  431. typedef struct SPacketGGDisconnect
  432. {
  433. BYTE bHeader;
  434. char szLogin[LOGIN_MAX_LEN + 1];
  435. } TPacketGGDisconnect;
  436. typedef struct SPacketGGShout
  437. {
  438. BYTE bHeader;
  439. BYTE bEmpire;
  440. char szText[CHAT_MAX_LEN + 1];
  441. } TPacketGGShout;
  442. typedef struct SPacketGGXmasWarpSanta
  443. {
  444. BYTE bHeader;
  445. BYTE bChannel;
  446. long lMapIndex;
  447. } TPacketGGXmasWarpSanta;
  448. typedef struct SPacketGGXmasWarpSantaReply
  449. {
  450. BYTE bHeader;
  451. BYTE bChannel;
  452. } TPacketGGXmasWarpSantaReply;
  453. typedef struct SMessengerData
  454. {
  455. char szMobile[MOBILE_MAX_LEN + 1];
  456. } TMessengerData;
  457. typedef struct SPacketGGMessenger
  458. {
  459. BYTE bHeader;
  460. char szAccount[CHARACTER_NAME_MAX_LEN + 1];
  461. char szCompanion[CHARACTER_NAME_MAX_LEN + 1];
  462. } TPacketGGMessenger;
  463. typedef struct SPacketGGMessengerMobile
  464. {
  465. BYTE bHeader;
  466. char szName[CHARACTER_NAME_MAX_LEN + 1];
  467. char szMobile[MOBILE_MAX_LEN + 1];
  468. } TPacketGGMessengerMobile;
  469. typedef struct SPacketGGFindPosition
  470. {
  471. BYTE header;
  472. DWORD dwFromPID; // Àú À§Ä¡·Î ¿öÇÁÇÏ·Á´Â »ç¶÷
  473. DWORD dwTargetPID; // ã´Â »ç¶÷
  474. } TPacketGGFindPosition;
  475. typedef struct SPacketGGWarpCharacter
  476. {
  477. BYTE header;
  478. DWORD pid;
  479. long x;
  480. long y;
  481. } TPacketGGWarpCharacter;
  482. // HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX = 15,
  483. typedef struct SPacketGGGuildWarMapIndex
  484. {
  485. BYTE bHeader;
  486. DWORD dwGuildID1;
  487. DWORD dwGuildID2;
  488. long lMapIndex;
  489. } TPacketGGGuildWarMapIndex;
  490. typedef struct SPacketGGTransfer
  491. {
  492. BYTE bHeader;
  493. char szName[CHARACTER_NAME_MAX_LEN + 1];
  494. long lX, lY;
  495. } TPacketGGTransfer;
  496. typedef struct SPacketGGLoginPing
  497. {
  498. BYTE bHeader;
  499. char szLogin[LOGIN_MAX_LEN + 1];
  500. } TPacketGGLoginPing;
  501. typedef struct SPacketGGBlockChat
  502. {
  503. BYTE bHeader;
  504. char szName[CHARACTER_NAME_MAX_LEN + 1];
  505. long lBlockDuration;
  506. } TPacketGGBlockChat;
  507. typedef struct SPacketGGRemoveOfflineShop
  508. {
  509. BYTE bHeader;
  510. long lMapIndex;
  511. char szNpcName[CHARACTER_NAME_MAX_LEN + 1];
  512. } TPacketGGRemoveOfflineShop;
  513. typedef struct SPacketGGChangeOfflineShopTime
  514. {
  515. BYTE bHeader;
  516. BYTE bTime;
  517. long lMapIndex;
  518. DWORD dwOwnerPID;
  519. } TPacketGGChangeOfflineShopTime;
  520. typedef struct SPacketGGOfflineShopBuy
  521. {
  522. BYTE bHeader;
  523. DWORD dwMoney;
  524. char szBuyerName[CHARACTER_NAME_MAX_LEN + 1];
  525. } TPacketGGOfflineShopBuy;
  526. /* Ŭ¶óÀÌ¾ğÆ® Ãø¿¡¼­ º¸³»´Â ÆĞŶ */
  527. typedef struct command_text
  528. {
  529. BYTE bHeader;
  530. } TPacketCGText;
  531. /* ·Î±×ÀÎ (1) */
  532. typedef struct command_handshake
  533. {
  534. BYTE bHeader;
  535. DWORD dwHandshake;
  536. DWORD dwTime;
  537. long lDelta;
  538. } TPacketCGHandshake;
  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. typedef struct command_login2
  546. {
  547. BYTE header;
  548. char login[LOGIN_MAX_LEN + 1];
  549. DWORD dwLoginKey;
  550. DWORD adwClientKey[4];
  551. } TPacketCGLogin2;
  552. typedef struct command_login3
  553. {
  554. BYTE header;
  555. char login[LOGIN_MAX_LEN + 1];
  556. char passwd[PASSWD_MAX_LEN + 1];
  557. DWORD adwClientKey[4];
  558. #ifdef GUVENLI_PC_VE_MAC_SISTEMI
  559. char cHWInfo[255 + 1];
  560. BYTE guvenlimi;
  561. #endif
  562. } TPacketCGLogin3;
  563. typedef struct command_login5
  564. {
  565. BYTE header;
  566. char authKey[OPENID_AUTHKEY_LEN + 1];
  567. DWORD adwClientKey[4];
  568. } TPacketCGLogin5;
  569. typedef struct command_matrix_card
  570. {
  571. BYTE bHeader;
  572. char szAnswer[MATRIX_ANSWER_MAX_LEN + 1];
  573. } TPacketCGMatrixCard;
  574. #ifdef ENABLE_NEW_PET_SYSTEM
  575. typedef struct packet_RequestPetName
  576. {
  577. BYTE byHeader;
  578. char petname[13];
  579. }TPacketCGRequestPetName;
  580. #endif
  581. typedef struct packet_matrix_card
  582. {
  583. BYTE bHeader;
  584. DWORD dwRows;
  585. DWORD dwCols;
  586. } TPacketGCMatrixCard;
  587. typedef struct packet_login_key
  588. {
  589. BYTE bHeader;
  590. DWORD dwLoginKey;
  591. } TPacketGCLoginKey;
  592. typedef struct command_player_select
  593. {
  594. BYTE header;
  595. BYTE index;
  596. } TPacketCGPlayerSelect;
  597. typedef struct command_player_delete
  598. {
  599. BYTE header;
  600. BYTE index;
  601. char private_code[8];
  602. } TPacketCGPlayerDelete;
  603. typedef struct command_player_create
  604. {
  605. BYTE header;
  606. BYTE index;
  607. char name[CHARACTER_NAME_MAX_LEN + 1];
  608. WORD job;
  609. BYTE shape;
  610. BYTE Con;
  611. BYTE Int;
  612. BYTE Str;
  613. BYTE Dex;
  614. } TPacketCGPlayerCreate;
  615. typedef struct command_player_create_success
  616. {
  617. BYTE header;
  618. BYTE bAccountCharacterIndex;
  619. TSimplePlayer player;
  620. } TPacketGCPlayerCreateSuccess;
  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. enum EMoveFuncType
  631. {
  632. FUNC_WAIT,
  633. FUNC_MOVE,
  634. FUNC_ATTACK,
  635. FUNC_COMBO,
  636. FUNC_MOB_SKILL,
  637. _FUNC_SKILL,
  638. FUNC_MAX_NUM,
  639. FUNC_SKILL = 0x80,
  640. };
  641. // À̵¿
  642. typedef struct command_move
  643. {
  644. BYTE bHeader;
  645. BYTE bFunc;
  646. BYTE bArg;
  647. BYTE bRot;
  648. long lX;
  649. long lY;
  650. DWORD dwTime;
  651. } TPacketCGMove;
  652. typedef struct command_sync_position_element
  653. {
  654. DWORD dwVID;
  655. long lX;
  656. long lY;
  657. } TPacketCGSyncPositionElement;
  658. // À§Ä¡ µ¿±âÈ­
  659. typedef struct command_sync_position // °¡º¯ ÆĞŶ
  660. {
  661. BYTE bHeader;
  662. WORD wSize;
  663. } TPacketCGSyncPosition;
  664. /* äÆÃ (3) */
  665. typedef struct command_chat // °¡º¯ ÆĞŶ
  666. {
  667. BYTE header;
  668. WORD size;
  669. BYTE type;
  670. } TPacketCGChat;
  671. /* ±Ó¼Ó¸» */
  672. typedef struct command_whisper
  673. {
  674. BYTE bHeader;
  675. WORD wSize;
  676. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  677. } TPacketCGWhisper;
  678. typedef struct command_entergame
  679. {
  680. BYTE header;
  681. } TPacketCGEnterGame;
  682. typedef struct command_item_use
  683. {
  684. BYTE header;
  685. TItemPos Cell;
  686. } TPacketCGItemUse;
  687. typedef struct command_item_use_to_item
  688. {
  689. BYTE header;
  690. TItemPos Cell;
  691. TItemPos TargetCell;
  692. } TPacketCGItemUseToItem;
  693. typedef struct command_item_drop
  694. {
  695. BYTE header;
  696. TItemPos Cell;
  697. DWORD gold;
  698. #ifdef ENABLE_CHEQUE_SYSTEM
  699. DWORD cheque;
  700. #endif
  701. } TPacketCGItemDrop;
  702. typedef struct command_item_drop2
  703. {
  704. BYTE header;
  705. TItemPos Cell;
  706. DWORD gold;
  707. #ifdef ENABLE_CHEQUE_SYSTEM
  708. DWORD cheque;
  709. #endif
  710. BYTE count;
  711. } TPacketCGItemDrop2;
  712. #ifdef ENABLE_DELETE_ITEMS_SYSTEM
  713. typedef struct command_item_destroy
  714. {
  715. BYTE header;
  716. TItemPos Cell;
  717. } TPacketCGItemDestroy;
  718. #endif
  719. typedef struct command_item_sell
  720. {
  721. BYTE header;
  722. TItemPos Cell;
  723. } TPacketCGItemSell;
  724. typedef struct command_item_move
  725. {
  726. BYTE header;
  727. TItemPos Cell;
  728. TItemPos CellTo;
  729. BYTE count;
  730. } TPacketCGItemMove;
  731. #ifdef ENABLE_GROUP_MATCH
  732. typedef struct grup_paketi
  733. {
  734. BYTE header;
  735. BYTE index;
  736. BYTE ayar;
  737. } TPacketCGGrup;
  738. #endif
  739. typedef struct command_item_pickup
  740. {
  741. BYTE header;
  742. DWORD vid;
  743. } TPacketCGItemPickup;
  744. typedef struct command_quickslot_add
  745. {
  746. BYTE header;
  747. UINT pos;
  748. TQuickslot slot;
  749. } TPacketCGQuickslotAdd;
  750. typedef struct command_quickslot_del
  751. {
  752. BYTE header;
  753. UINT pos;
  754. } TPacketCGQuickslotDel;
  755. typedef struct command_quickslot_swap
  756. {
  757. BYTE header;
  758. UINT pos;
  759. UINT change_pos;
  760. } TPacketCGQuickslotSwap;
  761. enum
  762. {
  763. SHOP_SUBHEADER_CG_END,
  764. SHOP_SUBHEADER_CG_BUY,
  765. SHOP_SUBHEADER_CG_SELL,
  766. SHOP_SUBHEADER_CG_SELL2,
  767. SHOP_SUBHEADER_CG_CHANGE_EDIT_TIME,
  768. SHOP_SUBHEADER_CG_ADD_ITEM,
  769. SHOP_SUBHEADER_CG_REMOVE_ITEM,
  770. SHOP_SUBHEADER_CG_CHANGE_PRICE,
  771. SHOP_SUBHEADER_CG_DESTROY_OFFLINE_SHOP,
  772. SHOP_SUBHEADER_CG_REFRESH,
  773. SHOP_SUBHEADER_CG_REFRESH_MONEY,
  774. SHOP_SUBHEADER_CG_WITHDRAW_MONEY,
  775. #ifdef ENABLE_CHEQUE_SYSTEM
  776. SHOP_SUBHEADER_CG_WITHDRAW_CHEQUE,
  777. #endif
  778. SHOP_SUBHEADER_CG_REFRESH_STATUS,
  779. };
  780. typedef struct command_shop_buy
  781. {
  782. BYTE count;
  783. } TPacketCGShopBuy;
  784. typedef struct command_shop_sell
  785. {
  786. BYTE pos;
  787. BYTE count;
  788. } TPacketCGShopSell;
  789. typedef struct command_shop
  790. {
  791. BYTE header;
  792. BYTE subheader;
  793. } TPacketCGShop;
  794. typedef struct command_on_click
  795. {
  796. BYTE header;
  797. DWORD vid;
  798. } TPacketCGOnClick;
  799. enum
  800. {
  801. EXCHANGE_SUBHEADER_CG_START, /* arg1 == vid of target character */
  802. EXCHANGE_SUBHEADER_CG_ITEM_ADD, /* arg1 == position of item */
  803. EXCHANGE_SUBHEADER_CG_ITEM_DEL, /* arg1 == position of item */
  804. EXCHANGE_SUBHEADER_CG_ELK_ADD, /* arg1 == amount of gold */
  805. EXCHANGE_SUBHEADER_CG_ACCEPT, /* arg1 == not used */
  806. EXCHANGE_SUBHEADER_CG_CANCEL, /* arg1 == not used */
  807. #ifdef ENABLE_CHEQUE_SYSTEM
  808. EXCHANGE_SUBHEADER_CG_WON_ADD, /* arg1 == amount of won */
  809. #endif
  810. };
  811. typedef struct command_exchange
  812. {
  813. BYTE header;
  814. BYTE sub_header;
  815. DWORD arg1;
  816. BYTE arg2;
  817. TItemPos Pos;
  818. } TPacketCGExchange;
  819. typedef struct command_position
  820. {
  821. BYTE header;
  822. BYTE position;
  823. } TPacketCGPosition;
  824. typedef struct command_script_answer
  825. {
  826. BYTE header;
  827. BYTE answer;
  828. //char file[32 + 1];
  829. //BYTE answer[16 + 1];
  830. } TPacketCGScriptAnswer;
  831. typedef struct command_script_button
  832. {
  833. BYTE header;
  834. unsigned int idx;
  835. } TPacketCGScriptButton;
  836. typedef struct command_quest_input_string
  837. {
  838. BYTE header;
  839. char msg[64+1];
  840. } TPacketCGQuestInputString;
  841. #ifdef ENABLE_OX_RENEWAL
  842. typedef struct command_quest_input_long_string
  843. {
  844. BYTE header;
  845. char msg[128 + 1];
  846. } TPacketCGQuestInputLongString;
  847. #endif
  848. typedef struct command_quest_confirm
  849. {
  850. BYTE header;
  851. BYTE answer;
  852. DWORD requestPID;
  853. } TPacketCGQuestConfirm;
  854. /*
  855. * ¼­¹ö Ãø¿¡¼­ º¸³»´Â ÆĞŶ
  856. */
  857. typedef struct packet_quest_confirm
  858. {
  859. BYTE header;
  860. char msg[64+1];
  861. long timeout;
  862. DWORD requestPID;
  863. } TPacketGCQuestConfirm;
  864. typedef struct packet_handshake
  865. {
  866. BYTE bHeader;
  867. DWORD dwHandshake;
  868. DWORD dwTime;
  869. long lDelta;
  870. } TPacketGCHandshake;
  871. enum EPhase
  872. {
  873. PHASE_CLOSE,
  874. PHASE_HANDSHAKE,
  875. PHASE_LOGIN,
  876. PHASE_SELECT,
  877. PHASE_LOADING,
  878. PHASE_GAME,
  879. PHASE_DEAD,
  880. PHASE_CLIENT_CONNECTING,
  881. PHASE_DBCLIENT,
  882. PHASE_P2P,
  883. PHASE_AUTH,
  884. PHASE_TEEN,
  885. PHASE_PASSPOD,
  886. };
  887. typedef struct packet_phase
  888. {
  889. BYTE header;
  890. BYTE phase;
  891. } TPacketGCPhase;
  892. typedef struct packet_bindudp
  893. {
  894. BYTE header;
  895. DWORD addr;
  896. WORD port;
  897. } TPacketGCBindUDP;
  898. enum
  899. {
  900. LOGIN_FAILURE_ALREADY = 1,
  901. LOGIN_FAILURE_ID_NOT_EXIST = 2,
  902. LOGIN_FAILURE_WRONG_PASS = 3,
  903. LOGIN_FAILURE_FALSE = 4,
  904. LOGIN_FAILURE_NOT_TESTOR = 5,
  905. LOGIN_FAILURE_NOT_TEST_TIME = 6,
  906. LOGIN_FAILURE_FULL = 7
  907. };
  908. typedef struct packet_login_success
  909. {
  910. BYTE bHeader;
  911. TSimplePlayer players[PLAYER_PER_ACCOUNT];
  912. DWORD guild_id[PLAYER_PER_ACCOUNT];
  913. char guild_name[PLAYER_PER_ACCOUNT][GUILD_NAME_MAX_LEN+1];
  914. DWORD handle;
  915. DWORD random_key;
  916. } TPacketGCLoginSuccess;
  917. typedef struct packet_auth_success
  918. {
  919. BYTE bHeader;
  920. DWORD dwLoginKey;
  921. BYTE bResult;
  922. } TPacketGCAuthSuccess;
  923. typedef struct packet_auth_success_openid
  924. {
  925. BYTE bHeader;
  926. DWORD dwLoginKey;
  927. BYTE bResult;
  928. char login[LOGIN_MAX_LEN + 1];
  929. } TPacketGCAuthSuccessOpenID;
  930. typedef struct packet_login_failure
  931. {
  932. BYTE header;
  933. char szStatus[ACCOUNT_STATUS_MAX_LEN + 1];
  934. } TPacketGCLoginFailure;
  935. typedef struct packet_create_failure
  936. {
  937. BYTE header;
  938. BYTE bType;
  939. } TPacketGCCreateFailure;
  940. enum
  941. {
  942. ADD_CHARACTER_STATE_DEAD = (1 << 0),
  943. ADD_CHARACTER_STATE_SPAWN = (1 << 1),
  944. ADD_CHARACTER_STATE_GUNGON = (1 << 2),
  945. ADD_CHARACTER_STATE_KILLER = (1 << 3),
  946. ADD_CHARACTER_STATE_PARTY = (1 << 4),
  947. };
  948. enum ECharacterEquipmentPart
  949. {
  950. CHR_EQUIPPART_ARMOR,
  951. CHR_EQUIPPART_WEAPON,
  952. CHR_EQUIPPART_HEAD,
  953. CHR_EQUIPPART_HAIR,
  954. #ifdef ENABLE_SASH_SYSTEM
  955. CHR_EQUIPPART_SASH,
  956. #endif
  957. #ifdef ENABLE_NEW_ARROW_SYSTEM
  958. CHR_PART_ARROW_TYPE,
  959. #endif
  960. #ifdef ENABLE_AURA_SYSTEM
  961. CHR_EQUIPPART_AURA,
  962. #endif
  963. CHR_EQUIPPART_NUM,
  964. };
  965. typedef struct packet_add_char
  966. {
  967. BYTE header;
  968. DWORD dwVID;
  969. #if defined(ENABLE_WJ_SHOW_MOB_INFO)
  970. DWORD dwLevel;
  971. DWORD dwAIFlag;
  972. #endif
  973. float angle;
  974. long x;
  975. long y;
  976. long z;
  977. BYTE bType;
  978. WORD wRaceNum;
  979. BYTE bMovingSpeed;
  980. BYTE bAttackSpeed;
  981. BYTE bStateFlag;
  982. DWORD dwAffectFlag[2];
  983. } TPacketGCCharacterAdd;
  984. typedef struct packet_char_additional_info
  985. {
  986. BYTE header;
  987. DWORD dwVID;
  988. char name[CHARACTER_NAME_MAX_LEN + 1];
  989. WORD awPart[CHR_EQUIPPART_NUM];
  990. BYTE bEmpire;
  991. DWORD dwGuildID;
  992. DWORD dwLevel;
  993. short sAlignment;
  994. DWORD dwWeaponEvolution;
  995. BYTE bPKMode;
  996. #if defined(ENABLE_COMBAT_ZONE)
  997. BYTE combat_zone_rank;
  998. #endif
  999. DWORD dwMountVnum;
  1000. BYTE dwGuildAuth;
  1001. } TPacketGCCharacterAdditionalInfo;
  1002. typedef struct packet_update_char
  1003. {
  1004. BYTE header;
  1005. DWORD dwVID;
  1006. WORD awPart[CHR_EQUIPPART_NUM];
  1007. BYTE bMovingSpeed;
  1008. BYTE bAttackSpeed;
  1009. BYTE bStateFlag;
  1010. DWORD dwAffectFlag[2];
  1011. DWORD dwGuildID;
  1012. short sAlignment;
  1013. DWORD dwWeaponEvolution;
  1014. #ifdef ENABLE_NEW_PET_SYSTEM
  1015. DWORD dwLevel;
  1016. #endif
  1017. BYTE bPKMode;
  1018. #if defined(ENABLE_COMBAT_ZONE)
  1019. DWORD combat_zone_points;
  1020. #endif
  1021. DWORD dwMountVnum;
  1022. BYTE dwGuildAuth;
  1023. #ifdef ENABLE_AUTO_HUNTING_SYSTEM
  1024. bool bAutoHuntStatus;
  1025. #endif
  1026. } TPacketGCCharacterUpdate;
  1027. typedef struct packet_del_char
  1028. {
  1029. BYTE header;
  1030. DWORD id;
  1031. } TPacketGCCharacterDelete;
  1032. #ifdef ENABLE_WHISPER_ADMIN_SYSTEM
  1033. typedef struct SPacketCGWhisperAdmin
  1034. {
  1035. BYTE header;
  1036. char szText[512 + 1];
  1037. char szLang[2 + 1];
  1038. int color;
  1039. } TPacketCGWhisperAdmin;
  1040. typedef struct SPacketGGWhisperSystem
  1041. {
  1042. BYTE bHeader;
  1043. long lSize;
  1044. } TPacketGGWhisperSystem;
  1045. #endif
  1046. typedef struct packet_chat
  1047. {
  1048. BYTE header;
  1049. WORD size;
  1050. BYTE type;
  1051. DWORD id;
  1052. BYTE bEmpire;
  1053. } TPacketGCChat;
  1054. typedef struct packet_whisper
  1055. {
  1056. BYTE bHeader;
  1057. WORD wSize;
  1058. BYTE bType;
  1059. char szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1060. } TPacketGCWhisper;
  1061. typedef struct packet_main_character
  1062. {
  1063. BYTE header;
  1064. DWORD dwVID;
  1065. WORD wRaceNum;
  1066. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1067. long lx, ly, lz;
  1068. BYTE empire;
  1069. BYTE skill_group;
  1070. } TPacketGCMainCharacter;
  1071. // SUPPORT_BGM
  1072. typedef struct packet_main_character3_bgm
  1073. {
  1074. enum
  1075. {
  1076. MUSIC_NAME_LEN = 24,
  1077. };
  1078. BYTE header;
  1079. DWORD dwVID;
  1080. WORD wRaceNum;
  1081. char szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1082. char szBGMName[MUSIC_NAME_LEN + 1];
  1083. long lx, ly, lz;
  1084. BYTE empire;
  1085. BYTE skill_group;
  1086. } TPacketGCMainCharacter3_BGM;
  1087. typedef struct packet_main_character4_bgm_vol
  1088. {
  1089. enum
  1090. {
  1091. MUSIC_NAME_LEN = 24,
  1092. };
  1093. BYTE header;
  1094. DWORD dwVID;
  1095. WORD wRaceNum;
  1096. char szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1097. char szBGMName[MUSIC_NAME_LEN + 1];
  1098. float fBGMVol;
  1099. long lx, ly, lz;
  1100. BYTE empire;
  1101. BYTE skill_group;
  1102. } TPacketGCMainCharacter4_BGM_VOL;
  1103. // END_OF_SUPPORT_BGM
  1104. typedef struct packet_points
  1105. {
  1106. BYTE header;
  1107. INT points[POINT_MAX_NUM];
  1108. } TPacketGCPoints;
  1109. typedef struct packet_skill_level
  1110. {
  1111. BYTE bHeader;
  1112. TPlayerSkill skills[SKILL_MAX_NUM];
  1113. } TPacketGCSkillLevel;
  1114. typedef struct packet_point_change
  1115. {
  1116. int header;
  1117. DWORD dwVID;
  1118. BYTE type;
  1119. long amount;
  1120. long value;
  1121. } TPacketGCPointChange;
  1122. typedef struct packet_stun
  1123. {
  1124. BYTE header;
  1125. DWORD vid;
  1126. } TPacketGCStun;
  1127. typedef struct packet_dead
  1128. {
  1129. BYTE header;
  1130. DWORD vid;
  1131. } TPacketGCDead;
  1132. struct TPacketGCItemDelDeprecated
  1133. {
  1134. BYTE header;
  1135. TItemPos Cell;
  1136. DWORD vnum;
  1137. BYTE count;
  1138. #ifdef ENABLE_CHANGELOOK_SYSTEM
  1139. DWORD transmutation;
  1140. #endif
  1141. DWORD evolution;
  1142. long bind;
  1143. long alSockets[ITEM_SOCKET_MAX_NUM];
  1144. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1145. };
  1146. typedef struct packet_item_set
  1147. {
  1148. BYTE header;
  1149. TItemPos Cell;
  1150. DWORD vnum;
  1151. BYTE count;
  1152. long bind;
  1153. #ifdef ENABLE_CHANGELOOK_SYSTEM
  1154. DWORD transmutation;
  1155. #endif
  1156. DWORD evolution;
  1157. DWORD flags;
  1158. DWORD anti_flags;
  1159. bool highlight;
  1160. long alSockets[ITEM_SOCKET_MAX_NUM];
  1161. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1162. } TPacketGCItemSet;
  1163. typedef struct packet_item_del
  1164. {
  1165. BYTE header;
  1166. UINT pos;
  1167. } TPacketGCItemDel;
  1168. struct packet_item_use
  1169. {
  1170. BYTE header;
  1171. TItemPos Cell;
  1172. DWORD ch_vid;
  1173. DWORD victim_vid;
  1174. DWORD vnum;
  1175. };
  1176. struct packet_item_move
  1177. {
  1178. BYTE header;
  1179. TItemPos Cell;
  1180. TItemPos CellTo;
  1181. };
  1182. typedef struct packet_item_update
  1183. {
  1184. BYTE header;
  1185. TItemPos Cell;
  1186. BYTE count;
  1187. long bind;
  1188. #ifdef ENABLE_CHANGELOOK_SYSTEM
  1189. DWORD transmutation;
  1190. #endif
  1191. DWORD evolution;
  1192. long alSockets[ITEM_SOCKET_MAX_NUM];
  1193. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1194. } TPacketGCItemUpdate;
  1195. typedef struct packet_item_ground_add
  1196. {
  1197. BYTE bHeader;
  1198. long x, y, z;
  1199. DWORD dwVID;
  1200. DWORD dwVnum;
  1201. DWORD evolution;
  1202. long alSockets[ITEM_SOCKET_MAX_NUM];
  1203. DWORD count;
  1204. } TPacketGCItemGroundAdd;
  1205. typedef struct packet_item_ownership
  1206. {
  1207. BYTE bHeader;
  1208. DWORD dwVID;
  1209. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1210. } TPacketGCItemOwnership;
  1211. typedef struct packet_item_ground_del
  1212. {
  1213. BYTE bHeader;
  1214. DWORD dwVID;
  1215. } TPacketGCItemGroundDel;
  1216. struct packet_quickslot_add
  1217. {
  1218. BYTE header;
  1219. UINT pos;
  1220. TQuickslot slot;
  1221. };
  1222. struct packet_quickslot_del
  1223. {
  1224. BYTE header;
  1225. UINT pos;
  1226. };
  1227. struct packet_quickslot_swap
  1228. {
  1229. BYTE header;
  1230. UINT pos;
  1231. UINT pos_to;
  1232. };
  1233. struct packet_motion
  1234. {
  1235. BYTE header;
  1236. DWORD vid;
  1237. DWORD victim_vid;
  1238. WORD motion;
  1239. };
  1240. enum EPacketShopSubHeaders
  1241. {
  1242. SHOP_SUBHEADER_GC_START,
  1243. SHOP_SUBHEADER_GC_END,
  1244. SHOP_SUBHEADER_GC_UPDATE_ITEM,
  1245. SHOP_SUBHEADER_GC_UPDATE_PRICE,
  1246. SHOP_SUBHEADER_GC_OK,
  1247. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  1248. SHOP_SUBHEADER_GC_SOLDOUT,
  1249. SHOP_SUBHEADER_GC_INVENTORY_FULL,
  1250. SHOP_SUBHEADER_GC_INVALID_POS,
  1251. SHOP_SUBHEADER_GC_SOLD_OUT,
  1252. SHOP_SUBHEADER_GC_START_EX,
  1253. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  1254. SHOP_SUBHEADER_GC_UPDATE_ITEM2,
  1255. SHOP_SUBHEADER_GC_REFRESH_MONEY,
  1256. #ifdef ENABLE_CHEQUE_SYSTEM
  1257. SHOP_SUBHEADER_GC_NOT_ENOUGH_CHEQUE,
  1258. SHOP_SUBHEADER_GC_NOT_ENOUGH_CHEQUE_MONEY,
  1259. #endif
  1260. #ifdef ENABLE_SHOP_SISTEM
  1261. YOK_2,
  1262. YOK_3,
  1263. #endif
  1264. #if defined(ENABLE_COMBAT_ZONE)
  1265. SHOP_SUBHEADER_GC_NOT_ENOUGH_POINTS,
  1266. SHOP_SUBHEADER_GC_MAX_LIMIT_POINTS,
  1267. SHOP_SUBHEADER_GC_OVERFLOW_LIMIT_POINTS,
  1268. #endif
  1269. #ifdef ENABLE_BUY_WITH_ITEM
  1270. SHOP_SUBHEADER_GC_NOT_ENOUGH_ITEM,
  1271. #endif
  1272. #ifdef ENABLE_12ZI
  1273. SHOP_SUBHEADER_GC_NOT_ENOUGH_ZODIAC_ITEM,
  1274. #endif
  1275. SHOP_SUBHEADER_GC_REFRESH_STATUS,
  1276. };
  1277. struct packet_shop_item
  1278. {
  1279. DWORD vnum;
  1280. DWORD price;
  1281. #ifdef ENABLE_CHEQUE_SYSTEM
  1282. DWORD price_cheque;
  1283. #endif
  1284. #ifdef ENABLE_BUY_WITH_ITEM
  1285. DWORD witemVnum;
  1286. #endif
  1287. BYTE count;
  1288. BYTE display_pos;
  1289. long alSockets[ITEM_SOCKET_MAX_NUM];
  1290. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1291. BYTE status;
  1292. char szBuyerName[72];
  1293. #ifdef ENABLE_CHANGELOOK_SYSTEM
  1294. DWORD transmutation;
  1295. #endif
  1296. DWORD evolution;
  1297. #ifdef ENABLE_12ZI
  1298. DWORD getLimitedCount;
  1299. DWORD getLimitedPurchaseCount;
  1300. #endif
  1301. };
  1302. typedef struct packet_shop_start
  1303. {
  1304. DWORD owner_vid;
  1305. struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1306. #ifdef ENABLE_12ZI
  1307. bool islimiteditemshop;
  1308. #endif
  1309. } TPacketGCShopStart;
  1310. typedef struct packet_offline_shop_start
  1311. {
  1312. DWORD owner_vid;
  1313. struct packet_shop_item items[OFFLINE_SHOP_HOST_ITEM_MAX_NUM];
  1314. } TPacketGCOfflineShopStart;
  1315. typedef struct packet_shop_start_ex
  1316. {
  1317. typedef struct sub_packet_shop_tab
  1318. {
  1319. char name[SHOP_TAB_NAME_MAX];
  1320. BYTE coin_type;
  1321. packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1322. } TSubPacketShopTab;
  1323. DWORD owner_vid;
  1324. BYTE shop_tab_count;
  1325. #if defined(ENABLE_COMBAT_ZONE)
  1326. DWORD points;
  1327. DWORD curLimit;
  1328. DWORD maxLimit;
  1329. #endif
  1330. } TPacketGCShopStartEx;
  1331. typedef struct packet_shop_update_item
  1332. {
  1333. BYTE pos;
  1334. struct packet_shop_item item;
  1335. } TPacketGCShopUpdateItem;
  1336. typedef struct packet_shop_update_price
  1337. {
  1338. BYTE bPos;
  1339. int iPrice;
  1340. #ifdef ENABLE_CHEQUE_SYSTEM
  1341. int iPriceCheque;
  1342. #endif
  1343. } TPacketGCShopUpdatePrice;
  1344. typedef struct packet_shop
  1345. {
  1346. BYTE header;
  1347. WORD size;
  1348. BYTE subheader;
  1349. } TPacketGCShop;
  1350. typedef struct packet_offline_shop_money
  1351. {
  1352. DWORD dwMoney;
  1353. DWORD dwCheque;
  1354. } TPacketGCOfflineShopMoney;
  1355. typedef struct packet_offline_shop_status
  1356. {
  1357. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1358. DWORD dwTime;
  1359. DWORD dwMapIndex;
  1360. DWORD dwChannel;
  1361. } TPacketGCOfflineShopStatus;
  1362. struct packet_exchange
  1363. {
  1364. BYTE header;
  1365. BYTE sub_header;
  1366. BYTE is_me;
  1367. DWORD arg1; // vnum
  1368. TItemPos arg2; // cell
  1369. DWORD arg3; // count
  1370. long alSockets[ITEM_SOCKET_MAX_NUM];
  1371. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1372. #ifdef ENABLE_TRADABLE_ICON
  1373. TItemPos arg4; // srccell
  1374. #endif
  1375. #ifdef ENABLE_CHANGELOOK_SYSTEM
  1376. DWORD dwTransmutation;
  1377. #endif
  1378. DWORD evolution;
  1379. };
  1380. enum EPacketTradeSubHeaders
  1381. {
  1382. EXCHANGE_SUBHEADER_GC_START, /* arg1 == vid */
  1383. EXCHANGE_SUBHEADER_GC_ITEM_ADD, /* arg1 == vnum arg2 == pos arg3 == count */
  1384. EXCHANGE_SUBHEADER_GC_ITEM_DEL,
  1385. EXCHANGE_SUBHEADER_GC_GOLD_ADD, /* arg1 == gold */
  1386. EXCHANGE_SUBHEADER_GC_ACCEPT, /* arg1 == accept */
  1387. EXCHANGE_SUBHEADER_GC_END, /* arg1 == not used */
  1388. EXCHANGE_SUBHEADER_GC_ALREADY, /* arg1 == not used */
  1389. EXCHANGE_SUBHEADER_GC_LESS_GOLD, /* arg1 == not used */
  1390. #ifdef ENABLE_CHEQUE_SYSTEM
  1391. EXCHANGE_SUBHEADER_GC_CHEQUE_ADD, /* arg1 == cheque */
  1392. EXCHANGE_SUBHEADER_GC_LESS_CHEQUE, /* arg1 == not used */
  1393. #endif
  1394. };
  1395. struct packet_position
  1396. {
  1397. BYTE header;
  1398. DWORD vid;
  1399. BYTE position;
  1400. };
  1401. typedef struct packet_ping
  1402. {
  1403. BYTE header;
  1404. } TPacketGCPing;
  1405. struct packet_script
  1406. {
  1407. BYTE header;
  1408. WORD size;
  1409. BYTE skin;
  1410. WORD src_size;
  1411. };
  1412. typedef struct packet_change_speed
  1413. {
  1414. BYTE header;
  1415. DWORD vid;
  1416. WORD moving_speed;
  1417. } TPacketGCChangeSpeed;
  1418. struct packet_mount
  1419. {
  1420. BYTE header;
  1421. DWORD vid;
  1422. DWORD mount_vid;
  1423. BYTE pos;
  1424. DWORD x, y;
  1425. };
  1426. typedef struct packet_move
  1427. {
  1428. BYTE bHeader;
  1429. BYTE bFunc;
  1430. BYTE bArg;
  1431. BYTE bRot;
  1432. DWORD dwVID;
  1433. long lX;
  1434. long lY;
  1435. DWORD dwTime;
  1436. DWORD dwDuration;
  1437. } TPacketGCMove;
  1438. // ¼ÒÀ¯±Ç
  1439. typedef struct packet_ownership
  1440. {
  1441. BYTE bHeader;
  1442. DWORD dwOwnerVID;
  1443. DWORD dwVictimVID;
  1444. } TPacketGCOwnership;
  1445. // À§Ä¡ µ¿±âÈ­ ÆĞŶÀÇ bCount ¸¸Å­ ºÙ´Â ´ÜÀ§
  1446. typedef struct packet_sync_position_element
  1447. {
  1448. DWORD dwVID;
  1449. long lX;
  1450. long lY;
  1451. } TPacketGCSyncPositionElement;
  1452. // À§Ä¡ µ¿±âÈ­
  1453. typedef struct packet_sync_position // °¡º¯ ÆĞŶ
  1454. {
  1455. BYTE bHeader;
  1456. WORD wSize; // °³¼ö = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement)
  1457. } TPacketGCSyncPosition;
  1458. typedef struct packet_fly
  1459. {
  1460. BYTE bHeader;
  1461. BYTE bType;
  1462. DWORD dwStartVID;
  1463. DWORD dwEndVID;
  1464. } TPacketGCCreateFly;
  1465. typedef struct command_fly_targeting
  1466. {
  1467. BYTE bHeader;
  1468. DWORD dwTargetVID;
  1469. long x, y;
  1470. } TPacketCGFlyTargeting;
  1471. typedef struct packet_fly_targeting
  1472. {
  1473. BYTE bHeader;
  1474. DWORD dwShooterVID;
  1475. DWORD dwTargetVID;
  1476. long x, y;
  1477. } TPacketGCFlyTargeting;
  1478. typedef struct packet_shoot
  1479. {
  1480. BYTE bHeader;
  1481. BYTE bType;
  1482. } TPacketCGShoot;
  1483. typedef struct packet_duel_start
  1484. {
  1485. BYTE header;
  1486. WORD wSize; // DWORD°¡ ¸î°³? °³¼ö = (wSize - sizeof(TPacketGCPVPList)) / 4
  1487. } TPacketGCDuelStart;
  1488. enum EPVPModes
  1489. {
  1490. PVP_MODE_NONE,
  1491. PVP_MODE_AGREE,
  1492. PVP_MODE_FIGHT,
  1493. PVP_MODE_REVENGE
  1494. };
  1495. typedef struct packet_pvp
  1496. {
  1497. BYTE bHeader;
  1498. DWORD dwVIDSrc;
  1499. DWORD dwVIDDst;
  1500. BYTE bMode; // 0 ÀÌ¸é ²û, 1À̸é ÄÔ
  1501. } TPacketGCPVP;
  1502. #ifdef ENABLE_SUPPORT_SYSTEM
  1503. typedef struct support_use_skill
  1504. {
  1505. BYTE bHeader;
  1506. DWORD dwVnum;
  1507. DWORD dwVid;
  1508. DWORD dwLevel;
  1509. }TPacketGCSupportUseSkill;
  1510. #endif
  1511. typedef struct command_use_skill
  1512. {
  1513. BYTE bHeader;
  1514. DWORD dwVnum;
  1515. DWORD dwVID;
  1516. } TPacketCGUseSkill;
  1517. typedef struct command_target
  1518. {
  1519. BYTE header;
  1520. DWORD dwVID;
  1521. } TPacketCGTarget;
  1522. typedef struct packet_target
  1523. {
  1524. BYTE header;
  1525. DWORD dwVID;
  1526. BYTE bHPPercent;
  1527. #ifdef ENABLE_ELEMENT_TARGET
  1528. BYTE bElement;
  1529. #endif
  1530. #ifdef ENABLE_VIEW_TARGET_DECIMAL_HP
  1531. int iMinHP;
  1532. int iMaxHP;
  1533. #endif
  1534. } TPacketGCTarget;
  1535. #ifdef ENABLE_SEND_TARGET_INFO
  1536. typedef struct packet_target_info
  1537. {
  1538. BYTE header;
  1539. DWORD dwVID;
  1540. DWORD race;
  1541. DWORD dwVnum;
  1542. BYTE count;
  1543. } TPacketGCTargetInfo;
  1544. typedef struct packet_target_info_load
  1545. {
  1546. BYTE header;
  1547. DWORD dwVID;
  1548. } TPacketCGTargetInfoLoad;
  1549. #endif
  1550. typedef struct packet_warp
  1551. {
  1552. BYTE bHeader;
  1553. long lX;
  1554. long lY;
  1555. long lAddr;
  1556. WORD wPort;
  1557. } TPacketGCWarp;
  1558. typedef struct command_warp
  1559. {
  1560. BYTE bHeader;
  1561. } TPacketCGWarp;
  1562. struct packet_quest_info
  1563. {
  1564. BYTE header;
  1565. WORD size;
  1566. WORD index;
  1567. BYTE flag;
  1568. };
  1569. enum
  1570. {
  1571. #ifdef ENABLE_MESSENGER_BLOCK
  1572. MESSENGER_SUBHEADER_GC_BLOCK_LIST,
  1573. MESSENGER_SUBHEADER_GC_BLOCK_LOGIN,
  1574. MESSENGER_SUBHEADER_GC_BLOCK_LOGOUT,
  1575. MESSENGER_SUBHEADER_GC_BLOCK_INVITE,
  1576. #endif
  1577. MESSENGER_SUBHEADER_GC_LIST,
  1578. MESSENGER_SUBHEADER_GC_LOGIN,
  1579. MESSENGER_SUBHEADER_GC_LOGOUT,
  1580. MESSENGER_SUBHEADER_GC_INVITE,
  1581. MESSENGER_SUBHEADER_GC_MOBILE
  1582. };
  1583. typedef struct packet_messenger
  1584. {
  1585. BYTE header;
  1586. WORD size;
  1587. BYTE subheader;
  1588. } TPacketGCMessenger;
  1589. typedef struct packet_messenger_guild_list
  1590. {
  1591. BYTE connected;
  1592. BYTE length;
  1593. //char login[LOGIN_MAX_LEN+1];
  1594. } TPacketGCMessengerGuildList;
  1595. typedef struct packet_messenger_guild_login
  1596. {
  1597. BYTE length;
  1598. //char login[LOGIN_MAX_LEN+1];
  1599. } TPacketGCMessengerGuildLogin;
  1600. typedef struct packet_messenger_guild_logout
  1601. {
  1602. BYTE length;
  1603. //char login[LOGIN_MAX_LEN+1];
  1604. } TPacketGCMessengerGuildLogout;
  1605. typedef struct packet_messenger_list_offline
  1606. {
  1607. BYTE connected; // always 0
  1608. BYTE length;
  1609. } TPacketGCMessengerListOffline;
  1610. typedef struct packet_messenger_list_online
  1611. {
  1612. BYTE connected; // always 1
  1613. BYTE length;
  1614. } TPacketGCMessengerListOnline;
  1615. #ifdef ENABLE_MESSENGER_BLOCK
  1616. typedef struct packet_messenger_block_list_offline
  1617. {
  1618. BYTE connected; // always 0
  1619. BYTE length;
  1620. } TPacketGCMessengerBlockListOffline;
  1621. typedef struct packet_messenger_block_list_online
  1622. {
  1623. BYTE connected; // always 1
  1624. BYTE length;
  1625. } TPacketGCMessengerBlockListOnline;
  1626. #endif
  1627. enum
  1628. {
  1629. #ifdef ENABLE_MESSENGER_BLOCK
  1630. MESSENGER_SUBHEADER_CG_ADD_BLOCK_BY_VID,
  1631. MESSENGER_SUBHEADER_CG_ADD_BLOCK_BY_NAME,
  1632. MESSENGER_SUBHEADER_CG_REMOVE_BLOCK,
  1633. #endif
  1634. MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  1635. MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  1636. MESSENGER_SUBHEADER_CG_REMOVE,
  1637. MESSENGER_SUBHEADER_CG_INVITE_ANSWER,
  1638. };
  1639. typedef struct command_messenger
  1640. {
  1641. BYTE header;
  1642. BYTE subheader;
  1643. } TPacketCGMessenger;
  1644. #ifdef ENABLE_MESSENGER_BLOCK
  1645. typedef struct command_messenger_add_block_by_vid
  1646. {
  1647. DWORD vid;
  1648. } TPacketCGMessengerAddBlockByVID;
  1649. typedef struct command_messenger_add_block_by_name
  1650. {
  1651. BYTE length;
  1652. } TPacketCGMessengerAddBlockByName;
  1653. typedef struct command_messenger_remove_block
  1654. {
  1655. char login[LOGIN_MAX_LEN+1];
  1656. } TPacketCGMessengerRemoveBlock;
  1657. #endif
  1658. typedef struct command_messenger_add_by_vid
  1659. {
  1660. DWORD vid;
  1661. } TPacketCGMessengerAddByVID;
  1662. typedef struct command_messenger_add_by_name
  1663. {
  1664. BYTE length;
  1665. //char login[LOGIN_MAX_LEN+1];
  1666. } TPacketCGMessengerAddByName;
  1667. typedef struct command_messenger_remove
  1668. {
  1669. char login[LOGIN_MAX_LEN+1];
  1670. //DWORD account;
  1671. } TPacketCGMessengerRemove;
  1672. typedef struct command_safebox_checkout
  1673. {
  1674. BYTE bHeader;
  1675. BYTE bSafePos;
  1676. TItemPos ItemPos;
  1677. } TPacketCGSafeboxCheckout;
  1678. typedef struct command_safebox_checkin
  1679. {
  1680. BYTE bHeader;
  1681. BYTE bSafePos;
  1682. TItemPos ItemPos;
  1683. } TPacketCGSafeboxCheckin;
  1684. ///////////////////////////////////////////////////////////////////////////////////
  1685. // Party
  1686. typedef struct command_party_parameter
  1687. {
  1688. BYTE bHeader;
  1689. BYTE bDistributeMode;
  1690. } TPacketCGPartyParameter;
  1691. typedef struct paryt_parameter
  1692. {
  1693. BYTE bHeader;
  1694. BYTE bDistributeMode;
  1695. } TPacketGCPartyParameter;
  1696. typedef struct packet_party_add
  1697. {
  1698. BYTE header;
  1699. DWORD pid;
  1700. char name[CHARACTER_NAME_MAX_LEN+1];
  1701. #ifdef ENABLE_PARTY_UPDATE
  1702. long mapIdx;
  1703. long channel;
  1704. packet_party_add() {
  1705. mapIdx = 0;
  1706. channel = 0;
  1707. }
  1708. #endif
  1709. } TPacketGCPartyAdd;
  1710. typedef struct command_party_invite
  1711. {
  1712. BYTE header;
  1713. DWORD vid;
  1714. } TPacketCGPartyInvite;
  1715. typedef struct packet_party_invite
  1716. {
  1717. BYTE header;
  1718. DWORD leader_vid;
  1719. } TPacketGCPartyInvite;
  1720. typedef struct command_party_invite_answer
  1721. {
  1722. BYTE header;
  1723. DWORD leader_vid;
  1724. BYTE accept;
  1725. } TPacketCGPartyInviteAnswer;
  1726. typedef struct packet_party_update
  1727. {
  1728. BYTE header;
  1729. DWORD pid;
  1730. BYTE role;
  1731. BYTE percent_hp;
  1732. short affects[7];
  1733. } TPacketGCPartyUpdate;
  1734. typedef struct packet_party_remove
  1735. {
  1736. BYTE header;
  1737. DWORD pid;
  1738. } TPacketGCPartyRemove;
  1739. typedef struct packet_party_link
  1740. {
  1741. BYTE header;
  1742. DWORD pid;
  1743. DWORD vid;
  1744. #ifdef ENABLE_PARTY_UPDATE
  1745. long mapIdx;
  1746. long channel;
  1747. packet_party_link() {
  1748. mapIdx = 0;
  1749. channel = 0;
  1750. }
  1751. #endif
  1752. } TPacketGCPartyLink;
  1753. typedef struct packet_party_unlink
  1754. {
  1755. BYTE header;
  1756. DWORD pid;
  1757. DWORD vid;
  1758. } TPacketGCPartyUnlink;
  1759. typedef struct command_party_remove
  1760. {
  1761. BYTE header;
  1762. DWORD pid;
  1763. } TPacketCGPartyRemove;
  1764. typedef struct command_party_set_state
  1765. {
  1766. BYTE header;
  1767. DWORD pid;
  1768. BYTE byRole;
  1769. BYTE flag;
  1770. } TPacketCGPartySetState;
  1771. enum
  1772. {
  1773. PARTY_SKILL_HEAL = 1,
  1774. PARTY_SKILL_WARP = 2
  1775. };
  1776. typedef struct command_party_use_skill
  1777. {
  1778. BYTE header;
  1779. BYTE bySkillIndex;
  1780. DWORD vid;
  1781. } TPacketCGPartyUseSkill;
  1782. typedef struct packet_safebox_size
  1783. {
  1784. BYTE bHeader;
  1785. BYTE bSize;
  1786. } TPacketCGSafeboxSize;
  1787. typedef struct packet_safebox_wrong_password
  1788. {
  1789. BYTE bHeader;
  1790. } TPacketCGSafeboxWrongPassword;
  1791. typedef struct command_empire
  1792. {
  1793. BYTE bHeader;
  1794. BYTE bEmpire;
  1795. } TPacketCGEmpire;
  1796. typedef struct packet_empire
  1797. {
  1798. BYTE bHeader;
  1799. BYTE bEmpire;
  1800. } TPacketGCEmpire;
  1801. enum
  1802. {
  1803. SAFEBOX_MONEY_STATE_SAVE,
  1804. SAFEBOX_MONEY_STATE_WITHDRAW,
  1805. };
  1806. typedef struct command_safebox_money
  1807. {
  1808. BYTE bHeader;
  1809. BYTE bState;
  1810. long lMoney;
  1811. } TPacketCGSafeboxMoney;
  1812. typedef struct packet_safebox_money_change
  1813. {
  1814. BYTE bHeader;
  1815. long lMoney;
  1816. } TPacketGCSafeboxMoneyChange;
  1817. // Guild
  1818. enum
  1819. {
  1820. GUILD_SUBHEADER_GC_LOGIN,
  1821. GUILD_SUBHEADER_GC_LOGOUT,
  1822. GUILD_SUBHEADER_GC_LIST,
  1823. GUILD_SUBHEADER_GC_GRADE,
  1824. GUILD_SUBHEADER_GC_ADD,
  1825. GUILD_SUBHEADER_GC_REMOVE,
  1826. GUILD_SUBHEADER_GC_GRADE_NAME,
  1827. GUILD_SUBHEADER_GC_GRADE_AUTH,
  1828. GUILD_SUBHEADER_GC_INFO,
  1829. GUILD_SUBHEADER_GC_COMMENTS,
  1830. GUILD_SUBHEADER_GC_CHANGE_EXP,
  1831. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  1832. GUILD_SUBHEADER_GC_SKILL_INFO,
  1833. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  1834. GUILD_SUBHEADER_GC_GUILD_INVITE,
  1835. GUILD_SUBHEADER_GC_WAR,
  1836. GUILD_SUBHEADER_GC_GUILD_NAME,
  1837. GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  1838. GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  1839. GUILD_SUBHEADER_GC_WAR_SCORE,
  1840. GUILD_SUBHEADER_GC_MONEY_CHANGE,
  1841. };
  1842. enum GUILD_SUBHEADER_CG
  1843. {
  1844. GUILD_SUBHEADER_CG_ADD_MEMBER,
  1845. GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  1846. GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  1847. GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  1848. GUILD_SUBHEADER_CG_OFFER,
  1849. GUILD_SUBHEADER_CG_POST_COMMENT,
  1850. GUILD_SUBHEADER_CG_DELETE_COMMENT,
  1851. GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  1852. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  1853. GUILD_SUBHEADER_CG_USE_SKILL,
  1854. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  1855. GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  1856. GUILD_SUBHEADER_CG_CHARGE_GSP,
  1857. GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  1858. GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  1859. };
  1860. typedef struct packet_guild
  1861. {
  1862. BYTE header;
  1863. WORD size;
  1864. BYTE subheader;
  1865. } TPacketGCGuild;
  1866. typedef struct packet_guild_name_t
  1867. {
  1868. BYTE header;
  1869. WORD size;
  1870. BYTE subheader;
  1871. DWORD guildID;
  1872. char guildName[GUILD_NAME_MAX_LEN];
  1873. } TPacketGCGuildName;
  1874. typedef struct packet_guild_war
  1875. {
  1876. DWORD dwGuildSelf;
  1877. DWORD dwGuildOpp;
  1878. BYTE bType;
  1879. BYTE bWarState;
  1880. } TPacketGCGuildWar;
  1881. typedef struct command_guild
  1882. {
  1883. BYTE header;
  1884. BYTE subheader;
  1885. } TPacketCGGuild;
  1886. #ifdef ENABLE_ADMIN_BAN_MANAGER
  1887. typedef struct SPacketCGAdminTool
  1888. {
  1889. BYTE header;
  1890. int action;
  1891. char user_name[12 + 1];
  1892. char reason[32 + 1];
  1893. int duration;
  1894. } TPacketCGAdminBanManger;
  1895. #endif
  1896. typedef struct command_guild_answer_make_guild
  1897. {
  1898. BYTE header;
  1899. char guild_name[GUILD_NAME_MAX_LEN+1];
  1900. } TPacketCGAnswerMakeGuild;
  1901. typedef struct command_guild_use_skill
  1902. {
  1903. DWORD dwVnum;
  1904. DWORD dwPID;
  1905. } TPacketCGGuildUseSkill;
  1906. // Guild Mark
  1907. typedef struct command_mark_login
  1908. {
  1909. BYTE header;
  1910. DWORD handle;
  1911. DWORD random_key;
  1912. } TPacketCGMarkLogin;
  1913. typedef struct command_mark_upload
  1914. {
  1915. BYTE header;
  1916. DWORD gid;
  1917. BYTE image[16*12*4];
  1918. } TPacketCGMarkUpload;
  1919. typedef struct command_mark_idxlist
  1920. {
  1921. BYTE header;
  1922. } TPacketCGMarkIDXList;
  1923. typedef struct command_mark_crclist
  1924. {
  1925. BYTE header;
  1926. BYTE imgIdx;
  1927. DWORD crclist[80];
  1928. } TPacketCGMarkCRCList;
  1929. typedef struct packet_mark_idxlist
  1930. {
  1931. BYTE header;
  1932. DWORD bufSize;
  1933. WORD count;
  1934. //µÚ¿¡ size * (WORD + WORD)¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  1935. } TPacketGCMarkIDXList;
  1936. typedef struct packet_mark_block
  1937. {
  1938. BYTE header;
  1939. DWORD bufSize;
  1940. BYTE imgIdx;
  1941. DWORD count;
  1942. // µÚ¿¡ 64 x 48 x Çȼ¿Å©±â(4¹ÙÀÌÆ®) = 12288¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  1943. } TPacketGCMarkBlock;
  1944. typedef struct command_symbol_upload
  1945. {
  1946. BYTE header;
  1947. WORD size;
  1948. DWORD guild_id;
  1949. } TPacketCGGuildSymbolUpload;
  1950. typedef struct command_symbol_crc
  1951. {
  1952. BYTE header;
  1953. DWORD guild_id;
  1954. DWORD crc;
  1955. DWORD size;
  1956. } TPacketCGSymbolCRC;
  1957. typedef struct packet_symbol_data
  1958. {
  1959. BYTE header;
  1960. WORD size;
  1961. DWORD guild_id;
  1962. } TPacketGCGuildSymbolData;
  1963. // Fishing
  1964. typedef struct command_fishing
  1965. {
  1966. BYTE header;
  1967. BYTE dir;
  1968. } TPacketCGFishing;
  1969. typedef struct packet_fishing
  1970. {
  1971. BYTE header;
  1972. BYTE subheader;
  1973. DWORD info;
  1974. BYTE dir;
  1975. } TPacketGCFishing;
  1976. enum
  1977. {
  1978. FISHING_SUBHEADER_GC_START,
  1979. FISHING_SUBHEADER_GC_STOP,
  1980. FISHING_SUBHEADER_GC_REACT,
  1981. FISHING_SUBHEADER_GC_SUCCESS,
  1982. FISHING_SUBHEADER_GC_FAIL,
  1983. FISHING_SUBHEADER_GC_FISH,
  1984. };
  1985. typedef struct command_give_item
  1986. {
  1987. BYTE byHeader;
  1988. DWORD dwTargetVID;
  1989. TItemPos ItemPos;
  1990. BYTE byItemCount;
  1991. } TPacketCGGiveItem;
  1992. typedef struct SPacketCGHack
  1993. {
  1994. BYTE bHeader;
  1995. char szBuf[255 + 1];
  1996. } TPacketCGHack;
  1997. // SubHeader - Dungeon
  1998. enum
  1999. {
  2000. DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  2001. DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  2002. };
  2003. typedef struct packet_dungeon
  2004. {
  2005. BYTE bHeader;
  2006. WORD size;
  2007. BYTE subheader;
  2008. } TPacketGCDungeon;
  2009. typedef struct packet_dungeon_dest_position
  2010. {
  2011. long x;
  2012. long y;
  2013. } TPacketGCDungeonDestPosition;
  2014. typedef struct SPacketGCShopSign
  2015. {
  2016. BYTE bHeader;
  2017. DWORD dwVID;
  2018. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2019. } TPacketGCShopSign;
  2020. typedef struct SPacketCGMyShop
  2021. {
  2022. BYTE bHeader;
  2023. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2024. BYTE bCount;
  2025. } TPacketCGMyShop;
  2026. typedef struct TPacketCGMyOfflineShop
  2027. {
  2028. BYTE bHeader;
  2029. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2030. BYTE bCount;
  2031. BYTE bTime;
  2032. } TPacketCGMyOfflineShop;
  2033. typedef struct SPacketGCTime
  2034. {
  2035. BYTE bHeader;
  2036. time_t time;
  2037. } TPacketGCTime;
  2038. enum
  2039. {
  2040. WALKMODE_RUN,
  2041. WALKMODE_WALK,
  2042. };
  2043. typedef struct SPacketGCWalkMode
  2044. {
  2045. BYTE header;
  2046. DWORD vid;
  2047. BYTE mode;
  2048. } TPacketGCWalkMode;
  2049. typedef struct SPacketGCChangeSkillGroup
  2050. {
  2051. BYTE header;
  2052. BYTE skill_group;
  2053. } TPacketGCChangeSkillGroup;
  2054. typedef struct SPacketCGRefine
  2055. {
  2056. BYTE header;
  2057. UINT pos;
  2058. BYTE type;
  2059. } TPacketCGRefine;
  2060. typedef struct SPacketCGRequestRefineInfo
  2061. {
  2062. BYTE header;
  2063. UINT pos;
  2064. } TPacketCGRequestRefineInfo;
  2065. typedef struct SPacketGCRefineInformaion
  2066. {
  2067. BYTE header;
  2068. BYTE type;
  2069. UINT pos;
  2070. DWORD src_vnum;
  2071. DWORD result_vnum;
  2072. BYTE material_count;
  2073. int cost; // ¼Ò¿ä ºñ¿ë
  2074. int prob; // È®·ü
  2075. TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2076. } TPacketGCRefineInformation;
  2077. struct TNPCPosition
  2078. {
  2079. BYTE bType;
  2080. char name[CHARACTER_NAME_MAX_LEN+1];
  2081. long x;
  2082. long y;
  2083. };
  2084. typedef struct SPacketGCNPCPosition
  2085. {
  2086. BYTE header;
  2087. WORD size;
  2088. WORD count;
  2089. // array of TNPCPosition
  2090. } TPacketGCNPCPosition;
  2091. typedef struct SPacketGCSpecialEffect
  2092. {
  2093. BYTE header;
  2094. BYTE type;
  2095. DWORD vid;
  2096. } TPacketGCSpecialEffect;
  2097. #ifdef ENABLE_12ZI
  2098. typedef struct SPacketGCSpecialZodiacEffect
  2099. {
  2100. BYTE header;
  2101. BYTE type;
  2102. BYTE type2;
  2103. DWORD vid;
  2104. long x;
  2105. long y;
  2106. } TPacketGCSpecialZodiacEffect;
  2107. #endif
  2108. typedef struct SPacketCGChangeName
  2109. {
  2110. BYTE header;
  2111. BYTE index;
  2112. char name[CHARACTER_NAME_MAX_LEN+1];
  2113. } TPacketCGChangeName;
  2114. typedef struct SPacketGCChangeName
  2115. {
  2116. BYTE header;
  2117. DWORD pid;
  2118. char name[CHARACTER_NAME_MAX_LEN+1];
  2119. } TPacketGCChangeName;
  2120. typedef struct command_client_version
  2121. {
  2122. BYTE header;
  2123. char filename[32+1];
  2124. char timestamp[32+1];
  2125. } TPacketCGClientVersion;
  2126. typedef struct command_client_version2
  2127. {
  2128. BYTE header;
  2129. char filename[32+1];
  2130. char timestamp[32+1];
  2131. } TPacketCGClientVersion2;
  2132. typedef struct packet_channel
  2133. {
  2134. BYTE header;
  2135. BYTE channel;
  2136. } TPacketGCChannel;
  2137. #ifdef ENABLE_VIEW_EQUIPMENT_SYSTEM
  2138. typedef struct pakcet_view_equip
  2139. {
  2140. BYTE header;
  2141. DWORD vid;
  2142. struct
  2143. {
  2144. DWORD vnum;
  2145. BYTE count;
  2146. long alSockets[ITEM_SOCKET_MAX_NUM];
  2147. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  2148. DWORD transmutation;
  2149. DWORD evolution;
  2150. } equips[21];
  2151. } TPacketViewEquip;
  2152. #endif
  2153. typedef struct
  2154. {
  2155. DWORD dwID;
  2156. long x, y;
  2157. long width, height;
  2158. DWORD dwGuildID;
  2159. } TLandPacketElement;
  2160. typedef struct packet_land_list
  2161. {
  2162. BYTE header;
  2163. WORD size;
  2164. } TPacketGCLandList;
  2165. typedef struct
  2166. {
  2167. BYTE bHeader;
  2168. long lID;
  2169. char szName[32+1];
  2170. DWORD dwVID;
  2171. BYTE bType;
  2172. } TPacketGCTargetCreate;
  2173. typedef struct
  2174. {
  2175. BYTE bHeader;
  2176. long lID;
  2177. long lX, lY;
  2178. } TPacketGCTargetUpdate;
  2179. typedef struct
  2180. {
  2181. BYTE bHeader;
  2182. long lID;
  2183. } TPacketGCTargetDelete;
  2184. typedef struct
  2185. {
  2186. BYTE bHeader;
  2187. TPacketAffectElement elem;
  2188. } TPacketGCAffectAdd;
  2189. typedef struct
  2190. {
  2191. BYTE bHeader;
  2192. DWORD dwType;
  2193. BYTE bApplyOn;
  2194. } TPacketGCAffectRemove;
  2195. typedef struct packet_lover_info
  2196. {
  2197. BYTE header;
  2198. char name[CHARACTER_NAME_MAX_LEN + 1];
  2199. BYTE love_point;
  2200. } TPacketGCLoverInfo;
  2201. typedef struct packet_love_point_update
  2202. {
  2203. BYTE header;
  2204. BYTE love_point;
  2205. } TPacketGCLovePointUpdate;
  2206. // MINING
  2207. typedef struct packet_dig_motion
  2208. {
  2209. BYTE header;
  2210. DWORD vid;
  2211. DWORD target_vid;
  2212. BYTE count;
  2213. } TPacketGCDigMotion;
  2214. // END_OF_MINING
  2215. // SCRIPT_SELECT_ITEM
  2216. typedef struct command_script_select_item
  2217. {
  2218. BYTE header;
  2219. DWORD selection;
  2220. } TPacketCGScriptSelectItem;
  2221. // END_OF_SCRIPT_SELECT_ITEM
  2222. typedef struct packet_damage_info
  2223. {
  2224. BYTE header;
  2225. DWORD dwVID;
  2226. BYTE flag;
  2227. int damage;
  2228. } TPacketGCDamageInfo;
  2229. enum
  2230. {
  2231. RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  2232. RUNUP_MATRIX_QUIZ_MAX_LEN = 8 ,
  2233. };
  2234. typedef struct packet_runup_matrix_quiz
  2235. {
  2236. BYTE bHeader;
  2237. char szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2238. } TPacketGCRunupMatrixQuiz;
  2239. typedef struct command_runup_matrix_answer
  2240. {
  2241. BYTE bHeader;
  2242. char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  2243. } TPacketCGRunupMatrixAnswer;
  2244. typedef struct packet_passpod
  2245. {
  2246. BYTE bHeader;
  2247. char szAnswer[8+1];
  2248. } TPacketCGPasspod;
  2249. typedef struct packet_passpod_failed
  2250. {
  2251. BYTE bHeader;
  2252. char szMessage[128];
  2253. } TPacketCGPasspodFailed;
  2254. typedef struct tag_GGSiege
  2255. {
  2256. BYTE bHeader;
  2257. BYTE bEmpire;
  2258. BYTE bTowerCount;
  2259. } TPacketGGSiege;
  2260. typedef struct SPacketGGMonarchTransfer
  2261. {
  2262. BYTE bHeader;
  2263. DWORD dwTargetPID;
  2264. long x;
  2265. long y;
  2266. } TPacketMonarchGGTransfer;
  2267. typedef struct SPacketGGPCBangUpdate
  2268. {
  2269. BYTE bHeader;
  2270. unsigned long ulPCBangID;
  2271. } TPacketPCBangUpdate;
  2272. typedef struct SPacketGGCheckAwakeness
  2273. {
  2274. BYTE bHeader;
  2275. } TPacketGGCheckAwakeness;
  2276. typedef struct SPacketGCPanamaPack
  2277. {
  2278. BYTE bHeader;
  2279. char szPackName[256];
  2280. BYTE abIV[32];
  2281. } TPacketGCPanamaPack;
  2282. //TODO : ¾Æ¿ì ¯³ª..°¡º¯ÆĞŶ »çÀÌÁî ¹Ş¾ÆµéÀϼö ÀÖ°Ô ÆĞŶ Çڵ鷯 Refactoring ÇÏÀÚ.
  2283. typedef struct SPacketGCHybridCryptKeys
  2284. {
  2285. SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2286. ~SPacketGCHybridCryptKeys()
  2287. {
  2288. //GCC ¿¡¼± NULL delete ÇØµµ ±¦Âú³ª? ÀÏ´Ü ¾ÈÀüÇÏ°Ô NULL üũ ÇÏÀÚ. ( ±Ùµ¥ À̰ŠC++ Ç¥ÁؾƴϾú³ª --a )
  2289. if( m_pStream )
  2290. {
  2291. delete[] m_pStream;
  2292. m_pStream = NULL;
  2293. }
  2294. }
  2295. DWORD GetStreamSize()
  2296. {
  2297. return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + KeyStreamLen;
  2298. }
  2299. BYTE* GetStreamData()
  2300. {
  2301. if( m_pStream )
  2302. delete[] m_pStream;
  2303. uDynamicPacketSize = (WORD)GetStreamSize();
  2304. m_pStream = new BYTE[ uDynamicPacketSize ];
  2305. memcpy( m_pStream, &bHeader, 1 );
  2306. memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2307. memcpy( m_pStream+3, &KeyStreamLen, 4 );
  2308. if( KeyStreamLen > 0 )
  2309. memcpy( m_pStream+7, pDataKeyStream, KeyStreamLen );
  2310. return m_pStream;
  2311. }
  2312. BYTE bHeader;
  2313. WORD uDynamicPacketSize; // ºô¾î¸ÔÀ» Ŭ¶ó DynamicPacketHeader ±¸Á¶¶§¹®¿¡ ¸ÂÃçÁà¾ßÇÑ´Ù -_-;
  2314. int KeyStreamLen;
  2315. BYTE* pDataKeyStream;
  2316. private:
  2317. BYTE* m_pStream;
  2318. } TPacketGCHybridCryptKeys;
  2319. typedef struct SPacketGCPackageSDB
  2320. {
  2321. SPacketGCPackageSDB() : m_pDataSDBStream(NULL), m_pStream(NULL) {}
  2322. ~SPacketGCPackageSDB()
  2323. {
  2324. if( m_pStream )
  2325. {
  2326. delete[] m_pStream;
  2327. m_pStream = NULL;
  2328. }
  2329. }
  2330. DWORD GetStreamSize()
  2331. {
  2332. return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + iStreamLen;
  2333. }
  2334. BYTE* GetStreamData()
  2335. {
  2336. if( m_pStream )
  2337. delete[] m_pStream;
  2338. uDynamicPacketSize = GetStreamSize();
  2339. m_pStream = new BYTE[ uDynamicPacketSize ];
  2340. memcpy( m_pStream, &bHeader, 1 );
  2341. memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2342. memcpy( m_pStream+3, &iStreamLen, 4 );
  2343. if( iStreamLen > 0 )
  2344. memcpy( m_pStream+7, m_pDataSDBStream, iStreamLen );
  2345. return m_pStream;
  2346. }
  2347. BYTE bHeader;
  2348. WORD uDynamicPacketSize; // ºô¾î¸ÔÀ» Ŭ¶ó DynamicPacketHeader ±¸Á¶¶§¹®¿¡ ¸ÂÃçÁà¾ßÇÑ´Ù -_-;
  2349. int iStreamLen;
  2350. BYTE* m_pDataSDBStream;
  2351. private:
  2352. BYTE* m_pStream;
  2353. } TPacketGCPackageSDB;
  2354. #ifdef ENABLE_IMPROVED_PACKET_ENCRYPTION
  2355. struct TPacketKeyAgreement
  2356. {
  2357. static const int MAX_DATA_LEN = 256;
  2358. BYTE bHeader;
  2359. WORD wAgreedLength;
  2360. WORD wDataLength;
  2361. BYTE data[MAX_DATA_LEN];
  2362. };
  2363. struct TPacketKeyAgreementCompleted
  2364. {
  2365. BYTE bHeader;
  2366. BYTE data[3]; // dummy (not used)
  2367. };
  2368. #endif // ENABLE_IMPROVED_PACKET_ENCRYPTION
  2369. #define MAX_EFFECT_FILE_NAME 128
  2370. typedef struct SPacketGCSpecificEffect
  2371. {
  2372. BYTE header;
  2373. DWORD vid;
  2374. char effect_file[MAX_EFFECT_FILE_NAME];
  2375. } TPacketGCSpecificEffect;
  2376. // ¿ëÈ¥¼®
  2377. enum EDragonSoulRefineWindowRefineType
  2378. {
  2379. DragonSoulRefineWindow_UPGRADE,
  2380. DragonSoulRefineWindow_IMPROVEMENT,
  2381. DragonSoulRefineWindow_REFINE,
  2382. };
  2383. enum EPacketCGDragonSoulSubHeaderType
  2384. {
  2385. DS_SUB_HEADER_OPEN,
  2386. DS_SUB_HEADER_CLOSE,
  2387. DS_SUB_HEADER_DO_REFINE_GRADE,
  2388. DS_SUB_HEADER_DO_REFINE_STEP,
  2389. DS_SUB_HEADER_DO_REFINE_STRENGTH,
  2390. DS_SUB_HEADER_REFINE_FAIL,
  2391. DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2392. DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2393. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2394. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2395. DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2396. DS_SUB_HEADER_REFINE_SUCCEED,
  2397. };
  2398. typedef struct SPacketCGDragonSoulRefine
  2399. {
  2400. SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2401. {}
  2402. BYTE header;
  2403. BYTE bSubType;
  2404. TItemPos ItemGrid[DRAGON_SOUL_REFINE_GRID_SIZE];
  2405. } TPacketCGDragonSoulRefine;
  2406. typedef struct SPacketGCDragonSoulRefine
  2407. {
  2408. SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2409. {}
  2410. BYTE header;
  2411. BYTE bSubType;
  2412. TItemPos Pos;
  2413. } TPacketGCDragonSoulRefine;
  2414. typedef struct SPacketCGStateCheck
  2415. {
  2416. BYTE header;
  2417. unsigned long key;
  2418. unsigned long index;
  2419. } TPacketCGStateCheck;
  2420. typedef struct SPacketGCStateCheck
  2421. {
  2422. BYTE header;
  2423. unsigned long key;
  2424. unsigned long index;
  2425. unsigned char state;
  2426. } TPacketGCStateCheck;
  2427. typedef struct SPacketGGOfflineShopMessage
  2428. {
  2429. BYTE bHeader;
  2430. DWORD dwTargetPID;
  2431. char szName[CHARACTER_NAME_MAX_LEN + 1];
  2432. char szItemName[ITEM_NAME_MAX_LEN + 1];
  2433. int szPriceCheque;
  2434. int szPrice;
  2435. } TPacketGGOfflineShopMessage;
  2436. #ifdef ENABLE_DAMAGE_TOP
  2437. enum
  2438. {
  2439. HEADER_GC_DAMAGE_TOP = 246,
  2440. HEADER_GG_REGISTER_DAMAGE = 40,
  2441. };
  2442. typedef struct SPacketGCDamageTop {
  2443. BYTE bHeader;
  2444. WORD wSize;
  2445. } TPacketGCDamageTop;
  2446. typedef struct SPacketGGRegisterDamage {
  2447. BYTE bHeader;
  2448. TDamage damageT;
  2449. } TPacketGGRegisterDamage;
  2450. #endif
  2451. enum
  2452. {
  2453. HEADER_CG_FISH_EVENT_SEND = 222,
  2454. HEADER_GC_FISH_EVENT_INFO = 223,
  2455. };
  2456. enum
  2457. {
  2458. FISH_EVENT_SUBHEADER_BOX_USE,
  2459. FISH_EVENT_SUBHEADER_SHAPE_ADD,
  2460. FISH_EVENT_SUBHEADER_GC_REWARD,
  2461. FISH_EVENT_SUBHEADER_GC_ENABLE,
  2462. };
  2463. typedef struct SPacketGCFishEvent {
  2464. BYTE bHeader;
  2465. BYTE bSubheader;
  2466. } TPacketCGFishEvent;
  2467. typedef struct SPacketGCFishEventInfo {
  2468. BYTE bHeader;
  2469. BYTE bSubheader;
  2470. DWORD dwFirstArg;
  2471. DWORD dwSecondArg;
  2472. } TPacketGCFishEventInfo;
  2473. #ifdef ENABLE_SASH_SYSTEM
  2474. enum
  2475. {
  2476. HEADER_CG_SASH = 211,
  2477. HEADER_GC_SASH = 215,
  2478. SASH_SUBHEADER_GC_OPEN = 0,
  2479. SASH_SUBHEADER_GC_CLOSE,
  2480. SASH_SUBHEADER_GC_ADDED,
  2481. SASH_SUBHEADER_GC_REMOVED,
  2482. SASH_SUBHEADER_CG_REFINED,
  2483. SASH_SUBHEADER_CG_CLOSE = 0,
  2484. SASH_SUBHEADER_CG_ADD,
  2485. SASH_SUBHEADER_CG_REMOVE,
  2486. SASH_SUBHEADER_CG_REFINE,
  2487. };
  2488. typedef struct SPacketSash
  2489. {
  2490. BYTE header;
  2491. BYTE subheader;
  2492. bool bWindow;
  2493. DWORD dwPrice;
  2494. BYTE bPos;
  2495. TItemPos tPos;
  2496. DWORD dwItemVnum;
  2497. DWORD dwMinAbs;
  2498. DWORD dwMaxAbs;
  2499. } TPacketSash;
  2500. #endif
  2501. #ifdef ENABLE_EXTEND_INVEN_SYSTEM
  2502. typedef struct game_extend_inventory_packet
  2503. {
  2504. BYTE header;
  2505. WORD size;
  2506. BYTE subheader;
  2507. int id;
  2508. int id1;
  2509. int id2;
  2510. short dwExtend_inventory_max;
  2511. short dwExtend_inventory_stage;
  2512. } TPacketGCExtendInventory;
  2513. enum
  2514. {
  2515. SET_STAGE_EXTEND_INVEN,
  2516. NOTIFY_EXTEND_INVEN_ITEM_USE,
  2517. SET_MAX_EXTEND_INVENTORY,
  2518. };
  2519. typedef struct command_extend_inventory
  2520. {
  2521. BYTE header;
  2522. BYTE sub_header;
  2523. } TPacketCGExtendInventory;
  2524. #endif
  2525. #ifdef ENABLE_CHANGELOOK_SYSTEM
  2526. enum
  2527. {
  2528. CL_SUBHEADER_OPEN = 0,
  2529. CL_SUBHEADER_CLOSE,
  2530. CL_SUBHEADER_ADD,
  2531. CL_SUBHEADER_REMOVE,
  2532. CL_SUBHEADER_REFINE,
  2533. };
  2534. typedef struct SPacketChangeLook
  2535. {
  2536. BYTE header;
  2537. BYTE subheader;
  2538. DWORD dwCost;
  2539. BYTE bPos;
  2540. TItemPos tPos;
  2541. } TPacketChangeLook;
  2542. #endif
  2543. #ifdef ENABLE_ATTENDANCE_EVENT
  2544. enum
  2545. {
  2546. HEADER_CG_ATTENDANCE_REWARD = 220,
  2547. HEADER_GC_HIT_COUNT_INFO = 224,
  2548. HEADER_GC_ATTENDANCE_EVENT = 225,
  2549. HEADER_GC_ATTENDANCE_EVENT_INFO = 226,
  2550. };
  2551. typedef struct SHitCountInfo
  2552. {
  2553. SHitCountInfo(){ dwVid = dwCount = 0;}
  2554. SHitCountInfo(DWORD vid, DWORD count)
  2555. {
  2556. dwVid = vid;
  2557. dwCount = count;
  2558. }
  2559. DWORD dwVid;
  2560. DWORD dwCount;
  2561. } THitCountInfo;
  2562. typedef struct SRewardItem
  2563. {
  2564. BYTE bDay;
  2565. DWORD dwVnum;
  2566. DWORD dwCount;
  2567. } TRewardItem;
  2568. typedef struct SPacketGCHitCountInfo {
  2569. BYTE bHeader;
  2570. DWORD dwVid;
  2571. DWORD dwCount;
  2572. } TPacketGCHitCountInfo;
  2573. typedef struct SPacketGCAttendanceEventInfo {
  2574. BYTE bHeader;
  2575. WORD wSize;
  2576. bool bIsEnable;
  2577. BYTE bDay;
  2578. BYTE bClear;
  2579. BYTE bReward;
  2580. } TPacketGCAttendanceEventInfo;
  2581. typedef struct SPacketGCAttendanceEvent {
  2582. BYTE bHeader;
  2583. BYTE bType;
  2584. BYTE bValue;
  2585. } TPacketGCAttendanceEvent;
  2586. #endif
  2587. #ifdef ENABLE_MINI_GAME_CATCH_KING
  2588. enum
  2589. {
  2590. HEADER_CG_MINI_GAME_CATCH_KING = 226,
  2591. HEADER_GC_MINI_GAME_CATCH_KING = 238,
  2592. };
  2593. enum
  2594. {
  2595. SUBHEADER_GC_CATCH_KING_EVENT_INFO,
  2596. SUBHEADER_GC_CATCH_KING_START,
  2597. SUBHEADER_GC_CATCH_KING_SET_CARD,
  2598. SUBHEADER_GC_CATCH_KING_RESULT_FIELD,
  2599. SUBHEADER_GC_CATCH_KING_SET_END_CARD,
  2600. SUBHEADER_GC_CATCH_KING_REWARD
  2601. };
  2602. typedef struct SCatchKingCard
  2603. {
  2604. SCatchKingCard() { bIndex = 0; bIsExposed = false; }
  2605. SCatchKingCard(BYTE index, bool isExposed)
  2606. {
  2607. bIndex = index;
  2608. bIsExposed = isExposed;
  2609. }
  2610. BYTE bIndex;
  2611. bool bIsExposed;
  2612. } TCatchKingCard;
  2613. typedef struct SPacketCGMiniGameCatchKing {
  2614. BYTE bHeader;
  2615. BYTE bSubheader;
  2616. BYTE bSubArgument;
  2617. } TPacketCGMiniGameCatchKing;
  2618. typedef struct SPacketGCMiniGameCatchKing {
  2619. BYTE bHeader;
  2620. WORD wSize;
  2621. BYTE bSubheader;
  2622. } TPacketGCMiniGameCatchKing;
  2623. typedef struct SPacketGCMiniGameCatchKingResult {
  2624. DWORD dwPoints;
  2625. BYTE bRowType;
  2626. BYTE bCardPos;
  2627. BYTE bCardValue;
  2628. bool bKeepFieldCard;
  2629. bool bDestroyHandCard;
  2630. bool bGetReward;
  2631. bool bIsFiveNearBy;
  2632. } TPacketGCMiniGameCatchKingResult;
  2633. typedef struct SPacketGCMiniGameCatchKingSetEndCard {
  2634. BYTE bCardPos;
  2635. BYTE bCardValue;
  2636. } TPacketGCMiniGameCatchKingSetEndCard;
  2637. #endif
  2638. #ifdef ENABLE_PRIVATESHOP_SEARCH_SYSTEM
  2639. typedef struct packet_priv_shop_item_set
  2640. {
  2641. BYTE header;
  2642. DWORD vid;
  2643. DWORD ownerId;
  2644. char ownerName[CHARACTER_NAME_MAX_LEN + 1];
  2645. BYTE Cell;
  2646. DWORD price;
  2647. DWORD price2;
  2648. DWORD vnum;
  2649. char itemName[ITEM_NAME_MAX_LEN + 1];
  2650. BYTE count;
  2651. DWORD flags;
  2652. DWORD anti_flags;
  2653. #ifdef ENABLE_CHANGELOOK_SYSTEM
  2654. DWORD transmutation;
  2655. #endif
  2656. DWORD evolution;
  2657. long alSockets[ITEM_SOCKET_MAX_NUM];
  2658. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  2659. int page;
  2660. } TPacketGCShopSearchItemSet;
  2661. typedef struct command_shop_search
  2662. {
  2663. BYTE header;
  2664. WORD Race;
  2665. int ItemCat;
  2666. int SubCat;
  2667. int MinLevel;
  2668. int MaxLevel;
  2669. int MinRefine;
  2670. int MaxRefine;
  2671. unsigned int MinGold;
  2672. unsigned int MaxGold;
  2673. unsigned int MinCheque;
  2674. unsigned int MaxCheque;
  2675. char ItemName[SHOP_TAB_NAME_MAX + 1];
  2676. } TPacketCGShopSearch;
  2677. typedef struct command_shop_search_buy
  2678. {
  2679. BYTE header;
  2680. int32_t shopVid;
  2681. BYTE shopItemPos;
  2682. } TPacketCGShopSearchBuy;
  2683. #endif
  2684. typedef struct SPacketCGMailBox {
  2685. BYTE bHeader;
  2686. char szName[20];
  2687. char szTitle[32];
  2688. char szPost[256];
  2689. DWORD dwGold;
  2690. WORD wCheque;
  2691. TItemPos item_pos;
  2692. } TPacketCGMailBox;
  2693. typedef struct SPacketGCMailBox {
  2694. BYTE bHeader;
  2695. char sender_name[64];
  2696. char title[32];
  2697. char post[256];
  2698. DWORD dwGold;
  2699. WORD wCheque;
  2700. DWORD item_vnum;
  2701. DWORD item_count;
  2702. long alSockets[ITEM_SOCKET_MAX_NUM];
  2703. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  2704. DWORD mail_id;
  2705. int type;
  2706. int status;
  2707. DWORD transmutation;
  2708. DWORD time;
  2709. } TPacketGCMailBox;
  2710. #ifdef ENABLE_SHOW_CHEST_DROP
  2711. enum
  2712. {
  2713. HEADER_CG_CHEST_DROP_INFO = 215,
  2714. HEADER_GC_CHEST_DROP_INFO = 220,
  2715. };
  2716. typedef struct SPacketCGChestDropInfo {
  2717. BYTE header;
  2718. WORD wInventoryCell;
  2719. } TPacketCGChestDropInfo;
  2720. typedef struct SChestDropInfoTable {
  2721. BYTE bPageIndex;
  2722. BYTE bSlotIndex;
  2723. DWORD dwItemVnum;
  2724. BYTE bItemCount;
  2725. } TChestDropInfoTable;
  2726. typedef struct SPacketGCChestDropInfo {
  2727. BYTE bHeader;
  2728. WORD wSize;
  2729. DWORD dwChestVnum;
  2730. } TPacketGCChestDropInfo;
  2731. #endif
  2732. #ifdef ENABLE_AURA_SYSTEM
  2733. enum
  2734. {
  2735. AURA_SUBHEADER_GC_OPEN = 0,
  2736. AURA_SUBHEADER_GC_CLOSE,
  2737. AURA_SUBHEADER_GC_ADDED,
  2738. AURA_SUBHEADER_GC_REMOVED,
  2739. AURA_SUBHEADER_GC_REFINED,
  2740. AURA_SUBHEADER_CG_CLOSE = 0,
  2741. AURA_SUBHEADER_CG_ADD,
  2742. AURA_SUBHEADER_CG_REMOVE,
  2743. AURA_SUBHEADER_CG_REFINE,
  2744. };
  2745. typedef struct SPacketAura
  2746. {
  2747. BYTE header;
  2748. BYTE subheader;
  2749. bool bWindow;
  2750. DWORD dwPrice;
  2751. BYTE bPos;
  2752. TItemPos tPos;
  2753. DWORD dwItemVnum;
  2754. DWORD dwMinAbs;
  2755. DWORD dwMaxAbs;
  2756. } TPacketAura;
  2757. #endif
  2758. #pragma pack()
  2759. #endif