packets.hpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef PACKETS_HPP
  4. #define PACKETS_HPP
  5. #pragma warning( push )
  6. #pragma warning( disable : 4200 )
  7. // Required for MESSAGE_SIZE, TALKBOX_MESSAGE_SIZE
  8. #include "map.hpp"
  9. #define MAX_ITEM_OPTIONS MAX_ITEM_RDM_OPT
  10. #define UNAVAILABLE_STRUCT int8 _____unavailable
  11. /* packet size constant for itemlist */
  12. #if MAX_INVENTORY > MAX_STORAGE && MAX_INVENTORY > MAX_CART
  13. #define MAX_ITEMLIST MAX_INVENTORY
  14. #elif MAX_CART > MAX_INVENTORY && MAX_CART > MAX_STORAGE
  15. #define MAX_ITEMLIST MAX_CART
  16. #else
  17. #define MAX_ITEMLIST MAX_STORAGE
  18. #endif
  19. #define MAX_ACHIEVEMENT_DB MAX_ACHIEVEMENT_OBJECTIVES
  20. #define DEFINE_PACKET_HEADER(name, id) const int16 HEADER_##name = id;
  21. #define DEFINE_PACKET_ID(name, id) DEFINE_PACKET_HEADER(name, id)
  22. #include "packets_struct.hpp"
  23. // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
  24. #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
  25. #pragma pack( push, 1 )
  26. #endif
  27. struct PACKET_ZC_PC_PURCHASE_RESULT{
  28. int16 packetType;
  29. uint8 result;
  30. } __attribute__((packed));
  31. DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT, 0xca)
  32. struct PACKET_CZ_REQ_MAKINGARROW{
  33. int16 packetType;
  34. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  35. uint32 itemId;
  36. #else
  37. uint16 itemId;
  38. #endif
  39. } __attribute__((packed));
  40. DEFINE_PACKET_HEADER(CZ_REQ_MAKINGARROW, 0x1ae)
  41. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub{
  42. uint32 itemId;
  43. uint32 amount;
  44. uint16 tab;
  45. } __attribute__((packed));
  46. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST{
  47. int16 packetType;
  48. int16 packetLength;
  49. uint16 count;
  50. uint32 kafraPoints;
  51. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub items[];
  52. } __attribute__((packed));
  53. DEFINE_PACKET_HEADER(CZ_SE_PC_BUY_CASHITEM_LIST, 0x848)
  54. struct PACKET_CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO{
  55. int16 packetType;
  56. int16 packetLength;
  57. uint32 AID;
  58. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  59. uint32 itemId;
  60. #else
  61. uint16 itemId;
  62. #endif
  63. } __attribute__((packed));
  64. DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
  65. struct PACKET_ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO{
  66. int16 packetType;
  67. uint16 result;
  68. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  69. uint32 itemId;
  70. #else
  71. uint16 itemId;
  72. #endif
  73. uint32 price;
  74. } __attribute__((packed));
  75. DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
  76. struct PACKET_CZ_REQ_APPLY_BARGAIN_SALE_ITEM{
  77. int16 packetType;
  78. uint32 AID;
  79. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  80. uint32 itemId;
  81. #else
  82. uint16 itemId;
  83. #endif
  84. uint32 amount;
  85. uint32 startTime;
  86. #if PACKETVER >= 20150520
  87. uint16 hours;
  88. #else
  89. uint8 hours;
  90. #endif
  91. } __attribute__((packed));
  92. DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae)
  93. struct PACKET_CZ_REQ_REMOVE_BARGAIN_SALE_ITEM{
  94. int16 packetType;
  95. uint32 AID;
  96. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  97. uint32 itemId;
  98. #else
  99. uint16 itemId;
  100. #endif
  101. } __attribute__((packed));
  102. DEFINE_PACKET_HEADER(CZ_REQ_REMOVE_BARGAIN_SALE_ITEM, 0x9b0)
  103. struct PACKET_ZC_NOTIFY_BARGAIN_SALE_SELLING{
  104. int16 packetType;
  105. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  106. uint32 itemId;
  107. #else
  108. uint16 itemId;
  109. #endif
  110. uint32 remainingTime;
  111. } __attribute__((packed));
  112. DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2)
  113. struct PACKET_ZC_NOTIFY_BARGAIN_SALE_CLOSE{
  114. int16 packetType;
  115. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  116. uint32 itemId;
  117. #else
  118. uint16 itemId;
  119. #endif
  120. } __attribute__((packed));
  121. DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3)
  122. struct PACKET_ZC_ACK_COUNT_BARGAIN_SALE_ITEM{
  123. int16 packetType;
  124. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  125. uint32 itemId;
  126. #else
  127. uint16 itemId;
  128. #endif
  129. uint32 amount;
  130. } __attribute__((packed));
  131. DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4)
  132. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub{
  133. uint32 id;
  134. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  135. uint32 itemId;
  136. #else
  137. uint16 itemId;
  138. #endif
  139. int32 amount;
  140. uint8 action;
  141. int32 refine;
  142. int64 uniqueId;
  143. uint8 IsIdentified;
  144. uint16 itemType;
  145. struct EQUIPSLOTINFO slot;
  146. char name[NAME_LENGTH];
  147. char time[NAME_LENGTH];
  148. uint8 attribute;
  149. } __attribute__((packed));
  150. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG{
  151. int16 packetType;
  152. int16 PacketLength;
  153. uint16 result;
  154. uint16 amount;
  155. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub items[];
  156. } __attribute__((packed));
  157. DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da)
  158. struct PACKET_CZ_ADVANCED_STATUS_CHANGE{
  159. int16 packetType;
  160. int16 type;
  161. int16 amount;
  162. } __attribute__((packed));
  163. DEFINE_PACKET_HEADER(CZ_ADVANCED_STATUS_CHANGE, 0x0b24)
  164. struct PACKET_CZ_REQ_ADD_NEW_EMBLEM {
  165. int16 packetType;
  166. uint32 guild_id;
  167. uint32 version;
  168. } __attribute__((packed));
  169. DEFINE_PACKET_HEADER(CZ_REQ_ADD_NEW_EMBLEM, 0x0b46)
  170. struct PACKET_ZC_BROADCAST{
  171. int16 packetType;
  172. int16 PacketLength;
  173. char message[];
  174. } __attribute__((packed));
  175. DEFINE_PACKET_HEADER(ZC_BROADCAST, 0x9a)
  176. struct PACKET_ZC_BROADCAST2{
  177. int16 packetType;
  178. int16 PacketLength;
  179. uint32 fontColor;
  180. int16 fontType;
  181. int16 fontSize;
  182. int16 fontAlign;
  183. int16 fontY;
  184. char message[];
  185. } __attribute__((packed));
  186. DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3)
  187. struct PACKET_ZC_ENTRY_QUEUE_INIT {
  188. int16 packetType;
  189. } __attribute__((packed));
  190. DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
  191. struct PACKET_CZ_RODEX_RETURN{
  192. int16 packetType;
  193. uint32 msgId;
  194. } __attribute__((packed));
  195. DEFINE_PACKET_HEADER(CZ_RODEX_RETURN, 0xb98)
  196. struct PACKET_CZ_REQ_STYLE_CLOSE{
  197. int16 packetType;
  198. } __attribute__((packed));
  199. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CLOSE, 0xa48)
  200. struct PACKET_ZC_SUMMON_HP_INIT {
  201. int16 PacketType;
  202. uint32 summonAID;
  203. uint32 CurrentHP;
  204. uint32 MaxHP;
  205. } __attribute__((packed));
  206. DEFINE_PACKET_HEADER(ZC_SUMMON_HP_INIT, 0xb6b)
  207. struct PACKET_ZC_SUMMON_HP_UPDATE {
  208. int16 PacketType;
  209. uint32 summonAID;
  210. uint16 VarId;
  211. uint32 Value;
  212. } __attribute__((packed));
  213. DEFINE_PACKET_HEADER(ZC_SUMMON_HP_UPDATE, 0xb6c)
  214. struct PACKET_ZC_REPUTE_INFO_sub{
  215. uint64 type;
  216. int64 points;
  217. } __attribute__((packed));
  218. struct PACKET_ZC_REPUTE_INFO{
  219. int16 packetType;
  220. int16 packetLength;
  221. uint8 success;
  222. struct PACKET_ZC_REPUTE_INFO_sub list[];
  223. } __attribute__((packed));
  224. DEFINE_PACKET_HEADER(ZC_REPUTE_INFO, 0x0b8d)
  225. struct PACKET_ZC_UI_OPEN_V3{
  226. int16 packetType;
  227. uint8 type;
  228. uint64 data;
  229. } __attribute__((packed));
  230. DEFINE_PACKET_HEADER(ZC_UI_OPEN_V3, 0x0b9a)
  231. struct PACKET_ZC_TARGET_SPIRITS {
  232. int16 packetType;
  233. uint32 GID;
  234. uint32 unknown_val;
  235. uint16 amount;
  236. } __attribute__((packed));
  237. DEFINE_PACKET_HEADER(ZC_TARGET_SPIRITS, 0xb68)
  238. struct PACKET_ZC_FRIENDS_LIST_sub{
  239. uint32 AID;
  240. uint32 CID;
  241. #if !( PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 ) || PACKETVER >= 20200902
  242. char name[NAME_LENGTH];
  243. #endif
  244. } __attribute__((packed));
  245. struct PACKET_ZC_FRIENDS_LIST{
  246. int16 packetType;
  247. int16 PacketLength;
  248. struct PACKET_ZC_FRIENDS_LIST_sub friends[];
  249. } __attribute__((packed));
  250. DEFINE_PACKET_HEADER(ZC_FRIENDS_LIST, 0x201)
  251. struct PACKET_CZ_PC_SELL_ITEMLIST_sub {
  252. uint16 index;
  253. uint16 amount;
  254. } __attribute__((packed));
  255. struct PACKET_CZ_PC_SELL_ITEMLIST {
  256. int16 packetType;
  257. int16 packetLength;
  258. PACKET_CZ_PC_SELL_ITEMLIST_sub sellList[];
  259. } __attribute__((packed));
  260. DEFINE_PACKET_HEADER(CZ_PC_SELL_ITEMLIST, 0x00c9)
  261. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub{
  262. uint32 AID;
  263. uint32 CID;
  264. int32 position;
  265. } __attribute__((packed));
  266. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS{
  267. int16 packetType;
  268. int16 packetLength;
  269. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub list[];
  270. } __attribute__((packed));
  271. DEFINE_PACKET_HEADER(CZ_REQ_CHANGE_MEMBERPOS, 0x155)
  272. struct PACKET_ZC_CLEAR_DIALOG{
  273. int16 packetType;
  274. uint32 GID;
  275. } __attribute__((packed));
  276. DEFINE_PACKET_HEADER(ZC_CLEAR_DIALOG, 0x8d6)
  277. struct PACKET_ZC_NOTIFY_BIND_ON_EQUIP{
  278. int16 packetType;
  279. int16 index;
  280. } __attribute__((packed));
  281. DEFINE_PACKET_HEADER(ZC_NOTIFY_BIND_ON_EQUIP, 0x2d3)
  282. struct PACKET_ZC_BANKING_CHECK{
  283. int16 packetType;
  284. int64 money;
  285. int16 reason;
  286. } __attribute__((packed));
  287. DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
  288. struct PACKET_ZC_ACK_BANKING_WITHDRAW{
  289. int16 packetType;
  290. int16 reason;
  291. int64 money;
  292. int32 zeny;
  293. } __attribute__((packed));
  294. DEFINE_PACKET_HEADER(ZC_ACK_BANKING_WITHDRAW, 0x9aa)
  295. struct PACKET_ZC_ACK_BANKING_DEPOSIT{
  296. int16 packetType;
  297. int16 reason;
  298. int64 money;
  299. int32 zeny;
  300. } __attribute__((packed));
  301. DEFINE_PACKET_HEADER(ZC_ACK_BANKING_DEPOSIT, 0x9a8)
  302. struct PACKET_ZC_ACK_CLOSE_BANKING{
  303. int16 packetType;
  304. int16 unknown;
  305. } __attribute__((packed));
  306. DEFINE_PACKET_HEADER(ZC_ACK_CLOSE_BANKING, 0x9b9)
  307. struct PACKET_ZC_ACK_OPEN_BANKING{
  308. int16 packetType;
  309. int16 unknown;
  310. } __attribute__((packed));
  311. DEFINE_PACKET_HEADER(ZC_ACK_OPEN_BANKING, 0x9b7)
  312. struct PACKET_ZC_ACK_ADD_EXCHANGE_ITEM {
  313. int16 packetType;
  314. uint16 index;
  315. uint8 result;
  316. } __attribute__((packed));
  317. DEFINE_PACKET_HEADER(ZC_ACK_ADD_EXCHANGE_ITEM, 0xea)
  318. struct PACKET_ZC_COUPLENAME {
  319. int16 packetType;
  320. char name[NAME_LENGTH];
  321. } __attribute__((packed));
  322. DEFINE_PACKET_HEADER(ZC_COUPLENAME, 0x1e6);
  323. struct PACKET_CZ_PARTY_REQ_MASTER_TO_JOIN{
  324. int16 packetType;
  325. uint32 CID;
  326. uint32 AID;
  327. } __attribute__((packed));
  328. DEFINE_PACKET_HEADER(CZ_PARTY_REQ_MASTER_TO_JOIN, 0x0ae6)
  329. struct PACKET_ZC_PARTY_REQ_MASTER_TO_JOIN{
  330. int16 packetType;
  331. uint32 CID;
  332. uint32 AID;
  333. char name[NAME_LENGTH];
  334. uint16 x;
  335. uint16 y;
  336. } __attribute__((packed));
  337. DEFINE_PACKET_HEADER(ZC_PARTY_REQ_MASTER_TO_JOIN, 0x0ae7)
  338. struct PACKET_CZ_PARTY_REQ_ACK_MASTER_TO_JOIN{
  339. int16 packetType;
  340. uint32 CID;
  341. uint32 AID;
  342. uint8 accept;
  343. } __attribute__((packed));
  344. DEFINE_PACKET_HEADER(CZ_PARTY_REQ_ACK_MASTER_TO_JOIN, 0x0af8)
  345. struct PACKET_ZC_PARTY_JOIN_REQ_ACK_FROM_MASTER{
  346. int16 packetType;
  347. char player_name[NAME_LENGTH];
  348. char party_name[NAME_LENGTH];
  349. uint32 AID;
  350. uint32 refused;
  351. } __attribute__((packed));
  352. DEFINE_PACKET_HEADER(ZC_PARTY_JOIN_REQ_ACK_FROM_MASTER, 0x0afa)
  353. struct PACKET_CZ_REQ_SE_CASH_TAB_CODE{
  354. int16 packetType;
  355. int16 tab;
  356. } __attribute__((packed));
  357. DEFINE_PACKET_HEADER(CZ_REQ_SE_CASH_TAB_CODE, 0x846)
  358. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2_sub{
  359. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  360. uint32 itemId;
  361. #else
  362. uint16 itemId;
  363. #endif
  364. int32 price;
  365. } __attribute__((packed));
  366. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2{
  367. int16 packetType;
  368. int16 packetLength;
  369. uint32 tab;
  370. int16 count;
  371. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2_sub items[];
  372. } __attribute__((packed));
  373. DEFINE_PACKET_HEADER(ZC_ACK_SE_CASH_ITEM_LIST2, 0x8c0)
  374. struct PACKET_CZ_REQ_MERGE_ITEM{
  375. int16 packetType;
  376. int16 packetLength;
  377. uint16 indices[];
  378. } __attribute__((packed));
  379. DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
  380. struct PACKET_CZ_RESET_SKILL{
  381. int16 packetType;
  382. uint8 unknown;
  383. } __attribute__((packed));
  384. DEFINE_PACKET_HEADER(CZ_RESET_SKILL, 0x0bb1)
  385. struct PACKET_ZC_BOSS_INFO{
  386. int16 packetType;
  387. uint8 type;
  388. uint32 x;
  389. uint32 y;
  390. uint16 minHours;
  391. uint16 minMinutes;
  392. uint16 maxHours;
  393. uint16 maxMinutes;
  394. char name[51];
  395. } __attribute__((packed));
  396. DEFINE_PACKET_HEADER(ZC_BOSS_INFO, 0x293)
  397. struct PACKET_CZ_INVENTORY_TAB{
  398. int16 packetType;
  399. int16 index;
  400. bool favorite;
  401. } __attribute__((packed));
  402. DEFINE_PACKET_HEADER(CZ_INVENTORY_TAB, 0x907)
  403. struct PACKET_ZC_INVENTORY_TAB{
  404. int16 packetType;
  405. int16 index;
  406. bool favorite;
  407. } __attribute__((packed));
  408. DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
  409. struct PACKET_CZ_REQ_OPEN_BANKING{
  410. int16 packetType;
  411. uint32 AID;
  412. } __attribute__((packed));
  413. struct PACKET_CZ_REQ_CLOSE_BANKING{
  414. int16 packetType;
  415. uint32 AID;
  416. } __attribute__((packed));
  417. struct PACKET_CZ_REQ_BANKING_CHECK{
  418. int16 packetType;
  419. uint32 AID;
  420. } __attribute__((packed));
  421. struct PACKET_CZ_REQ_BANKING_DEPOSIT{
  422. int16 packetType;
  423. uint32 AID;
  424. int32 zeny;
  425. } __attribute__((packed));
  426. struct PACKET_CZ_REQ_BANKING_WITHDRAW{
  427. int16 packetType;
  428. uint32 AID;
  429. int32 zeny;
  430. } __attribute__((packed));
  431. #if PACKETVER < 20080102
  432. struct PACKET_ZC_ACCEPT_ENTER {
  433. int16 packetType;
  434. uint32 startTime;
  435. uint8 posDir[3];
  436. uint8 xSize;
  437. uint8 ySize;
  438. } __attribute__((packed));
  439. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0x73)
  440. #elif PACKETVER < 20141022 || PACKETVER >= 20160330
  441. struct PACKET_ZC_ACCEPT_ENTER {
  442. int16 packetType;
  443. uint32 startTime;
  444. uint8 posDir[3];
  445. uint8 xSize;
  446. uint8 ySize;
  447. uint16 font;
  448. } __attribute__((packed));
  449. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0x2eb)
  450. #else
  451. struct PACKET_ZC_ACCEPT_ENTER {
  452. int16 packetType;
  453. uint32 startTime;
  454. uint8 posDir[3];
  455. uint8 xSize;
  456. uint8 ySize;
  457. uint16 font;
  458. uint8 sex;
  459. } __attribute__((packed));
  460. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0xa18)
  461. #endif
  462. struct PACKET_ZC_REFUSE_ENTER {
  463. int16 packetType;
  464. uint8 errorCode;
  465. } __attribute__((packed));
  466. static_assert(sizeof(PACKET_ZC_REFUSE_ENTER) == 3);
  467. DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER, 0x74)
  468. struct PACKET_SC_NOTIFY_BAN {
  469. int16 packetType;
  470. uint8 errorCode;
  471. } __attribute__((packed));
  472. DEFINE_PACKET_HEADER(SC_NOTIFY_BAN, 0x81)
  473. struct PACKET_ZC_RESTART_ACK {
  474. int16 packetType;
  475. uint8 type;
  476. } __attribute__((packed));
  477. DEFINE_PACKET_HEADER(ZC_RESTART_ACK, 0xb3)
  478. struct PACKET_ZC_NOTIFY_VANISH {
  479. int16 packetType;
  480. uint32 gid;
  481. uint8 type;
  482. } __attribute__((packed));
  483. DEFINE_PACKET_HEADER(ZC_NOTIFY_VANISH, 0x80)
  484. struct PACKET_ZC_ITEM_DISAPPEAR {
  485. int16 packetType;
  486. uint32 itemAid;
  487. } __attribute__((packed));
  488. DEFINE_PACKET_HEADER(ZC_ITEM_DISAPPEAR, 0xa1)
  489. struct PACKET_ZC_MILLENNIUMSHIELD {
  490. int16 packetType;
  491. uint32 aid;
  492. int16 num;
  493. int16 state;
  494. } __attribute__((packed));
  495. DEFINE_PACKET_HEADER(ZC_MILLENNIUMSHIELD, 0x440)
  496. struct PACKET_ZC_SPIRITS_ATTRIBUTE {
  497. int16 packetType;
  498. uint32 aid;
  499. int16 spiritsType;
  500. int16 num;
  501. } __attribute__((packed));
  502. DEFINE_PACKET_HEADER(ZC_SPIRITS_ATTRIBUTE, 0x8cf)
  503. struct PACKET_ZC_CHANGESTATE_MER {
  504. int16 packetType;
  505. uint8 type;
  506. uint8 state;
  507. uint32 gid;
  508. uint32 data;
  509. } __attribute__((packed));
  510. DEFINE_PACKET_HEADER(ZC_CHANGESTATE_MER, 0x230)
  511. struct PACKET_ZC_HOSKILLINFO_LIST_sub {
  512. uint16 id;
  513. uint16 inf;
  514. uint16 unknown;
  515. uint16 level;
  516. uint16 sp;
  517. uint16 range;
  518. char name[NAME_LENGTH];
  519. uint8 upgradable;
  520. } __attribute__((packed));
  521. struct PACKET_ZC_HOSKILLINFO_LIST {
  522. int16 packetType;
  523. int16 packetLength;
  524. PACKET_ZC_HOSKILLINFO_LIST_sub skills[];
  525. } __attribute__((packed));
  526. DEFINE_PACKET_HEADER(ZC_HOSKILLINFO_LIST, 0x235)
  527. struct PACKET_ZC_HOSKILLINFO_UPDATE {
  528. int16 packetType;
  529. uint16 skill_id;
  530. int16 Level;
  531. int16 SP;
  532. int16 AttackRange;
  533. bool upgradable;
  534. } __attribute__((packed));
  535. DEFINE_PACKET_HEADER(ZC_HOSKILLINFO_UPDATE, 0x239)
  536. // Unused packet (alpha?)
  537. /*
  538. struct PACKET_ZC_NOTIFY_MOVE {
  539. int16 packetType;
  540. uint32 gid;
  541. uint8 moveData[6];
  542. uint32 moveStartTime;
  543. } __attribute__((packed));
  544. DEFINE_PACKET_HEADER(ZC_NOTIFY_MOVE, 0x86)
  545. */
  546. struct PACKET_ZC_NOTIFY_PLAYERMOVE {
  547. int16 packetType;
  548. uint32 moveStartTime;
  549. uint8 moveData[6];
  550. } __attribute__((packed));
  551. DEFINE_PACKET_HEADER(ZC_NOTIFY_PLAYERMOVE, 0x87);
  552. struct PACKET_ZC_NPCACK_MAPMOVE {
  553. int16 packetType;
  554. char mapName[MAP_NAME_LENGTH_EXT];
  555. uint16 xPos;
  556. uint16 yPos;
  557. } __attribute__((packed));
  558. DEFINE_PACKET_HEADER(ZC_NPCACK_MAPMOVE, 0x91)
  559. #if PACKETVER >= 20170315
  560. // Actually ZC_NPCACK_SERVERMOVE_DOMAIN
  561. struct PACKET_ZC_NPCACK_SERVERMOVE {
  562. int16 packetType;
  563. char mapName[MAP_NAME_LENGTH_EXT];
  564. uint16 xPos;
  565. uint16 yPos;
  566. uint32 ip;
  567. uint16 port;
  568. char domain[128];
  569. } __attribute__((packed));
  570. DEFINE_PACKET_HEADER(ZC_NPCACK_SERVERMOVE, 0xac7)
  571. #else
  572. struct PACKET_ZC_NPCACK_SERVERMOVE {
  573. int16 packetType;
  574. char mapName[MAP_NAME_LENGTH_EXT];
  575. uint16 xPos;
  576. uint16 yPos;
  577. uint32 ip;
  578. uint16 port;
  579. } __attribute__((packed));
  580. DEFINE_PACKET_HEADER(ZC_NPCACK_SERVERMOVE, 0x92)
  581. #endif
  582. struct PACKET_ZC_STOPMOVE {
  583. int16 packetType;
  584. uint32 AID;
  585. uint16 xPos;
  586. uint16 yPos;
  587. } __attribute__((packed));
  588. DEFINE_PACKET_HEADER(ZC_STOPMOVE, 0x88)
  589. struct PACKET_ZC_SELECT_DEALTYPE {
  590. int16 packetType;
  591. uint32 npcId;
  592. } __attribute__((packed));
  593. DEFINE_PACKET_HEADER(ZC_SELECT_DEALTYPE, 0xc4)
  594. struct PACKET_ZC_PC_SELL_ITEMLIST_sub {
  595. uint16 index;
  596. uint32 price;
  597. uint32 overcharge;
  598. } __attribute__((packed));
  599. struct PACKET_ZC_PC_SELL_ITEMLIST {
  600. int16 packetType;
  601. int16 packetLength;
  602. PACKET_ZC_PC_SELL_ITEMLIST_sub items[];
  603. } __attribute__((packed));
  604. DEFINE_PACKET_HEADER(ZC_PC_SELL_ITEMLIST, 0xc7)
  605. struct PACKET_ZC_CLOSE_DIALOG {
  606. int16 packetType;
  607. uint32 npcId;
  608. } __attribute__((packed));
  609. DEFINE_PACKET_HEADER(ZC_CLOSE_DIALOG, 0xb6)
  610. struct PACKET_ZC_MENU_LIST {
  611. int16 packetType;
  612. int16 packetLength;
  613. uint32 npcId;
  614. char menu[];
  615. } __attribute__((packed));
  616. DEFINE_PACKET_HEADER(ZC_MENU_LIST, 0xb7)
  617. struct PACKET_ZC_OPEN_EDITDLG {
  618. int16 packetType;
  619. uint32 npcId;
  620. } __attribute__((packed));
  621. DEFINE_PACKET_HEADER(ZC_OPEN_EDITDLG, 0x142)
  622. struct PACKET_ZC_OPEN_EDITDLGSTR {
  623. int16 packetType;
  624. uint32 npcId;
  625. } __attribute__((packed));
  626. DEFINE_PACKET_HEADER(ZC_OPEN_EDITDLGSTR, 0x1d4)
  627. struct PACKET_ZC_COMPASS {
  628. int16 packetType;
  629. uint32 npcId;
  630. uint32 type;
  631. uint32 xPos;
  632. uint32 yPos;
  633. uint8 id;
  634. uint32 color;
  635. } __attribute__((packed));
  636. DEFINE_PACKET_HEADER(ZC_COMPASS, 0x144)
  637. struct PACKET_ZC_ITEM_THROW_ACK {
  638. int16 packetType;
  639. uint16 index;
  640. uint16 count;
  641. } __attribute__((packed));
  642. DEFINE_PACKET_HEADER(ZC_ITEM_THROW_ACK, 0xaf)
  643. struct PACKET_ZC_DELETE_ITEM_FROM_BODY {
  644. int16 packetType;
  645. int16 deleteType;
  646. uint16 index;
  647. int16 count;
  648. } __attribute__((packed));
  649. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_BODY, 0x7fa)
  650. struct PACKET_ZC_CARTOFF {
  651. int16 packetType;
  652. } __attribute__((packed));
  653. DEFINE_PACKET_HEADER(ZC_CARTOFF, 0x12b)
  654. struct PACKET_ZC_NOTIFY_POSITION_TO_GUILDM {
  655. int16 packetType;
  656. uint32 aid;
  657. int16 xPos;
  658. int16 yPos;
  659. } __attribute__((packed));
  660. DEFINE_PACKET_HEADER(ZC_NOTIFY_POSITION_TO_GUILDM, 0x1eb)
  661. struct PACKET_ZC_STATUS {
  662. int16 packetType;
  663. uint16 point;
  664. uint8 str;
  665. uint8 standardStr;
  666. uint8 agi;
  667. uint8 standardAgi;
  668. uint8 vit;
  669. uint8 standardVit;
  670. uint8 int_;
  671. uint8 standardInt;
  672. uint8 dex;
  673. uint8 standardDex;
  674. uint8 luk;
  675. uint8 standardLuk;
  676. int16 attPower;
  677. int16 refiningPower;
  678. int16 max_mattPower;
  679. int16 min_mattPower;
  680. int16 itemdefPower;
  681. int16 plusdefPower;
  682. int16 mdefPower;
  683. int16 plusmdefPower;
  684. int16 hitSuccessValue;
  685. int16 avoidSuccessValue;
  686. int16 plusAvoidSuccessValue;
  687. int16 criticalSuccessValue;
  688. int16 ASPD;
  689. int16 plusASPD;
  690. } __attribute__((packed));
  691. DEFINE_PACKET_HEADER(ZC_STATUS, 0xbd)
  692. struct PACKET_ZC_NOTIFY_MAPINFO {
  693. int16 packetType;
  694. int16 type;
  695. } __attribute__((packed));
  696. DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPINFO, 0x189)
  697. struct PACKET_ZC_ACK_REMEMBER_WARPPOINT {
  698. int16 packetType;
  699. uint8 type;
  700. } __attribute__((packed));
  701. DEFINE_PACKET_HEADER(ZC_ACK_REMEMBER_WARPPOINT, 0x11e)
  702. struct PACKET_ZC_DISPEL {
  703. int16 packetType;
  704. uint32 gid;
  705. } __attribute__((packed));
  706. DEFINE_PACKET_HEADER(ZC_DISPEL, 0x1b9)
  707. struct PACKET_ZC_RESURRECTION {
  708. int16 packetType;
  709. uint32 gid;
  710. int16 type;
  711. } __attribute__((packed));
  712. DEFINE_PACKET_HEADER(ZC_RESURRECTION, 0x148)
  713. struct PACKET_ZC_NOTIFY_MAPPROPERTY2 {
  714. int16 packetType;
  715. int16 type;
  716. } __attribute__((packed));
  717. DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPPROPERTY2, 0x1d6)
  718. struct PACKET_ZC_ACK_ITEMREFINING {
  719. int16 packetType;
  720. uint16 result;
  721. uint16 index;
  722. uint16 value;
  723. } __attribute__((packed));
  724. DEFINE_PACKET_HEADER(ZC_ACK_ITEMREFINING, 0x188)
  725. struct PACKET_ZC_PAR_CHANGE_USER {
  726. int16 packetType;
  727. uint32 gid;
  728. int16 type;
  729. uint16 value;
  730. } __attribute__((packed));
  731. DEFINE_PACKET_HEADER(ZC_PAR_CHANGE_USER, 0x1ab)
  732. struct PACKET_ZC_EQUIP_ARROW {
  733. int16 packetType;
  734. uint16 index;
  735. } __attribute__((packed));
  736. DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c)
  737. struct PACKET_ZC_CLOSE_STORE {
  738. int16 packetType;
  739. } __attribute__((packed));
  740. DEFINE_PACKET_HEADER(ZC_CLOSE_STORE, 0xf8);
  741. struct PACKET_ZC_DELETE_ITEM_FROM_STORE {
  742. int16 packetType;
  743. uint16 index;
  744. uint32 amount;
  745. } __attribute__((packed));
  746. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_STORE, 0xf6);
  747. struct PACKET_ZC_NOTIFY_STOREITEM_COUNTINFO {
  748. int16 packetType;
  749. uint16 amount;
  750. uint16 max_amount;
  751. } __attribute__((packed));
  752. DEFINE_PACKET_HEADER(ZC_NOTIFY_STOREITEM_COUNTINFO, 0xf2);
  753. struct PACKET_ZC_EXCHANGEITEM_UNDO {
  754. int16 packetType;
  755. } __attribute__((packed));
  756. DEFINE_PACKET_HEADER(ZC_EXCHANGEITEM_UNDO, 0xf1);
  757. struct PACKET_ZC_EXEC_EXCHANGE_ITEM {
  758. int16 packetType;
  759. uint8 result;
  760. } __attribute__((packed));
  761. DEFINE_PACKET_HEADER(ZC_EXEC_EXCHANGE_ITEM, 0xf0);
  762. struct PACKET_ZC_CANCEL_EXCHANGE_ITEM {
  763. int16 packetType;
  764. } __attribute__((packed));
  765. DEFINE_PACKET_HEADER(ZC_CANCEL_EXCHANGE_ITEM, 0xee);
  766. struct PACKET_ZC_CONCLUDE_EXCHANGE_ITEM {
  767. int16 packetType;
  768. uint8 who;
  769. } __attribute__((packed));
  770. struct PACKET_ZC_ACK_CREATE_CHATROOM {
  771. int16 packetType;
  772. uint8 flag;
  773. } __attribute__((packed));
  774. DEFINE_PACKET_HEADER(ZC_ACK_CREATE_CHATROOM, 0xd6);
  775. DEFINE_PACKET_HEADER(ZC_CONCLUDE_EXCHANGE_ITEM, 0xec);
  776. struct PACKET_ZC_REFUSE_ENTER_ROOM {
  777. int16 packetType;
  778. uint8 result;
  779. } __attribute__((packed));
  780. DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER_ROOM, 0xda);
  781. struct PACKET_ZC_NPC_SHOWEFST_UPDATE {
  782. int16 packetType;
  783. uint32 gid;
  784. uint32 effectState;
  785. int32 level;
  786. uint32 showEFST;
  787. } __attribute__((packed));
  788. DEFINE_PACKET_HEADER(ZC_NPC_SHOWEFST_UPDATE, 0x28a);
  789. struct PACKET_ZC_ACTION_FAILURE {
  790. int16 packetType;
  791. uint16 type;
  792. } __attribute__((packed));
  793. DEFINE_PACKET_HEADER(ZC_ACTION_FAILURE, 0x13b)
  794. struct PACKET_ZC_NOTIFY_EFFECT {
  795. int16 packetType;
  796. uint32 aid;
  797. uint32 effectId;
  798. } __attribute__((packed));
  799. DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT, 0x19b);
  800. struct PACKET_ZC_ACK_ITEMCOMPOSITION {
  801. int16 packetType;
  802. uint16 equipIndex;
  803. uint16 cardIndex;
  804. uint8 result;
  805. } __attribute__((packed));
  806. DEFINE_PACKET_HEADER(ZC_ACK_ITEMCOMPOSITION, 0x17d);
  807. struct PACKET_ZC_ACK_ITEMIDENTIFY {
  808. int16 packetType;
  809. uint16 index;
  810. uint8 result;
  811. } __attribute__((packed));
  812. DEFINE_PACKET_HEADER(ZC_ACK_ITEMIDENTIFY, 0x179);
  813. struct PACKET_ZC_ACK_ITEMREPAIR {
  814. int16 packetType;
  815. uint16 index;
  816. uint8 result;
  817. } __attribute__((packed));
  818. DEFINE_PACKET_HEADER(ZC_ACK_ITEMREPAIR, 0x1fe);
  819. struct PACKET_ZC_EQUIPITEM_DAMAGED {
  820. int16 packetType;
  821. uint16 equipLocation;
  822. uint32 GID;
  823. } __attribute__((packed));
  824. DEFINE_PACKET_HEADER(ZC_EQUIPITEM_DAMAGED, 0x2bb);
  825. struct PACKET_ZC_DELETE_ITEM_FROM_CART {
  826. int16 packetType;
  827. uint16 index;
  828. int32 amount;
  829. } __attribute__((packed));
  830. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_CART, 0x125);
  831. struct PACKET_ZC_OPENSTORE {
  832. int16 packetType;
  833. uint16 num;
  834. } __attribute__((packed));
  835. DEFINE_PACKET_HEADER(ZC_OPENSTORE, 0x12d);
  836. struct PACKET_ZC_PC_PURCHASE_RESULT_FROMMC {
  837. int16 packetType;
  838. uint16 index;
  839. uint16 amount;
  840. uint8 result;
  841. } __attribute__((packed));
  842. DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT_FROMMC, 0x135);
  843. struct PACKET_ZC_ACK_OPENSTORE2 {
  844. int16 packetType;
  845. uint8 result;
  846. } __attribute__((packed));
  847. DEFINE_PACKET_HEADER(ZC_ACK_OPENSTORE2, 0xa28 );
  848. struct PACKET_ZC_SKILL_DISAPPEAR {
  849. int16 packetType;
  850. uint32 GID;
  851. } __attribute__((packed));
  852. DEFINE_PACKET_HEADER(ZC_SKILL_DISAPPEAR, 0x120);
  853. struct PACKET_ZC_SKILL_UPDATE {
  854. int16 packetType;
  855. uint32 GID;
  856. } __attribute__((packed));
  857. DEFINE_PACKET_HEADER(ZC_SKILL_UPDATE, 0x1ac);
  858. #if PACKETVER >= 20141022
  859. struct PACKET_ZC_RECOVERY {
  860. int16 packetType;
  861. uint16 type;
  862. int32 amount;
  863. } __attribute__((packed));
  864. DEFINE_PACKET_HEADER(ZC_RECOVERY, 0xa27);
  865. #else
  866. struct PACKET_ZC_RECOVERY {
  867. int16 packetType;
  868. uint16 type;
  869. int16 amount;
  870. } __attribute__((packed));
  871. DEFINE_PACKET_HEADER(ZC_RECOVERY, 0x13d);
  872. #endif
  873. #if PACKETVER >= 20131223
  874. struct PACKET_ZC_ACK_WHISPER {
  875. int16 packetType;
  876. uint8 result;
  877. uint32 CID;
  878. } __attribute__((packed));
  879. DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x9df);
  880. #else
  881. struct PACKET_ZC_ACK_WHISPER {
  882. int16 packetType;
  883. uint8 result;
  884. } __attribute__((packed));
  885. DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x98);
  886. #endif
  887. struct PACKET_ZC_ACK_ADDITEM_TO_CART {
  888. int16 packetType;
  889. uint8 result;
  890. } __attribute__((packed));
  891. DEFINE_PACKET_HEADER(ZC_ACK_ADDITEM_TO_CART, 0x12c);
  892. // TODO : not sure for client date [Napster]
  893. #if PACKETVER >= 20141016
  894. struct PACKET_ZC_DELETEITEM_FROM_MCSTORE {
  895. int16 packetType;
  896. uint16 index;
  897. uint16 amount;
  898. uint32 buyerCID;
  899. uint32 date;
  900. int32 zeny;
  901. } __attribute__((packed));
  902. DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x9e5);
  903. #else
  904. struct PACKET_ZC_DELETEITEM_FROM_MCSTORE {
  905. int16 packetType;
  906. uint16 index;
  907. uint16 amount;
  908. } __attribute__((packed));
  909. DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x137);
  910. #endif
  911. struct PACKET_CZ_REQ_BAN_GUILD{
  912. int16 packetType;
  913. uint32 guild_id;
  914. uint32 AID;
  915. uint32 CID;
  916. char message[40];
  917. } __attribute__((packed));
  918. DEFINE_PACKET_HEADER(CZ_REQ_BAN_GUILD, 0x15b);
  919. struct PACKET_CZ_REQ_LEAVE_GUILD{
  920. int16 packetType;
  921. uint32 guild_id;
  922. uint32 AID;
  923. uint32 CID;
  924. char message[40];
  925. } __attribute__((packed));
  926. DEFINE_PACKET_HEADER(CZ_REQ_LEAVE_GUILD, 0x159);
  927. struct PACKET_CZ_REQ_DISORGANIZE_GUILD{
  928. int16 packetType;
  929. char key[40];
  930. } __attribute__((packed));
  931. DEFINE_PACKET_HEADER(CZ_REQ_DISORGANIZE_GUILD, 0x15d);
  932. struct PACKET_ZC_ACK_DISORGANIZE_GUILD_RESULT{
  933. int16 packetType;
  934. int32 result;
  935. } __attribute__((packed));
  936. DEFINE_PACKET_HEADER(ZC_ACK_DISORGANIZE_GUILD_RESULT, 0x15e);
  937. struct PACKET_ZC_RESULT_MAKE_GUILD{
  938. int16 packetType;
  939. uint8 result;
  940. } __attribute__((packed));
  941. DEFINE_PACKET_HEADER(ZC_RESULT_MAKE_GUILD, 0x167);
  942. struct PACKET_CZ_REQ_JOIN_GUILD{
  943. int16 packetType;
  944. uint32 AID;
  945. uint32 inviter_AID;
  946. uint32 inviter_CID;
  947. } __attribute__((packed));
  948. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GUILD, 0x168);
  949. struct PACKET_ZC_ACK_REQ_JOIN_GUILD{
  950. int16 packetType;
  951. uint8 result;
  952. } __attribute__((packed));
  953. DEFINE_PACKET_HEADER(ZC_ACK_REQ_JOIN_GUILD, 0x169);
  954. struct PACKET_ZC_REQ_JOIN_GUILD{
  955. int16 packetType;
  956. uint32 guild_id;
  957. char guild_name[NAME_LENGTH];
  958. } __attribute__((packed));
  959. DEFINE_PACKET_HEADER(ZC_REQ_JOIN_GUILD, 0x16a);
  960. struct PACKET_CZ_JOIN_GUILD{
  961. int16 packetType;
  962. uint32 guild_id;
  963. int32 answer;
  964. } __attribute__((packed));
  965. DEFINE_PACKET_HEADER(CZ_JOIN_GUILD, 0x16b);
  966. struct PACKET_ZC_GUILD_NOTICE{
  967. int16 packetType;
  968. char subject[60];
  969. char notice[120];
  970. } __attribute__((packed));
  971. DEFINE_PACKET_HEADER(ZC_GUILD_NOTICE, 0x16f);
  972. struct PACKET_CZ_REQ_JOIN_GUILD2{
  973. int16 packetType;
  974. char name[NAME_LENGTH];
  975. } __attribute__((packed));
  976. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GUILD2, 0x916);
  977. struct PACKET_CZ_REQ_JOIN_GROUP{
  978. int16 packetType;
  979. uint32 AID;
  980. } __attribute__((packed));
  981. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GROUP, 0xfc);
  982. struct PACKET_CZ_JOIN_GROUP{
  983. int16 packetType;
  984. uint32 party_id;
  985. int32 flag;
  986. } __attribute__((packed));
  987. DEFINE_PACKET_HEADER(CZ_JOIN_GROUP, 0xff);
  988. struct PACKET_CZ_REQ_LEAVE_GROUP{
  989. int16 packetType;
  990. } __attribute__((packed));
  991. DEFINE_PACKET_HEADER(CZ_REQ_LEAVE_GROUP, 0x100);
  992. struct PACKET_CZ_REQ_EXPEL_GROUP_MEMBER{
  993. int16 packetType;
  994. uint32 AID;
  995. char name[NAME_LENGTH];
  996. } __attribute__((packed));
  997. DEFINE_PACKET_HEADER(CZ_REQ_EXPEL_GROUP_MEMBER, 0x103);
  998. struct PACKET_CZ_PARTY_JOIN_REQ{
  999. int16 packetType;
  1000. char name[NAME_LENGTH];
  1001. } __attribute__((packed));
  1002. DEFINE_PACKET_HEADER(CZ_PARTY_JOIN_REQ, 0x2c4);
  1003. struct PACKET_CZ_PARTY_JOIN_REQ_ACK{
  1004. int16 packetType;
  1005. uint32 party_id;
  1006. uint8 flag;
  1007. } __attribute__((packed));
  1008. DEFINE_PACKET_HEADER(CZ_PARTY_JOIN_REQ_ACK, 0x2c7);
  1009. struct PACKET_ZC_EL_PAR_CHANGE {
  1010. int16 packetType;
  1011. uint16 type;
  1012. uint32 value;
  1013. } __attribute__((packed));
  1014. DEFINE_PACKET_HEADER(ZC_EL_PAR_CHANGE, 0x81e);
  1015. // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
  1016. #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
  1017. #pragma pack( pop )
  1018. #endif
  1019. // Other packets without struct defined in this file
  1020. DEFINE_PACKET_HEADER(ZC_NOTIFY_CHAT, 0x8d)
  1021. DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d)
  1022. DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a)
  1023. DEFINE_PACKET_HEADER(ZC_MAKABLEITEMLIST, 0x18d)
  1024. DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e)
  1025. DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f)
  1026. #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
  1027. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0xb66)
  1028. #else
  1029. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x1fd)
  1030. #endif
  1031. DEFINE_PACKET_HEADER(ZC_NOTIFY_WEAPONITEMLIST, 0x221)
  1032. DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
  1033. DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
  1034. DEFINE_PACKET_HEADER(ZC_PC_CASH_POINT_ITEMLIST, 0x287)
  1035. DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
  1036. DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
  1037. DEFINE_PACKET_HEADER(CZ_SKILL_SELECT_RESPONSE, 0x443)
  1038. DEFINE_PACKET_HEADER(ZC_MYITEMLIST_BUYING_STORE, 0x813)
  1039. DEFINE_PACKET_HEADER(ZC_ACK_ITEMLIST_BUYING_STORE, 0x818)
  1040. DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
  1041. DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
  1042. DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
  1043. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CONNECTINFO, 0x988)
  1044. DEFINE_PACKET_HEADER(ZC_ACK_CLAN_LEAVE, 0x989)
  1045. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CHAT, 0x98e)
  1046. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_DEPOSIT, 0x9a7)
  1047. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_WITHDRAW, 0x9a9)
  1048. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_CHECK, 0x9ab)
  1049. DEFINE_PACKET_HEADER(CZ_REQ_OPEN_BANKING, 0x9b6)
  1050. DEFINE_PACKET_HEADER(CZ_REQ_CLOSE_BANKING, 0x9b8)
  1051. DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d)
  1052. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46)
  1053. DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
  1054. DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
  1055. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
  1056. DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
  1057. DEFINE_PACKET_HEADER(ZC_FEED_MER, 0x22f)
  1058. DEFINE_PACKET_HEADER(ZC_FEED_PET, 0x1a3)
  1059. const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
  1060. const int16 MAX_INVENTORY_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_equip ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );
  1061. const int16 MAX_STORAGE_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct ZC_STORE_ITEMLIST_NORMAL ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
  1062. const int16 MAX_STORAGE_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct ZC_STORE_ITEMLIST_EQUIP ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );
  1063. const int16 MAX_GUILD_STORAGE_LOG_PACKET = ( ( INT16_MAX - sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG ) ) / sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub ) );
  1064. #undef MAX_ITEM_OPTIONS
  1065. #undef UNAVAILABLE_STRUCT
  1066. #undef MAX_ITEMLIST
  1067. #undef MAX_ACHIEVEMENT_DB
  1068. #undef MAX_PACKET_POS
  1069. #undef DEFINE_PACKET_HEADER
  1070. #pragma warning( pop )
  1071. #endif /* PACKETS_HPP */