Advertisement
yossi12

Packet.h (Server)

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