packets.hpp 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093
  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. struct PACKET_CZ_SELECTAUTOSPELL{
  1589. int16 packetType;
  1590. uint32 skill_id;
  1591. } __attribute__((packed));
  1592. DEFINE_PACKET_HEADER(CZ_SELECTAUTOSPELL, 0x1ce);
  1593. struct PACKET_CZ_REQ_ITEMCOMPOSITION_LIST{
  1594. int16 packetType;
  1595. uint16 index;
  1596. } __attribute__((packed));
  1597. DEFINE_PACKET_HEADER(CZ_REQ_ITEMCOMPOSITION_LIST, 0x17a);
  1598. struct PACKET_CZ_REQ_ITEMCOMPOSITION{
  1599. int16 packetType;
  1600. uint16 index_card;
  1601. uint16 index_equip;
  1602. } __attribute__((packed));
  1603. DEFINE_PACKET_HEADER(CZ_REQ_ITEMCOMPOSITION, 0x17c);
  1604. struct PACKET_CZ_LOCALBROADCAST{
  1605. int16 packetType;
  1606. uint16 packetSize;
  1607. char message[];
  1608. } __attribute__((packed));
  1609. DEFINE_PACKET_HEADER(CZ_LOCALBROADCAST, 0x19c);
  1610. struct PACKET_CZ_MOVE_ITEM_FROM_CART_TO_STORE{
  1611. int16 packetType;
  1612. uint16 index;
  1613. int32 amount;
  1614. } __attribute__((packed));
  1615. DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_CART_TO_STORE, 0x129);
  1616. #if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
  1617. struct PACKET_ZC_FRIENDS_STATE{
  1618. int16 packetType;
  1619. uint32 AID;
  1620. uint32 CID;
  1621. uint8 offline;
  1622. char name[NAME_LENGTH];
  1623. } __attribute__((packed));
  1624. DEFINE_PACKET_HEADER(ZC_FRIENDS_STATE, 0x206);
  1625. #else
  1626. struct PACKET_ZC_FRIENDS_STATE{
  1627. int16 packetType;
  1628. uint32 AID;
  1629. uint32 CID;
  1630. uint8 offline;
  1631. } __attribute__((packed));
  1632. DEFINE_PACKET_HEADER(ZC_FRIENDS_STATE, 0x206);
  1633. #endif
  1634. struct PACKET_CZ_MAKE_GROUP{
  1635. int16 packetType;
  1636. char name[NAME_LENGTH];
  1637. } __attribute__((packed));
  1638. DEFINE_PACKET_HEADER(CZ_MAKE_GROUP, 0xf9);
  1639. struct PACKET_CZ_MAKE_GROUP2{
  1640. int16 packetType;
  1641. char name[NAME_LENGTH];
  1642. uint8 item_pickup;
  1643. uint8 item_share;
  1644. } __attribute__((packed));
  1645. DEFINE_PACKET_HEADER(CZ_MAKE_GROUP2, 0x1e8);
  1646. struct PACKET_CZ_GM_CHECKER{
  1647. int16 packetType;
  1648. char mapname[MAP_NAME_LENGTH_EXT];
  1649. } __attribute__((packed));
  1650. DEFINE_PACKET_HEADER(CZ_GM_CHECKER, 0xc0b);
  1651. struct PACKET_ZC_GM_CHECKER{
  1652. int16 packetType;
  1653. int16 result;
  1654. } __attribute__((packed));
  1655. DEFINE_PACKET_HEADER(ZC_GM_CHECKER, 0xc0c);
  1656. struct PACKET_ZC_CONFIG_NOTIFY {
  1657. int16 packetType;
  1658. uint8 flag;
  1659. } __attribute__((packed));
  1660. DEFINE_PACKET_HEADER(ZC_CONFIG_NOTIFY, 0x2da);
  1661. struct PACKET_ZC_CONGRATULATION {
  1662. int16 packetType;
  1663. int32 GID;
  1664. } __attribute__((packed));
  1665. DEFINE_PACKET_HEADER(ZC_CONGRATULATION, 0x1ea);
  1666. struct PACKET_ZC_DIVORCE{
  1667. int16 packetType;
  1668. char name[NAME_LENGTH];
  1669. } __attribute__((packed));
  1670. DEFINE_PACKET_HEADER(ZC_DIVORCE, 0x205);
  1671. struct PACKET_ZC_EMOTION {
  1672. int16 packetType;
  1673. int32 GID;
  1674. uint8 type;
  1675. } __attribute__((packed));
  1676. DEFINE_PACKET_HEADER(ZC_EMOTION, 0xc0);
  1677. struct PACKET_ZC_MSG {
  1678. int16 packetType;
  1679. uint16 msgId;
  1680. } __attribute__((packed));
  1681. DEFINE_PACKET_HEADER(ZC_MSG, 0x291);
  1682. struct PACKET_ZC_MSG_SKILL {
  1683. int16 packetType;
  1684. uint16 skillId;
  1685. int32 msgId;
  1686. } __attribute__((packed));
  1687. DEFINE_PACKET_HEADER(ZC_MSG_SKILL, 0x7e6);
  1688. struct PACKET_ZC_MSG_VALUE {
  1689. int16 packetType;
  1690. uint16 message;
  1691. int32 value;
  1692. } __attribute__((packed));
  1693. DEFINE_PACKET_HEADER(ZC_MSG_VALUE, 0x7e2);
  1694. struct PACKET_ZC_NOTIFY_MANNER_POINT_GIVEN {
  1695. int16 packetType;
  1696. uint8 type;
  1697. char name[NAME_LENGTH];
  1698. } __attribute__((packed));
  1699. DEFINE_PACKET_HEADER(ZC_NOTIFY_MANNER_POINT_GIVEN, 0x14b);
  1700. struct PACKET_ZC_NOTIFY_TIME {
  1701. int16 packetType;
  1702. uint32 time;
  1703. } __attribute__((packed));
  1704. DEFINE_PACKET_HEADER(ZC_NOTIFY_TIME, 0x7f);
  1705. struct PACKET_ZC_SETTING_WHISPER_PC {
  1706. int16 packetType;
  1707. uint8 type;
  1708. uint8 result;
  1709. } __attribute__((packed));
  1710. DEFINE_PACKET_HEADER(ZC_SETTING_WHISPER_PC, 0xd1);
  1711. struct PACKET_ZC_SETTING_WHISPER_STATE {
  1712. int16 packetType;
  1713. uint8 type;
  1714. uint8 result;
  1715. } __attribute__((packed));
  1716. DEFINE_PACKET_HEADER(ZC_SETTING_WHISPER_STATE, 0xd2);
  1717. struct PACKET_ZC_SKILLMSG {
  1718. int16 packetType;
  1719. int32 msgId;
  1720. } __attribute__((packed));
  1721. DEFINE_PACKET_HEADER(ZC_SKILLMSG, 0x215);
  1722. struct PACKET_CZ_REQ_EMOTION_EXPANSION{
  1723. int16 packetType;
  1724. uint8 unknown[4];
  1725. } __attribute__((packed));
  1726. DEFINE_PACKET_HEADER(CZ_REQ_EMOTION_EXPANSION, 0xbe9);
  1727. struct PACKET_ZC_DISAPPEAR_ENTRY{
  1728. int16 packetType;
  1729. int32 GID;
  1730. } __attribute__((packed));
  1731. DEFINE_PACKET_HEADER(ZC_DISAPPEAR_ENTRY, 0x132);
  1732. #if PACKETVER >= 20120618
  1733. struct PACKET_ZC_EFST_SET_ENTER{
  1734. uint16 packetType;
  1735. uint32 targetID;
  1736. uint16 type;
  1737. uint32 duration;
  1738. uint32 duration2;
  1739. int32 val1;
  1740. int32 val2;
  1741. int32 val3;
  1742. } __attribute__((packed));
  1743. DEFINE_PACKET_HEADER(ZC_EFST_SET_ENTER, 0x984)
  1744. #else
  1745. struct PACKET_ZC_EFST_SET_ENTER{
  1746. uint16 packetType;
  1747. uint32 targetID;
  1748. uint16 type;
  1749. uint32 duration;
  1750. int32 val1;
  1751. int32 val2;
  1752. int32 val3;
  1753. } __attribute__((packed));
  1754. DEFINE_PACKET_HEADER(ZC_EFST_SET_ENTER, 0x8ff)
  1755. #endif
  1756. struct PACKET_CZ_SETTING_WHISPER_STATE{
  1757. int16 packetType;
  1758. int8 type;
  1759. } __attribute__((packed));
  1760. DEFINE_PACKET_HEADER(CZ_SETTING_WHISPER_STATE, 0xd0);
  1761. struct PACKET_ZC_WHISPER_LIST_sub{
  1762. char name[NAME_LENGTH];
  1763. } __attribute__((packed));
  1764. struct PACKET_ZC_WHISPER_LIST{
  1765. int16 packetType;
  1766. uint16 packetSize;
  1767. PACKET_ZC_WHISPER_LIST_sub names[];
  1768. } __attribute__((packed));
  1769. DEFINE_PACKET_HEADER(ZC_WHISPER_LIST, 0xd4);
  1770. // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
  1771. #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
  1772. #pragma pack( pop )
  1773. #endif
  1774. // Other packets without struct defined in this file
  1775. DEFINE_PACKET_HEADER(ZC_NOTIFY_CHAT, 0x8d)
  1776. DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d)
  1777. DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a)
  1778. DEFINE_PACKET_HEADER(ZC_MAKABLEITEMLIST, 0x18d)
  1779. DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e)
  1780. DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f)
  1781. #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
  1782. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0xb66)
  1783. #else
  1784. DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x1fd)
  1785. #endif
  1786. DEFINE_PACKET_HEADER(ZC_NOTIFY_WEAPONITEMLIST, 0x221)
  1787. DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
  1788. DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
  1789. DEFINE_PACKET_HEADER(ZC_PC_CASH_POINT_ITEMLIST, 0x287)
  1790. DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
  1791. DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
  1792. DEFINE_PACKET_HEADER(CZ_SKILL_SELECT_RESPONSE, 0x443)
  1793. DEFINE_PACKET_HEADER(ZC_MYITEMLIST_BUYING_STORE, 0x813)
  1794. DEFINE_PACKET_HEADER(ZC_ACK_ITEMLIST_BUYING_STORE, 0x818)
  1795. DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
  1796. DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
  1797. DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
  1798. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CONNECTINFO, 0x988)
  1799. DEFINE_PACKET_HEADER(ZC_ACK_CLAN_LEAVE, 0x989)
  1800. DEFINE_PACKET_HEADER(ZC_NOTIFY_CLAN_CHAT, 0x98e)
  1801. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_DEPOSIT, 0x9a7)
  1802. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_WITHDRAW, 0x9a9)
  1803. DEFINE_PACKET_HEADER(CZ_REQ_BANKING_CHECK, 0x9ab)
  1804. DEFINE_PACKET_HEADER(CZ_REQ_OPEN_BANKING, 0x9b6)
  1805. DEFINE_PACKET_HEADER(CZ_REQ_CLOSE_BANKING, 0x9b8)
  1806. DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d)
  1807. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46)
  1808. DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
  1809. DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
  1810. DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
  1811. DEFINE_PACKET_HEADER(ZC_GUILD_POSITION, 0x0afd)
  1812. DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
  1813. DEFINE_PACKET_HEADER(ZC_FEED_MER, 0x22f)
  1814. DEFINE_PACKET_HEADER(ZC_FEED_PET, 0x1a3)
  1815. #if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
  1816. DEFINE_PACKET_HEADER(ZC_WARPLIST, 0xabe)
  1817. #else
  1818. DEFINE_PACKET_HEADER(ZC_WARPLIST, 0x11c)
  1819. #endif
  1820. DEFINE_PACKET_HEADER(ZC_MSG_COLOR, 0x9cd);
  1821. const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
  1822. const int16 MAX_INVENTORY_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_equip ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );
  1823. 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 ) );
  1824. 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 ) );
  1825. const int16 MAX_GUILD_STORAGE_LOG_PACKET = ( ( INT16_MAX - sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG ) ) / sizeof( struct PACKET_ZC_ACK_GUILDSTORAGE_LOG_sub ) );
  1826. #undef MAX_ITEM_OPTIONS
  1827. #undef UNAVAILABLE_STRUCT
  1828. #undef MAX_ITEMLIST
  1829. #undef MAX_ACHIEVEMENT_DB
  1830. #undef MAX_PACKET_POS
  1831. #undef DEFINE_PACKET_HEADER
  1832. #pragma warning( pop )
  1833. #endif /* PACKETS_HPP */