packets.hpp 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882
  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_USER_COUNT{
  28. uint16 packetType;
  29. int32 playersCount;
  30. } __attribute__((packed));
  31. DEFINE_PACKET_HEADER(ZC_USER_COUNT, 0xc2)
  32. struct PACKET_ZC_PC_PURCHASE_RESULT{
  33. int16 packetType;
  34. uint8 result;
  35. } __attribute__((packed));
  36. DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT, 0xca)
  37. struct PACKET_CZ_REQ_MAKINGARROW{
  38. int16 packetType;
  39. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  40. uint32 itemId;
  41. #else
  42. uint16 itemId;
  43. #endif
  44. } __attribute__((packed));
  45. DEFINE_PACKET_HEADER(CZ_REQ_MAKINGARROW, 0x1ae)
  46. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub{
  47. uint32 itemId;
  48. uint32 amount;
  49. uint16 tab;
  50. } __attribute__((packed));
  51. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST{
  52. int16 packetType;
  53. int16 packetLength;
  54. uint16 count;
  55. uint32 kafraPoints;
  56. struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub items[];
  57. } __attribute__((packed));
  58. DEFINE_PACKET_HEADER(CZ_SE_PC_BUY_CASHITEM_LIST, 0x848)
  59. struct PACKET_CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO{
  60. int16 packetType;
  61. int16 packetLength;
  62. uint32 AID;
  63. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  64. uint32 itemId;
  65. #else
  66. uint16 itemId;
  67. #endif
  68. } __attribute__((packed));
  69. DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
  70. struct PACKET_ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO{
  71. int16 packetType;
  72. uint16 result;
  73. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  74. uint32 itemId;
  75. #else
  76. uint16 itemId;
  77. #endif
  78. uint32 price;
  79. } __attribute__((packed));
  80. DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
  81. struct PACKET_CZ_REQ_APPLY_BARGAIN_SALE_ITEM{
  82. int16 packetType;
  83. uint32 AID;
  84. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  85. uint32 itemId;
  86. #else
  87. uint16 itemId;
  88. #endif
  89. uint32 amount;
  90. uint32 startTime;
  91. #if PACKETVER >= 20150520
  92. uint16 hours;
  93. #else
  94. uint8 hours;
  95. #endif
  96. } __attribute__((packed));
  97. DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae)
  98. struct PACKET_CZ_REQ_REMOVE_BARGAIN_SALE_ITEM{
  99. int16 packetType;
  100. uint32 AID;
  101. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  102. uint32 itemId;
  103. #else
  104. uint16 itemId;
  105. #endif
  106. } __attribute__((packed));
  107. DEFINE_PACKET_HEADER(CZ_REQ_REMOVE_BARGAIN_SALE_ITEM, 0x9b0)
  108. struct PACKET_ZC_NOTIFY_BARGAIN_SALE_SELLING{
  109. int16 packetType;
  110. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  111. uint32 itemId;
  112. #else
  113. uint16 itemId;
  114. #endif
  115. uint32 remainingTime;
  116. } __attribute__((packed));
  117. DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2)
  118. struct PACKET_ZC_NOTIFY_BARGAIN_SALE_CLOSE{
  119. int16 packetType;
  120. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  121. uint32 itemId;
  122. #else
  123. uint16 itemId;
  124. #endif
  125. } __attribute__((packed));
  126. DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3)
  127. struct PACKET_ZC_ACK_COUNT_BARGAIN_SALE_ITEM{
  128. int16 packetType;
  129. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  130. uint32 itemId;
  131. #else
  132. uint16 itemId;
  133. #endif
  134. uint32 amount;
  135. } __attribute__((packed));
  136. DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4)
  137. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub{
  138. uint32 id;
  139. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  140. uint32 itemId;
  141. #else
  142. uint16 itemId;
  143. #endif
  144. int32 amount;
  145. uint8 action;
  146. int32 refine;
  147. int64 uniqueId;
  148. uint8 IsIdentified;
  149. uint16 itemType;
  150. struct EQUIPSLOTINFO slot;
  151. char name[NAME_LENGTH];
  152. char time[NAME_LENGTH];
  153. uint8 attribute;
  154. } __attribute__((packed));
  155. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG{
  156. int16 packetType;
  157. int16 PacketLength;
  158. uint16 result;
  159. uint16 amount;
  160. struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub items[];
  161. } __attribute__((packed));
  162. DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da)
  163. struct PACKET_CZ_ADVANCED_STATUS_CHANGE{
  164. int16 packetType;
  165. int16 type;
  166. int16 amount;
  167. } __attribute__((packed));
  168. DEFINE_PACKET_HEADER(CZ_ADVANCED_STATUS_CHANGE, 0x0b24)
  169. struct PACKET_CZ_REQ_ADD_NEW_EMBLEM {
  170. int16 packetType;
  171. uint32 guild_id;
  172. uint32 version;
  173. } __attribute__((packed));
  174. DEFINE_PACKET_HEADER(CZ_REQ_ADD_NEW_EMBLEM, 0x0b46)
  175. struct PACKET_ZC_BROADCAST{
  176. int16 packetType;
  177. int16 PacketLength;
  178. char message[];
  179. } __attribute__((packed));
  180. DEFINE_PACKET_HEADER(ZC_BROADCAST, 0x9a)
  181. struct PACKET_ZC_BROADCAST2{
  182. int16 packetType;
  183. int16 PacketLength;
  184. uint32 fontColor;
  185. int16 fontType;
  186. int16 fontSize;
  187. int16 fontAlign;
  188. int16 fontY;
  189. char message[];
  190. } __attribute__((packed));
  191. DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3)
  192. struct PACKET_ZC_ENTRY_QUEUE_INIT {
  193. int16 packetType;
  194. } __attribute__((packed));
  195. DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
  196. struct PACKET_CZ_RODEX_RETURN{
  197. int16 packetType;
  198. uint32 msgId;
  199. } __attribute__((packed));
  200. DEFINE_PACKET_HEADER(CZ_RODEX_RETURN, 0xb98)
  201. struct PACKET_CZ_REQ_STYLE_CLOSE{
  202. int16 packetType;
  203. } __attribute__((packed));
  204. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CLOSE, 0xa48)
  205. struct PACKET_ZC_SUMMON_HP_INIT {
  206. int16 PacketType;
  207. uint32 summonAID;
  208. uint32 CurrentHP;
  209. uint32 MaxHP;
  210. } __attribute__((packed));
  211. DEFINE_PACKET_HEADER(ZC_SUMMON_HP_INIT, 0xb6b)
  212. struct PACKET_ZC_SUMMON_HP_UPDATE {
  213. int16 PacketType;
  214. uint32 summonAID;
  215. uint16 VarId;
  216. uint32 Value;
  217. } __attribute__((packed));
  218. DEFINE_PACKET_HEADER(ZC_SUMMON_HP_UPDATE, 0xb6c)
  219. struct PACKET_ZC_REPUTE_INFO_sub{
  220. uint64 type;
  221. int64 points;
  222. } __attribute__((packed));
  223. struct PACKET_ZC_REPUTE_INFO{
  224. int16 packetType;
  225. int16 packetLength;
  226. uint8 success;
  227. struct PACKET_ZC_REPUTE_INFO_sub list[];
  228. } __attribute__((packed));
  229. DEFINE_PACKET_HEADER(ZC_REPUTE_INFO, 0x0b8d)
  230. struct PACKET_ZC_UI_OPEN_V3{
  231. int16 packetType;
  232. uint8 type;
  233. uint64 data;
  234. } __attribute__((packed));
  235. DEFINE_PACKET_HEADER(ZC_UI_OPEN_V3, 0x0b9a)
  236. struct PACKET_ZC_TARGET_SPIRITS {
  237. int16 packetType;
  238. uint32 GID;
  239. uint32 unknown_val;
  240. uint16 amount;
  241. } __attribute__((packed));
  242. DEFINE_PACKET_HEADER(ZC_TARGET_SPIRITS, 0xb68)
  243. struct PACKET_ZC_FRIENDS_LIST_sub{
  244. uint32 AID;
  245. uint32 CID;
  246. #if !( PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 ) || PACKETVER >= 20200902
  247. char name[NAME_LENGTH];
  248. #endif
  249. } __attribute__((packed));
  250. struct PACKET_ZC_FRIENDS_LIST{
  251. int16 packetType;
  252. int16 PacketLength;
  253. struct PACKET_ZC_FRIENDS_LIST_sub friends[];
  254. } __attribute__((packed));
  255. DEFINE_PACKET_HEADER(ZC_FRIENDS_LIST, 0x201)
  256. struct PACKET_CZ_PC_SELL_ITEMLIST_sub {
  257. uint16 index;
  258. uint16 amount;
  259. } __attribute__((packed));
  260. struct PACKET_CZ_PC_SELL_ITEMLIST {
  261. int16 packetType;
  262. int16 packetLength;
  263. PACKET_CZ_PC_SELL_ITEMLIST_sub sellList[];
  264. } __attribute__((packed));
  265. DEFINE_PACKET_HEADER(CZ_PC_SELL_ITEMLIST, 0x00c9)
  266. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub{
  267. uint32 AID;
  268. uint32 CID;
  269. int32 position;
  270. } __attribute__((packed));
  271. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS{
  272. int16 packetType;
  273. int16 packetLength;
  274. struct PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub list[];
  275. } __attribute__((packed));
  276. DEFINE_PACKET_HEADER(CZ_REQ_CHANGE_MEMBERPOS, 0x155)
  277. struct PACKET_ZC_CLEAR_DIALOG{
  278. int16 packetType;
  279. uint32 GID;
  280. } __attribute__((packed));
  281. DEFINE_PACKET_HEADER(ZC_CLEAR_DIALOG, 0x8d6)
  282. struct PACKET_ZC_NOTIFY_BIND_ON_EQUIP{
  283. int16 packetType;
  284. int16 index;
  285. } __attribute__((packed));
  286. DEFINE_PACKET_HEADER(ZC_NOTIFY_BIND_ON_EQUIP, 0x2d3)
  287. struct PACKET_ZC_BANKING_CHECK{
  288. int16 packetType;
  289. int64 money;
  290. int16 reason;
  291. } __attribute__((packed));
  292. DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
  293. struct PACKET_ZC_ACK_BANKING_WITHDRAW{
  294. int16 packetType;
  295. int16 reason;
  296. int64 money;
  297. int32 zeny;
  298. } __attribute__((packed));
  299. DEFINE_PACKET_HEADER(ZC_ACK_BANKING_WITHDRAW, 0x9aa)
  300. struct PACKET_ZC_ACK_BANKING_DEPOSIT{
  301. int16 packetType;
  302. int16 reason;
  303. int64 money;
  304. int32 zeny;
  305. } __attribute__((packed));
  306. DEFINE_PACKET_HEADER(ZC_ACK_BANKING_DEPOSIT, 0x9a8)
  307. struct PACKET_ZC_ACK_CLOSE_BANKING{
  308. int16 packetType;
  309. int16 unknown;
  310. } __attribute__((packed));
  311. DEFINE_PACKET_HEADER(ZC_ACK_CLOSE_BANKING, 0x9b9)
  312. struct PACKET_ZC_ACK_OPEN_BANKING{
  313. int16 packetType;
  314. int16 unknown;
  315. } __attribute__((packed));
  316. DEFINE_PACKET_HEADER(ZC_ACK_OPEN_BANKING, 0x9b7)
  317. #if PACKETVER > 6
  318. struct PACKET_ZC_REQ_EXCHANGE_ITEM{
  319. uint16 packetType;
  320. char requesterName[NAME_LENGTH];
  321. uint32 targetId;
  322. uint16 targetLv;
  323. } __attribute__((packed));
  324. DEFINE_PACKET_HEADER(ZC_REQ_EXCHANGE_ITEM, 0x1f4)
  325. #else
  326. struct PACKET_ZC_REQ_EXCHANGE_ITEM{
  327. uint16 packetType;
  328. char requesterName[NAME_LENGTH];
  329. } __attribute__((packed));
  330. DEFINE_PACKET_HEADER(ZC_REQ_EXCHANGE_ITEM, 0x9a)
  331. #endif
  332. #if PACKETVER > 6
  333. struct PACKET_ZC_ACK_EXCHANGE_ITEM{
  334. uint16 packetType;
  335. uint8 result;
  336. uint32 targetId;
  337. uint16 targetLv;
  338. } __attribute__((packed));
  339. DEFINE_PACKET_HEADER(ZC_ACK_EXCHANGE_ITEM, 0x1f5)
  340. #else
  341. struct PACKET_ZC_ACK_EXCHANGE_ITEM{
  342. uint16 packetType;
  343. uint8 result;
  344. } __attribute__((packed));
  345. DEFINE_PACKET_HEADER(ZC_ACK_EXCHANGE_ITEM, 0xe7)
  346. #endif
  347. struct PACKET_ZC_ACK_ADD_EXCHANGE_ITEM {
  348. int16 packetType;
  349. uint16 index;
  350. uint8 result;
  351. } __attribute__((packed));
  352. DEFINE_PACKET_HEADER(ZC_ACK_ADD_EXCHANGE_ITEM, 0xea)
  353. struct PACKET_ZC_COUPLENAME {
  354. int16 packetType;
  355. char name[NAME_LENGTH];
  356. } __attribute__((packed));
  357. DEFINE_PACKET_HEADER(ZC_COUPLENAME, 0x1e6);
  358. struct PACKET_CZ_PARTY_REQ_MASTER_TO_JOIN{
  359. int16 packetType;
  360. uint32 CID;
  361. uint32 AID;
  362. } __attribute__((packed));
  363. DEFINE_PACKET_HEADER(CZ_PARTY_REQ_MASTER_TO_JOIN, 0x0ae6)
  364. struct PACKET_ZC_PARTY_REQ_MASTER_TO_JOIN{
  365. int16 packetType;
  366. uint32 CID;
  367. uint32 AID;
  368. char name[NAME_LENGTH];
  369. uint16 x;
  370. uint16 y;
  371. } __attribute__((packed));
  372. DEFINE_PACKET_HEADER(ZC_PARTY_REQ_MASTER_TO_JOIN, 0x0ae7)
  373. struct PACKET_CZ_PARTY_REQ_ACK_MASTER_TO_JOIN{
  374. int16 packetType;
  375. uint32 CID;
  376. uint32 AID;
  377. uint8 accept;
  378. } __attribute__((packed));
  379. DEFINE_PACKET_HEADER(CZ_PARTY_REQ_ACK_MASTER_TO_JOIN, 0x0af8)
  380. struct PACKET_ZC_PARTY_JOIN_REQ_ACK_FROM_MASTER{
  381. int16 packetType;
  382. char player_name[NAME_LENGTH];
  383. char party_name[NAME_LENGTH];
  384. uint32 AID;
  385. uint32 refused;
  386. } __attribute__((packed));
  387. DEFINE_PACKET_HEADER(ZC_PARTY_JOIN_REQ_ACK_FROM_MASTER, 0x0afa)
  388. struct PACKET_CZ_REQ_SE_CASH_TAB_CODE{
  389. int16 packetType;
  390. int16 tab;
  391. } __attribute__((packed));
  392. DEFINE_PACKET_HEADER(CZ_REQ_SE_CASH_TAB_CODE, 0x846)
  393. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2_sub{
  394. #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
  395. uint32 itemId;
  396. #else
  397. uint16 itemId;
  398. #endif
  399. int32 price;
  400. } __attribute__((packed));
  401. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2{
  402. int16 packetType;
  403. int16 packetLength;
  404. uint32 tab;
  405. int16 count;
  406. struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2_sub items[];
  407. } __attribute__((packed));
  408. DEFINE_PACKET_HEADER(ZC_ACK_SE_CASH_ITEM_LIST2, 0x8c0)
  409. struct PACKET_CZ_REQ_MERGE_ITEM{
  410. int16 packetType;
  411. int16 packetLength;
  412. uint16 indices[];
  413. } __attribute__((packed));
  414. DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
  415. struct PACKET_CZ_RESET_SKILL{
  416. int16 packetType;
  417. uint8 unknown;
  418. } __attribute__((packed));
  419. DEFINE_PACKET_HEADER(CZ_RESET_SKILL, 0x0bb1)
  420. struct PACKET_ZC_SKILLINFO_UPDATE{
  421. uint16 packetType;
  422. uint16 skillId;
  423. uint16 level;
  424. uint16 sp;
  425. uint16 range2;
  426. bool upFlag;
  427. } __attribute__((packed));
  428. DEFINE_PACKET_HEADER(ZC_SKILLINFO_UPDATE, 0x10e);
  429. struct PACKET_ZC_BOSS_INFO{
  430. int16 packetType;
  431. uint8 type;
  432. uint32 x;
  433. uint32 y;
  434. uint16 minHours;
  435. uint16 minMinutes;
  436. uint16 maxHours;
  437. uint16 maxMinutes;
  438. char name[51];
  439. } __attribute__((packed));
  440. DEFINE_PACKET_HEADER(ZC_BOSS_INFO, 0x293)
  441. struct PACKET_CZ_INVENTORY_TAB{
  442. int16 packetType;
  443. int16 index;
  444. bool favorite;
  445. } __attribute__((packed));
  446. DEFINE_PACKET_HEADER(CZ_INVENTORY_TAB, 0x907)
  447. struct PACKET_ZC_INVENTORY_TAB{
  448. int16 packetType;
  449. int16 index;
  450. bool favorite;
  451. } __attribute__((packed));
  452. DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
  453. struct PACKET_CZ_REQ_OPEN_BANKING{
  454. int16 packetType;
  455. uint32 AID;
  456. } __attribute__((packed));
  457. struct PACKET_CZ_REQ_CLOSE_BANKING{
  458. int16 packetType;
  459. uint32 AID;
  460. } __attribute__((packed));
  461. struct PACKET_CZ_REQ_BANKING_CHECK{
  462. int16 packetType;
  463. uint32 AID;
  464. } __attribute__((packed));
  465. struct PACKET_CZ_REQ_BANKING_DEPOSIT{
  466. int16 packetType;
  467. uint32 AID;
  468. int32 zeny;
  469. } __attribute__((packed));
  470. struct PACKET_CZ_REQ_BANKING_WITHDRAW{
  471. int16 packetType;
  472. uint32 AID;
  473. int32 zeny;
  474. } __attribute__((packed));
  475. #if PACKETVER < 20080102
  476. struct PACKET_ZC_ACCEPT_ENTER {
  477. int16 packetType;
  478. uint32 startTime;
  479. uint8 posDir[3];
  480. uint8 xSize;
  481. uint8 ySize;
  482. } __attribute__((packed));
  483. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0x73)
  484. #elif PACKETVER < 20141022 || PACKETVER >= 20160330
  485. struct PACKET_ZC_ACCEPT_ENTER {
  486. int16 packetType;
  487. uint32 startTime;
  488. uint8 posDir[3];
  489. uint8 xSize;
  490. uint8 ySize;
  491. uint16 font;
  492. } __attribute__((packed));
  493. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0x2eb)
  494. #else
  495. struct PACKET_ZC_ACCEPT_ENTER {
  496. int16 packetType;
  497. uint32 startTime;
  498. uint8 posDir[3];
  499. uint8 xSize;
  500. uint8 ySize;
  501. uint16 font;
  502. uint8 sex;
  503. } __attribute__((packed));
  504. DEFINE_PACKET_HEADER(ZC_ACCEPT_ENTER, 0xa18)
  505. #endif
  506. struct PACKET_ZC_REFUSE_ENTER {
  507. int16 packetType;
  508. uint8 errorCode;
  509. } __attribute__((packed));
  510. static_assert(sizeof(PACKET_ZC_REFUSE_ENTER) == 3);
  511. DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER, 0x74)
  512. struct PACKET_SC_NOTIFY_BAN {
  513. int16 packetType;
  514. uint8 errorCode;
  515. } __attribute__((packed));
  516. DEFINE_PACKET_HEADER(SC_NOTIFY_BAN, 0x81)
  517. struct PACKET_ZC_RESTART_ACK {
  518. int16 packetType;
  519. uint8 type;
  520. } __attribute__((packed));
  521. DEFINE_PACKET_HEADER(ZC_RESTART_ACK, 0xb3)
  522. struct PACKET_ZC_NOTIFY_VANISH {
  523. int16 packetType;
  524. uint32 gid;
  525. uint8 type;
  526. } __attribute__((packed));
  527. DEFINE_PACKET_HEADER(ZC_NOTIFY_VANISH, 0x80)
  528. struct PACKET_ZC_ITEM_DISAPPEAR {
  529. int16 packetType;
  530. uint32 itemAid;
  531. } __attribute__((packed));
  532. DEFINE_PACKET_HEADER(ZC_ITEM_DISAPPEAR, 0xa1)
  533. struct PACKET_ZC_MILLENNIUMSHIELD {
  534. int16 packetType;
  535. uint32 aid;
  536. int16 num;
  537. int16 state;
  538. } __attribute__((packed));
  539. DEFINE_PACKET_HEADER(ZC_MILLENNIUMSHIELD, 0x440)
  540. struct PACKET_ZC_SPIRITS_ATTRIBUTE {
  541. int16 packetType;
  542. uint32 aid;
  543. int16 spiritsType;
  544. int16 num;
  545. } __attribute__((packed));
  546. DEFINE_PACKET_HEADER(ZC_SPIRITS_ATTRIBUTE, 0x8cf)
  547. struct PACKET_ZC_CHANGESTATE_MER {
  548. int16 packetType;
  549. uint8 type;
  550. uint8 state;
  551. uint32 gid;
  552. uint32 data;
  553. } __attribute__((packed));
  554. DEFINE_PACKET_HEADER(ZC_CHANGESTATE_MER, 0x230)
  555. struct PACKET_ZC_HOSKILLINFO_LIST_sub {
  556. uint16 id;
  557. uint16 inf;
  558. uint16 unknown;
  559. uint16 level;
  560. uint16 sp;
  561. uint16 range;
  562. char name[NAME_LENGTH];
  563. uint8 upgradable;
  564. } __attribute__((packed));
  565. struct PACKET_ZC_HOSKILLINFO_LIST {
  566. int16 packetType;
  567. int16 packetLength;
  568. PACKET_ZC_HOSKILLINFO_LIST_sub skills[];
  569. } __attribute__((packed));
  570. DEFINE_PACKET_HEADER(ZC_HOSKILLINFO_LIST, 0x235)
  571. struct PACKET_ZC_HOSKILLINFO_UPDATE {
  572. int16 packetType;
  573. uint16 skill_id;
  574. int16 Level;
  575. int16 SP;
  576. int16 AttackRange;
  577. bool upgradable;
  578. } __attribute__((packed));
  579. DEFINE_PACKET_HEADER(ZC_HOSKILLINFO_UPDATE, 0x239)
  580. // Unused packet (alpha?)
  581. /*
  582. struct PACKET_ZC_NOTIFY_MOVE {
  583. int16 packetType;
  584. uint32 gid;
  585. uint8 moveData[6];
  586. uint32 moveStartTime;
  587. } __attribute__((packed));
  588. DEFINE_PACKET_HEADER(ZC_NOTIFY_MOVE, 0x86)
  589. */
  590. struct PACKET_ZC_NOTIFY_PLAYERMOVE {
  591. int16 packetType;
  592. uint32 moveStartTime;
  593. uint8 moveData[6];
  594. } __attribute__((packed));
  595. DEFINE_PACKET_HEADER(ZC_NOTIFY_PLAYERMOVE, 0x87);
  596. struct PACKET_ZC_CHANGE_DIRECTION{
  597. int16 packetType;
  598. uint32 srcId;
  599. uint16 headDir;
  600. uint8 dir;
  601. } __attribute__((packed));
  602. DEFINE_PACKET_HEADER(ZC_CHANGE_DIRECTION, 0x9c)
  603. struct PACKET_ZC_NPCACK_MAPMOVE {
  604. int16 packetType;
  605. char mapName[MAP_NAME_LENGTH_EXT];
  606. uint16 xPos;
  607. uint16 yPos;
  608. } __attribute__((packed));
  609. DEFINE_PACKET_HEADER(ZC_NPCACK_MAPMOVE, 0x91)
  610. #if PACKETVER >= 20170315
  611. // Actually ZC_NPCACK_SERVERMOVE_DOMAIN
  612. struct PACKET_ZC_NPCACK_SERVERMOVE {
  613. int16 packetType;
  614. char mapName[MAP_NAME_LENGTH_EXT];
  615. uint16 xPos;
  616. uint16 yPos;
  617. uint32 ip;
  618. uint16 port;
  619. char domain[128];
  620. } __attribute__((packed));
  621. DEFINE_PACKET_HEADER(ZC_NPCACK_SERVERMOVE, 0xac7)
  622. #else
  623. struct PACKET_ZC_NPCACK_SERVERMOVE {
  624. int16 packetType;
  625. char mapName[MAP_NAME_LENGTH_EXT];
  626. uint16 xPos;
  627. uint16 yPos;
  628. uint32 ip;
  629. uint16 port;
  630. } __attribute__((packed));
  631. DEFINE_PACKET_HEADER(ZC_NPCACK_SERVERMOVE, 0x92)
  632. #endif
  633. struct PACKET_ZC_STOPMOVE {
  634. int16 packetType;
  635. uint32 AID;
  636. uint16 xPos;
  637. uint16 yPos;
  638. } __attribute__((packed));
  639. DEFINE_PACKET_HEADER(ZC_STOPMOVE, 0x88)
  640. struct PACKET_ZC_SELECT_DEALTYPE {
  641. int16 packetType;
  642. uint32 npcId;
  643. } __attribute__((packed));
  644. DEFINE_PACKET_HEADER(ZC_SELECT_DEALTYPE, 0xc4)
  645. struct PACKET_ZC_PC_SELL_ITEMLIST_sub {
  646. uint16 index;
  647. uint32 price;
  648. uint32 overcharge;
  649. } __attribute__((packed));
  650. struct PACKET_ZC_PC_SELL_ITEMLIST {
  651. int16 packetType;
  652. int16 packetLength;
  653. PACKET_ZC_PC_SELL_ITEMLIST_sub items[];
  654. } __attribute__((packed));
  655. DEFINE_PACKET_HEADER(ZC_PC_SELL_ITEMLIST, 0xc7)
  656. struct PACKET_ZC_CLOSE_DIALOG {
  657. int16 packetType;
  658. uint32 npcId;
  659. } __attribute__((packed));
  660. DEFINE_PACKET_HEADER(ZC_CLOSE_DIALOG, 0xb6)
  661. struct PACKET_ZC_MENU_LIST {
  662. int16 packetType;
  663. int16 packetLength;
  664. uint32 npcId;
  665. char menu[];
  666. } __attribute__((packed));
  667. DEFINE_PACKET_HEADER(ZC_MENU_LIST, 0xb7)
  668. struct PACKET_ZC_OPEN_EDITDLG {
  669. int16 packetType;
  670. uint32 npcId;
  671. } __attribute__((packed));
  672. DEFINE_PACKET_HEADER(ZC_OPEN_EDITDLG, 0x142)
  673. struct PACKET_ZC_OPEN_EDITDLGSTR {
  674. int16 packetType;
  675. uint32 npcId;
  676. } __attribute__((packed));
  677. DEFINE_PACKET_HEADER(ZC_OPEN_EDITDLGSTR, 0x1d4)
  678. struct PACKET_ZC_ACK_REQ_ALLY_GUILD {
  679. int16 packetType;
  680. uint8 flag;
  681. } __attribute__((packed));
  682. DEFINE_PACKET_HEADER(ZC_ACK_REQ_ALLY_GUILD, 0x173)
  683. struct PACKET_ZC_DELETE_RELATED_GUILD {
  684. int16 packetType;
  685. uint32 allyID;
  686. uint32 flag;
  687. } __attribute__((packed));
  688. DEFINE_PACKET_HEADER(ZC_DELETE_RELATED_GUILD, 0x184)
  689. struct PACKET_ZC_REQ_ALLY_GUILD {
  690. int16 packetType;
  691. uint32 inviterId;
  692. char inviterGuildName[NAME_LENGTH];
  693. } __attribute__((packed));
  694. DEFINE_PACKET_HEADER(ZC_REQ_ALLY_GUILD, 0x171)
  695. struct PACKET_ZC_ACK_REQ_HOSTILE_GUILD {
  696. int16 packetType;
  697. uint8 flag;
  698. } __attribute__((packed));
  699. DEFINE_PACKET_HEADER(ZC_ACK_REQ_HOSTILE_GUILD, 0x181)
  700. struct PACKET_ZC_COMPASS {
  701. int16 packetType;
  702. uint32 npcId;
  703. uint32 type;
  704. uint32 xPos;
  705. uint32 yPos;
  706. uint8 id;
  707. uint32 color;
  708. } __attribute__((packed));
  709. DEFINE_PACKET_HEADER(ZC_COMPASS, 0x144)
  710. struct PACKET_ZC_ITEM_THROW_ACK {
  711. int16 packetType;
  712. uint16 index;
  713. uint16 count;
  714. } __attribute__((packed));
  715. DEFINE_PACKET_HEADER(ZC_ITEM_THROW_ACK, 0xaf)
  716. struct PACKET_ZC_DELETE_ITEM_FROM_BODY {
  717. int16 packetType;
  718. int16 deleteType;
  719. uint16 index;
  720. int16 count;
  721. } __attribute__((packed));
  722. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_BODY, 0x7fa)
  723. struct PACKET_ZC_CARTOFF {
  724. int16 packetType;
  725. } __attribute__((packed));
  726. DEFINE_PACKET_HEADER(ZC_CARTOFF, 0x12b)
  727. struct PACKET_ZC_ACK_GUILD_MENUINTERFACE {
  728. int16 packetType;
  729. int menuFlag;
  730. } __attribute__((packed));
  731. DEFINE_PACKET_HEADER(ZC_ACK_GUILD_MENUINTERFACE, 0x014e)
  732. struct PACKET_ZC_NOTIFY_POSITION_TO_GUILDM {
  733. int16 packetType;
  734. uint32 aid;
  735. int16 xPos;
  736. int16 yPos;
  737. } __attribute__((packed));
  738. DEFINE_PACKET_HEADER(ZC_NOTIFY_POSITION_TO_GUILDM, 0x1eb)
  739. struct PACKET_ZC_GUILD_CHAT {
  740. int16 packetType;
  741. int16 packetLength;
  742. char message[];
  743. } __attribute__((packed));
  744. DEFINE_PACKET_HEADER(ZC_GUILD_CHAT, 0x17f)
  745. struct PACKET_ZC_STATUS {
  746. int16 packetType;
  747. uint16 point;
  748. uint8 str;
  749. uint8 standardStr;
  750. uint8 agi;
  751. uint8 standardAgi;
  752. uint8 vit;
  753. uint8 standardVit;
  754. uint8 int_;
  755. uint8 standardInt;
  756. uint8 dex;
  757. uint8 standardDex;
  758. uint8 luk;
  759. uint8 standardLuk;
  760. int16 attPower;
  761. int16 refiningPower;
  762. int16 max_mattPower;
  763. int16 min_mattPower;
  764. int16 itemdefPower;
  765. int16 plusdefPower;
  766. int16 mdefPower;
  767. int16 plusmdefPower;
  768. int16 hitSuccessValue;
  769. int16 avoidSuccessValue;
  770. int16 plusAvoidSuccessValue;
  771. int16 criticalSuccessValue;
  772. int16 ASPD;
  773. int16 plusASPD;
  774. } __attribute__((packed));
  775. DEFINE_PACKET_HEADER(ZC_STATUS, 0xbd)
  776. struct PACKET_ZC_NOTIFY_MAPINFO {
  777. int16 packetType;
  778. int16 type;
  779. } __attribute__((packed));
  780. DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPINFO, 0x189)
  781. struct PACKET_ZC_ACK_REMEMBER_WARPPOINT {
  782. int16 packetType;
  783. uint8 type;
  784. } __attribute__((packed));
  785. DEFINE_PACKET_HEADER(ZC_ACK_REMEMBER_WARPPOINT, 0x11e)
  786. struct PACKET_ZC_DISPEL {
  787. int16 packetType;
  788. uint32 gid;
  789. } __attribute__((packed));
  790. DEFINE_PACKET_HEADER(ZC_DISPEL, 0x1b9)
  791. struct PACKET_ZC_RESURRECTION {
  792. int16 packetType;
  793. uint32 gid;
  794. int16 type;
  795. } __attribute__((packed));
  796. DEFINE_PACKET_HEADER(ZC_RESURRECTION, 0x148)
  797. struct PACKET_ZC_NOTIFY_MAPPROPERTY2 {
  798. int16 packetType;
  799. int16 type;
  800. } __attribute__((packed));
  801. DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPPROPERTY2, 0x1d6)
  802. struct PACKET_ZC_ACK_ITEMREFINING {
  803. int16 packetType;
  804. uint16 result;
  805. uint16 index;
  806. uint16 value;
  807. } __attribute__((packed));
  808. DEFINE_PACKET_HEADER(ZC_ACK_ITEMREFINING, 0x188)
  809. struct PACKET_ZC_PAR_CHANGE_USER {
  810. int16 packetType;
  811. uint32 gid;
  812. int16 type;
  813. uint32 value;
  814. } __attribute__((packed));
  815. DEFINE_PACKET_HEADER(ZC_PAR_CHANGE_USER, 0x1ab)
  816. struct PACKET_ZC_CHANGE_CHATROOM{
  817. uint16 packetType;
  818. uint16 packetSize;
  819. uint32 ownerId;
  820. uint32 chatId;
  821. uint16 limit;
  822. uint16 users;
  823. uint8 flag;
  824. char title[];
  825. } __attribute__((packed));
  826. DEFINE_PACKET_HEADER(ZC_CHANGE_CHATROOM, 0xdf);
  827. struct PACKET_ZC_EQUIP_ARROW {
  828. int16 packetType;
  829. uint16 index;
  830. } __attribute__((packed));
  831. DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c)
  832. #if PACKETVER >= 20130000
  833. struct PACKET_ZC_REQ_TAKEOFF_EQUIP_ACK{
  834. uint16 packetType;
  835. uint16 index;
  836. uint32 wearLocation;
  837. uint8 flag;
  838. } __attribute__((packed));
  839. DEFINE_PACKET_HEADER(ZC_REQ_TAKEOFF_EQUIP_ACK, 0x99a)
  840. #elif PACKETVER >= 20110824
  841. struct PACKET_ZC_REQ_TAKEOFF_EQUIP_ACK{
  842. uint16 packetType;
  843. uint16 index;
  844. uint16 wearLocation;
  845. uint8 flag;
  846. } __attribute__((packed));
  847. DEFINE_PACKET_HEADER(ZC_REQ_TAKEOFF_EQUIP_ACK, 0x8d1)
  848. #else
  849. struct PACKET_ZC_REQ_TAKEOFF_EQUIP_ACK{
  850. uint16 packetType;
  851. uint16 index;
  852. uint16 wearLocation;
  853. bool flag;
  854. } __attribute__((packed));
  855. DEFINE_PACKET_HEADER(ZC_REQ_TAKEOFF_EQUIP_ACK, 0xac)
  856. #endif
  857. struct PACKET_ZC_CLOSE_STORE {
  858. int16 packetType;
  859. } __attribute__((packed));
  860. DEFINE_PACKET_HEADER(ZC_CLOSE_STORE, 0xf8);
  861. struct PACKET_ZC_DELETE_ITEM_FROM_STORE {
  862. int16 packetType;
  863. uint16 index;
  864. uint32 amount;
  865. } __attribute__((packed));
  866. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_STORE, 0xf6);
  867. struct PACKET_ZC_NOTIFY_STOREITEM_COUNTINFO {
  868. int16 packetType;
  869. uint16 amount;
  870. uint16 max_amount;
  871. } __attribute__((packed));
  872. DEFINE_PACKET_HEADER(ZC_NOTIFY_STOREITEM_COUNTINFO, 0xf2);
  873. struct PACKET_ZC_EXCHANGEITEM_UNDO {
  874. int16 packetType;
  875. } __attribute__((packed));
  876. DEFINE_PACKET_HEADER(ZC_EXCHANGEITEM_UNDO, 0xf1);
  877. struct PACKET_ZC_EXEC_EXCHANGE_ITEM {
  878. int16 packetType;
  879. uint8 result;
  880. } __attribute__((packed));
  881. DEFINE_PACKET_HEADER(ZC_EXEC_EXCHANGE_ITEM, 0xf0);
  882. struct PACKET_ZC_CANCEL_EXCHANGE_ITEM {
  883. int16 packetType;
  884. } __attribute__((packed));
  885. DEFINE_PACKET_HEADER(ZC_CANCEL_EXCHANGE_ITEM, 0xee);
  886. struct PACKET_ZC_CONCLUDE_EXCHANGE_ITEM {
  887. int16 packetType;
  888. uint8 who;
  889. } __attribute__((packed));
  890. struct PACKET_ZC_ACK_CREATE_CHATROOM {
  891. int16 packetType;
  892. uint8 flag;
  893. } __attribute__((packed));
  894. DEFINE_PACKET_HEADER(ZC_ACK_CREATE_CHATROOM, 0xd6);
  895. DEFINE_PACKET_HEADER(ZC_CONCLUDE_EXCHANGE_ITEM, 0xec);
  896. struct PACKET_ZC_REFUSE_ENTER_ROOM {
  897. int16 packetType;
  898. uint8 result;
  899. } __attribute__((packed));
  900. DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER_ROOM, 0xda);
  901. struct PACKET_ZC_DESTROY_ROOM {
  902. int16 packetType;
  903. uint32 chatId;
  904. } __attribute__((packed));
  905. DEFINE_PACKET_HEADER(ZC_DESTROY_ROOM, 0xd8);
  906. struct PACKET_ZC_ENTER_ROOM_sub{
  907. uint32 flag;
  908. char name[NAME_LENGTH];
  909. } __attribute__((packed));
  910. struct PACKET_ZC_ENTER_ROOM{
  911. uint16 packetType;
  912. uint16 packetSize;
  913. uint32 chatId;
  914. PACKET_ZC_ENTER_ROOM_sub members[];
  915. } __attribute__((packed));
  916. DEFINE_PACKET_HEADER(ZC_ENTER_ROOM, 0xdb);
  917. struct PACKET_ZC_NPC_SHOWEFST_UPDATE {
  918. int16 packetType;
  919. uint32 gid;
  920. uint32 effectState;
  921. int32 level;
  922. uint32 showEFST;
  923. } __attribute__((packed));
  924. DEFINE_PACKET_HEADER(ZC_NPC_SHOWEFST_UPDATE, 0x28a);
  925. struct PACKET_ZC_ACTION_FAILURE {
  926. int16 packetType;
  927. uint16 type;
  928. } __attribute__((packed));
  929. DEFINE_PACKET_HEADER(ZC_ACTION_FAILURE, 0x13b)
  930. struct PACKET_ZC_NOTIFY_EFFECT {
  931. int16 packetType;
  932. uint32 aid;
  933. uint32 effectId;
  934. } __attribute__((packed));
  935. DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT, 0x19b);
  936. struct PACKET_ZC_ACK_ITEMCOMPOSITION {
  937. int16 packetType;
  938. uint16 equipIndex;
  939. uint16 cardIndex;
  940. uint8 result;
  941. } __attribute__((packed));
  942. DEFINE_PACKET_HEADER(ZC_ACK_ITEMCOMPOSITION, 0x17d);
  943. struct PACKET_ZC_ACK_ITEMIDENTIFY {
  944. int16 packetType;
  945. uint16 index;
  946. uint8 result;
  947. } __attribute__((packed));
  948. DEFINE_PACKET_HEADER(ZC_ACK_ITEMIDENTIFY, 0x179);
  949. struct PACKET_ZC_ACK_ITEMREPAIR {
  950. int16 packetType;
  951. uint16 index;
  952. uint8 result;
  953. } __attribute__((packed));
  954. DEFINE_PACKET_HEADER(ZC_ACK_ITEMREPAIR, 0x1fe);
  955. struct PACKET_ZC_EQUIPITEM_DAMAGED {
  956. int16 packetType;
  957. uint16 equipLocation;
  958. uint32 GID;
  959. } __attribute__((packed));
  960. DEFINE_PACKET_HEADER(ZC_EQUIPITEM_DAMAGED, 0x2bb);
  961. struct PACKET_ZC_DELETE_ITEM_FROM_CART {
  962. int16 packetType;
  963. uint16 index;
  964. int32 amount;
  965. } __attribute__((packed));
  966. DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_CART, 0x125);
  967. struct PACKET_ZC_OPENSTORE {
  968. int16 packetType;
  969. uint16 num;
  970. } __attribute__((packed));
  971. DEFINE_PACKET_HEADER(ZC_OPENSTORE, 0x12d);
  972. struct PACKET_ZC_PC_PURCHASE_RESULT_FROMMC {
  973. int16 packetType;
  974. uint16 index;
  975. uint16 amount;
  976. uint8 result;
  977. } __attribute__((packed));
  978. DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT_FROMMC, 0x135);
  979. struct PACKET_ZC_ACK_OPENSTORE2 {
  980. int16 packetType;
  981. uint8 result;
  982. } __attribute__((packed));
  983. DEFINE_PACKET_HEADER(ZC_ACK_OPENSTORE2, 0xa28 );
  984. struct PACKET_ZC_SKILL_DISAPPEAR {
  985. int16 packetType;
  986. uint32 GID;
  987. } __attribute__((packed));
  988. DEFINE_PACKET_HEADER(ZC_SKILL_DISAPPEAR, 0x120);
  989. struct PACKET_ZC_SKILLINFO_DELETE {
  990. uint16 packetType;
  991. uint16 skillID;
  992. } __attribute__((packed));
  993. DEFINE_PACKET_HEADER(ZC_SKILLINFO_DELETE, 0x441);
  994. struct PACKET_ZC_SKILL_UPDATE {
  995. int16 packetType;
  996. uint32 GID;
  997. } __attribute__((packed));
  998. DEFINE_PACKET_HEADER(ZC_SKILL_UPDATE, 0x1ac);
  999. struct PACKET_ZC_HIGHJUMP{
  1000. uint16 packetType;
  1001. uint32 srcId;
  1002. uint16 x;
  1003. uint16 y;
  1004. } __attribute__((packed));
  1005. DEFINE_PACKET_HEADER(ZC_HIGHJUMP, 0x01ff);
  1006. #if PACKETVER >= 20141022
  1007. struct PACKET_ZC_RECOVERY {
  1008. int16 packetType;
  1009. uint16 type;
  1010. int32 amount;
  1011. } __attribute__((packed));
  1012. DEFINE_PACKET_HEADER(ZC_RECOVERY, 0xa27);
  1013. #else
  1014. struct PACKET_ZC_RECOVERY {
  1015. int16 packetType;
  1016. uint16 type;
  1017. int16 amount;
  1018. } __attribute__((packed));
  1019. DEFINE_PACKET_HEADER(ZC_RECOVERY, 0x13d);
  1020. #endif
  1021. #if PACKETVER >= 20131223
  1022. struct PACKET_ZC_ACK_WHISPER {
  1023. int16 packetType;
  1024. uint8 result;
  1025. uint32 CID;
  1026. } __attribute__((packed));
  1027. DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x9df);
  1028. #else
  1029. struct PACKET_ZC_ACK_WHISPER {
  1030. int16 packetType;
  1031. uint8 result;
  1032. } __attribute__((packed));
  1033. DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x98);
  1034. #endif
  1035. struct PACKET_ZC_ACK_ADDITEM_TO_CART {
  1036. int16 packetType;
  1037. uint8 result;
  1038. } __attribute__((packed));
  1039. DEFINE_PACKET_HEADER(ZC_ACK_ADDITEM_TO_CART, 0x12c);
  1040. // TODO : not sure for client date [Napster]
  1041. #if PACKETVER >= 20141016
  1042. struct PACKET_ZC_DELETEITEM_FROM_MCSTORE {
  1043. int16 packetType;
  1044. uint16 index;
  1045. uint16 amount;
  1046. uint32 buyerCID;
  1047. uint32 date;
  1048. int32 zeny;
  1049. } __attribute__((packed));
  1050. DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x9e5);
  1051. #else
  1052. struct PACKET_ZC_DELETEITEM_FROM_MCSTORE {
  1053. int16 packetType;
  1054. uint16 index;
  1055. uint16 amount;
  1056. } __attribute__((packed));
  1057. DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x137);
  1058. #endif
  1059. struct PACKET_CZ_REQ_BAN_GUILD{
  1060. int16 packetType;
  1061. uint32 guild_id;
  1062. uint32 AID;
  1063. uint32 CID;
  1064. char message[40];
  1065. } __attribute__((packed));
  1066. DEFINE_PACKET_HEADER(CZ_REQ_BAN_GUILD, 0x15b);
  1067. struct PACKET_CZ_REQ_LEAVE_GUILD{
  1068. int16 packetType;
  1069. uint32 guild_id;
  1070. uint32 AID;
  1071. uint32 CID;
  1072. char message[40];
  1073. } __attribute__((packed));
  1074. DEFINE_PACKET_HEADER(CZ_REQ_LEAVE_GUILD, 0x159);
  1075. struct PACKET_CZ_REQ_DISORGANIZE_GUILD{
  1076. int16 packetType;
  1077. char key[40];
  1078. } __attribute__((packed));
  1079. DEFINE_PACKET_HEADER(CZ_REQ_DISORGANIZE_GUILD, 0x15d);
  1080. struct PACKET_ZC_ACK_DISORGANIZE_GUILD_RESULT{
  1081. int16 packetType;
  1082. int32 result;
  1083. } __attribute__((packed));
  1084. DEFINE_PACKET_HEADER(ZC_ACK_DISORGANIZE_GUILD_RESULT, 0x15e);
  1085. struct PACKET_ZC_RESULT_MAKE_GUILD{
  1086. int16 packetType;
  1087. uint8 result;
  1088. } __attribute__((packed));
  1089. DEFINE_PACKET_HEADER(ZC_RESULT_MAKE_GUILD, 0x167);
  1090. struct PACKET_CZ_REQ_JOIN_GUILD{
  1091. int16 packetType;
  1092. uint32 AID;
  1093. uint32 inviter_AID;
  1094. uint32 inviter_CID;
  1095. } __attribute__((packed));
  1096. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GUILD, 0x168);
  1097. struct PACKET_ZC_ACK_REQ_JOIN_GUILD{
  1098. int16 packetType;
  1099. uint8 result;
  1100. } __attribute__((packed));
  1101. DEFINE_PACKET_HEADER(ZC_ACK_REQ_JOIN_GUILD, 0x169);
  1102. struct PACKET_ZC_REQ_JOIN_GUILD{
  1103. int16 packetType;
  1104. uint32 guild_id;
  1105. char guild_name[NAME_LENGTH];
  1106. } __attribute__((packed));
  1107. DEFINE_PACKET_HEADER(ZC_REQ_JOIN_GUILD, 0x16a);
  1108. struct PACKET_CZ_JOIN_GUILD{
  1109. int16 packetType;
  1110. uint32 guild_id;
  1111. int32 answer;
  1112. } __attribute__((packed));
  1113. DEFINE_PACKET_HEADER(CZ_JOIN_GUILD, 0x16b);
  1114. struct PACKET_ZC_GUILD_NOTICE{
  1115. int16 packetType;
  1116. char subject[60];
  1117. char notice[120];
  1118. } __attribute__((packed));
  1119. DEFINE_PACKET_HEADER(ZC_GUILD_NOTICE, 0x16f);
  1120. struct PACKET_CZ_REQ_JOIN_GUILD2{
  1121. int16 packetType;
  1122. char name[NAME_LENGTH];
  1123. } __attribute__((packed));
  1124. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GUILD2, 0x916);
  1125. struct PACKET_CZ_REQ_JOIN_GROUP{
  1126. int16 packetType;
  1127. uint32 AID;
  1128. } __attribute__((packed));
  1129. DEFINE_PACKET_HEADER(CZ_REQ_JOIN_GROUP, 0xfc);
  1130. struct PACKET_CZ_JOIN_GROUP{
  1131. int16 packetType;
  1132. uint32 party_id;
  1133. int32 flag;
  1134. } __attribute__((packed));
  1135. DEFINE_PACKET_HEADER(CZ_JOIN_GROUP, 0xff);
  1136. struct PACKET_CZ_REQ_LEAVE_GROUP{
  1137. int16 packetType;
  1138. } __attribute__((packed));
  1139. DEFINE_PACKET_HEADER(CZ_REQ_LEAVE_GROUP, 0x100);
  1140. struct PACKET_CZ_REQ_EXPEL_GROUP_MEMBER{
  1141. int16 packetType;
  1142. uint32 AID;
  1143. char name[NAME_LENGTH];
  1144. } __attribute__((packed));
  1145. DEFINE_PACKET_HEADER(CZ_REQ_EXPEL_GROUP_MEMBER, 0x103);
  1146. struct PACKET_CZ_PARTY_JOIN_REQ{
  1147. int16 packetType;
  1148. char name[NAME_LENGTH];
  1149. } __attribute__((packed));
  1150. DEFINE_PACKET_HEADER(CZ_PARTY_JOIN_REQ, 0x2c4);
  1151. struct PACKET_CZ_PARTY_JOIN_REQ_ACK{
  1152. int16 packetType;
  1153. uint32 party_id;
  1154. uint8 flag;
  1155. } __attribute__((packed));
  1156. DEFINE_PACKET_HEADER(CZ_PARTY_JOIN_REQ_ACK, 0x2c7);
  1157. #if PACKETVER_MAIN_NUM >= 20210000 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20210217
  1158. // PACKET_ZC_HO_PAR_CHANGE2
  1159. struct PACKET_ZC_HO_PAR_CHANGE {
  1160. int16 packetType;
  1161. uint16 type;
  1162. uint64 value;
  1163. } __attribute__((packed));
  1164. DEFINE_PACKET_HEADER(ZC_HO_PAR_CHANGE, 0xba5);
  1165. #else
  1166. struct PACKET_ZC_HO_PAR_CHANGE {
  1167. int16 packetType;
  1168. uint16 type;
  1169. int32 value;
  1170. } __attribute__((packed));
  1171. DEFINE_PACKET_HEADER(ZC_HO_PAR_CHANGE, 0x7db);
  1172. #endif
  1173. struct PACKET_ZC_EL_PAR_CHANGE {
  1174. int16 packetType;
  1175. uint16 type;
  1176. uint32 value;
  1177. } __attribute__((packed));
  1178. DEFINE_PACKET_HEADER(ZC_EL_PAR_CHANGE, 0x81e);
  1179. #if PACKETVER >= 20131223
  1180. struct PACKET_ZC_NOTIFY_ACT{
  1181. int16 packetType;
  1182. int32 srcID;
  1183. int32 targetID;
  1184. int32 serverTick;
  1185. int32 srcSpeed;
  1186. int32 dmgSpeed;
  1187. int32 damage;
  1188. int8 isSPDamage;
  1189. uint16 div;
  1190. uint8 type;
  1191. int32 damage2;
  1192. } __attribute__((packed));
  1193. DEFINE_PACKET_HEADER(ZC_NOTIFY_ACT, 0x8c8);
  1194. #elif PACKETVER >= 20071113
  1195. struct PACKET_ZC_NOTIFY_ACT{
  1196. int16 packetType;
  1197. int32 srcID;
  1198. int32 targetID;
  1199. int32 serverTick;
  1200. int32 srcSpeed;
  1201. int32 dmgSpeed;
  1202. int32 damage;
  1203. uint16 div;
  1204. uint8 type;
  1205. int32 damage2;
  1206. } __attribute__((packed));
  1207. DEFINE_PACKET_HEADER(ZC_NOTIFY_ACT, 0x2e1);
  1208. #else
  1209. struct PACKET_ZC_NOTIFY_ACT{
  1210. int16 packetType;
  1211. int32 srcID;
  1212. int32 targetID;
  1213. int32 serverTick;
  1214. int32 srcSpeed;
  1215. int32 dmgSpeed;
  1216. int16 damage;
  1217. uint16 div;
  1218. uint8 type;
  1219. int16 damage2;
  1220. } __attribute__((packed));
  1221. DEFINE_PACKET_HEADER(ZC_NOTIFY_ACT, 0x8a);
  1222. #endif
  1223. struct PACKET_CZ_REQUEST_MOVENPC{
  1224. int16 packetType;
  1225. uint32 GID;
  1226. uint8 PosDir[3];
  1227. } __attribute__((packed));
  1228. DEFINE_PACKET_HEADER(CZ_REQUEST_MOVENPC, 0x232);
  1229. struct PACKET_ZC_NPCSPRITE_CHANGE{
  1230. int16 packetType;
  1231. uint32 GID;
  1232. uint8 type;
  1233. uint32 class_;
  1234. } __attribute__((packed));
  1235. DEFINE_PACKET_HEADER(ZC_NPCSPRITE_CHANGE, 0x1b0);
  1236. struct PACKET_ZC_MEMBER_NEWENTRY{
  1237. int16 packetType;
  1238. uint16 count;
  1239. char name[NAME_LENGTH];
  1240. } __attribute__((packed));
  1241. DEFINE_PACKET_HEADER(ZC_MEMBER_NEWENTRY, 0xdc);
  1242. struct PACKET_ZC_MEMBER_EXIT{
  1243. int16 packetType;
  1244. uint16 count;
  1245. char name[NAME_LENGTH];
  1246. uint8 kicked;
  1247. } __attribute__((packed));
  1248. DEFINE_PACKET_HEADER(ZC_MEMBER_EXIT, 0xdd);
  1249. struct PACKET_CZ_MOVETO_MAP{
  1250. int16 packetType;
  1251. char map[MAP_NAME_LENGTH_EXT];
  1252. uint16 x;
  1253. uint16 y;
  1254. } __attribute__((packed));
  1255. DEFINE_PACKET_HEADER(CZ_MOVETO_MAP, 0x140);
  1256. struct PACKET_CZ_BROADCAST{
  1257. int16 packetType;
  1258. uint16 packetSize;
  1259. char message[];
  1260. } __attribute__((packed));
  1261. DEFINE_PACKET_HEADER(CZ_BROADCAST, 0x99);
  1262. #if PACKETVER >= 20120925
  1263. // CZ_REQ_WEAR_EQUIP_V5
  1264. struct PACKET_CZ_REQ_WEAR_EQUIP{
  1265. int16 packetType;
  1266. uint16 index;
  1267. uint32 position;
  1268. } __attribute__((packed));
  1269. DEFINE_PACKET_HEADER(CZ_REQ_WEAR_EQUIP, 0x998);
  1270. #else
  1271. struct PACKET_CZ_REQ_WEAR_EQUIP{
  1272. int16 packetType;
  1273. uint16 index;
  1274. uint16 position;
  1275. } __attribute__((packed));
  1276. DEFINE_PACKET_HEADER(CZ_REQ_WEAR_EQUIP, 0xa9);
  1277. #endif
  1278. struct PACKET_CZ_ACK_SELECT_DEALTYPE{
  1279. int16 packetType;
  1280. uint32 GID;
  1281. uint8 type;
  1282. } __attribute__((packed));
  1283. DEFINE_PACKET_HEADER(CZ_ACK_SELECT_DEALTYPE, 0xc5);
  1284. struct PACKET_CZ_CREATE_CHATROOM{
  1285. int16 packetType;
  1286. uint16 packetSize;
  1287. uint16 limit;
  1288. uint8 type;
  1289. char password[8];
  1290. char title[];
  1291. } __attribute__((packed));
  1292. DEFINE_PACKET_HEADER(CZ_CREATE_CHATROOM, 0xd5);
  1293. struct PACKET_CZ_BLACKSMITH_RANK{
  1294. int16 packetType;
  1295. } __attribute__((packed));
  1296. DEFINE_PACKET_HEADER(CZ_BLACKSMITH_RANK, 0x217);
  1297. struct PACKET_CZ_ALCHEMIST_RANK{
  1298. int16 packetType;
  1299. } __attribute__((packed));
  1300. DEFINE_PACKET_HEADER(CZ_ALCHEMIST_RANK, 0x218);
  1301. struct RANKLIST{
  1302. char names[10][NAME_LENGTH];
  1303. uint32 points[10];
  1304. } __attribute__((packed));
  1305. struct PACKET_ZC_BLACKSMITH_RANK{
  1306. int16 packetType;
  1307. RANKLIST list;
  1308. } __attribute__((packed));
  1309. DEFINE_PACKET_HEADER(ZC_BLACKSMITH_RANK, 0x219);
  1310. struct PACKET_ZC_ALCHEMIST_RANK{
  1311. int16 packetType;
  1312. RANKLIST list;
  1313. } __attribute__((packed));
  1314. DEFINE_PACKET_HEADER(ZC_ALCHEMIST_RANK, 0x21a);
  1315. struct PACKET_ZC_BLACKSMITH_POINT{
  1316. int16 packetType;
  1317. uint32 points;
  1318. uint32 points_total;
  1319. } __attribute__((packed));
  1320. DEFINE_PACKET_HEADER(ZC_BLACKSMITH_POINT, 0x21b);
  1321. struct PACKET_ZC_ALCHEMIST_POINT{
  1322. int16 packetType;
  1323. uint32 points;
  1324. uint32 points_total;
  1325. } __attribute__((packed));
  1326. DEFINE_PACKET_HEADER(ZC_ALCHEMIST_POINT, 0x21c);
  1327. struct PACKET_ZC_TAEKWON_POINT{
  1328. int16 packetType;
  1329. uint32 points;
  1330. uint32 points_total;
  1331. } __attribute__((packed));
  1332. DEFINE_PACKET_HEADER(ZC_TAEKWON_POINT, 0x224);
  1333. struct PACKET_CZ_TAEKWON_RANK{
  1334. int16 packetType;
  1335. } __attribute__((packed));
  1336. DEFINE_PACKET_HEADER(CZ_TAEKWON_RANK, 0x225);
  1337. struct PACKET_ZC_TAEKWON_RANK{
  1338. int16 packetType;
  1339. RANKLIST list;
  1340. } __attribute__((packed));
  1341. DEFINE_PACKET_HEADER(ZC_TAEKWON_RANK, 0x226);
  1342. struct PACKET_ZC_KILLER_POINT{
  1343. int16 packetType;
  1344. uint32 points;
  1345. uint32 points_total;
  1346. } __attribute__((packed));
  1347. DEFINE_PACKET_HEADER(ZC_KILLER_POINT, 0x236);
  1348. struct PACKET_CZ_KILLER_RANK{
  1349. int16 packetType;
  1350. } __attribute__((packed));
  1351. DEFINE_PACKET_HEADER(CZ_KILLER_RANK, 0x237);
  1352. struct PACKET_ZC_KILLER_RANK{
  1353. int16 packetType;
  1354. RANKLIST list;
  1355. } __attribute__((packed));
  1356. DEFINE_PACKET_HEADER(ZC_KILLER_RANK, 0x238);
  1357. struct PACKET_CZ_REQ_RANKING{
  1358. int16 packetType;
  1359. uint16 type;
  1360. } __attribute__((packed));
  1361. DEFINE_PACKET_HEADER(CZ_REQ_RANKING, 0x97c);
  1362. struct PACKET_ZC_ACK_RANKING_sub{
  1363. char name[NAME_LENGTH];
  1364. uint32 points;
  1365. } __attribute__((packed));
  1366. struct PACKET_ZC_ACK_RANKING{
  1367. int16 packetType;
  1368. uint16 type;
  1369. RANKLIST list;
  1370. uint32 mypoints;
  1371. } __attribute__((packed));
  1372. DEFINE_PACKET_HEADER(ZC_ACK_RANKING, 0x97d);
  1373. struct PACKET_ZC_UPDATE_RANKING_POINT{
  1374. int16 packetType;
  1375. uint16 type;
  1376. uint32 points;
  1377. uint32 points_total;
  1378. } __attribute__((packed));
  1379. DEFINE_PACKET_HEADER(ZC_UPDATE_RANKING_POINT, 0x97e);
  1380. struct PACKET_ZC_ACK_RANKING2{
  1381. int16 packetType;
  1382. uint16 type;
  1383. uint32 CIDs[10];
  1384. uint32 points[10];
  1385. uint32 mypoints;
  1386. } __attribute__((packed));
  1387. DEFINE_PACKET_HEADER(ZC_ACK_RANKING2, 0xaf6);
  1388. struct PACKET_CZ_LESSEFFECT{
  1389. int16 packetType;
  1390. int32 state;
  1391. } __attribute__((packed));
  1392. DEFINE_PACKET_HEADER(CZ_LESSEFFECT, 0x21d);
  1393. struct PACKET_CZ_ACTIVE_QUEST{
  1394. int16 packetType;
  1395. uint32 quest_id;
  1396. uint8 active;
  1397. } __attribute__((packed));
  1398. DEFINE_PACKET_HEADER(CZ_ACTIVE_QUEST, 0x2b6);
  1399. struct PACKET_CZ_JOIN_BABY{
  1400. int16 packetType;
  1401. uint32 father_AID;
  1402. uint32 mother_AID;
  1403. uint32 accepted;
  1404. } __attribute__((packed));
  1405. DEFINE_PACKET_HEADER(CZ_JOIN_BABY, 0x1f7);
  1406. struct PACKET_CZ_AUCTION_ITEM_SEARCH{
  1407. int16 packetType;
  1408. uint16 type;
  1409. uint32 auction_id;
  1410. char text[24];
  1411. uint16 page;
  1412. } __attribute__((packed));
  1413. DEFINE_PACKET_HEADER(CZ_AUCTION_ITEM_SEARCH, 0x251);
  1414. struct PACKET_CZ_AUCTION_BUY{
  1415. int16 packetType;
  1416. uint32 auction_id;
  1417. uint32 money;
  1418. } __attribute__((packed));
  1419. DEFINE_PACKET_HEADER(CZ_AUCTION_BUY, 0x24f);
  1420. struct PACKET_CZ_AUCTION_ADD{
  1421. int16 packetType;
  1422. uint32 now_money;
  1423. uint32 max_money;
  1424. uint16 hours;
  1425. } __attribute__((packed));
  1426. DEFINE_PACKET_HEADER(CZ_AUCTION_ADD, 0x24d);
  1427. struct PACKET_ZC_DRESSROOM_OPEN{
  1428. int16 packetType;
  1429. uint16 view;
  1430. } __attribute__((packed));
  1431. DEFINE_PACKET_HEADER(ZC_DRESSROOM_OPEN, 0xa02);
  1432. struct PACKET_ZC_ROOM_NEWENTRY {
  1433. int16 packetType;
  1434. uint16 packetSize;
  1435. int32 owner;
  1436. int32 id;
  1437. uint16 limit;
  1438. uint16 users;
  1439. uint8 type;
  1440. char title[];
  1441. } __attribute__((packed));
  1442. DEFINE_PACKET_HEADER(ZC_ROOM_NEWENTRY, 0xd7);
  1443. struct PACKET_ZC_MONSTER_INFO {
  1444. int16 packetType;
  1445. uint16 class_;
  1446. uint16 level;
  1447. uint16 size;
  1448. uint32 hp;
  1449. int16 def;
  1450. uint16 race;
  1451. int16 mdef;
  1452. uint16 element;
  1453. uint8 water;
  1454. uint8 earth;
  1455. uint8 fire;
  1456. uint8 wind;
  1457. uint8 poison;
  1458. uint8 holy;
  1459. uint8 shadow;
  1460. uint8 ghost;
  1461. uint8 undead;
  1462. } __attribute__((packed));
  1463. DEFINE_PACKET_HEADER(ZC_MONSTER_INFO, 0x18c);
  1464. #if PACKETVER >= 20180221
  1465. struct PACKET_ZC_ACK_REQNAME_BYGID {
  1466. int16 packetType;
  1467. uint16 flag;
  1468. uint32 CID;
  1469. char name[NAME_LENGTH];
  1470. } __attribute__((packed));
  1471. DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_BYGID, 0xaf7);
  1472. #else
  1473. struct PACKET_ZC_ACK_REQNAME_BYGID {
  1474. int16 packetType;
  1475. uint32 CID;
  1476. char name[NAME_LENGTH];
  1477. } __attribute__((packed));
  1478. DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_BYGID, 0x194);
  1479. #endif
  1480. struct PACKET_ZC_PET_ACT {
  1481. int16 packetType;
  1482. uint32 GID;
  1483. int32 data;
  1484. } __attribute__((packed));
  1485. DEFINE_PACKET_HEADER(ZC_PET_ACT, 0x1aa);
  1486. struct PACKET_ZC_COMBODELAY {
  1487. int16 packetType;
  1488. uint32 AID;
  1489. uint32 delay;
  1490. } __attribute__((packed));
  1491. DEFINE_PACKET_HEADER(ZC_COMBODELAY, 0x1d2);
  1492. struct PACKET_ZC_BLADESTOP {
  1493. int16 packetType;
  1494. uint32 srcId;
  1495. uint32 targetId;
  1496. uint32 flag;
  1497. } __attribute__((packed));
  1498. DEFINE_PACKET_HEADER(ZC_BLADESTOP, 0x1d1);
  1499. struct PACKET_ZC_MVP {
  1500. int16 packetType;
  1501. uint32 AID;
  1502. } __attribute__((packed));
  1503. DEFINE_PACKET_HEADER(ZC_MVP, 0x10c);
  1504. struct PACKET_ZC_MVP_GETTING_SPECIAL_EXP {
  1505. int16 packetType;
  1506. uint32 exp;
  1507. } __attribute__((packed));
  1508. DEFINE_PACKET_HEADER(ZC_MVP_GETTING_SPECIAL_EXP, 0x10b);
  1509. struct PACKET_ZC_THROW_MVPITEM {
  1510. int16 packetType;
  1511. } __attribute__((packed));
  1512. DEFINE_PACKET_HEADER(ZC_THROW_MVPITEM, 0x10d);
  1513. struct PACKET_ZC_UPDATE_MAPINFO{
  1514. int16 packetType;
  1515. int16 x;
  1516. int16 y;
  1517. int16 type;
  1518. char mapname[MAP_NAME_LENGTH_EXT];
  1519. } __attribute__((packed));
  1520. DEFINE_PACKET_HEADER(ZC_UPDATE_MAPINFO, 0x192);
  1521. struct PACKET_CZ_REQ_ENTER_ROOM{
  1522. int16 packetType;
  1523. uint32 chat_id;
  1524. char password[8];
  1525. } __attribute__((packed));
  1526. DEFINE_PACKET_HEADER(CZ_REQ_ENTER_ROOM, 0xd9);
  1527. struct PACKET_CZ_CHANGE_CHATROOM{
  1528. int16 packetType;
  1529. uint16 packetSize;
  1530. uint16 limit;
  1531. uint8 type;
  1532. char password[8];
  1533. char title[];
  1534. } __attribute__((packed));
  1535. DEFINE_PACKET_HEADER(CZ_CHANGE_CHATROOM, 0xde);
  1536. struct PACKET_CZ_ADD_EXCHANGE_ITEM{
  1537. int16 packetType;
  1538. uint16 index;
  1539. int32 amount;
  1540. } __attribute__((packed));
  1541. DEFINE_PACKET_HEADER(CZ_ADD_EXCHANGE_ITEM, 0xe8);
  1542. struct PACKET_CZ_MOVE_ITEM_FROM_CART_TO_BODY{
  1543. int16 packetType;
  1544. uint16 index;
  1545. int32 amount;
  1546. } __attribute__((packed));
  1547. DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_CART_TO_BODY, 0x127);
  1548. struct PACKET_CZ_SELECT_WARPPOINT{
  1549. int16 packetType;
  1550. int16 skill_id;
  1551. char mapname[MAP_NAME_LENGTH_EXT];
  1552. } __attribute__((packed));
  1553. DEFINE_PACKET_HEADER(CZ_SELECT_WARPPOINT, 0x11b);
  1554. struct PACKET_CZ_INPUT_EDITDLG{
  1555. int16 packetType;
  1556. uint32 GID;
  1557. int32 value;
  1558. } __attribute__((packed));
  1559. DEFINE_PACKET_HEADER(CZ_INPUT_EDITDLG, 0x143);
  1560. struct PACKET_CZ_INPUT_EDITDLGSTR{
  1561. int16 packetType;
  1562. uint16 packetSize;
  1563. int32 GID;
  1564. char value[];
  1565. } __attribute__((packed));
  1566. DEFINE_PACKET_HEADER(CZ_INPUT_EDITDLGSTR, 0x1d5);
  1567. struct PACKET_CZ_CLOSE_DIALOG{
  1568. int16 packetType;
  1569. uint32 GID;
  1570. } __attribute__((packed));
  1571. DEFINE_PACKET_HEADER(CZ_CLOSE_DIALOG, 0x146);
  1572. struct PACKET_CZ_RESET{
  1573. int16 packetType;
  1574. uint16 type;
  1575. } __attribute__((packed));
  1576. DEFINE_PACKET_HEADER(CZ_RESET, 0x197);
  1577. struct PACKET_CZ_MOVE_ITEM_FROM_STORE_TO_CART{
  1578. int16 packetType;
  1579. uint16 index;
  1580. int32 amount;
  1581. } __attribute__((packed));
  1582. DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_STORE_TO_CART, 0x128);
  1583. struct PACKET_CZ_REQ_ITEMIDENTIFY{
  1584. int16 packetType;
  1585. uint16 index;
  1586. } __attribute__((packed));
  1587. DEFINE_PACKET_HEADER(CZ_REQ_ITEMIDENTIFY, 0x178);
  1588. // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
  1589. #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
  1590. #pragma pack( pop )
  1591. #endif
  1592. // Other packets without struct defined in this file
  1593. DEFINE_PACKET_HEADER(ZC_NOTIFY_CHAT, 0x8d)
  1594. DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d)
  1595. DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a)
  1596. DEFINE_PACKET_HEADER(ZC_MAKABLEITEMLIST, 0x18d)
  1597. DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e)
  1598. DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f)
  1599. #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
  1600. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0xb66)
  1601. #else
  1602. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x1fd)
  1603. #endif
  1604. DEFINE_PACKET_HEADER(ZC_NOTIFY_WEAPONITEMLIST, 0x221)
  1605. DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
  1606. DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
  1607. DEFINE_PACKET_HEADER(ZC_PC_CASH_POINT_ITEMLIST, 0x287)
  1608. DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
  1609. DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
  1610. DEFINE_PACKET_HEADER(CZ_SKILL_SELECT_RESPONSE, 0x443)
  1611. DEFINE_PACKET_HEADER(ZC_MYITEMLIST_BUYING_STORE, 0x813)
  1612. DEFINE_PACKET_HEADER(ZC_ACK_ITEMLIST_BUYING_STORE, 0x818)
  1613. DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
  1614. DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
  1615. DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
  1616. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CONNECTINFO, 0x988)
  1617. DEFINE_PACKET_HEADER(ZC_ACK_CLAN_LEAVE, 0x989)
  1618. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CHAT, 0x98e)
  1619. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_DEPOSIT, 0x9a7)
  1620. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_WITHDRAW, 0x9a9)
  1621. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_CHECK, 0x9ab)
  1622. DEFINE_PACKET_HEADER(CZ_REQ_OPEN_BANKING, 0x9b6)
  1623. DEFINE_PACKET_HEADER(CZ_REQ_CLOSE_BANKING, 0x9b8)
  1624. DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d)
  1625. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46)
  1626. DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
  1627. DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
  1628. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
  1629. DEFINE_PACKET_HEADER(ZC_GUILD_POSITION, 0x0afd)
  1630. DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
  1631. DEFINE_PACKET_HEADER(ZC_FEED_MER, 0x22f)
  1632. DEFINE_PACKET_HEADER(ZC_FEED_PET, 0x1a3)
  1633. #if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
  1634. DEFINE_PACKET_HEADER(ZC_WARPLIST, 0xabe)
  1635. #else
  1636. DEFINE_PACKET_HEADER(ZC_WARPLIST, 0x11c)
  1637. #endif
  1638. const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
  1639. const int16 MAX_INVENTORY_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_equip ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );
  1640. 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 ) );
  1641. 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 ) );
  1642. const int16 MAX_GUILD_STORAGE_LOG_PACKET = ( ( INT16_MAX - sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG ) ) / sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub ) );
  1643. #undef MAX_ITEM_OPTIONS
  1644. #undef UNAVAILABLE_STRUCT
  1645. #undef MAX_ITEMLIST
  1646. #undef MAX_ACHIEVEMENT_DB
  1647. #undef MAX_PACKET_POS
  1648. #undef DEFINE_PACKET_HEADER
  1649. #pragma warning( pop )
  1650. #endif /* PACKETS_HPP */