Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.42 KB | None | 0 0
  1. #pragma once
  2. #include "Locale.h"
  3. #include "Locale_inc.h"
  4. #ifdef USE_AHNLAB_HACKSHIELD
  5. #include "Hackshield.h"
  6. #include METIN2HS_INCLUDE_ANTICPXSVR
  7. #else
  8. #pragma pack(push) //±âÁ¸ alignment ÀúÀå
  9. #pragma pack(8)
  10.  
  11. #define ANTICPX_TRANS_BUFFER_MAX 400
  12.  
  13. typedef struct _AHNHS_TRANS_BUFFER
  14. {
  15. unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* ¼Û¼ö½Å ÆÐŶÀÇ ÃÖ´ë Å©±â */];
  16. unsigned short nLength;
  17. } AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER;
  18.  
  19. #pragma pack(pop) // ±âÁ¸ alignment º¹±¸.
  20. #endif /* !USE_AHNLAB_HACKSHIELD */
  21.  
  22. #include "../gamelib/RaceData.h"
  23.  
  24. typedef BYTE TPacketHeader;
  25.  
  26. enum
  27. {
  28. /////////////////////////////////////////////////
  29. // To Server
  30. // HEADER_BLANK is the not use(for future use)
  31. HEADER_CG_LOGIN = 1,
  32. HEADER_CG_ATTACK = 2,
  33. HEADER_CG_CHAT = 3,
  34. HEADER_CG_PLAYER_CREATE = 4, // »õ·Î¿î Ç÷¡À̾ »ý¼º
  35. HEADER_CG_PLAYER_DESTROY = 5, // Ç÷¡À̾ »èÁ¦.
  36. HEADER_CG_PLAYER_SELECT = 6,
  37. HEADER_CG_CHARACTER_MOVE = 7,
  38. HEADER_CG_SYNC_POSITION = 8,
  39. HEADER_CG_DIRECT_ENTER = 9,
  40. HEADER_CG_ENTERGAME = 10,
  41. HEADER_CG_ITEM_USE = 11,
  42. HEADER_CG_ITEM_DROP = 12,
  43. HEADER_CG_ITEM_MOVE = 13,
  44. HEADER_CG_ITEM_PICKUP = 15,
  45. HEADER_CG_QUICKSLOT_ADD = 16,
  46. HEADER_CG_QUICKSLOT_DEL = 17,
  47. HEADER_CG_QUICKSLOT_SWAP = 18,
  48. HEADER_CG_WHISPER = 19,
  49. #ifdef NEW_ADD_INVENTORY
  50. ENVANTER_BLACK = 23,
  51. #endif
  52. HEADER_CG_ITEM_DROP2 = 20,
  53. //HEADER_BLANK21 = 21,
  54. //HEADER_BLANK22 = 22,
  55. //HEADER_BLANK22 = 23,
  56. //HEADER_BLANK24 = 24,
  57. //HEADER_BLANK25 = 25,
  58. HEADER_CG_ON_CLICK = 26,
  59. HEADER_CG_EXCHANGE = 27,
  60. HEADER_CG_CHARACTER_POSITION = 28,
  61. HEADER_CG_SCRIPT_ANSWER = 29,
  62. HEADER_CG_QUEST_INPUT_STRING = 30,
  63. HEADER_CG_QUEST_CONFIRM = 31,
  64. #ifdef GROUP_MATCH
  65. HEADER_CG_GROUP_MATCH = 32,
  66. #endif
  67. //HEADER_BLANK33 = 33,
  68. //HEADER_BLANK34 = 34,
  69. //HEADER_BLANK35 = 35,
  70. //HEADER_BLANK36 = 36,
  71. //HEADER_BLANK37 = 37,
  72. //HEADER_BLANK38 = 38,
  73. //HEADER_BLANK39 = 39,
  74. //HEADER_BLANK40 = 40,
  75. HEADER_CG_PVP = 41,
  76. //HEADER_BLANK42 = 42,
  77. //HEADER_BLANK43 = 43,
  78. //HEADER_BLANK44 = 44,
  79. //HEADER_BLANK45 = 45,
  80. //HEADER_BLANK46 = 46,
  81. //HEADER_BLANK47 = 47,
  82. //HEADER_BLANK48 = 48,
  83. //HEADER_BLANK49 = 49,
  84. HEADER_CG_SHOP = 50,
  85. HEADER_CG_FLY_TARGETING = 51,
  86. HEADER_CG_USE_SKILL = 52,
  87. HEADER_CG_ADD_FLY_TARGETING = 53,
  88. HEADER_CG_SHOOT = 54,
  89. HEADER_CG_MYSHOP = 55,
  90. //HEADER_BLANK56 = 56,
  91. //HEADER_BLANK57 = 57,
  92. //HEADER_BLANK58 = 58,
  93. //HEADER_BLANK59 = 59,
  94. HEADER_CG_ITEM_USE_TO_ITEM = 60,
  95. HEADER_CG_TARGET = 61,
  96. //HEADER_BLANK62 = 62,
  97. //HEADER_BLANK63 = 63,
  98. //HEADER_BLANK64 = 64,
  99. HEADER_CG_WARP = 65,
  100. HEADER_CG_SCRIPT_BUTTON = 66,
  101. HEADER_CG_MESSENGER = 67,
  102. //HEADER_BLANK68 = 68,
  103. HEADER_CG_MALL_CHECKOUT = 69,
  104. HEADER_CG_SAFEBOX_CHECKIN = 70, // ¾ÆÀÌÅÛÀ» â°í¿¡ ³Ö´Â´Ù.
  105. HEADER_CG_SAFEBOX_CHECKOUT = 71, // ¾ÆÀÌÅÛÀ» â°í·Î ºÎÅÍ »©¿Â´Ù.
  106. HEADER_CG_PARTY_INVITE = 72,
  107. HEADER_CG_PARTY_INVITE_ANSWER = 73,
  108. HEADER_CG_PARTY_REMOVE = 74,
  109. HEADER_CG_PARTY_SET_STATE = 75,
  110. HEADER_CG_PARTY_USE_SKILL = 76,
  111. HEADER_CG_SAFEBOX_ITEM_MOVE = 77,
  112. HEADER_CG_PARTY_PARAMETER = 78,
  113. //HEADER_BLANK68 = 79,
  114. HEADER_CG_GUILD = 80,
  115. HEADER_CG_ANSWER_MAKE_GUILD = 81,
  116. HEADER_CG_FISHING = 82,
  117. HEADER_CG_GIVE_ITEM = 83,
  118. //HEADER_BLANK84 = 84,
  119. //HEADER_BLANK85 = 85,
  120. //HEADER_BLANK86 = 86,
  121. //HEADER_BLANK87 = 87,
  122. //HEADER_BLANK88 = 88,
  123. //HEADER_BLANK89 = 89,
  124. HEADER_CG_EMPIRE = 90,
  125. //HEADER_BLANK91 = 91,
  126. //HEADER_BLANK92 = 92,
  127. //HEADER_BLANK93 = 93,
  128. //HEADER_BLANK94 = 94,
  129. //HEADER_BLANK95 = 95,
  130. HEADER_CG_REFINE = 96,
  131. #ifdef OFFLINE_MESSAGE
  132. HEADER_CG_OFFLINE_WHISPER = 98,
  133. #endif
  134. //HEADER_BLANK97 = 97,
  135. //HEADER_BLANK98 = 98,
  136. //HEADER_BLANK99 = 99,
  137.  
  138. HEADER_CG_MARK_LOGIN = 100,
  139. HEADER_CG_MARK_CRCLIST = 101,
  140. HEADER_CG_MARK_UPLOAD = 102,
  141. HEADER_CG_MARK_IDXLIST = 104,
  142.  
  143. HEADER_CG_CRC_REPORT = 103,
  144.  
  145. HEADER_CG_HACK = 105,
  146. HEADER_CG_CHANGE_NAME = 106,
  147. HEADER_CG_SMS = 107,
  148. HEADER_CG_CHINA_MATRIX_CARD = 108,
  149. HEADER_CG_LOGIN2 = 109,
  150. HEADER_CG_DUNGEON = 110,
  151. HEADER_CG_LOGIN3 = 111,
  152. HEADER_CG_GUILD_SYMBOL_UPLOAD = 112,
  153. HEADER_CG_GUILD_SYMBOL_CRC = 113,
  154. HEADER_CG_SCRIPT_SELECT_ITEM = 114,
  155. HEADER_CG_LOGIN4 = 115,
  156. HEADER_CG_LOGIN5_OPENID = 116, //OpenID : ½ÇÇà½Ã ¹ÞÀº ÀÎÁõÅ°¸¦ ¼­¹ö¿¡ º¸³¿.
  157.  
  158. HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
  159. HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
  160.  
  161. HEADER_CG_HS_ACK = 203,
  162. HEADER_CG_XTRAP_ACK = 204,
  163. #ifdef ENABLE_WHISPER_REPORT
  164. HEADER_CG_WHISPER_REPORT = 85,
  165. #endif
  166.  
  167. HEADER_CG_DRAGON_SOUL_REFINE = 205,
  168. HEADER_CG_STATE_CHECKER = 206,
  169. #ifdef __OFFLINE_SHOP__
  170. HEADER_CG_SAFEBOX_MONEY = 63,
  171. #endif
  172.  
  173. #ifdef __AUCTION__
  174. HEADER_CG_AUCTION_CMD = 205,
  175. #endif
  176.  
  177. HEADER_CG_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  178. HEADER_CG_TIME_SYNC = 0xfc,
  179. HEADER_CG_CLIENT_VERSION = 0xfd,
  180. HEADER_CG_CLIENT_VERSION2 = 0xf1,
  181. HEADER_CG_PONG = 0xfe,
  182. HEADER_CG_HANDSHAKE = 0xff,
  183. /////////////////////////////////////////////////
  184. // From Server
  185.  
  186. HEADER_GC_CHARACTER_ADD = 1,
  187. HEADER_GC_CHARACTER_DEL = 2,
  188. HEADER_GC_CHARACTER_MOVE = 3,
  189. HEADER_GC_CHAT = 4,
  190. HEADER_GC_SYNC_POSITION = 5,
  191. HEADER_GC_LOGIN_SUCCESS3 = 6,
  192. HEADER_GC_LOGIN_FAILURE = 7,
  193. HEADER_GC_PLAYER_CREATE_SUCCESS = 8,
  194. HEADER_GC_PLAYER_CREATE_FAILURE = 9,
  195. HEADER_GC_PLAYER_DELETE_SUCCESS = 10,
  196. HEADER_GC_PLAYER_DELETE_WRONG_SOCIAL_ID = 11,
  197. // 12
  198. HEADER_GC_STUN = 13,
  199. HEADER_GC_DEAD = 14,
  200.  
  201. HEADER_GC_MAIN_CHARACTER = 15,
  202. HEADER_GC_PLAYER_POINTS = 16,
  203. HEADER_GC_PLAYER_POINT_CHANGE = 17,
  204. HEADER_GC_CHANGE_SPEED = 18,
  205. HEADER_GC_CHARACTER_UPDATE = 19,
  206. #if defined(GAIDEN)
  207. HEADER_GC_ITEM_DEL = 20, // ¾ÆÀÌÅÛ Ã¢¿¡ Ãß°¡
  208. HEADER_GC_ITEM_SET = 21, // ¾ÆÀÌÅÛ Ã¢¿¡ Ãß°¡
  209. #else
  210. HEADER_GC_ITEM_SET = 20, // ¾ÆÀÌÅÛ Ã¢¿¡ Ãß°¡
  211. HEADER_GC_ITEM_SET2 = 21, // ¾ÆÀÌÅÛ Ã¢¿¡ Ãß°¡
  212. #endif
  213. HEADER_GC_ITEM_USE = 22, // ¾ÆÀÌÅÛ »ç¿ë (ÁÖÀ§ »ç¶÷µé¿¡°Ô º¸¿©ÁÖ±â À§ÇØ)
  214. HEADER_GC_ITEM_DROP = 23, // ¾ÆÀÌÅÛ ¹ö¸®±â
  215. HEADER_GC_ITEM_UPDATE = 25, // ¾ÆÀÌÅÛ ¼öÄ¡ ¾÷µ¥ÀÌÆ®
  216. HEADER_GC_ITEM_GROUND_ADD = 26, // ¹Ù´Ú¿¡ ¾ÆÀÌÅÛ Ãß°¡
  217. HEADER_GC_ITEM_GROUND_DEL = 27, // ¹Ù´Ú¿¡¼­ ¾ÆÀÌÅÛ »èÁ¦
  218. HEADER_GC_QUICKSLOT_ADD = 28,
  219. HEADER_GC_QUICKSLOT_DEL = 29,
  220. HEADER_GC_QUICKSLOT_SWAP = 30,
  221. HEADER_GC_ITEM_OWNERSHIP = 31,
  222. HEADER_GC_LOGIN_SUCCESS4 = 32,
  223. HEADER_GC_ITEM_UNBIND_TIME = 33,
  224. HEADER_GC_WHISPER = 34,
  225. HEADER_GC_ALERT = 35,
  226.  
  227. HEADER_GC_MOTION = 36,
  228.  
  229. HEADER_GC_SHOP = 38,
  230. HEADER_GC_SHOP_SIGN = 39,
  231.  
  232. // 39 ~ 41 Balnk
  233. HEADER_GC_DUEL_START = 40,
  234. HEADER_GC_PVP = 41,
  235. HEADER_GC_EXCHANGE = 42,
  236. HEADER_GC_CHARACTER_POSITION = 43,
  237.  
  238. HEADER_GC_PING = 44,
  239.  
  240. HEADER_GC_SCRIPT = 45,
  241. HEADER_GC_QUEST_CONFIRM = 46,
  242.  
  243. HEADER_GC_MOUNT = 61,
  244. HEADER_GC_OWNERSHIP = 62,
  245. HEADER_GC_TARGET = 63,
  246. #ifdef ENABLE_SEND_TARGET_INFO
  247. HEADER_GC_TARGET_INFO = 58,
  248. HEADER_CG_TARGET_INFO_LOAD = 59,
  249. #endif
  250. HEADER_GC_WARP = 65,
  251. HEADER_GC_ADD_FLY_TARGETING = 69,
  252.  
  253. HEADER_GC_CREATE_FLY = 70,
  254. HEADER_GC_FLY_TARGETING = 71,
  255. HEADER_GC_SKILL_LEVEL = 72,
  256. HEADER_GC_SKILL_COOLTIME_END = 73,
  257. HEADER_GC_MESSENGER = 74,
  258. HEADER_GC_GUILD = 75,
  259. HEADER_GC_SKILL_LEVEL_NEW = 76,
  260.  
  261. HEADER_GC_PARTY_INVITE = 77,
  262. HEADER_GC_PARTY_ADD = 78,
  263. HEADER_GC_PARTY_UPDATE = 79,
  264. HEADER_GC_PARTY_REMOVE = 80,
  265.  
  266. HEADER_GC_QUEST_INFO = 81,
  267. HEADER_GC_REQUEST_MAKE_GUILD = 82,
  268. HEADER_GC_PARTY_PARAMETER = 83,
  269.  
  270. HEADER_GC_SAFEBOX_MONEY_CHANGE = 84,
  271. #ifdef __OFFLINE_SHOP__
  272. HEADER_GC_SAFEBOX_MONEY_CHANGE = 103,
  273. #endif
  274. HEADER_GC_SAFEBOX_SET = 85,
  275. HEADER_GC_SAFEBOX_DEL = 86,
  276. HEADER_GC_SAFEBOX_WRONG_PASSWORD = 87,
  277. HEADER_GC_SAFEBOX_SIZE = 88,
  278.  
  279. HEADER_GC_FISHING = 89,
  280.  
  281. HEADER_GC_EMPIRE = 90,
  282.  
  283. HEADER_GC_PARTY_LINK = 91,
  284. HEADER_GC_PARTY_UNLINK = 92,
  285.  
  286. HEADER_GC_REFINE_INFORMATION = 95,
  287.  
  288. HEADER_GC_OBSERVER_ADD = 96,
  289. HEADER_GC_OBSERVER_REMOVE = 97,
  290. HEADER_GC_OBSERVER_MOVE = 98,
  291. HEADER_GC_VIEW_EQUIP = 99,
  292.  
  293. HEADER_GC_MARK_BLOCK = 100,
  294. HEADER_GC_MARK_DIFF_DATA = 101,
  295. HEADER_GC_MARK_IDXLIST = 102,
  296.  
  297. //HEADER_GC_SLOW_TIMER = 105,
  298. HEADER_GC_TIME = 106,
  299. HEADER_GC_CHANGE_NAME = 107,
  300.  
  301. HEADER_GC_DUNGEON = 110,
  302. HEADER_GC_WALK_MODE = 111,
  303. HEADER_GC_CHANGE_SKILL_GROUP = 112,
  304.  
  305. #if defined(GAIDEN)
  306. HEADER_GC_MAIN_CHARACTER = 113,
  307. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  308. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  309. #else
  310. // SUPPORT_BGM
  311. HEADER_GC_MAIN_CHARACTER2_EMPIRE = 113,
  312. // END_OF_SUPPORT_BGM
  313. #endif
  314.  
  315. HEADER_GC_SEPCIAL_EFFECT = 114,
  316. HEADER_GC_NPC_POSITION = 115,
  317.  
  318. HEADER_GC_CHINA_MATRIX_CARD = 116,
  319. HEADER_GC_CHARACTER_UPDATE2 = 117,
  320. HEADER_GC_LOGIN_KEY = 118,
  321. HEADER_GC_REFINE_INFORMATION_NEW = 119,
  322. HEADER_GC_CHARACTER_ADD2 = 120,
  323. HEADER_GC_CHANNEL = 121,
  324.  
  325. HEADER_GC_MALL_OPEN = 122,
  326. HEADER_GC_TARGET_UPDATE = 123,
  327. HEADER_GC_TARGET_DELETE = 124,
  328. HEADER_GC_TARGET_CREATE_NEW = 125,
  329.  
  330. HEADER_GC_AFFECT_ADD = 126,
  331. HEADER_GC_AFFECT_REMOVE = 127,
  332.  
  333. HEADER_GC_MALL_SET = 128,
  334. HEADER_GC_MALL_DEL = 129,
  335. HEADER_GC_LAND_LIST = 130,
  336. HEADER_GC_LOVER_INFO = 131,
  337. HEADER_GC_LOVE_POINT_UPDATE = 132,
  338. HEADER_GC_GUILD_SYMBOL_DATA = 133,
  339. HEADER_GC_DIG_MOTION = 134,
  340.  
  341. HEADER_GC_DAMAGE_INFO = 135,
  342. HEADER_GC_CHAR_ADDITIONAL_INFO = 136,
  343.  
  344. // SUPPORT_BGM
  345. HEADER_GC_MAIN_CHARACTER3_BGM = 137,
  346. HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138,
  347. // END_OF_SUPPORT_BGM
  348.  
  349. HEADER_GC_AUTH_SUCCESS = 150,
  350. HEADER_GC_PANAMA_PACK = 151,
  351.  
  352. //HYBRID CRYPT
  353. HEADER_GC_HYBRIDCRYPT_KEYS = 152,
  354. HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks
  355. //HYBRID CRYPT
  356.  
  357. HEADER_GC_AUTH_SUCCESS_OPENID = 154,
  358.  
  359. HEADER_GC_RUNUP_MATRIX_QUIZ = 201,
  360. HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202,
  361. HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203,
  362. #if defined(GAIDEN)
  363. HEADER_GC_ONTIME = 204,
  364. HEADER_GC_RESET_ONTIME = 205,
  365.  
  366. // AUTOBAN
  367. HEADER_GC_AUTOBAN_QUIZ = 206,
  368. // END_OF_AUTOBAN
  369.  
  370. HEADER_GC_HS_REQUEST = 207, // Origially it's 204 on devel branch
  371. #else
  372. HEADER_GC_HS_REQUEST = 204,
  373. HEADER_GC_XTRAP_CS1_REQUEST = 205,
  374. #endif
  375.  
  376. #ifdef __AUCTION__
  377. HEADER_GC_AUCTOIN_ITEM_LIST = 206,
  378. #endif
  379.  
  380. HEADER_GC_SPECIFIC_EFFECT = 208,
  381. HEADER_GC_DRAGON_SOUL_REFINE = 209,
  382. HEADER_GC_RESPOND_CHANNELSTATUS = 210,
  383.  
  384. HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
  385. HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  386. HEADER_GC_HANDSHAKE_OK = 0xfc, // 252
  387. HEADER_GC_PHASE = 0xfd, // 253
  388. HEADER_GC_BINDUDP = 0xfe, // 254
  389. HEADER_GC_HANDSHAKE = 0xff, // 255
  390.  
  391. /////////////////////////////////////////////////
  392. // Client To Client for UDP
  393. /*
  394. HEADER_CC_STATE_WAITING = 1,
  395. HEADER_CC_STATE_WALKING = 2,
  396. HEADER_CC_STATE_GOING = 3,
  397. HEADER_CC_EVENT_NORMAL_ATTACKING = 4,
  398. HEADER_CC_EVENT_COMBO_ATTACKING = 5,
  399. HEADER_CC_EVENT_HIT = 6,
  400. */
  401. };
  402.  
  403. enum
  404. {
  405. ID_MAX_NUM = 30,
  406. PASS_MAX_NUM = 16,
  407. CHAT_MAX_NUM = 128,
  408. PATH_NODE_MAX_NUM = 64,
  409. SHOP_SIGN_MAX_LEN = 32,
  410.  
  411. PLAYER_PER_ACCOUNT3 = 3,
  412. PLAYER_PER_ACCOUNT4 = 4,
  413.  
  414. PLAYER_ITEM_SLOT_MAX_NUM = 20, // Ç÷¡À̾îÀÇ ½½·Ô´ç µé¾î°¡´Â °¹¼ö.
  415.  
  416. QUICKSLOT_MAX_LINE = 4,
  417. QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ¶óÀ̾ðÆ® ÀÓÀÇ °áÁ¤°ª
  418. QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
  419.  
  420. QUICKSLOT_MAX_NUM = 36, // ¼­¹ö¿Í ¸ÂÃçÁ® ÀÖ´Â °ª
  421.  
  422. #ifdef __OFFLINE_SHOP__
  423. SHOP_HOST_ITEM_MAX_NUM = 90,
  424. #else
  425. SHOP_HOST_ITEM_MAX_NUM = 40,
  426. #endif
  427.  
  428. METIN_SOCKET_COUNT = 6,
  429.  
  430. PARTY_AFFECT_SLOT_MAX_NUM = 7,
  431.  
  432. GUILD_GRADE_NAME_MAX_LEN = 8,
  433. GUILD_NAME_MAX_LEN = 12,
  434. GUILD_GRADE_COUNT = 15,
  435. GULID_COMMENT_MAX_LEN = 50,
  436.  
  437. MARK_CRC_NUM = 8*8,
  438. MARK_DATA_SIZE = 16*12,
  439. SYMBOL_DATA_SIZE = 128*256,
  440. QUEST_INPUT_STRING_MAX_NUM = 64,
  441.  
  442. PRIVATE_CODE_LENGTH = 8,
  443.  
  444. REFINE_MATERIAL_MAX_NUM = 5,
  445.  
  446. CHINA_MATRIX_ANSWER_MAX_LEN = 8,
  447.  
  448. RUNUP_MATRIX_QUIZ_MAX_LEN = 8,
  449. RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  450. NEWCIBN_PASSPOD_ANSWER_MAX_LEN = 8,
  451. NEWCIBN_PASSPOD_FAILURE_MAX_LEN = 128,
  452.  
  453. WEAR_MAX_NUM = 11,
  454.  
  455. OPENID_AUTHKEY_LEN = 32,
  456.  
  457. SHOP_TAB_NAME_MAX = 32,
  458. SHOP_TAB_COUNT_MAX = 3,
  459. };
  460.  
  461. #pragma pack(push)
  462. #pragma pack(1)
  463.  
  464. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  465. // Mark
  466. typedef struct command_mark_login
  467. {
  468. BYTE header;
  469. DWORD handle;
  470. DWORD random_key;
  471. } TPacketCGMarkLogin;
  472.  
  473. typedef struct command_mark_upload
  474. {
  475. BYTE header;
  476. DWORD gid;
  477. BYTE image[16*12*4];
  478. } TPacketCGMarkUpload;
  479.  
  480. typedef struct command_mark_idxlist
  481. {
  482. BYTE header;
  483. } TPacketCGMarkIDXList;
  484.  
  485. typedef struct command_mark_crclist
  486. {
  487. BYTE header;
  488. BYTE imgIdx;
  489. DWORD crclist[80];
  490. } TPacketCGMarkCRCList;
  491.  
  492. typedef struct packet_mark_idxlist
  493. {
  494. BYTE header;
  495. DWORD bufSize;
  496. WORD count;
  497. //µÚ¿¡ size * (WORD + WORD)¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  498. } TPacketGCMarkIDXList;
  499.  
  500. typedef struct packet_mark_block
  501. {
  502. BYTE header;
  503. DWORD bufSize;
  504. BYTE imgIdx;
  505. DWORD count;
  506. // µÚ¿¡ 64 x 48 x Çȼ¿Å©±â(4¹ÙÀÌÆ®) = 12288¸¸Å­ µ¥ÀÌÅÍ ºÙÀ½
  507. } TPacketGCMarkBlock;
  508.  
  509. typedef struct command_symbol_upload
  510. {
  511. BYTE header;
  512. WORD size;
  513. DWORD handle;
  514. } TPacketCGSymbolUpload;
  515.  
  516. typedef struct command_symbol_crc
  517. {
  518. BYTE header;
  519. DWORD dwGuildID;
  520. DWORD dwCRC;
  521. DWORD dwSize;
  522. } TPacketCGSymbolCRC;
  523.  
  524. typedef struct packet_symbol_data
  525. {
  526. BYTE header;
  527. WORD size;
  528. DWORD guild_id;
  529. } TPacketGCGuildSymbolData;
  530.  
  531. //
  532. //
  533. //
  534. typedef struct packet_observer_add
  535. {
  536. BYTE header;
  537. DWORD vid;
  538. WORD x;
  539. WORD y;
  540. } TPacketGCObserverAdd;
  541.  
  542. typedef struct packet_observer_move
  543. {
  544. BYTE header;
  545. DWORD vid;
  546. WORD x;
  547. WORD y;
  548. } TPacketGCObserverMove;
  549.  
  550.  
  551. typedef struct packet_observer_remove
  552. {
  553. BYTE header;
  554. DWORD vid;
  555. } TPacketGCObserverRemove;
  556.  
  557.  
  558. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  559. // To Server
  560.  
  561. typedef struct command_checkin
  562. {
  563. BYTE header;
  564. char name[ID_MAX_NUM+1];
  565. char pwd[PASS_MAX_NUM+1];
  566. } TPacketCGCheckin;
  567.  
  568. typedef struct command_login
  569. {
  570. BYTE header;
  571. char name[ID_MAX_NUM + 1];
  572. char pwd[PASS_MAX_NUM + 1];
  573. } TPacketCGLogin;
  574.  
  575. // start - ±ÇÇÑ ¼­¹ö Á¢¼ÓÀ» À§ÇÑ ÆÐŶµé
  576. typedef struct command_login2
  577. {
  578. BYTE header;
  579. char name[ID_MAX_NUM + 1];
  580. DWORD login_key;
  581. DWORD adwClientKey[4];
  582. } TPacketCGLogin2;
  583.  
  584. typedef struct command_login3 {
  585. BYTE header;
  586. char name[ID_MAX_NUM + 1];
  587. char pwd[PASS_MAX_NUM + 1];
  588. DWORD adwClientKey[4];
  589. } TPacketCGLogin3;
  590.  
  591. typedef struct command_login5
  592. {
  593. BYTE header;
  594. char authKey[OPENID_AUTHKEY_LEN + 1];
  595. DWORD adwClientKey[4];
  596. } TPacketCGLogin5;
  597. // end - ±ÇÇÑ ¼­¹ö Á¢¼ÓÀ» À§ÇÑ ÆÐŶµé
  598.  
  599. typedef struct command_direct_enter
  600. {
  601. BYTE bHeader;
  602. char login[ID_MAX_NUM + 1];
  603. char passwd[PASS_MAX_NUM + 1];
  604. BYTE index;
  605. } TPacketCGDirectEnter;
  606.  
  607. typedef struct command_player_select
  608. {
  609. BYTE header;
  610. BYTE player_index;
  611. } TPacketCGSelectCharacter;
  612.  
  613. typedef struct command_attack
  614. {
  615. BYTE header;
  616. BYTE bType; // °ø°Ý À¯Çü
  617. DWORD dwVictimVID; // Àû VID
  618. BYTE bCRCMagicCubeProcPiece;
  619. BYTE bCRCMagicCubeFilePiece;
  620. } TPacketCGAttack;
  621.  
  622. typedef struct command_chat
  623. {
  624. BYTE header;
  625. WORD length;
  626. BYTE type;
  627. } TPacketCGChat;
  628.  
  629. typedef struct command_whisper
  630. {
  631. BYTE bHeader;
  632. WORD wSize;
  633. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  634. } TPacketCGWhisper;
  635.  
  636. typedef struct command_sms
  637. {
  638. BYTE bHeader;
  639. WORD wSize;
  640. char szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  641. } TPacketCGSMS;
  642.  
  643. enum EBattleMode
  644. {
  645. BATTLEMODE_ATTACK = 0,
  646. BATTLEMODE_DEFENSE = 1,
  647. };
  648.  
  649. typedef struct command_EnterFrontGame
  650. {
  651. BYTE header;
  652. } TPacketCGEnterFrontGame;
  653.  
  654. typedef struct command_item_use
  655. {
  656. BYTE header;
  657. TItemPos pos;
  658. } TPacketCGItemUse;
  659.  
  660. typedef struct command_item_use_to_item
  661. {
  662. BYTE header;
  663. TItemPos source_pos;
  664. TItemPos target_pos;
  665. } TPacketCGItemUseToItem;
  666.  
  667. typedef struct command_item_drop
  668. {
  669. BYTE header;
  670. TItemPos pos;
  671. DWORD elk;
  672. } TPacketCGItemDrop;
  673.  
  674. typedef struct command_item_drop2
  675. {
  676. BYTE header;
  677. TItemPos pos;
  678. DWORD gold;
  679. BYTE count;
  680. } TPacketCGItemDrop2;
  681.  
  682. typedef struct command_item_move
  683. {
  684. BYTE header;
  685. TItemPos pos;
  686. TItemPos change_pos;
  687. BYTE num;
  688. } TPacketCGItemMove;
  689.  
  690. #ifdef GROUP_MATCH
  691. typedef struct grup_paketi
  692. {
  693. BYTE header;
  694. BYTE index;
  695. BYTE ayar;
  696. } TPacketCGGrup;
  697. #endif
  698.  
  699. #ifdef NEW_ADD_INVENTORY
  700. typedef struct envanter_paketi
  701. {
  702. BYTE header;
  703. } TPacketCGEnvanter;
  704. #endif
  705. typedef struct command_item_pickup
  706. {
  707. BYTE header;
  708. DWORD vid;
  709. } TPacketCGItemPickUp;
  710.  
  711. typedef struct command_quickslot_add
  712. {
  713. BYTE header;
  714. BYTE pos;
  715. TQuickSlot slot;
  716. }TPacketCGQuickSlotAdd;
  717.  
  718. typedef struct command_quickslot_del
  719. {
  720. BYTE header;
  721. BYTE pos;
  722. }TPacketCGQuickSlotDel;
  723.  
  724. typedef struct command_quickslot_swap
  725. {
  726. BYTE header;
  727. BYTE pos;
  728. BYTE change_pos;
  729. }TPacketCGQuickSlotSwap;
  730.  
  731. typedef struct command_on_click
  732. {
  733. BYTE header;
  734. DWORD vid;
  735. } TPacketCGOnClick;
  736.  
  737.  
  738. enum
  739. {
  740. SHOP_SUBHEADER_CG_END,
  741. SHOP_SUBHEADER_CG_BUY,
  742. SHOP_SUBHEADER_CG_SELL,
  743. SHOP_SUBHEADER_CG_SELL2,
  744. };
  745.  
  746. typedef struct command_shop
  747. {
  748. BYTE header;
  749. BYTE subheader;
  750. } TPacketCGShop;
  751.  
  752. enum
  753. {
  754. EXCHANGE_SUBHEADER_CG_START, // arg1 == vid of target character
  755. EXCHANGE_SUBHEADER_CG_ITEM_ADD, // arg1 == position of item
  756. EXCHANGE_SUBHEADER_CG_ITEM_DEL, // arg1 == position of item
  757. EXCHANGE_SUBHEADER_CG_ELK_ADD, // arg1 == amount of elk
  758. EXCHANGE_SUBHEADER_CG_ACCEPT, // arg1 == not used
  759. EXCHANGE_SUBHEADER_CG_CANCEL, // arg1 == not used
  760. };
  761.  
  762. typedef struct command_exchange
  763. {
  764. BYTE header;
  765. BYTE subheader;
  766. #ifdef ENABLE_MAX_YANG
  767. long long arg1;
  768. #else
  769. DWORD arg1;
  770. #endif
  771. BYTE arg2;
  772. TItemPos Pos;
  773. } TPacketCGExchange;
  774.  
  775. typedef struct command_position
  776. {
  777. BYTE header;
  778. BYTE position;
  779. } TPacketCGPosition;
  780.  
  781. typedef struct command_script_answer
  782. {
  783. BYTE header;
  784. BYTE answer;
  785. } TPacketCGScriptAnswer;
  786.  
  787. typedef struct command_script_button
  788. {
  789. BYTE header;
  790. unsigned int idx;
  791. } TPacketCGScriptButton;
  792.  
  793. typedef struct command_target
  794. {
  795. BYTE header;
  796. DWORD dwVID;
  797. } TPacketCGTarget;
  798.  
  799. typedef struct command_move
  800. {
  801. BYTE bHeader;
  802. BYTE bFunc;
  803. BYTE bArg;
  804. BYTE bRot;
  805. LONG lX;
  806. LONG lY;
  807. DWORD dwTime;
  808. } TPacketCGMove;
  809.  
  810. typedef struct command_sync_position_element
  811. {
  812. DWORD dwVID;
  813. long lX;
  814. long lY;
  815. } TPacketCGSyncPositionElement;
  816.  
  817. typedef struct command_sync_position
  818. {
  819. BYTE bHeader;
  820. WORD wSize;
  821. } TPacketCGSyncPosition;
  822.  
  823. typedef struct command_fly_targeting
  824. {
  825. BYTE bHeader;
  826. DWORD dwTargetVID;
  827. long lX;
  828. long lY;
  829. } TPacketCGFlyTargeting;
  830.  
  831. typedef struct packet_fly_targeting
  832. {
  833. BYTE bHeader;
  834. DWORD dwShooterVID;
  835. DWORD dwTargetVID;
  836. long lX;
  837. long lY;
  838. } TPacketGCFlyTargeting;
  839.  
  840. typedef struct packet_shoot
  841. {
  842. BYTE bHeader;
  843. BYTE bType;
  844. } TPacketCGShoot;
  845.  
  846. typedef struct command_warp
  847. {
  848. BYTE bHeader;
  849. } TPacketCGWarp;
  850.  
  851. enum
  852. {
  853. MESSENGER_SUBHEADER_GC_LIST,
  854. MESSENGER_SUBHEADER_GC_LOGIN,
  855. MESSENGER_SUBHEADER_GC_LOGOUT,
  856. MESSENGER_SUBHEADER_GC_INVITE,
  857. MESSENGER_SUBHEADER_GC_MOBILE,
  858. };
  859.  
  860. typedef struct packet_messenger
  861. {
  862. BYTE header;
  863. WORD size;
  864. BYTE subheader;
  865. } TPacketGCMessenger;
  866.  
  867. typedef struct packet_messenger_list_offline
  868. {
  869. BYTE connected; // always 0
  870. BYTE length;
  871. } TPacketGCMessengerListOffline;
  872.  
  873. enum
  874. {
  875. MESSENGER_CONNECTED_STATE_OFFLINE,
  876. MESSENGER_CONNECTED_STATE_ONLINE,
  877. MESSENGER_CONNECTED_STATE_MOBILE,
  878. };
  879.  
  880. typedef struct packet_messenger_list_online
  881. {
  882. BYTE connected;
  883. BYTE length;
  884. //BYTE length_char_name;
  885. } TPacketGCMessengerListOnline;
  886.  
  887. typedef struct packet_messenger_login
  888. {
  889. //BYTE length_login;
  890. //BYTE length_char_name;
  891. BYTE length;
  892. } TPacketGCMessengerLogin;
  893.  
  894. typedef struct packet_messenger_logout
  895. {
  896. BYTE length;
  897. } TPacketGCMessengerLogout;
  898.  
  899. enum
  900. {
  901. MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  902. MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  903. MESSENGER_SUBHEADER_CG_REMOVE,
  904. };
  905.  
  906. typedef struct command_messenger
  907. {
  908. BYTE header;
  909. BYTE subheader;
  910. } TPacketCGMessenger;
  911.  
  912. typedef struct command_messenger_remove
  913. {
  914. BYTE length;
  915. } TPacketCGMessengerRemove;
  916.  
  917. enum
  918. {
  919. SAFEBOX_MONEY_STATE_SAVE,
  920. SAFEBOX_MONEY_STATE_WITHDRAW,
  921. };
  922.  
  923. typedef struct command_safebox_money
  924. {
  925. BYTE bHeader;
  926. BYTE bState;
  927. DWORD dwMoney;
  928. } TPacketCGSafeboxMoney;
  929.  
  930. typedef struct command_safebox_checkout
  931. {
  932. BYTE bHeader;
  933. BYTE bSafePos;
  934. TItemPos ItemPos;
  935. } TPacketCGSafeboxCheckout;
  936.  
  937. typedef struct command_safebox_checkin
  938. {
  939. BYTE bHeader;
  940. BYTE bSafePos;
  941. TItemPos ItemPos;
  942. } TPacketCGSafeboxCheckin;
  943.  
  944. typedef struct command_mall_checkout
  945. {
  946. BYTE bHeader;
  947. BYTE bMallPos;
  948. TItemPos ItemPos;
  949. } TPacketCGMallCheckout;
  950.  
  951. ///////////////////////////////////////////////////////////////////////////////////
  952. // Party
  953.  
  954. typedef struct command_use_skill
  955. {
  956. BYTE bHeader;
  957. DWORD dwVnum;
  958. DWORD dwTargetVID;
  959. } TPacketCGUseSkill;
  960.  
  961. typedef struct command_party_invite
  962. {
  963. BYTE header;
  964. DWORD vid;
  965. } TPacketCGPartyInvite;
  966.  
  967. typedef struct command_party_invite_answer
  968. {
  969. BYTE header;
  970. DWORD leader_pid;
  971. BYTE accept;
  972. } TPacketCGPartyInviteAnswer;
  973.  
  974. typedef struct command_party_remove
  975. {
  976. BYTE header;
  977. DWORD pid;
  978. } TPacketCGPartyRemove;
  979.  
  980. typedef struct command_party_set_state
  981. {
  982. BYTE byHeader;
  983. DWORD dwVID;
  984. BYTE byState;
  985. BYTE byFlag;
  986. } TPacketCGPartySetState;
  987.  
  988. typedef struct packet_party_link
  989. {
  990. BYTE header;
  991. DWORD pid;
  992. DWORD vid;
  993. } TPacketGCPartyLink;
  994.  
  995. typedef struct packet_party_unlink
  996. {
  997. BYTE header;
  998. DWORD pid;
  999. DWORD vid;
  1000. } TPacketGCPartyUnlink;
  1001.  
  1002. typedef struct command_party_use_skill
  1003. {
  1004. BYTE byHeader;
  1005. BYTE bySkillIndex;
  1006. DWORD dwTargetVID;
  1007. } TPacketCGPartyUseSkill;
  1008.  
  1009. enum
  1010. {
  1011. GUILD_SUBHEADER_CG_ADD_MEMBER,
  1012. GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  1013. GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  1014. GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  1015. GUILD_SUBHEADER_CG_OFFER,
  1016. GUILD_SUBHEADER_CG_POST_COMMENT,
  1017. GUILD_SUBHEADER_CG_DELETE_COMMENT,
  1018. GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  1019. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  1020. GUILD_SUBHEADER_CG_USE_SKILL,
  1021. GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  1022. GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  1023. GUILD_SUBHEADER_CG_CHARGE_GSP,
  1024. GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  1025. GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  1026. };
  1027.  
  1028. typedef struct command_guild
  1029. {
  1030. BYTE byHeader;
  1031. BYTE bySubHeader;
  1032. } TPacketCGGuild;
  1033.  
  1034. typedef struct command_guild_answer_make_guild
  1035. {
  1036. BYTE header;
  1037. char guild_name[GUILD_NAME_MAX_LEN+1];
  1038. } TPacketCGAnswerMakeGuild;
  1039.  
  1040. typedef struct command_give_item
  1041. {
  1042. BYTE byHeader;
  1043. DWORD dwTargetVID;
  1044. TItemPos ItemPos;
  1045. BYTE byItemCount;
  1046. } TPacketCGGiveItem;
  1047.  
  1048. typedef struct SPacketCGHack
  1049. {
  1050. BYTE bHeader;
  1051. char szBuf[255 + 1];
  1052. } TPacketCGHack;
  1053.  
  1054. typedef struct command_dungeon
  1055. {
  1056. BYTE bHeader;
  1057. WORD size;
  1058. } TPacketCGDungeon;
  1059.  
  1060. // Private Shop
  1061. typedef struct SShopItemTable
  1062. {
  1063. DWORD vnum;
  1064. BYTE count;
  1065.  
  1066. TItemPos pos; // PC »óÁ¡¿¡¸¸ ÀÌ¿ë
  1067. #ifdef ENABLE_MAX_YANG
  1068. long long price;
  1069. #else
  1070. DWORD price;
  1071. #endif
  1072. BYTE display_pos; // PC »óÁ¡¿¡¸¸ ÀÌ¿ë, º¸ÀÏ À§Ä¡.
  1073. } TShopItemTable;
  1074.  
  1075. typedef struct SPacketCGMyShop
  1076. {
  1077. BYTE bHeader;
  1078. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1079. BYTE bCount; // count of TShopItemTable, max 39
  1080. #ifdef ENABLE_OFFLINE_SHOP
  1081. BYTE days;
  1082. #endif
  1083. } TPacketCGMyShop;
  1084.  
  1085. typedef struct SPacketCGRefine
  1086. {
  1087. BYTE header;
  1088. BYTE pos;
  1089. BYTE type;
  1090. } TPacketCGRefine;
  1091.  
  1092. #ifdef OFFLINE_MESSAGE
  1093. typedef struct get_offline_message
  1094. {
  1095. BYTE bHeader;
  1096. char szTargetName[CHARACTER_NAME_MAX_LEN + 1];
  1097. char szText[512 + 1];
  1098. } TPacketCGOfflineMessage;
  1099. #endif
  1100. typedef struct SPacketCGChangeName
  1101. {
  1102. BYTE header;
  1103. BYTE index;
  1104. char name[CHARACTER_NAME_MAX_LEN+1];
  1105. } TPacketCGChangeName;
  1106.  
  1107. typedef struct command_client_version
  1108. {
  1109. BYTE header;
  1110. char filename[32+1];
  1111. char timestamp[32+1];
  1112. } TPacketCGClientVersion;
  1113.  
  1114. typedef struct command_client_version2
  1115. {
  1116. BYTE header;
  1117. char filename[32+1];
  1118. char timestamp[32+1];
  1119. } TPacketCGClientVersion2;
  1120.  
  1121. typedef struct command_crc_report
  1122. {
  1123. BYTE header;
  1124. BYTE byPackMode;
  1125. DWORD dwBinaryCRC32;
  1126. DWORD dwProcessCRC32;
  1127. DWORD dwRootPackCRC32;
  1128. } TPacketCGCRCReport;
  1129.  
  1130. typedef struct command_china_matrix_card
  1131. {
  1132. BYTE bHeader;
  1133. char szAnswer[CHINA_MATRIX_ANSWER_MAX_LEN + 1];
  1134. } TPacketCGChinaMatrixCard;
  1135.  
  1136. typedef struct command_runup_matrix_answer
  1137. {
  1138. BYTE bHeader;
  1139. char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  1140. } TPacketCGRunupMatrixAnswer;
  1141.  
  1142. typedef struct command_newcibn_passpod_answer
  1143. {
  1144. BYTE bHeader;
  1145. char szAnswer[NEWCIBN_PASSPOD_ANSWER_MAX_LEN + 1];
  1146. } TPacketCGNEWCIBNPasspodAnswer;
  1147.  
  1148. enum EPartyExpDistributionType
  1149. {
  1150. PARTY_EXP_DISTRIBUTION_NON_PARITY,
  1151. PARTY_EXP_DISTRIBUTION_PARITY,
  1152. };
  1153.  
  1154. typedef struct command_party_parameter
  1155. {
  1156. BYTE bHeader;
  1157. BYTE bDistributeMode;
  1158. } TPacketCGPartyParameter;
  1159.  
  1160. typedef struct command_quest_input_string
  1161. {
  1162. BYTE bHeader;
  1163. char szString[QUEST_INPUT_STRING_MAX_NUM+1];
  1164. } TPacketCGQuestInputString;
  1165.  
  1166. typedef struct command_quest_confirm
  1167. {
  1168. BYTE header;
  1169. BYTE answer;
  1170. DWORD requestPID;
  1171. } TPacketCGQuestConfirm;
  1172.  
  1173. typedef struct command_script_select_item
  1174. {
  1175. BYTE header;
  1176. DWORD selection;
  1177. } TPacketCGScriptSelectItem;
  1178.  
  1179. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1180. // From Server
  1181. enum EPhase
  1182. {
  1183. PHASE_CLOSE, // ²÷±â´Â »óÅ (¶Ç´Â ²÷±â Àü »óÅÂ)
  1184. PHASE_HANDSHAKE, // ¾Ç¼ö..;;
  1185. PHASE_LOGIN, // ·Î±×ÀÎ Áß
  1186. PHASE_SELECT, // ij¸¯ÅÍ ¼±Åà ȭ¸é
  1187. PHASE_LOADING, // ¼±Åà ÈÄ ·Îµù È­¸é
  1188. PHASE_GAME, // °ÔÀÓ È­¸é
  1189. PHASE_DEAD, // Á×¾úÀ» ¶§.. (°ÔÀÓ ¾È¿¡ ÀÖ´Â °ÍÀÏ ¼öµµ..)
  1190.  
  1191. PHASE_DBCLIENT_CONNECTING, // ¼­¹ö¿ë
  1192. PHASE_DBCLIENT, // ¼­¹ö¿ë
  1193. PHASE_P2P, // ¼­¹ö¿ë
  1194. PHASE_AUTH, // ·Î±×ÀÎ ÀÎÁõ ¿ë
  1195. };
  1196.  
  1197. typedef struct packet_phase
  1198. {
  1199. BYTE header;
  1200. BYTE phase;
  1201. } TPacketGCPhase;
  1202.  
  1203. typedef struct packet_blank // °ø¹éÆÐŶ.
  1204. {
  1205. BYTE header;
  1206. } TPacketGCBlank;
  1207.  
  1208. typedef struct packet_blank_dynamic
  1209. {
  1210. BYTE header;
  1211. WORD size;
  1212. } TPacketGCBlankDynamic;
  1213.  
  1214. typedef struct packet_header_handshake
  1215. {
  1216. BYTE header;
  1217. DWORD dwHandshake;
  1218. DWORD dwTime;
  1219. LONG lDelta;
  1220. } TPacketGCHandshake;
  1221.  
  1222. typedef struct packet_header_bindudp
  1223. {
  1224. BYTE header;
  1225. DWORD addr;
  1226. WORD port;
  1227. } TPacketGCBindUDP;
  1228.  
  1229. typedef struct packet_header_dynamic_size
  1230. {
  1231. BYTE header;
  1232. WORD size;
  1233. } TDynamicSizePacketHeader;
  1234.  
  1235. typedef struct SSimplePlayerInformation
  1236. {
  1237. DWORD dwID;
  1238. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1239. BYTE byJob;
  1240. BYTE byLevel;
  1241. DWORD dwPlayMinutes;
  1242. BYTE byST, byHT, byDX, byIQ;
  1243. // WORD wParts[CRaceData::PART_MAX_NUM];
  1244. WORD wMainPart;
  1245. BYTE bChangeName;
  1246. WORD wHairPart;
  1247. #ifdef ENABLE_SASH_SYSTEM
  1248. WORD wSashPart;
  1249. #endif
  1250. BYTE bDummy[4];
  1251. long x, y;
  1252. LONG lAddr;
  1253. WORD wPort;
  1254. BYTE bySkillGroup;
  1255. } TSimplePlayerInformation;
  1256.  
  1257. typedef struct packet_login_success3
  1258. {
  1259. BYTE header;
  1260. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT3];
  1261. DWORD guild_id[PLAYER_PER_ACCOUNT3];
  1262. char guild_name[PLAYER_PER_ACCOUNT3][GUILD_NAME_MAX_LEN+1];
  1263. DWORD handle;
  1264. DWORD random_key;
  1265. } TPacketGCLoginSuccess3;
  1266.  
  1267. typedef struct packet_login_success4
  1268. {
  1269. BYTE header;
  1270. TSimplePlayerInformation akSimplePlayerInformation[PLAYER_PER_ACCOUNT4];
  1271. DWORD guild_id[PLAYER_PER_ACCOUNT4];
  1272. char guild_name[PLAYER_PER_ACCOUNT4][GUILD_NAME_MAX_LEN+1];
  1273. DWORD handle;
  1274. DWORD random_key;
  1275. } TPacketGCLoginSuccess4;
  1276.  
  1277.  
  1278. enum { LOGIN_STATUS_MAX_LEN = 8 };
  1279. typedef struct packet_login_failure
  1280. {
  1281. BYTE header;
  1282. char szStatus[LOGIN_STATUS_MAX_LEN + 1];
  1283. } TPacketGCLoginFailure;
  1284.  
  1285. typedef struct command_player_create
  1286. {
  1287. BYTE header;
  1288. BYTE index;
  1289. char name[CHARACTER_NAME_MAX_LEN + 1];
  1290. WORD job;
  1291. BYTE shape;
  1292. WORD hair;
  1293. BYTE CON;
  1294. BYTE INT;
  1295. BYTE STR;
  1296. BYTE DEX;
  1297. } TPacketCGCreateCharacter;
  1298.  
  1299. typedef struct command_player_create_success
  1300. {
  1301. BYTE header;
  1302. BYTE bAccountCharacterSlot;
  1303. TSimplePlayerInformation kSimplePlayerInfomation;
  1304. } TPacketGCPlayerCreateSuccess;
  1305.  
  1306. typedef struct command_create_failure
  1307. {
  1308. BYTE header;
  1309. BYTE bType;
  1310. } TPacketGCCreateFailure;
  1311.  
  1312. typedef struct command_player_delete
  1313. {
  1314. BYTE header;
  1315. BYTE index;
  1316. char szPrivateCode[PRIVATE_CODE_LENGTH];
  1317. } TPacketCGDestroyCharacter;
  1318.  
  1319. typedef struct packet_player_delete_success
  1320. {
  1321. BYTE header;
  1322. BYTE account_index;
  1323. } TPacketGCDestroyCharacterSuccess;
  1324.  
  1325. enum
  1326. {
  1327. ADD_CHARACTER_STATE_DEAD = (1 << 0),
  1328. ADD_CHARACTER_STATE_SPAWN = (1 << 1),
  1329. ADD_CHARACTER_STATE_GUNGON = (1 << 2),
  1330. ADD_CHARACTER_STATE_KILLER = (1 << 3),
  1331. ADD_CHARACTER_STATE_PARTY = (1 << 4),
  1332. };
  1333.  
  1334. enum EPKModes
  1335. {
  1336. PK_MODE_PEACE,
  1337. PK_MODE_REVENGE,
  1338. PK_MODE_FREE,
  1339. PK_MODE_PROTECT,
  1340. PK_MODE_GUILD,
  1341. PK_MODE_MAX_NUM,
  1342. };
  1343.  
  1344. // 2004.11.20.myevan.CRaceData::PART_MAX_NUM »ç¿ë¾ÈÇÏ°Ô ¼öÁ¤ - ¼­¹ö¿¡¼­ »ç¿ëÇϴ°Ͱú ÀÏÄ¡ÇÏÁö ¾ÊÀ½
  1345. enum ECharacterEquipmentPart
  1346. {
  1347. CHR_EQUIPPART_ARMOR,
  1348. CHR_EQUIPPART_WEAPON,
  1349. CHR_EQUIPPART_HEAD,
  1350. CHR_EQUIPPART_HAIR,
  1351. #ifdef ENABLE_SASH_SYSTEM
  1352. CHR_EQUIPPART_SASH,
  1353. #endif
  1354.  
  1355. CHR_EQUIPPART_NUM,
  1356. };
  1357.  
  1358. typedef struct packet_char_additional_info
  1359. {
  1360. BYTE header;
  1361. DWORD dwVID;
  1362. char name[CHARACTER_NAME_MAX_LEN + 1];
  1363. WORD awPart[CHR_EQUIPPART_NUM];
  1364. BYTE bEmpire;
  1365. DWORD dwGuildID;
  1366. DWORD dwLevel;
  1367. short sAlignment; //¼±¾ÇÄ¡
  1368. BYTE bPKMode;
  1369. DWORD dwMountVnum;
  1370. BYTE dwNewIsGuildName;
  1371. } TPacketGCCharacterAdditionalInfo;
  1372.  
  1373. typedef struct packet_add_char
  1374. {
  1375. BYTE header;
  1376.  
  1377. DWORD dwVID;
  1378.  
  1379. //char name[CHARACTER_NAME_MAX_LEN + 1];
  1380.  
  1381. float angle;
  1382. long x;
  1383. long y;
  1384. long z;
  1385.  
  1386. BYTE bType;
  1387. WORD wRaceNum;
  1388. //WORD awPart[CHR_EQUIPPART_NUM];
  1389. BYTE bMovingSpeed;
  1390. BYTE bAttackSpeed;
  1391.  
  1392. BYTE bStateFlag;
  1393. DWORD dwAffectFlag[2]; // ??
  1394. //BYTE bEmpire;
  1395. //DWORD dwGuild;
  1396. //short sAlignment;
  1397. //BYTE bPKMode;
  1398. //DWORD dwMountVnum;
  1399. } TPacketGCCharacterAdd;
  1400.  
  1401. typedef struct packet_add_char2
  1402. {
  1403. BYTE header;
  1404.  
  1405. DWORD dwVID;
  1406.  
  1407. char name[CHARACTER_NAME_MAX_LEN + 1];
  1408.  
  1409. float angle;
  1410. long x;
  1411. long y;
  1412. long z;
  1413.  
  1414. BYTE bType;
  1415. WORD wRaceNum;
  1416. WORD awPart[CHR_EQUIPPART_NUM];
  1417. BYTE bMovingSpeed;
  1418. BYTE bAttackSpeed;
  1419.  
  1420. BYTE bStateFlag;
  1421. DWORD dwAffectFlag[2]; // ??
  1422. BYTE bEmpire;
  1423.  
  1424. DWORD dwGuild;
  1425. short sAlignment;
  1426. BYTE bPKMode;
  1427. DWORD dwMountVnum;
  1428. BYTE dwNewIsGuildName;
  1429. } TPacketGCCharacterAdd2;
  1430.  
  1431. typedef struct packet_update_char
  1432. {
  1433. BYTE header;
  1434. DWORD dwVID;
  1435.  
  1436. WORD awPart[CHR_EQUIPPART_NUM];
  1437. BYTE bMovingSpeed;
  1438. BYTE bAttackSpeed;
  1439.  
  1440. BYTE bStateFlag;
  1441. DWORD dwAffectFlag[2];
  1442.  
  1443. DWORD dwGuildID;
  1444. short sAlignment;
  1445. BYTE bPKMode;
  1446. DWORD dwMountVnum;
  1447. BYTE dwNewIsGuildName;
  1448. } TPacketGCCharacterUpdate;
  1449.  
  1450. typedef struct packet_update_char2
  1451. {
  1452. BYTE header;
  1453. DWORD dwVID;
  1454.  
  1455. WORD awPart[CHR_EQUIPPART_NUM];
  1456. BYTE bMovingSpeed;
  1457. BYTE bAttackSpeed;
  1458.  
  1459. BYTE bStateFlag;
  1460. DWORD dwAffectFlag[2];
  1461.  
  1462. DWORD dwGuildID;
  1463. short sAlignment;
  1464. BYTE bPKMode;
  1465. DWORD dwMountVnum;
  1466. BYTE dwNewIsGuildName;
  1467. } TPacketGCCharacterUpdate2;
  1468.  
  1469. typedef struct packet_del_char
  1470. {
  1471. BYTE header;
  1472. DWORD dwVID;
  1473. } TPacketGCCharacterDelete;
  1474.  
  1475. typedef struct packet_GlobalTime
  1476. {
  1477. BYTE header;
  1478. float GlobalTime;
  1479. } TPacketGCGlobalTime;
  1480.  
  1481. enum EChatType
  1482. {
  1483. CHAT_TYPE_TALKING, /* ±×³É äÆà */
  1484. CHAT_TYPE_INFO, /* Á¤º¸ (¾ÆÀÌÅÛÀ» Áý¾ú´Ù, °æÇèÄ¡¸¦ ¾ò¾ú´Ù. µî) */
  1485. CHAT_TYPE_NOTICE, /* °øÁö»çÇ× */
  1486. CHAT_TYPE_PARTY, /* ÆÄƼ¸» */
  1487. CHAT_TYPE_GUILD, /* ±æµå¸» */
  1488. CHAT_TYPE_COMMAND, /* ¸í·É */
  1489. CHAT_TYPE_SHOUT, /* ¿ÜÄ¡±â */
  1490. CHAT_TYPE_WHISPER, // ¼­¹ö¿Í´Â ¿¬µ¿µÇÁö ¾Ê´Â Only Client Enum
  1491. CHAT_TYPE_BIG_NOTICE,
  1492. #ifdef ENABLE_CHAT_TYPE_SHOUT_TRADE
  1493. CHAT_TYPE_SHOUT_TRADE,
  1494. #endif
  1495. CHAT_TYPE_MAX_NUM,
  1496. };
  1497.  
  1498. typedef struct packet_chatting
  1499. {
  1500. BYTE header;
  1501. WORD size;
  1502. BYTE type;
  1503. DWORD dwVID;
  1504. BYTE bEmpire;
  1505. } TPacketGCChat;
  1506.  
  1507. typedef struct packet_whisper // °¡º¯ ÆÐŶ
  1508. {
  1509. BYTE bHeader;
  1510. WORD wSize;
  1511. BYTE bType;
  1512. char szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1513. } TPacketGCWhisper;
  1514.  
  1515. typedef struct packet_stun
  1516. {
  1517. BYTE header;
  1518. DWORD vid;
  1519. } TPacketGCStun;
  1520.  
  1521. typedef struct packet_dead
  1522. {
  1523. BYTE header;
  1524. DWORD vid;
  1525. } TPacketGCDead;
  1526.  
  1527. typedef struct packet_main_character
  1528. {
  1529. BYTE header;
  1530. DWORD dwVID;
  1531. WORD wRaceNum;
  1532. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1533. long lX, lY, lZ;
  1534. BYTE bySkillGroup;
  1535. } TPacketGCMainCharacter;
  1536.  
  1537. // SUPPORT_BGM
  1538. typedef struct packet_main_character2_empire
  1539. {
  1540. BYTE header;
  1541. DWORD dwVID;
  1542. WORD wRaceNum;
  1543. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1544. long lX, lY, lZ;
  1545. BYTE byEmpire;
  1546. BYTE bySkillGroup;
  1547. } TPacketGCMainCharacter2_EMPIRE;
  1548.  
  1549. typedef struct packet_main_character3_bgm
  1550. {
  1551. enum
  1552. {
  1553. MUSIC_NAME_MAX_LEN = 24,
  1554. };
  1555. BYTE header;
  1556. DWORD dwVID;
  1557. WORD wRaceNum;
  1558. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1559. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1560. long lX, lY, lZ;
  1561. BYTE byEmpire;
  1562. BYTE bySkillGroup;
  1563. } TPacketGCMainCharacter3_BGM;
  1564.  
  1565. typedef struct packet_main_character4_bgm_vol
  1566. {
  1567. enum
  1568. {
  1569. MUSIC_NAME_MAX_LEN = 24,
  1570. };
  1571. BYTE header;
  1572. DWORD dwVID;
  1573. WORD wRaceNum;
  1574. char szUserName[CHARACTER_NAME_MAX_LEN + 1];
  1575. char szBGMName[MUSIC_NAME_MAX_LEN + 1];
  1576. float fBGMVol;
  1577. long lX, lY, lZ;
  1578. BYTE byEmpire;
  1579. BYTE bySkillGroup;
  1580. } TPacketGCMainCharacter4_BGM_VOL;
  1581. // END_OF_SUPPORT_BGM
  1582.  
  1583. enum EPointTypes
  1584. {
  1585. POINT_NONE, // 0
  1586. POINT_LEVEL, // 1
  1587. POINT_VOICE, // 2
  1588. POINT_EXP, // 3
  1589. POINT_NEXT_EXP, // 4
  1590. POINT_HP, // 5
  1591. POINT_MAX_HP, // 6
  1592. POINT_SP, // 7
  1593. POINT_MAX_SP, // 8
  1594. POINT_STAMINA, // 9 ½ºÅ׹̳Ê
  1595. POINT_MAX_STAMINA, // 10 ÃÖ´ë ½ºÅ׹̳Ê
  1596.  
  1597. POINT_GOLD, // 11
  1598. POINT_ST, // 12 ±Ù·Â
  1599. POINT_HT, // 13 ü·Â
  1600. POINT_DX, // 14 ¹Îø¼º
  1601. POINT_IQ, // 15 Á¤½Å·Â
  1602. POINT_ATT_POWER, // 16 °ø°Ý·Â
  1603. POINT_ATT_SPEED, // 17 °ø°Ý¼Óµµ
  1604. POINT_EVADE_RATE, // 18 ȸÇÇÀ²
  1605. POINT_MOV_SPEED, // 19 À̵¿¼Óµµ
  1606. POINT_DEF_GRADE, // 20 ¹æ¾îµî±Þ
  1607. POINT_CASTING_SPEED, // 21 ÁÖ¹®¼Óµµ (Äð´Ù¿îŸÀÓ*100) / (100 + ÀÌ°ª) = ÃÖÁ¾ Äð´Ù¿î ŸÀÓ
  1608. POINT_MAGIC_ATT_GRADE, // 22 ¸¶¹ý°ø°Ý·Â
  1609. POINT_MAGIC_DEF_GRADE, // 23 ¸¶¹ý¹æ¾î·Â
  1610. POINT_EMPIRE_POINT, // 24 Á¦±¹Á¡¼ö
  1611. POINT_LEVEL_STEP, // 25 ÇÑ ·¹º§¿¡¼­ÀÇ ´Ü°è.. (1 2 3 µÉ ¶§ º¸»ó, 4 µÇ¸é ·¹º§ ¾÷)
  1612. POINT_STAT, // 26 ´É·ÂÄ¡ ¿Ã¸± ¼ö ÀÖ´Â °³¼ö
  1613. POINT_SUB_SKILL, // 27 º¸Á¶ ½ºÅ³ Æ÷ÀÎÆ®
  1614. POINT_SKILL, // 28 ¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ®
  1615. // POINT_SKILL_PASV, // 27 ÆÐ½Ãºê ±â¼ú ¿Ã¸± ¼ö ÀÖ´Â °³¼ö
  1616. // POINT_SKILL_ACTIVE, // 28 ¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ®
  1617. POINT_MIN_ATK, // 29 ÃÖ¼Ò Æı«·Â
  1618. POINT_MAX_ATK, // 30 ÃÖ´ë Æı«·Â
  1619. POINT_PLAYTIME, // 31 Ç÷¹À̽ð£
  1620. POINT_HP_REGEN, // 32 HP ȸº¹·ü
  1621. POINT_SP_REGEN, // 33 SP ȸº¹·ü
  1622.  
  1623. POINT_BOW_DISTANCE, // 34 È° »çÁ¤°Å¸® Áõ°¡Ä¡ (meter)
  1624.  
  1625. POINT_HP_RECOVERY, // 35 ü·Â ȸº¹ Áõ°¡·®
  1626. POINT_SP_RECOVERY, // 36 Á¤½Å·Â ȸº¹ Áõ°¡·®
  1627.  
  1628. POINT_POISON_PCT, // 37 µ¶ È®·ü
  1629. POINT_STUN_PCT, // 38 ±âÀý È®·ü
  1630. POINT_SLOW_PCT, // 39 ½½·Î¿ì È®·ü
  1631. POINT_CRITICAL_PCT, // 40 Å©¸®Æ¼Äà Ȯ·ü
  1632. POINT_PENETRATE_PCT, // 41 °üÅëŸ°Ý È®·ü
  1633. POINT_CURSE_PCT, // 42 ÀúÁÖ È®·ü
  1634.  
  1635. POINT_ATTBONUS_HUMAN, // 43 Àΰ£¿¡°Ô °­ÇÔ
  1636. POINT_ATTBONUS_ANIMAL, // 44 µ¿¹°¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1637. POINT_ATTBONUS_ORC, // 45 ¿õ±Í¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1638. POINT_ATTBONUS_MILGYO, // 46 ¹Ð±³¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1639. POINT_ATTBONUS_UNDEAD, // 47 ½Ãü¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1640. POINT_ATTBONUS_DEVIL, // 48 ¸¶±Í(¾Ç¸¶)¿¡°Ô µ¥¹ÌÁö % Áõ°¡
  1641. POINT_ATTBONUS_INSECT, // 49 ¹ú·¹Á·
  1642. POINT_ATTBONUS_FIRE, // 50 È­¿°Á·
  1643. POINT_ATTBONUS_ICE, // 51 ºù¼³Á·
  1644. POINT_ATTBONUS_DESERT, // 52 »ç¸·Á·
  1645. POINT_ATTBONUS_UNUSED0, // 53 UNUSED0
  1646. POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
  1647. POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
  1648. POINT_ATTBONUS_UNUSED3, // 56 UNUSED3
  1649. POINT_ATTBONUS_UNUSED4, // 57 UNUSED4
  1650. POINT_ATTBONUS_UNUSED5, // 58 UNUSED5
  1651. POINT_ATTBONUS_UNUSED6, // 59 UNUSED6
  1652. POINT_ATTBONUS_UNUSED7, // 60 UNUSED7
  1653. POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
  1654. POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
  1655.  
  1656. POINT_STEAL_HP, // 63 »ý¸í·Â Èí¼ö
  1657. POINT_STEAL_SP, // 64 Á¤½Å·Â Èí¼ö
  1658.  
  1659. POINT_MANA_BURN_PCT, // 65 ¸¶³ª ¹ø
  1660.  
  1661. /// ÇÇÇؽà º¸³Ê½º ///
  1662.  
  1663. POINT_DAMAGE_SP_RECOVER, // 66 °ø°Ý´çÇÒ ½Ã Á¤½Å·Â ȸº¹ È®·ü
  1664.  
  1665. POINT_BLOCK, // 67 ºí·°À²
  1666. POINT_DODGE, // 68 ȸÇÇÀ²
  1667.  
  1668. POINT_RESIST_SWORD, // 69
  1669. POINT_RESIST_TWOHAND, // 70
  1670. POINT_RESIST_DAGGER, // 71
  1671. POINT_RESIST_BELL, // 72
  1672. POINT_RESIST_FAN, // 73
  1673. POINT_RESIST_BOW, // 74 È­»ì ÀúÇ× : ´ë¹ÌÁö °¨¼Ò
  1674. POINT_RESIST_FIRE, // 75 È­¿° ÀúÇ× : È­¿°°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1675. POINT_RESIST_ELEC, // 76 Àü±â ÀúÇ× : Àü±â°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1676. POINT_RESIST_MAGIC, // 77 ¼ú¹ý ÀúÇ× : ¸ðµç¼ú¹ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1677. POINT_RESIST_WIND, // 78 ¹Ù¶÷ ÀúÇ× : ¹Ù¶÷°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò
  1678.  
  1679. POINT_REFLECT_MELEE, // 79 °ø°Ý ¹Ý»ç
  1680.  
  1681. /// Ư¼ö ÇÇÇؽà ///
  1682. POINT_REFLECT_CURSE, // 80 ÀúÁÖ ¹Ý»ç
  1683. POINT_POISON_REDUCE, // 81 µ¶µ¥¹ÌÁö °¨¼Ò
  1684.  
  1685. /// Àû ¼Ò¸ê½Ã ///
  1686. POINT_KILL_SP_RECOVER, // 82 Àû ¼Ò¸ê½Ã MP ȸº¹
  1687. POINT_EXP_DOUBLE_BONUS, // 83
  1688. POINT_GOLD_DOUBLE_BONUS, // 84
  1689. POINT_ITEM_DROP_BONUS, // 85
  1690.  
  1691. /// ȸº¹ °ü·Ã ///
  1692. POINT_POTION_BONUS, // 86
  1693. POINT_KILL_HP_RECOVER, // 87
  1694.  
  1695. POINT_IMMUNE_STUN, // 88
  1696. POINT_IMMUNE_SLOW, // 89
  1697. POINT_IMMUNE_FALL, // 90
  1698. //////////////////
  1699.  
  1700. POINT_PARTY_ATT_GRADE, // 91
  1701. POINT_PARTY_DEF_GRADE, // 92
  1702.  
  1703. POINT_ATT_BONUS, // 93
  1704. POINT_DEF_BONUS, // 94
  1705.  
  1706. POINT_ATT_GRADE_BONUS, // 95
  1707. POINT_DEF_GRADE_BONUS, // 96
  1708. POINT_MAGIC_ATT_GRADE_BONUS, // 97
  1709. POINT_MAGIC_DEF_GRADE_BONUS, // 98
  1710.  
  1711. POINT_RESIST_NORMAL_DAMAGE, // 99
  1712.  
  1713. POINT_STAT_RESET_COUNT = 112,
  1714. POINT_HORSE_SKILL = 113,
  1715.  
  1716. POINT_MALL_ATTBONUS, // 114 °ø°Ý·Â +x%
  1717. POINT_MALL_DEFBONUS, // 115 ¹æ¾î·Â +x%
  1718. POINT_MALL_EXPBONUS, // 116 °æÇèÄ¡ +x%
  1719. POINT_MALL_ITEMBONUS, // 117 ¾ÆÀÌÅÛ µå·ÓÀ² x/10¹è
  1720. POINT_MALL_GOLDBONUS, // 118 µ· µå·ÓÀ² x/10¹è
  1721. POINT_MAX_HP_PCT, // 119 ÃÖ´ë»ý¸í·Â +x%
  1722. POINT_MAX_SP_PCT, // 120 ÃÖ´ëÁ¤½Å·Â +x%
  1723.  
  1724. POINT_SKILL_DAMAGE_BONUS, // 121 ½ºÅ³ µ¥¹ÌÁö *(100+x)%
  1725. POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 ÆòŸ µ¥¹ÌÁö *(100+x)%
  1726.  
  1727. POINT_SKILL_DEFEND_BONUS, // 123 ½ºÅ³ ¹æ¾î µ¥¹ÌÁö
  1728. POINT_NORMAL_HIT_DEFEND_BONUS, // 124 ÆòŸ ¹æ¾î µ¥¹ÌÁö
  1729. POINT_PC_BANG_EXP_BONUS, // 125
  1730. POINT_PC_BANG_DROP_BONUS, // 126 PC¹æ Àü¿ë µå·Ó·ü º¸³Ê½º
  1731.  
  1732. POINT_ENERGY = 128, // 128 ±â·Â
  1733.  
  1734. // ±â·Â ui ¿ë.
  1735. // ÀÌ·¸°Ô ÇÏ°í ½ÍÁö ¾Ê¾ÒÁö¸¸,
  1736. // uiTaskBar¿¡¼­´Â affect¿¡ Á¢±ÙÇÒ ¼ö ¾ø°í,
  1737. // ´õ±¸³ª Ŭ¶ó¸®¾ðÆ®¿¡¼­´Â blend_affect´Â °ü¸®ÇÏÁö ¾Ê¾Æ,
  1738. // Àӽ÷ΠÀÌ·¸°Ô µÐ´Ù.
  1739. POINT_ENERGY_END_TIME = 129, // 129 ±â·Â Á¾·á ½Ã°£
  1740.  
  1741. // Ŭ¶óÀ̾ðÆ® Æ÷ÀÎÆ®
  1742. POINT_MIN_WEP = 200,
  1743. POINT_MAX_WEP,
  1744. POINT_MIN_MAGIC_WEP,
  1745. POINT_MAX_MAGIC_WEP,
  1746. POINT_HIT_RATE,
  1747.  
  1748.  
  1749. //POINT_MAX_NUM = 255,=>stdafx.h ·Î/
  1750. #ifdef INVENTORY_PROTECT
  1751. ENVANTER = 146,
  1752. #endif
  1753. #ifdef NEW_ADD_INVENTORY
  1754. POINT_BLACK = 145,
  1755. #endif
  1756. };
  1757.  
  1758. typedef struct packet_points
  1759. {
  1760. BYTE header;
  1761. #ifdef ENABLE_MAX_YANG
  1762. long long points[POINT_MAX_NUM];
  1763. #else
  1764. long points[POINT_MAX_NUM];
  1765. #endif
  1766. } TPacketGCPoints;
  1767.  
  1768. typedef struct packet_point_change
  1769. {
  1770. int header;
  1771.  
  1772. DWORD dwVID;
  1773. BYTE Type;
  1774.  
  1775. #ifdef ENABLE_MAX_YANG
  1776. long long amount;
  1777. long long value;
  1778. #else
  1779. long amount;
  1780. long value;
  1781. #endif
  1782. } TPacketGCPointChange;
  1783.  
  1784. typedef struct packet_motion
  1785. {
  1786. BYTE header;
  1787. DWORD vid;
  1788. DWORD victim_vid;
  1789. WORD motion;
  1790. } TPacketGCMotion;
  1791.  
  1792. #if defined(GAIDEN)
  1793. struct TPacketGCItemDelDeprecate
  1794. {
  1795. TPacketGCItemDelDeprecate() :
  1796. header(HEADER_GC_ITEM_DEL),
  1797. pos(0),
  1798. vnum(0),
  1799. count(0)
  1800. {
  1801. memset(&alSockets, 0, sizeof(alSockets));
  1802. memset(&aAttr, 0, sizeof(aAttr));
  1803. }
  1804.  
  1805. BYTE header;
  1806. BYTE pos;
  1807. DWORD vnum;
  1808. BYTE count;
  1809. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1810. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1811. };
  1812.  
  1813. typedef struct packet_set_item
  1814. {
  1815. BYTE header;
  1816. BYTE pos;
  1817. DWORD vnum;
  1818. BYTE count;
  1819. DWORD flags; // Ç÷¡±× Ãß°¡
  1820. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1821. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1822. } TPacketGCItemSet;
  1823.  
  1824. typedef struct packet_item_del
  1825. {
  1826. BYTE header;
  1827. BYTE pos;
  1828. } TPacketGCItemDel;
  1829. #else
  1830. typedef struct packet_set_item
  1831. {
  1832. BYTE header;
  1833. TItemPos Cell;
  1834. DWORD vnum;
  1835. BYTE count;
  1836. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1837. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1838. } TPacketGCItemSet;
  1839.  
  1840. typedef struct packet_set_item2
  1841. {
  1842. BYTE header;
  1843. TItemPos Cell;
  1844. DWORD vnum;
  1845. BYTE count;
  1846. DWORD flags; // Ç÷¡±× Ãß°¡
  1847. DWORD anti_flags; // Ç÷¡±× Ãß°¡
  1848. bool highlight;
  1849. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1850. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1851. } TPacketGCItemSet2;
  1852. #endif
  1853.  
  1854. typedef struct packet_item_del
  1855. {
  1856. BYTE header;
  1857. BYTE pos;
  1858. } TPacketGCItemDel;
  1859.  
  1860. typedef struct packet_use_item
  1861. {
  1862. BYTE header;
  1863. TItemPos Cell;
  1864. DWORD ch_vid;
  1865. DWORD victim_vid;
  1866.  
  1867. DWORD vnum;
  1868. } TPacketGCItemUse;
  1869.  
  1870. typedef struct packet_update_item
  1871. {
  1872. BYTE header;
  1873. TItemPos Cell;
  1874. BYTE count;
  1875. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  1876. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1877. } TPacketGCItemUpdate;
  1878.  
  1879. typedef struct packet_ground_add_item
  1880. {
  1881. BYTE bHeader;
  1882. long lX;
  1883. long lY;
  1884. long lZ;
  1885.  
  1886. DWORD dwVID;
  1887. DWORD dwVnum;
  1888. } TPacketGCItemGroundAdd;
  1889.  
  1890. typedef struct packet_ground_del_item
  1891. {
  1892. BYTE header;
  1893. DWORD vid;
  1894. } TPacketGCItemGroundDel;
  1895.  
  1896. typedef struct packet_item_ownership
  1897. {
  1898. BYTE bHeader;
  1899. DWORD dwVID;
  1900. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1901. } TPacketGCItemOwnership;
  1902.  
  1903. typedef struct packet_quickslot_add
  1904. {
  1905. BYTE header;
  1906. BYTE pos;
  1907. TQuickSlot slot;
  1908. } TPacketGCQuickSlotAdd;
  1909.  
  1910. typedef struct packet_quickslot_del
  1911. {
  1912. BYTE header;
  1913. BYTE pos;
  1914. } TPacketGCQuickSlotDel;
  1915.  
  1916. typedef struct packet_quickslot_swap
  1917. {
  1918. BYTE header;
  1919. BYTE pos;
  1920. BYTE change_pos;
  1921. } TPacketGCQuickSlotSwap;
  1922.  
  1923. typedef struct packet_shop_start
  1924. {
  1925. DWORD owner_vid;
  1926. struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1927. } TPacketGCShopStart;
  1928.  
  1929. typedef struct packet_shop_start_ex // ´ÙÀ½¿¡ TSubPacketShopTab* shop_tabs ÀÌ µû¶ó¿È.
  1930. {
  1931. typedef struct sub_packet_shop_tab
  1932. {
  1933. char name[SHOP_TAB_NAME_MAX];
  1934. BYTE coin_type;
  1935. packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1936. } TSubPacketShopTab;
  1937. DWORD owner_vid;
  1938. BYTE shop_tab_count;
  1939. } TPacketGCShopStartEx;
  1940.  
  1941.  
  1942. typedef struct packet_shop_update_item
  1943. {
  1944. BYTE pos;
  1945. struct packet_shop_item item;
  1946. } TPacketGCShopUpdateItem;
  1947.  
  1948. typedef struct packet_shop_update_price
  1949. {
  1950. int iElkAmount;
  1951. } TPacketGCShopUpdatePrice;
  1952.  
  1953. enum EPacketShopSubHeaders
  1954. {
  1955. SHOP_SUBHEADER_GC_START,
  1956. SHOP_SUBHEADER_GC_END,
  1957. SHOP_SUBHEADER_GC_UPDATE_ITEM,
  1958. SHOP_SUBHEADER_GC_UPDATE_PRICE,
  1959. SHOP_SUBHEADER_GC_OK,
  1960. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  1961. SHOP_SUBHEADER_GC_SOLDOUT,
  1962. SHOP_SUBHEADER_GC_INVENTORY_FULL,
  1963. SHOP_SUBHEADER_GC_INVALID_POS,
  1964. SHOP_SUBHEADER_GC_SOLD_OUT,
  1965. SHOP_SUBHEADER_GC_START_EX,
  1966. SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  1967. };
  1968.  
  1969. typedef struct packet_shop
  1970. {
  1971. BYTE header;
  1972. WORD size;
  1973. BYTE subheader;
  1974. } TPacketGCShop;
  1975.  
  1976. typedef struct packet_exchange
  1977. {
  1978. BYTE header;
  1979. BYTE subheader;
  1980. BYTE is_me;
  1981. #ifdef ENABLE_MAX_YANG
  1982. long long arg1;
  1983. #else
  1984. DWORD arg1; // vnum
  1985. #endif
  1986. TItemPos arg2;
  1987. DWORD arg3;
  1988. #ifdef WJ_ENABLE_TRADABLE_ICON
  1989. TItemPos arg4;
  1990. #endif
  1991. long alValues[ITEM_SOCKET_SLOT_MAX_NUM];
  1992. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  1993. } TPacketGCExchange;
  1994.  
  1995. enum
  1996. {
  1997. EXCHANGE_SUBHEADER_GC_START, // arg1 == vid
  1998. EXCHANGE_SUBHEADER_GC_ITEM_ADD, // arg1 == vnum arg2 == pos arg3 == count
  1999. EXCHANGE_SUBHEADER_GC_ITEM_DEL, // arg1 == pos
  2000. EXCHANGE_SUBHEADER_GC_ELK_ADD, // arg1 == elk
  2001. EXCHANGE_SUBHEADER_GC_ACCEPT, // arg1 == accept
  2002. EXCHANGE_SUBHEADER_GC_END, // arg1 == not used
  2003. EXCHANGE_SUBHEADER_GC_ALREADY, // arg1 == not used
  2004. EXCHANGE_SUBHEADER_GC_LESS_ELK, // arg1 == not used
  2005. };
  2006.  
  2007. typedef struct packet_position
  2008. {
  2009. BYTE header;
  2010. DWORD vid;
  2011. BYTE position;
  2012. } TPacketGCPosition;
  2013.  
  2014. typedef struct packet_ping
  2015. {
  2016. BYTE header;
  2017. } TPacketGCPing;
  2018.  
  2019. typedef struct packet_pong
  2020. {
  2021. BYTE bHeader;
  2022. } TPacketCGPong;
  2023.  
  2024. typedef struct packet_script
  2025. {
  2026. BYTE header;
  2027. WORD size;
  2028. BYTE skin;
  2029. WORD src_size;
  2030. } TPacketGCScript;
  2031.  
  2032. typedef struct packet_target
  2033. {
  2034. BYTE header;
  2035. DWORD dwVID;
  2036. BYTE bHPPercent;
  2037. } TPacketGCTarget;
  2038.  
  2039. #ifdef ENABLE_SEND_TARGET_INFO
  2040. typedef struct packet_target_info
  2041. {
  2042. BYTE header;
  2043. DWORD dwVID;
  2044. DWORD race;
  2045. DWORD dwVnum;
  2046. BYTE count;
  2047. } TPacketGCTargetInfo;
  2048.  
  2049. typedef struct packet_target_info_load
  2050. {
  2051. BYTE header;
  2052. DWORD dwVID;
  2053. } TPacketCGTargetInfoLoad;
  2054. #endif
  2055. typedef struct packet_damage_info
  2056. {
  2057. BYTE header;
  2058. DWORD dwVID;
  2059. BYTE flag;
  2060. int damage;
  2061. } TPacketGCDamageInfo;
  2062.  
  2063. typedef struct packet_mount
  2064. {
  2065. BYTE header;
  2066. DWORD vid;
  2067. DWORD mount_vid;
  2068. BYTE pos;
  2069. DWORD _x, _y;
  2070. } TPacketGCMount;
  2071.  
  2072. typedef struct packet_change_speed
  2073. {
  2074. BYTE header;
  2075. DWORD vid;
  2076. WORD moving_speed;
  2077. } TPacketGCChangeSpeed;
  2078.  
  2079. typedef struct packet_move
  2080. {
  2081. BYTE bHeader;
  2082. BYTE bFunc;
  2083. BYTE bArg;
  2084. BYTE bRot;
  2085. DWORD dwVID;
  2086. LONG lX;
  2087. LONG lY;
  2088. DWORD dwTime;
  2089. DWORD dwDuration;
  2090. } TPacketGCMove;
  2091.  
  2092. enum
  2093. {
  2094. QUEST_SEND_IS_BEGIN = 1 << 0,
  2095. QUEST_SEND_TITLE = 1 << 1, // 28ÀÚ ±îÁö
  2096. QUEST_SEND_CLOCK_NAME = 1 << 2, // 16ÀÚ ±îÁö
  2097. QUEST_SEND_CLOCK_VALUE = 1 << 3,
  2098. QUEST_SEND_COUNTER_NAME = 1 << 4, // 16ÀÚ ±îÁö
  2099. QUEST_SEND_COUNTER_VALUE = 1 << 5,
  2100. QUEST_SEND_ICON_FILE = 1 << 6, // 24ÀÚ ±îÁö
  2101. };
  2102.  
  2103. typedef struct packet_quest_info
  2104. {
  2105. BYTE header;
  2106. WORD size;
  2107. WORD index;
  2108. BYTE flag;
  2109. } TPacketGCQuestInfo;
  2110.  
  2111. typedef struct packet_quest_confirm
  2112. {
  2113. BYTE header;
  2114. char msg[64+1];
  2115. long timeout;
  2116. DWORD requestPID;
  2117. } TPacketGCQuestConfirm;
  2118.  
  2119. typedef struct packet_attack
  2120. {
  2121. BYTE header;
  2122. DWORD dwVID;
  2123. DWORD dwVictimVID; // Àû VID
  2124. BYTE bType; // °ø°Ý À¯Çü
  2125. } TPacketGCAttack;
  2126.  
  2127. typedef struct packet_c2c
  2128. {
  2129. BYTE header;
  2130. WORD wSize;
  2131. } TPacketGCC2C;
  2132.  
  2133. typedef struct packetd_sync_position_element
  2134. {
  2135. DWORD dwVID;
  2136. long lX;
  2137. long lY;
  2138. } TPacketGCSyncPositionElement;
  2139.  
  2140. typedef struct packetd_sync_position
  2141. {
  2142. BYTE bHeader;
  2143. WORD wSize;
  2144. } TPacketGCSyncPosition;
  2145.  
  2146. typedef struct packet_ownership
  2147. {
  2148. BYTE bHeader;
  2149. DWORD dwOwnerVID;
  2150. DWORD dwVictimVID;
  2151. } TPacketGCOwnership;
  2152.  
  2153. #define SKILL_MAX_NUM 255
  2154.  
  2155. typedef struct packet_skill_level
  2156. {
  2157. BYTE bHeader;
  2158. BYTE abSkillLevels[SKILL_MAX_NUM];
  2159. } TPacketGCSkillLevel;
  2160.  
  2161. typedef struct SPlayerSkill
  2162. {
  2163. BYTE bMasterType;
  2164. BYTE bLevel;
  2165. time_t tNextRead;
  2166. } TPlayerSkill;
  2167.  
  2168. typedef struct packet_skill_level_new
  2169. {
  2170. BYTE bHeader;
  2171. TPlayerSkill skills[SKILL_MAX_NUM];
  2172. } TPacketGCSkillLevelNew;
  2173.  
  2174. // fly
  2175. typedef struct packet_fly
  2176. {
  2177. BYTE bHeader;
  2178. BYTE bType;
  2179. DWORD dwStartVID;
  2180. DWORD dwEndVID;
  2181. } TPacketGCCreateFly;
  2182.  
  2183. enum EPVPModes
  2184. {
  2185. PVP_MODE_NONE,
  2186. PVP_MODE_AGREE,
  2187. PVP_MODE_FIGHT,
  2188. PVP_MODE_REVENGE,
  2189. };
  2190.  
  2191. typedef struct packet_duel_start
  2192. {
  2193. BYTE header ;
  2194. WORD wSize ; // DWORD°¡ ¸î°³? °³¼ö = (wSize - sizeof(TPacketGCPVPList)) / 4
  2195. } TPacketGCDuelStart ;
  2196.  
  2197. typedef struct packet_pvp
  2198. {
  2199. BYTE header;
  2200. DWORD dwVIDSrc;
  2201. DWORD dwVIDDst;
  2202. BYTE bMode;
  2203. } TPacketGCPVP;
  2204.  
  2205. typedef struct packet_skill_cooltime_end
  2206. {
  2207. BYTE header;
  2208. BYTE bSkill;
  2209. } TPacketGCSkillCoolTimeEnd;
  2210.  
  2211. typedef struct packet_warp
  2212. {
  2213. BYTE bHeader;
  2214. LONG lX;
  2215. LONG lY;
  2216. LONG lAddr;
  2217. WORD wPort;
  2218. } TPacketGCWarp;
  2219.  
  2220. typedef struct packet_party_invite
  2221. {
  2222. BYTE header;
  2223. DWORD leader_pid;
  2224. } TPacketGCPartyInvite;
  2225.  
  2226. typedef struct packet_party_add
  2227. {
  2228. BYTE header;
  2229. DWORD pid;
  2230. char name[CHARACTER_NAME_MAX_LEN+1];
  2231. } TPacketGCPartyAdd;
  2232.  
  2233. typedef struct packet_party_update
  2234. {
  2235. BYTE header;
  2236. DWORD pid;
  2237. BYTE state;
  2238. BYTE percent_hp;
  2239. short affects[PARTY_AFFECT_SLOT_MAX_NUM];
  2240. } TPacketGCPartyUpdate;
  2241.  
  2242. typedef struct packet_party_remove
  2243. {
  2244. BYTE header;
  2245. DWORD pid;
  2246. } TPacketGCPartyRemove;
  2247.  
  2248. typedef TPacketCGSafeboxCheckout TPacketGCSafeboxCheckout;
  2249. typedef TPacketCGSafeboxCheckin TPacketGCSafeboxCheckin;
  2250.  
  2251. typedef struct packet_safebox_wrong_password
  2252. {
  2253. BYTE bHeader;
  2254. } TPacketGCSafeboxWrongPassword;
  2255.  
  2256. typedef struct packet_safebox_size
  2257. {
  2258. BYTE bHeader;
  2259. BYTE bSize;
  2260. } TPacketGCSafeboxSize;
  2261.  
  2262. typedef struct packet_safebox_money_change
  2263. {
  2264. BYTE bHeader;
  2265. DWORD dwMoney;
  2266. } TPacketGCSafeboxMoneyChange;
  2267.  
  2268. typedef struct command_empire
  2269. {
  2270. BYTE bHeader;
  2271. BYTE bEmpire;
  2272. } TPacketCGEmpire;
  2273.  
  2274. typedef struct packet_empire
  2275. {
  2276. BYTE bHeader;
  2277. BYTE bEmpire;
  2278. } TPacketGCEmpire;
  2279.  
  2280. enum
  2281. {
  2282. FISHING_SUBHEADER_GC_START,
  2283. FISHING_SUBHEADER_GC_STOP,
  2284. FISHING_SUBHEADER_GC_REACT,
  2285. FISHING_SUBHEADER_GC_SUCCESS,
  2286. FISHING_SUBHEADER_GC_FAIL,
  2287. FISHING_SUBHEADER_GC_FISH,
  2288. };
  2289.  
  2290. typedef struct packet_fishing
  2291. {
  2292. BYTE header;
  2293. BYTE subheader;
  2294. DWORD info;
  2295. BYTE dir;
  2296. } TPacketGCFishing;
  2297.  
  2298. typedef struct paryt_parameter
  2299. {
  2300. BYTE bHeader;
  2301. BYTE bDistributeMode;
  2302. } TPacketGCPartyParameter;
  2303.  
  2304. //////////////////////////////////////////////////////////////////////////
  2305. // Guild
  2306.  
  2307. enum
  2308. {
  2309. GUILD_SUBHEADER_GC_LOGIN,
  2310. GUILD_SUBHEADER_GC_LOGOUT,
  2311. GUILD_SUBHEADER_GC_LIST,
  2312. GUILD_SUBHEADER_GC_GRADE,
  2313. GUILD_SUBHEADER_GC_ADD,
  2314. GUILD_SUBHEADER_GC_REMOVE,
  2315. GUILD_SUBHEADER_GC_GRADE_NAME,
  2316. GUILD_SUBHEADER_GC_GRADE_AUTH,
  2317. GUILD_SUBHEADER_GC_INFO,
  2318. GUILD_SUBHEADER_GC_COMMENTS,
  2319. GUILD_SUBHEADER_GC_CHANGE_EXP,
  2320. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  2321. GUILD_SUBHEADER_GC_SKILL_INFO,
  2322. GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  2323. GUILD_SUBHEADER_GC_GUILD_INVITE,
  2324. GUILD_SUBHEADER_GC_WAR,
  2325. GUILD_SUBHEADER_GC_GUILD_NAME,
  2326. GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  2327. GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  2328. GUILD_SUBHEADER_GC_WAR_POINT,
  2329. GUILD_SUBHEADER_GC_MONEY_CHANGE,
  2330. };
  2331.  
  2332. typedef struct packet_guild
  2333. {
  2334. BYTE header;
  2335. WORD size;
  2336. BYTE subheader;
  2337. } TPacketGCGuild;
  2338.  
  2339. // SubHeader - Grade
  2340. enum
  2341. {
  2342. GUILD_AUTH_ADD_MEMBER = (1 << 0),
  2343. GUILD_AUTH_REMOVE_MEMBER = (1 << 1),
  2344. GUILD_AUTH_NOTICE = (1 << 2),
  2345. GUILD_AUTH_SKILL = (1 << 3),
  2346. };
  2347.  
  2348. typedef struct packet_guild_sub_grade
  2349. {
  2350. char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 ±æµåÀå, ±æµå¿ø µîÀÇ À̸§
  2351. BYTE auth_flag;
  2352. } TPacketGCGuildSubGrade;
  2353.  
  2354. typedef struct packet_guild_sub_member
  2355. {
  2356. DWORD pid;
  2357. BYTE byGrade;
  2358. BYTE byIsGeneral;
  2359. BYTE byJob;
  2360. BYTE byLevel;
  2361. DWORD dwOffer;
  2362. BYTE byNameFlag;
  2363. // if NameFlag is TRUE, name is sent from server.
  2364. // char szName[CHARACTER_ME_MAX_LEN+1];
  2365. } TPacketGCGuildSubMember;
  2366.  
  2367. typedef struct packet_guild_sub_info
  2368. {
  2369. WORD member_count;
  2370. WORD max_member_count;
  2371. DWORD guild_id;
  2372. DWORD master_pid;
  2373. DWORD exp;
  2374. BYTE level;
  2375. char name[GUILD_NAME_MAX_LEN+1];
  2376. DWORD gold;
  2377. BYTE hasLand;
  2378. } TPacketGCGuildInfo;
  2379.  
  2380. enum EGuildWarState
  2381. {
  2382. GUILD_WAR_NONE,
  2383. GUILD_WAR_SEND_DECLARE,
  2384. GUILD_WAR_REFUSE,
  2385. GUILD_WAR_RECV_DECLARE,
  2386. GUILD_WAR_WAIT_START,
  2387. GUILD_WAR_CANCEL,
  2388. GUILD_WAR_ON_WAR,
  2389. GUILD_WAR_END,
  2390.  
  2391. GUILD_WAR_DURATION = 2*60*60, // 2½Ã°£
  2392. };
  2393.  
  2394. typedef struct packet_guild_war
  2395. {
  2396. DWORD dwGuildSelf;
  2397. DWORD dwGuildOpp;
  2398. BYTE bType;
  2399. BYTE bWarState;
  2400. } TPacketGCGuildWar;
  2401.  
  2402. typedef struct SPacketGuildWarPoint
  2403. {
  2404. DWORD dwGainGuildID;
  2405. DWORD dwOpponentGuildID;
  2406. long lPoint;
  2407. } TPacketGuildWarPoint;
  2408.  
  2409. // SubHeader - Dungeon
  2410. enum
  2411. {
  2412. DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  2413. DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  2414. };
  2415.  
  2416. typedef struct packet_dungeon
  2417. {
  2418. BYTE bHeader;
  2419. WORD size;
  2420. BYTE subheader;
  2421. } TPacketGCDungeon;
  2422.  
  2423. // Private Shop
  2424. typedef struct SPacketGCShopSign
  2425. {
  2426. BYTE bHeader;
  2427. DWORD dwVID;
  2428. char szSign[SHOP_SIGN_MAX_LEN + 1];
  2429. } TPacketGCShopSign;
  2430.  
  2431. typedef struct SPacketGCTime
  2432. {
  2433. BYTE bHeader;
  2434. time_t time;
  2435. } TPacketGCTime;
  2436.  
  2437. enum
  2438. {
  2439. WALKMODE_RUN,
  2440. WALKMODE_WALK,
  2441. };
  2442.  
  2443. typedef struct SPacketGCWalkMode
  2444. {
  2445. BYTE header;
  2446. DWORD vid;
  2447. BYTE mode;
  2448. } TPacketGCWalkMode;
  2449.  
  2450. typedef struct SPacketGCChangeSkillGroup
  2451. {
  2452. BYTE header;
  2453. BYTE skill_group;
  2454. } TPacketGCChangeSkillGroup;
  2455.  
  2456. struct TMaterial
  2457. {
  2458. DWORD vnum;
  2459. DWORD count;
  2460. };
  2461.  
  2462. typedef struct SRefineTable
  2463. {
  2464. DWORD src_vnum;
  2465. DWORD result_vnum;
  2466. BYTE material_count;
  2467. int cost; // ¼Ò¿ä ºñ¿ë
  2468. int prob; // È®·ü
  2469. TMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2470. } TRefineTable;
  2471.  
  2472. typedef struct SPacketGCRefineInformation
  2473. {
  2474. BYTE header;
  2475. BYTE pos;
  2476. TRefineTable refine_table;
  2477. } TPacketGCRefineInformation;
  2478.  
  2479. typedef struct SPacketGCRefineInformationNew
  2480. {
  2481. BYTE header;
  2482. BYTE type;
  2483. BYTE pos;
  2484. TRefineTable refine_table;
  2485. } TPacketGCRefineInformationNew;
  2486.  
  2487. enum SPECIAL_EFFECT
  2488. {
  2489. SE_NONE,
  2490. SE_HPUP_RED,
  2491. SE_SPUP_BLUE,
  2492. SE_SPEEDUP_GREEN,
  2493. SE_DXUP_PURPLE,
  2494. SE_CRITICAL,
  2495. SE_PENETRATE,
  2496. SE_BLOCK,
  2497. SE_DODGE,
  2498. SE_CHINA_FIREWORK,
  2499. SE_SPIN_TOP,
  2500. SE_SUCCESS,
  2501. SE_FAIL,
  2502. SE_FR_SUCCESS,
  2503. SE_LEVELUP_ON_14_FOR_GERMANY, //·¹º§¾÷ 14À϶§ ( µ¶ÀÏÀü¿ë )
  2504. SE_LEVELUP_UNDER_15_FOR_GERMANY,//·¹º§¾÷ 15À϶§ ( µ¶ÀÏÀü¿ë )
  2505. SE_PERCENT_DAMAGE1,
  2506. SE_PERCENT_DAMAGE2,
  2507. SE_PERCENT_DAMAGE3,
  2508. SE_AUTO_HPUP,
  2509. SE_AUTO_SPUP,
  2510. SE_EQUIP_RAMADAN_RING, // Ãʽ´ÞÀÇ ¹ÝÁö¸¦ Âø¿ëÇÏ´Â ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2511. SE_EQUIP_HALLOWEEN_CANDY, // ÇÒ·ÎÀ© »çÅÁÀ» Âø¿ë(-_-;)ÇÑ ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2512. SE_EQUIP_HAPPINESS_RING, // Å©¸®½º¸¶½º ÇູÀÇ ¹ÝÁö¸¦ Âø¿ëÇÏ´Â ¼ø°£¿¡ ¹ßµ¿ÇÏ´Â ÀÌÆåÆ®
  2513. SE_EQUIP_LOVE_PENDANT, // ¹ß·»Å¸ÀÎ »ç¶ûÀÇ ÆÒ´øÆ®(71145) Âø¿ëÇÒ ¶§ ÀÌÆåÆ® (¹ßµ¿ÀÌÆåÆ®ÀÓ, Áö¼ÓÀÌÆåÆ® ¾Æ´Ô)
  2514. #ifdef ENABLE_SASH_SYSTEM
  2515. SE_EFFECT_SASH_SUCCEDED,
  2516. SE_EFFECT_SASH_EQUIP,
  2517. #endif
  2518. };
  2519.  
  2520. typedef struct SPacketGCSpecialEffect
  2521. {
  2522. BYTE header;
  2523. BYTE type;
  2524. DWORD vid;
  2525. } TPacketGCSpecialEffect;
  2526.  
  2527. typedef struct SPacketGCNPCPosition
  2528. {
  2529. BYTE header;
  2530. WORD size;
  2531. WORD count;
  2532. } TPacketGCNPCPosition;
  2533.  
  2534. struct TNPCPosition
  2535. {
  2536. BYTE bType;
  2537. char name[CHARACTER_NAME_MAX_LEN+1];
  2538. long x;
  2539. long y;
  2540. };
  2541.  
  2542. typedef struct SPacketGCChangeName
  2543. {
  2544. BYTE header;
  2545. DWORD pid;
  2546. char name[CHARACTER_NAME_MAX_LEN+1];
  2547. } TPacketGCChangeName;
  2548.  
  2549. enum EBlockAction
  2550. {
  2551. BLOCK_EXCHANGE = (1 << 0),
  2552. BLOCK_PARTY_INVITE = (1 << 1),
  2553. BLOCK_GUILD_INVITE = (1 << 2),
  2554. BLOCK_WHISPER = (1 << 3),
  2555. BLOCK_MESSENGER_INVITE = (1 << 4),
  2556. BLOCK_PARTY_REQUEST = (1 << 5),
  2557. };
  2558.  
  2559. typedef struct packet_china_matrixd_card
  2560. {
  2561. BYTE bHeader;
  2562. DWORD dwRows;
  2563. DWORD dwCols;
  2564. } TPacketGCChinaMatrixCard;
  2565.  
  2566. typedef struct packet_runup_matrixd_quiz
  2567. {
  2568. BYTE bHeader;
  2569. char szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2570. } TPacketGCRunupMatrixQuiz;
  2571.  
  2572. typedef struct packet_newcibn_passpod_request
  2573. {
  2574. BYTE bHeader;
  2575. } TPacketGCNEWCIBNPasspodRequest;
  2576.  
  2577. typedef struct packet_newcibn_passpod_failure
  2578. {
  2579. BYTE bHeader;
  2580. char szMessage[NEWCIBN_PASSPOD_FAILURE_MAX_LEN + 1];
  2581. } TPacketGCNEWCIBNPasspodFailure;
  2582.  
  2583. typedef struct packet_login_key
  2584. {
  2585. BYTE bHeader;
  2586. DWORD dwLoginKey;
  2587. } TPacketGCLoginKey;
  2588.  
  2589. typedef struct packet_auth_success
  2590. {
  2591. BYTE bHeader;
  2592. DWORD dwLoginKey;
  2593. BYTE bResult;
  2594. } TPacketGCAuthSuccess;
  2595.  
  2596. typedef struct packet_auth_success_openid
  2597. {
  2598. BYTE bHeader;
  2599. DWORD dwLoginKey;
  2600. BYTE bResult;
  2601. char login[ID_MAX_NUM + 1];
  2602. } TPacketGCAuthSuccessOpenID;
  2603.  
  2604. typedef struct packet_channel
  2605. {
  2606. BYTE header;
  2607. BYTE channel;
  2608. } TPacketGCChannel;
  2609.  
  2610. typedef struct SEquipmentItemSet
  2611. {
  2612. DWORD vnum;
  2613. BYTE count;
  2614. long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
  2615. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  2616. } TEquipmentItemSet;
  2617.  
  2618. typedef struct pakcet_view_equip
  2619. {
  2620. BYTE header;
  2621. DWORD dwVID;
  2622. TEquipmentItemSet equips[WEAR_MAX_NUM];
  2623. } TPacketGCViewEquip;
  2624.  
  2625. typedef struct
  2626. {
  2627. DWORD dwID;
  2628. long x, y;
  2629. long width, height;
  2630. DWORD dwGuildID;
  2631. } TLandPacketElement;
  2632.  
  2633. typedef struct packet_land_list
  2634. {
  2635. BYTE header;
  2636. WORD size;
  2637. } TPacketGCLandList;
  2638.  
  2639. typedef struct
  2640. {
  2641. BYTE bHeader;
  2642. long lID;
  2643. char szTargetName[32+1];
  2644. } TPacketGCTargetCreate;
  2645.  
  2646. enum
  2647. {
  2648. CREATE_TARGET_TYPE_NONE,
  2649. CREATE_TARGET_TYPE_LOCATION,
  2650. CREATE_TARGET_TYPE_CHARACTER,
  2651. #if defined(ENABLE_SHOP_SEARCH)
  2652. CREATE_TARGET_TYPE_SHOP,
  2653. #endif
  2654. };
  2655.  
  2656. typedef struct
  2657. {
  2658. BYTE bHeader;
  2659. long lID;
  2660. char szTargetName[32+1];
  2661. DWORD dwVID;
  2662. BYTE byType;
  2663. } TPacketGCTargetCreateNew;
  2664.  
  2665. typedef struct
  2666. {
  2667. BYTE bHeader;
  2668. long lID;
  2669. long lX, lY;
  2670. } TPacketGCTargetUpdate;
  2671.  
  2672. typedef struct
  2673. {
  2674. BYTE bHeader;
  2675. long lID;
  2676. } TPacketGCTargetDelete;
  2677.  
  2678. typedef struct
  2679. {
  2680. DWORD dwType;
  2681. BYTE bPointIdxApplyOn;
  2682. long lApplyValue;
  2683. DWORD dwFlag;
  2684. long lDuration;
  2685. long lSPCost;
  2686. } TPacketAffectElement;
  2687.  
  2688. typedef struct
  2689. {
  2690. BYTE bHeader;
  2691. TPacketAffectElement elem;
  2692. } TPacketGCAffectAdd;
  2693.  
  2694. typedef struct
  2695. {
  2696. BYTE bHeader;
  2697. DWORD dwType;
  2698. BYTE bApplyOn;
  2699. } TPacketGCAffectRemove;
  2700.  
  2701. typedef struct packet_mall_open
  2702. {
  2703. BYTE bHeader;
  2704. BYTE bSize;
  2705. } TPacketGCMallOpen;
  2706.  
  2707. typedef struct packet_lover_info
  2708. {
  2709. BYTE bHeader;
  2710. char szName[CHARACTER_NAME_MAX_LEN + 1];
  2711. BYTE byLovePoint;
  2712. } TPacketGCLoverInfo;
  2713.  
  2714. typedef struct packet_love_point_update
  2715. {
  2716. BYTE bHeader;
  2717. BYTE byLovePoint;
  2718. } TPacketGCLovePointUpdate;
  2719.  
  2720. typedef struct packet_dig_motion
  2721. {
  2722. BYTE header;
  2723. DWORD vid;
  2724. DWORD target_vid;
  2725. BYTE count;
  2726. } TPacketGCDigMotion;
  2727.  
  2728. typedef struct SPacketGCOnTime
  2729. {
  2730. BYTE header;
  2731. int ontime; // sec
  2732. } TPacketGCOnTime;
  2733.  
  2734. typedef struct SPacketGCResetOnTime
  2735. {
  2736. BYTE header;
  2737. } TPacketGCResetOnTime;
  2738.  
  2739. typedef struct SPacketGCPanamaPack
  2740. {
  2741. BYTE bHeader;
  2742. char szPackName[256];
  2743. BYTE abIV[32];
  2744. } TPacketGCPanamaPack;
  2745.  
  2746. typedef struct SPacketGCHybridCryptKeys
  2747. {
  2748. private:
  2749. SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2750.  
  2751. public:
  2752. SPacketGCHybridCryptKeys(int iStreamSize) : iKeyStreamLen(iStreamSize)
  2753. {
  2754. m_pStream = new BYTE[iStreamSize];
  2755. }
  2756. ~SPacketGCHybridCryptKeys()
  2757. {
  2758. if( m_pStream )
  2759. {
  2760. delete[] m_pStream;
  2761. m_pStream = NULL;
  2762. }
  2763. }
  2764. static int GetFixedHeaderSize()
  2765. {
  2766. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2767. }
  2768.  
  2769. BYTE bHeader;
  2770. WORD wDynamicPacketSize;
  2771. int iKeyStreamLen;
  2772. BYTE* m_pStream;
  2773.  
  2774. } TPacketGCHybridCryptKeys;
  2775.  
  2776.  
  2777. typedef struct SPacketGCHybridSDB
  2778. {
  2779. private:
  2780. SPacketGCHybridSDB() : m_pStream(NULL) {}
  2781.  
  2782. public:
  2783. SPacketGCHybridSDB(int iStreamSize) : iSDBStreamLen(iStreamSize)
  2784. {
  2785. m_pStream = new BYTE[iStreamSize];
  2786. }
  2787. ~SPacketGCHybridSDB()
  2788. {
  2789. delete[] m_pStream;
  2790. m_pStream = NULL;
  2791. }
  2792. static int GetFixedHeaderSize()
  2793. {
  2794. return sizeof(BYTE)+sizeof(WORD)+sizeof(int);
  2795. }
  2796.  
  2797. BYTE bHeader;
  2798. WORD wDynamicPacketSize;
  2799. int iSDBStreamLen;
  2800. BYTE* m_pStream;
  2801.  
  2802. } TPacketGCHybridSDB;
  2803. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2804. // Client To Client
  2805.  
  2806. typedef struct packet_state
  2807. {
  2808. BYTE bHeader;
  2809. BYTE bFunc;
  2810. BYTE bArg;
  2811. BYTE bRot;
  2812. DWORD dwVID;
  2813. DWORD dwTime;
  2814. TPixelPosition kPPos;
  2815. } TPacketCCState;
  2816.  
  2817. typedef struct packet_hs_check_req
  2818. {
  2819. BYTE bHeader;
  2820. AHNHS_TRANS_BUFFER Req;
  2821. } TPacketHSCheck;
  2822.  
  2823. //NOTE : recv/send¿¡ °øÅëÀ¸·Î »ý±è, bPacketDataÀÇ ³»¿ë¸¸ ¹Ù²ï´Ù.
  2824. typedef struct packet_xtrap_verify
  2825. {
  2826. BYTE bHeader;
  2827. BYTE bPacketData[128];
  2828.  
  2829. } TPacketXTrapCSVerify;
  2830. // AUTOBAN
  2831. typedef struct packet_autoban_quiz
  2832. {
  2833. BYTE bHeader;
  2834. BYTE bDuration;
  2835. BYTE bCaptcha[64*32];
  2836. char szQuiz[256];
  2837. } TPacketGCAutoBanQuiz;
  2838. // END_OF_AUTOBAN
  2839.  
  2840. #ifdef _IMPROVED_PACKET_ENCRYPTION_
  2841. struct TPacketKeyAgreement
  2842. {
  2843. static const int MAX_DATA_LEN = 256;
  2844. BYTE bHeader;
  2845. WORD wAgreedLength;
  2846. WORD wDataLength;
  2847. BYTE data[MAX_DATA_LEN];
  2848. };
  2849.  
  2850. struct TPacketKeyAgreementCompleted
  2851. {
  2852. BYTE bHeader;
  2853. BYTE data[3]; // dummy (not used)
  2854. };
  2855. #endif // _IMPROVED_PACKET_ENCRYPTION_
  2856.  
  2857. #ifdef __AUCTION__
  2858. // ArgumentÀÇ ¿ëµµ´Â cmd¿¡ µû¶ó ´Ù¸£´Ù.
  2859. typedef struct SPacketCGAuctionCmd
  2860. {
  2861. BYTE bHeader;
  2862. BYTE cmd;
  2863. int arg1;
  2864. int arg2;
  2865. int arg3;
  2866. int arg4;
  2867. } TPacketCGAuctionCmd;
  2868.  
  2869. typedef struct SPacketGCAuctionItemListPack
  2870. {
  2871. BYTE bHeader;
  2872. BYTE bNumbers;
  2873. } TPacketGCAuctionItemListPack;
  2874.  
  2875. #endif
  2876.  
  2877. typedef struct SPacketGCSpecificEffect
  2878. {
  2879. BYTE header;
  2880. DWORD vid;
  2881. char effect_file[128];
  2882. } TPacketGCSpecificEffect;
  2883.  
  2884. // ¿ëÈ¥¼®
  2885. enum EDragonSoulRefineWindowRefineType
  2886. {
  2887. DragonSoulRefineWindow_UPGRADE,
  2888. DragonSoulRefineWindow_IMPROVEMENT,
  2889. DragonSoulRefineWindow_REFINE,
  2890. };
  2891.  
  2892. enum EPacketCGDragonSoulSubHeaderType
  2893. {
  2894. DS_SUB_HEADER_OPEN,
  2895. DS_SUB_HEADER_CLOSE,
  2896. DS_SUB_HEADER_DO_UPGRADE,
  2897. DS_SUB_HEADER_DO_IMPROVEMENT,
  2898. DS_SUB_HEADER_DO_REFINE,
  2899. DS_SUB_HEADER_REFINE_FAIL,
  2900. DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2901. DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2902. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2903. DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2904. DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2905. DS_SUB_HEADER_REFINE_SUCCEED,
  2906. };
  2907.  
  2908. typedef struct SPacketCGDragonSoulRefine
  2909. {
  2910. SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2911. {}
  2912. BYTE header;
  2913. BYTE bSubType;
  2914. TItemPos ItemGrid[DS_REFINE_WINDOW_MAX_NUM];
  2915. } TPacketCGDragonSoulRefine;
  2916.  
  2917. typedef struct SPacketGCDragonSoulRefine
  2918. {
  2919. SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2920. {}
  2921. BYTE header;
  2922. BYTE bSubType;
  2923. TItemPos Pos;
  2924. } TPacketGCDragonSoulRefine;
  2925.  
  2926. typedef struct SChannelStatus
  2927. {
  2928. short nPort;
  2929. BYTE bStatus;
  2930. } TChannelStatus;
  2931.  
  2932. #ifdef ENABLE_KINGDOMS_WAR
  2933. enum
  2934. {
  2935. KW_EMPIRE_MAX_NUM = 4,
  2936. HEADER_GC_KINGDOMSWAR = 214,
  2937. KINGDOMSWAR_SUBHEADER_GC_OPEN = 0,
  2938. KINGDOMSWAR_SUBHEADER_GC_REFRESH,
  2939. };
  2940.  
  2941. typedef struct SPacketKingdomWar
  2942. {
  2943. BYTE bHeader;
  2944. BYTE bSubHeader;
  2945. int iKills[KW_EMPIRE_MAX_NUM - 1];
  2946. int iLimitKills;
  2947. int iDeads;
  2948. int iLimitDeads;
  2949. DWORD dwTimeRemained;
  2950. } TPacketKingdomWar;
  2951. #endif
  2952.  
  2953. #ifdef ENABLE_SASH_SYSTEM
  2954. enum ESashInfo
  2955. {
  2956. SASH_ABSORPTION_SOCKET = 0,
  2957. SASH_ABSORBED_SOCKET = 1,
  2958. SASH_CLEAN_ATTR_VALUE0 = 7,
  2959. SASH_WINDOW_MAX_MATERIALS = 2,
  2960. };
  2961.  
  2962. enum
  2963. {
  2964. HEADER_CG_SASH = 211,
  2965. HEADER_GC_SASH = 215,
  2966. SASH_SUBHEADER_GC_OPEN = 0,
  2967. SASH_SUBHEADER_GC_CLOSE,
  2968. SASH_SUBHEADER_GC_ADDED,
  2969. SASH_SUBHEADER_GC_REMOVED,
  2970. SASH_SUBHEADER_CG_REFINED,
  2971. SASH_SUBHEADER_CG_CLOSE = 0,
  2972. SASH_SUBHEADER_CG_ADD,
  2973. SASH_SUBHEADER_CG_REMOVE,
  2974. SASH_SUBHEADER_CG_REFINE,
  2975. };
  2976.  
  2977. typedef struct SPacketSash
  2978. {
  2979. BYTE header;
  2980. BYTE subheader;
  2981. bool bWindow;
  2982. DWORD dwPrice;
  2983. BYTE bPos;
  2984. TItemPos tPos;
  2985. DWORD dwItemVnum;
  2986. DWORD dwMinAbs;
  2987. DWORD dwMaxAbs;
  2988. } TPacketSash;
  2989.  
  2990. typedef struct SSashMaterial
  2991. {
  2992. BYTE bHere;
  2993. WORD wCell;
  2994. } TSashMaterial;
  2995.  
  2996. typedef struct SSashResult
  2997. {
  2998. DWORD dwItemVnum;
  2999. DWORD dwMinAbs;
  3000. DWORD dwMaxAbs;
  3001. } TSashResult;
  3002. #endif
  3003.  
  3004. #pragma pack(pop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement