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

GAME --> packet.h