From 252e873e98bbb71a8527fb7561099ef100e4485b Mon Sep 17 00:00:00 2001 From: Lemongrass3110 Date: Mon, 9 May 2022 18:08:55 +0200 Subject: [PATCH] Update packets to Hercules v2022.04.07 (#6933) Syncs the packet structures to HerculesWS/Hercules@9d0de90 Thanks to @4144 and @Asheraf for maintaining it. --- src/map/clif.cpp | 130 +++---- src/map/clif_packetdb.hpp | 45 +-- src/map/packets.hpp | 1 - src/map/packets_struct.hpp | 721 ++++++++++++++++++++++++------------- 4 files changed, 563 insertions(+), 334 deletions(-) diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 199c280b26..d1228ff119 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -2370,9 +2370,9 @@ void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) { return; } - const struct packet_npc_market_purchase *p = (struct packet_npc_market_purchase *)RFIFOP( fd, 0 ); + const struct PACKET_CZ_NPC_MARKET_PURCHASE* p = (struct PACKET_CZ_NPC_MARKET_PURCHASE*)RFIFOP( fd, 0 ); - int count = ( p->PacketLength - sizeof( struct packet_npc_market_purchase ) ) / sizeof( struct packet_npc_market_purchase_sub ); + int count = ( p->PacketLength - sizeof( struct PACKET_CZ_NPC_MARKET_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_MARKET_PURCHASE_sub ); std::vector items; @@ -7653,7 +7653,7 @@ void clif_vendinglist( struct map_session_data* sd, struct map_session_data* vsd struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC* p = (struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC*)WFIFOP( fd, 0 ); - p->packetType = vendinglistType; + p->packetType = HEADER_ZC_PC_PURCHASE_ITEMLIST_FROMMC; p->packetLength = len; p->AID = vsd->status.account_id; #if PACKETVER >= 20100105 @@ -7750,7 +7750,7 @@ void clif_openvending( struct map_session_data* sd, int id, struct s_vending* ve struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p = (struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *)WFIFOP( fd, 0 ); - p->packetType = openvendingType; + p->packetType = HEADER_ZC_PC_PURCHASE_MYITEMLIST; p->packetLength = len; p->AID = id; @@ -10076,9 +10076,9 @@ void clif_name( struct block_list* src, struct block_list *bl, send_target targe case BL_PET: case BL_NPC: case BL_ELEM: { - PACKET_ZC_ACK_REQNAME_TITLE packet = { 0 }; + PACKET_ZC_ACK_REQNAMEALL_NPC packet = { 0 }; - packet.packet_id = HEADER_ZC_ACK_REQNAME_TITLE; + packet.packet_id = HEADER_ZC_ACK_REQNAMEALL_NPC; packet.gid = bl->id; switch (bl->type) { @@ -10153,9 +10153,9 @@ void clif_name( struct block_list* src, struct block_list *bl, send_target targe clif_send(&packet, sizeof(packet), src, target); } else { - PACKET_ZC_ACK_REQNAME_TITLE packet = { 0 }; + PACKET_ZC_ACK_REQNAMEALL_NPC packet = { 0 }; - packet.packet_id = HEADER_ZC_ACK_REQNAME_TITLE; + packet.packet_id = HEADER_ZC_ACK_REQNAMEALL_NPC; packet.gid = bl->id; safestrncpy(packet.name, md->name, NAME_LENGTH); @@ -19766,9 +19766,9 @@ static void clif_loadConfirm( struct map_session_data *sd ){ #if PACKETVER_MAIN_NUM >= 20190403 || PACKETVER_RE_NUM >= 20190320 || PACKETVER_ZERO_NUM >= 20190410 nullpo_retv( sd ); - struct PACKET_ZC_LOAD_CONFIRM p; + struct PACKET_ZC_NOTIFY_ACTORINIT p = {}; - p.packetType = HEADER_ZC_LOAD_CONFIRM; + p.packetType = HEADER_ZC_NOTIFY_ACTORINIT; clif_send( &p, sizeof(p), &sd->bl, SELF ); @@ -21093,10 +21093,10 @@ void clif_hat_effects( struct map_session_data* sd, struct block_list* bl, enum return; } - struct PACKET_ZC_HAT_EFFECT* p = (struct PACKET_ZC_HAT_EFFECT*)packet_buffer; + struct PACKET_ZC_EQUIPMENT_EFFECT* p = (struct PACKET_ZC_EQUIPMENT_EFFECT*)packet_buffer; - p->packetType = HEADER_ZC_HAT_EFFECT; - p->packetLength = (int16)( sizeof( struct PACKET_ZC_HAT_EFFECT ) + sizeof( int16 ) * tsd->hatEffects.size() ); + p->packetType = HEADER_ZC_EQUIPMENT_EFFECT; + p->packetLength = (int16)( sizeof( struct PACKET_ZC_EQUIPMENT_EFFECT ) + sizeof( int16 ) * tsd->hatEffects.size() ); p->aid = tsd->bl.id; p->status = 1; @@ -21112,10 +21112,10 @@ void clif_hat_effect_single( struct map_session_data* sd, uint16 effectId, bool #if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO) nullpo_retv( sd ); - struct PACKET_ZC_HAT_EFFECT* p = (struct PACKET_ZC_HAT_EFFECT*)packet_buffer; + struct PACKET_ZC_EQUIPMENT_EFFECT* p = (struct PACKET_ZC_EQUIPMENT_EFFECT*)packet_buffer; - p->packetType = HEADER_ZC_HAT_EFFECT; - p->packetLength = (int16)( sizeof( struct PACKET_ZC_HAT_EFFECT ) + sizeof( int16 ) ); + p->packetType = HEADER_ZC_EQUIPMENT_EFFECT; + p->packetLength = (int16)( sizeof( struct PACKET_ZC_EQUIPMENT_EFFECT ) + sizeof( int16 ) ); p->aid = sd->bl.id; p->status = enable; p->effects[0] = effectId; @@ -22001,7 +22001,7 @@ void clif_parse_equipswitch_request_single( int fd, struct map_session_data* sd void clif_parse_StartUseSkillToId( int fd, struct map_session_data* sd ){ #if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 - const struct PACKET_CZ_START_USE_SKILL *p = (struct PACKET_CZ_START_USE_SKILL *)RFIFOP( fd, 0 ); + const struct PACKET_CZ_USE_SKILL_START* p = (struct PACKET_CZ_USE_SKILL_START*)RFIFOP( fd, 0 ); // Only rolling cutter is supported for now if( p->skillId != GC_ROLLINGCUTTER ){ @@ -22024,7 +22024,7 @@ void clif_parse_StartUseSkillToId( int fd, struct map_session_data* sd ){ void clif_parse_StopUseSkillToId( int fd, struct map_session_data* sd ){ #if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 - const struct PACKET_CZ_STOP_USE_SKILL *p = (struct PACKET_CZ_STOP_USE_SKILL *)RFIFOP( fd, 0 ); + const struct PACKET_CZ_USE_SKILL_END* p = (struct PACKET_CZ_USE_SKILL_END*)RFIFOP( fd, 0 ); // Not running if( sd->skill_keep_using.skill_id == 0 ){ @@ -22058,9 +22058,9 @@ void clif_ping( struct map_session_data* sd ){ return; } - struct PACKET_ZC_PING p; + struct PACKET_ZC_PING_LIVE p = {}; - p.packetType = HEADER_ZC_PING; + p.packetType = HEADER_ZC_PING_LIVE; clif_send( &p, sizeof( p ), &sd->bl, SELF ); #endif @@ -22098,9 +22098,9 @@ void clif_refineui_open( struct map_session_data* sd ){ #if PACKETVER >= 20161012 nullpo_retv( sd ); - struct PACKET_ZC_REFINE_OPEN_WINDOW p; + struct PACKET_ZC_OPEN_REFINING_UI p = {}; - p.packetType = HEADER_ZC_REFINE_OPEN_WINDOW; + p.packetType = HEADER_ZC_OPEN_REFINING_UI; clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -22153,10 +22153,10 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){ return; } - struct PACKET_ZC_REFINE_ADD_ITEM* p = (struct PACKET_ZC_REFINE_ADD_ITEM*)packet_buffer; + struct PACKET_ZC_REFINING_MATERIAL_LIST* p = (struct PACKET_ZC_REFINING_MATERIAL_LIST*)packet_buffer; - p->packetType = HEADER_ZC_REFINE_ADD_ITEM; - p->packtLength = sizeof( struct PACKET_ZC_REFINE_ADD_ITEM ); + p->packetType = HEADER_ZC_REFINING_MATERIAL_LIST; + p->packetLength = sizeof( struct PACKET_ZC_REFINING_MATERIAL_LIST_SUB ); p->itemIndex = client_index( index ); std::shared_ptr info = refine_db.findLevelInfo( *id, *item ); @@ -22176,13 +22176,13 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){ p->req[count].itemId = client_nameid( cost->nameid ); p->req[count].chance = (uint8)( cost->chance / 100 ); p->req[count].zeny = cost->zeny; - p->packtLength += sizeof( struct PACKET_ZC_REFINE_ADD_ITEM_SUB ); + p->packetLength += sizeof( struct PACKET_ZC_REFINING_MATERIAL_LIST_SUB ); count++; } } } - clif_send( p, p->packtLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd->bl, SELF ); #endif } @@ -22192,7 +22192,7 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){ */ void clif_parse_refineui_add( int fd, struct map_session_data* sd ){ #if PACKETVER >= 20161012 - struct PACKET_CZ_REFINE_ADD_ITEM* p = (struct PACKET_CZ_REFINE_ADD_ITEM*)RFIFOP( fd, 0 ); + struct PACKET_CZ_REFINING_SELECT_ITEM* p = (struct PACKET_CZ_REFINING_SELECT_ITEM*)RFIFOP( fd, 0 ); uint16 index = server_index( p->index ); @@ -22217,7 +22217,7 @@ void clif_parse_refineui_add( int fd, struct map_session_data* sd ){ */ void clif_parse_refineui_refine( int fd, struct map_session_data* sd ){ #if PACKETVER >= 20161012 - struct PACKET_CZ_REFINE_ITEM_REQUEST* p = (struct PACKET_CZ_REFINE_ITEM_REQUEST*)RFIFOP( fd, 0 ); + struct PACKET_CZ_REQ_REFINING* p = (struct PACKET_CZ_REQ_REFINING*)RFIFOP( fd, 0 ); uint16 index = server_index( p->index ); t_itemid material = p->itemId; @@ -22371,13 +22371,13 @@ void clif_parse_refineui_refine( int fd, struct map_session_data* sd ){ void clif_unequipall_reply( struct map_session_data* sd, bool failed ){ #if PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 - struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK p = {}; + struct PACKET_ZC_ACK_TAKEOFF_EQUIP_ALL p = {}; - p.PacketType = HEADER_ZC_TAKEOFF_EQUIP_ALL_ACK; + p.PacketType = HEADER_ZC_ACK_TAKEOFF_EQUIP_ALL; p.result = failed; - clif_send( &p, sizeof( struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK ), &sd->bl, SELF ); -#endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 + clif_send( &p, sizeof( p ), &sd->bl, SELF ); +#endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 } void clif_parse_unequipall( int fd, struct map_session_data* sd ){ @@ -22567,9 +22567,9 @@ void clif_inventory_expansion_info( struct map_session_data* sd ){ #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 nullpo_retv( sd ); - struct PACKET_ZC_INVENTORY_EXPANSION_INFO p = {}; + struct PACKET_ZC_EXTEND_BODYITEM_SIZE p = {}; - p.packetType = HEADER_ZC_INVENTORY_EXPANSION_INFO; + p.packetType = HEADER_ZC_EXTEND_BODYITEM_SIZE; p.expansionSize = sd->status.inventory_slots - INVENTORY_BASE_SIZE; clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -22588,9 +22588,9 @@ void clif_inventory_expansion_response( struct map_session_data* sd, e_inventory #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 nullpo_retv( sd ); - struct PACKET_ZC_ACK_INVENTORY_EXPAND p = {}; + struct PACKET_ZC_ACK_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE p = {}; - p.packetType = HEADER_ZC_ACK_INVENTORY_EXPAND; + p.packetType = HEADER_ZC_ACK_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE; p.result = (uint8)response; p.itemId = sd->state.inventory_expansion_confirmation; @@ -22671,9 +22671,9 @@ void clif_inventory_expansion_result( struct map_session_data* sd, e_inventory_e #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 nullpo_retv( sd ); - struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT p = {}; + struct PACKET_ZC_ACK_EXTEND_BODYITEM_SIZE p = {}; - p.packetType = HEADER_ZC_ACK_INVENTORY_EXPAND_RESULT; + p.packetType = HEADER_ZC_ACK_EXTEND_BODYITEM_SIZE; p.result = (uint8)result; clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -22756,14 +22756,14 @@ void clif_barter_open( struct map_session_data& sd, struct npc_data& nd ){ sd.state.barter_open = true; - struct PACKET_ZC_NPC_BARTER_OPEN* p = (struct PACKET_ZC_NPC_BARTER_OPEN*)packet_buffer; + struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO* p = (struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO*)packet_buffer; - p->packetType = HEADER_ZC_NPC_BARTER_OPEN; - p->packetLength = (int16)sizeof( struct PACKET_ZC_NPC_BARTER_OPEN ); + p->packetType = HEADER_ZC_NPC_BARTER_MARKET_ITEMINFO; + p->packetLength = (int16)sizeof( struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO ); int16 count = 0; for( const auto& itemPair : barter->items ){ - struct PACKET_ZC_NPC_BARTER_OPEN_sub* item = &p->list[count]; + struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO_sub* item = &p->list[count]; struct item_data* id = itemdb_exists( itemPair.second->nameid ); item->nameid = client_nameid( id->nameid ); @@ -22838,9 +22838,9 @@ void clif_parse_barter_buy( int fd, struct map_session_data* sd ){ return; } - struct PACKET_CZ_NPC_BARTER_PURCHASE* p = (struct PACKET_CZ_NPC_BARTER_PURCHASE*)RFIFOP( fd, 0 ); + struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE* p = (struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE*)RFIFOP( fd, 0 ); - uint16 entries = ( p->packetLength - sizeof( struct PACKET_CZ_NPC_BARTER_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_BARTER_PURCHASE_sub ); + uint16 entries = ( p->packetLength - sizeof( struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE_sub ); // Empty purchase list if( entries == 0 ){ @@ -22905,15 +22905,15 @@ void clif_barter_extended_open( struct map_session_data& sd, struct npc_data& nd sd.state.barter_extended_open = true; - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN* p = (struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN*)packet_buffer; + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO* p = (struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO*)packet_buffer; - p->packetType = HEADER_ZC_NPC_EXPANDED_BARTER_OPEN; - p->packetLength = (int16)sizeof( struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN ); + p->packetType = HEADER_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO; + p->packetLength = (int16)sizeof( struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO ); p->items_count = 0; for( const auto& itemPair : barter->items ){ // Needs dynamic calculation, because of variable currencies - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub* item = (struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub*)( ( (uint8*)p ) + p->packetLength ); + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub* item = (struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub*)( ( (uint8*)p ) + p->packetLength ); struct item_data* id = itemdb_exists( itemPair.second->nameid ); item->nameid = client_nameid( id->nameid ); @@ -22938,7 +22938,7 @@ void clif_barter_extended_open( struct map_session_data& sd, struct npc_data& nd for( const auto& requirementPair : itemPair.second->requirements ){ // Needs dynamic calculation, because of variable currencies - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2* req = (struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2*)( ( (uint8*)p ) + p->packetLength ); + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2* req = (struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2*)( ( (uint8*)p ) + p->packetLength ); std::shared_ptr requirement = requirementPair.second; req->nameid = requirement->nameid; @@ -22998,9 +22998,9 @@ void clif_parse_barter_extended_buy( int fd, struct map_session_data* sd ){ return; } - struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE* p = (struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE*)RFIFOP( fd, 0 ); + struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE* p = (struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE*)RFIFOP( fd, 0 ); - uint16 entries = ( p->packetLength - sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE_sub ); + uint16 entries = ( p->packetLength - sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE_sub ); // Empty purchase list if( entries == 0 ){ @@ -23095,9 +23095,9 @@ void clif_laphine_synthesis_open( struct map_session_data *sd, std::shared_ptrstate.laphine_synthesis = synthesis->item_id; - struct PACKET_ZC_LAPINEDDUKDDAK_OPEN p = {}; + struct PACKET_ZC_RANDOM_COMBINE_ITEM_UI_OPEN p = {}; - p.packetType = HEADER_ZC_LAPINEDDUKDDAK_OPEN; + p.packetType = HEADER_ZC_RANDOM_COMBINE_ITEM_UI_OPEN; p.itemId = client_nameid( synthesis->item_id ); clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -23120,9 +23120,9 @@ void clif_laphine_synthesis_result( struct map_session_data* sd, enum e_laphine_ #if PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) nullpo_retv( sd ); - struct PACKET_ZC_LAPINEDDUKDDAK_RESULT p = {}; + struct PACKET_ZC_ACK_RANDOM_COMBINE_ITEM p = {}; - p.packetType = HEADER_ZC_LAPINEDDUKDDAK_RESULT; + p.packetType = HEADER_ZC_ACK_RANDOM_COMBINE_ITEM; p.result = result; clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -23135,7 +23135,7 @@ void clif_parse_laphine_synthesis( int fd, struct map_session_data* sd ){ return; } - struct PACKET_CZ_LAPINEDDUKDDAK_ACK* p = (struct PACKET_CZ_LAPINEDDUKDDAK_ACK*)RFIFOP( fd, 0 ); + struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM* p = (struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM*)RFIFOP( fd, 0 ); if( sd->state.laphine_synthesis != p->itemId ){ return; @@ -23147,7 +23147,7 @@ void clif_parse_laphine_synthesis( int fd, struct map_session_data* sd ){ return; } - size_t count = ( p->packetLength - sizeof( struct PACKET_CZ_LAPINEDDUKDDAK_ACK ) ) / sizeof( struct PACKET_CZ_LAPINEDDUKDDAK_ACK_sub ); + size_t count = ( p->packetLength - sizeof( struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM ) ) / sizeof( struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM_sub ); // Player sent more or less than actually required if( count != synthesis->requiredRequirements ){ @@ -23247,9 +23247,9 @@ void clif_laphine_upgrade_open( struct map_session_data* sd, std::shared_ptrstate.laphine_upgrade = upgrade->item_id; - struct PACKET_ZC_LAPINEUPGRADE_OPEN p = {}; + struct PACKET_ZC_RANDOM_UPGRADE_ITEM_UI_OPEN p = {}; - p.packetType = HEADER_ZC_LAPINEUPGRADE_OPEN; + p.packetType = HEADER_ZC_RANDOM_UPGRADE_ITEM_UI_OPEN; p.itemId = client_nameid( upgrade->item_id ); clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -23264,9 +23264,9 @@ void clif_parse_laphine_upgrade_close( int fd, struct map_session_data* sd ){ void clif_laphine_upgrade_result( struct map_session_data *sd, bool failed ){ #if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) - struct PACKET_ZC_LAPINEUPGRADE_RESULT p = {}; + struct PACKET_ZC_ACK_RANDOM_UPGRADE_ITEM p = {}; - p.packetType = HEADER_ZC_LAPINEUPGRADE_RESULT; + p.packetType = HEADER_ZC_ACK_RANDOM_UPGRADE_ITEM; p.result = failed; clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -23279,9 +23279,9 @@ static void clif_item_preview( struct map_session_data *sd, int16 index ){ struct item* item = &sd->inventory.u.items_inventory[index]; - struct PACKET_ZC_ITEM_PREVIEW p = {}; + struct PACKET_ZC_CHANGE_ITEM_OPTION p = {}; - p.packetType = HEADER_ZC_ITEM_PREVIEW; + p.packetType = HEADER_ZC_CHANGE_ITEM_OPTION; p.index = client_index( index ); #if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 p.isDamaged = item->attribute != 0; @@ -23303,7 +23303,7 @@ void clif_parse_laphine_upgrade( int fd, struct map_session_data* sd ){ return; } - struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM* p = (struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM*)RFIFOP( fd, 0 ); + struct PACKET_CZ_REQ_RANDOM_UPGRADE_ITEM* p = (struct PACKET_CZ_REQ_RANDOM_UPGRADE_ITEM*)RFIFOP( fd, 0 ); if( sd->state.laphine_upgrade != p->itemId ){ return; diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index fa52b78573..515b5158fb 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -59,7 +59,6 @@ packet(0x0092,28); packet(0x0093,2); parseable_packet(0x0094,6,clif_parse_GetCharNameRequest,2); - packet( HEADER_ZC_ACK_REQNAME_TITLE, sizeof( PACKET_ZC_ACK_REQNAME_TITLE ) ); parseable_packet(0x0096,-1,clif_parse_WisMessage,2,4,28); packet(0x0097,-1); packet(0x0098,3); @@ -213,10 +212,8 @@ parseable_packet(0x0130,6,clif_parse_VendingListReq,2); packet(0x0131,86); packet(0x0132,6); - packet( vendinglistType, -1 ); parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8); packet(0x0135,7); - packet(openvendingType,-1); packet(0x0137,6); packet(0x0138,3); packet(0x0139,16); @@ -2205,10 +2202,6 @@ packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11 #endif -#if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO) - packet( HEADER_ZC_HAT_EFFECT, -1 ); -#endif - // 2015-05-13aRagexe #if PACKETVER >= 20150513 // RODEX Mail system @@ -2293,8 +2286,8 @@ #endif #if PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) - parseable_packet( HEADER_CZ_LAPINEDDUKDDAK_CLOSE, sizeof( struct PACKET_CZ_LAPINEDDUKDDAK_CLOSE ), clif_parse_laphine_synthesis_close, 0 ); - parseable_packet( HEADER_CZ_LAPINEDDUKDDAK_ACK, -1, clif_parse_laphine_synthesis, 0 ); + parseable_packet( HEADER_CZ_RANDOM_COMBINE_ITEM_UI_CLOSE, sizeof( struct PACKET_CZ_RANDOM_COMBINE_ITEM_UI_CLOSE ), clif_parse_laphine_synthesis_close, 0 ); + parseable_packet( HEADER_CZ_REQ_RANDOM_COMBINE_ITEM, -1, clif_parse_laphine_synthesis, 0 ); #endif // 2016-06-22aRagexeRE @@ -2304,11 +2297,9 @@ // 2016-10-12aRagexeRE #if PACKETVER >= 20161012 - packet( HEADER_ZC_REFINE_OPEN_WINDOW, sizeof( struct PACKET_ZC_REFINE_OPEN_WINDOW ) ); - parseable_packet( HEADER_CZ_REFINE_ADD_ITEM, sizeof( struct PACKET_CZ_REFINE_ADD_ITEM ), clif_parse_refineui_add, 0 ); - packet( HEADER_ZC_REFINE_ADD_ITEM, -1 ); - parseable_packet( HEADER_CZ_REFINE_ITEM_REQUEST, sizeof( struct PACKET_CZ_REFINE_ITEM_REQUEST ), clif_parse_refineui_refine, 0 ); - parseable_packet( HEADER_CZ_REFINE_WINDOW_CLOSE, sizeof( struct PACKET_CZ_REFINE_WINDOW_CLOSE ), clif_parse_refineui_close, 0 ); + parseable_packet( HEADER_CZ_REFINING_SELECT_ITEM, sizeof( struct PACKET_CZ_REFINING_SELECT_ITEM ), clif_parse_refineui_add, 0 ); + parseable_packet( HEADER_CZ_REQ_REFINING, sizeof( struct PACKET_CZ_REQ_REFINING ), clif_parse_refineui_refine, 0 ); + parseable_packet( HEADER_CZ_CLOSE_REFINING_UI, sizeof( struct PACKET_CZ_CLOSE_REFINING_UI ), clif_parse_refineui_close, 0 ); #endif // 2016-10-26bRagexeRE @@ -2350,8 +2341,8 @@ #endif #if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) - parseable_packet( HEADER_CZ_LAPINEUPGRADE_CLOSE, sizeof( struct PACKET_CZ_LAPINEUPGRADE_CLOSE ), clif_parse_laphine_upgrade_close, 0 ); - parseable_packet( HEADER_CZ_LAPINEUPGRADE_MAKE_ITEM, sizeof( struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM ), clif_parse_laphine_upgrade, 0 ); + parseable_packet( HEADER_CZ_RANDOM_UPGRADE_ITEM_UI_CLOSE, sizeof( struct PACKET_CZ_RANDOM_UPGRADE_ITEM_UI_CLOSE ), clif_parse_laphine_upgrade_close, 0 ); + parseable_packet( HEADER_CZ_REQ_RANDOM_UPGRADE_ITEM, sizeof( struct PACKET_CZ_REQ_RANDOM_UPGRADE_ITEM ), clif_parse_laphine_upgrade, 0 ); #endif // 2017-08-30bRagexeRE @@ -2407,23 +2398,23 @@ #endif #if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 - parseable_packet( 0x0B10, sizeof( struct PACKET_CZ_START_USE_SKILL ), clif_parse_StartUseSkillToId, 0 ); - parseable_packet( 0x0B11, sizeof( struct PACKET_CZ_STOP_USE_SKILL ), clif_parse_StopUseSkillToId, 0 ); + parseable_packet( HEADER_CZ_USE_SKILL_START, sizeof( struct PACKET_CZ_USE_SKILL_START ), clif_parse_StartUseSkillToId, 0 ); + parseable_packet( HEADER_CZ_USE_SKILL_END, sizeof( struct PACKET_CZ_USE_SKILL_END ), clif_parse_StopUseSkillToId, 0 ); #endif #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 - parseable_packet( HEADER_CZ_INVENTORY_EXPAND, sizeof( struct PACKET_CZ_INVENTORY_EXPAND ), clif_parse_inventory_expansion_request, 0 ); - parseable_packet( HEADER_CZ_INVENTORY_EXPAND_CONFIRMED, sizeof( struct PACKET_CZ_INVENTORY_EXPAND_CONFIRMED ), clif_parse_inventory_expansion_confirm, 0 ); - parseable_packet( HEADER_CZ_INVENTORY_EXPAND_REJECTED, sizeof( struct PACKET_CZ_INVENTORY_EXPAND_REJECTED ), clif_parse_inventory_expansion_reject, 0 ); + parseable_packet( HEADER_CZ_REQ_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE, sizeof( struct PACKET_CZ_REQ_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE ), clif_parse_inventory_expansion_request, 0 ); + parseable_packet( HEADER_CZ_REQ_EXTEND_BODYITEM_SIZE, sizeof( struct PACKET_CZ_REQ_EXTEND_BODYITEM_SIZE ), clif_parse_inventory_expansion_confirm, 0 ); + parseable_packet( HEADER_CZ_CLOSE_MSGBOX_EXTEND_BODYITEM_SIZE, sizeof( struct PACKET_CZ_CLOSE_MSGBOX_EXTEND_BODYITEM_SIZE ), clif_parse_inventory_expansion_reject, 0 ); #endif #if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 - parseable_packet( HEADER_CZ_NPC_BARTER_PURCHASE, -1, clif_parse_barter_buy, 0 ); - parseable_packet( HEADER_CZ_NPC_BARTER_CLOSE, sizeof( struct PACKET_CZ_NPC_BARTER_CLOSE ), clif_parse_barter_close, 0 ); + parseable_packet( HEADER_CZ_NPC_BARTER_MARKET_PURCHASE, -1, clif_parse_barter_buy, 0 ); + parseable_packet( HEADER_CZ_NPC_BARTER_MARKET_CLOSE, sizeof( struct PACKET_CZ_NPC_BARTER_MARKET_CLOSE ), clif_parse_barter_close, 0 ); #endif #if PACKETVER_MAIN_NUM >= 20190227 || PACKETVER_RE_NUM >= 20190220 || PACKETVER_ZERO_NUM >= 20190220 - parseable_packet( 0x0B1C, sizeof( struct PACKET_CZ_PING ), clif_parse_dull, 0 ); + parseable_packet( HEADER_CZ_PING_LIVE, sizeof( struct PACKET_CZ_PING_LIVE ), clif_parse_dull, 0 ); #endif #if PACKETVER >= 20190724 @@ -2437,7 +2428,7 @@ #endif #if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709 - parseable_packet( HEADER_CZ_REQ_MOUNTOFF, sizeof( PACKET_CZ_REQ_MOUNTOFF ), clif_parse_RemoveOption, 0 ); + parseable_packet( HEADER_CZ_UNINSTALLATION, sizeof( PACKET_CZ_UNINSTALLATION ), clif_parse_RemoveOption, 0 ); #endif #if PACKETVER >= 20190724 @@ -2445,8 +2436,8 @@ #endif #if PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 - parseable_packet( HEADER_CZ_NPC_EXPANDED_BARTER_PURCHASE, -1, clif_parse_barter_extended_buy, 0 ); - parseable_packet( HEADER_CZ_NPC_EXPANDED_BARTER_CLOSE, sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_CLOSE ), clif_parse_barter_extended_close, 0 ); + parseable_packet( HEADER_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE, -1, clif_parse_barter_extended_buy, 0 ); + parseable_packet( HEADER_CZ_NPC_EXPANDED_BARTER_MARKET_CLOSE, sizeof( struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_CLOSE ), clif_parse_barter_extended_close, 0 ); #endif #if PACKETVER >= 20191224 diff --git a/src/map/packets.hpp b/src/map/packets.hpp index 7d0354e215..367581cbbf 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -288,7 +288,6 @@ DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2) DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3) DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4) DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da) -DEFINE_PACKET_HEADER(CZ_NPC_MARKET_PURCHASE, 0x9d6) DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d) DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46) DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47) diff --git a/src/map/packets_struct.hpp b/src/map/packets_struct.hpp index 50ae1cc9d7..d7c0a132e7 100644 --- a/src/map/packets_struct.hpp +++ b/src/map/packets_struct.hpp @@ -212,28 +212,11 @@ enum packet_headers { #else cartlistequipType = 0x122, #endif -#if PACKETVER < 20100105 - vendinglistType = 0x133, -#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - vendinglistType = 0xb3d, -#else - vendinglistType = 0x800, -#endif -#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - openvendingType = 0xb40, -#else - openvendingType = 0x136, -#endif #if PACKETVER >= 20120925 equipitemType = 0x998, #else equipitemType = 0xa9, #endif -#if PACKETVER >= 20120925 - equipitemackType = 0x999, -#else - equipitemackType = 0xaa, -#endif #if PACKETVER >= 20120925 unequipitemackType = 0x99a, #else @@ -317,11 +300,6 @@ enum packet_headers { questUpdateType = 0x2b5, #endif // PACKETVER < 20150513 questUpdateType2 = 0x8fe, -#if PACKETVER >= 20171122 - openUiType = 0xAE2, -#elif PACKETVER >= 20150128 - openUiType = 0xA38, -#endif #if PACKETVER >= 20180627 authError = 0xb02, #elif PACKETVER >= 20101123 @@ -364,19 +342,6 @@ enum packet_headers { #endif }; -// TODO add here packets structs -DEFINE_PACKET_ID(ZC_PAR_CHANGE1, 0x00b0); -DEFINE_PACKET_ID(ZC_STATUS_CHANGE, 0x00be); -DEFINE_PACKET_ID(ZC_NOTIFY_CARTITEM_COUNTINFO, 0x0121); -DEFINE_PACKET_ID(ZC_ATTACK_RANGE, 0x013a); -DEFINE_PACKET_ID(ZC_COUPLESTATUS, 0x0141); - -#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) -DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x0acb); -#else // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) -DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x00b1); -#endif // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) - #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 DEFINE_PACKET_ID(ZC_PAR_4JOB_CHANGE, 0x0b25); #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 @@ -385,6 +350,59 @@ DEFINE_PACKET_ID(ZC_PAR_4JOB_CHANGE, 0x0b25); #pragma pack(push, 1) #endif // not NetBSD < 6 / Solaris +struct PACKET_ZC_PAR_CHANGE { + int16 PacketType; + uint16 varID; + int32 count; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PAR_CHANGE, 0x00b0); + +struct PACKET_ZC_LONGPAR_CHANGE { + int16 PacketType; + uint16 varID; + int32 amount; +} __attribute__((packed)); +DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x00b1); + +struct PACKET_ZC_STATUS_CHANGE { + int16 PacketType; + uint16 statusID; + uint8 value; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_STATUS_CHANGE, 0x00be); + +struct PACKET_ZC_NOTIFY_CARTITEM_COUNTINFO { + int16 PacketType; + int16 curCount; + int16 maxCount; + int32 curWeight; + int32 maxWeight; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_NOTIFY_CARTITEM_COUNTINFO, 0x0121); + +struct PACKET_ZC_ATTACK_RANGE { + int16 PacketType; + int16 currentAttRange; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ATTACK_RANGE, 0x013a); + +struct PACKET_ZC_COUPLESTATUS { + int16 PacketType; + uint32 statusType; + int32 defaultStatus; + int32 plusStatus; +} __attribute__((packed)); +DEFINE_PACKET_ID(ZC_COUPLESTATUS, 0x0141); + +#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) +struct PACKET_ZC_LONGLONGPAR_CHANGE { + int16 PacketType; + uint16 varID; + int64 amount; +} __attribute__((packed)); +DEFINE_PACKET_ID(ZC_LONGLONGPAR_CHANGE, 0x0acb); +#endif // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) + /** * structs for data */ @@ -1217,19 +1235,33 @@ struct packet_equip_item { #endif } __attribute__((packed)); -struct packet_equipitem_ack { +#if PACKETVER_MAIN_NUM >= 20121205 || PACKETVER_RE_NUM >= 20121107 || defined(PACKETVER_ZERO) +struct PACKET_ZC_REQ_WEAR_EQUIP_ACK { int16 PacketType; uint16 index; -#if PACKETVER >= 20120925 uint32 wearLocation; -#else - uint16 wearLocation; -#endif -#if PACKETVER >= 20100629 uint16 wItemSpriteNumber; -#endif uint8 result; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_REQ_WEAR_EQUIP_ACK, 0x0999) +#elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20100629 +struct PACKET_ZC_REQ_WEAR_EQUIP_ACK { + int16 PacketType; + uint16 index; + uint16 wearLocation; + uint16 wItemSpriteNumber; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_REQ_WEAR_EQUIP_ACK, 0x00aa) +#else // PACKETVER_MAIN_NUM >= 20121205 || PACKETVER_RE_NUM >= 20121107 || defined(PACKETVER_ZERO) +struct PACKET_ZC_REQ_WEAR_EQUIP_ACK { + int16 PacketType; + uint16 index; + uint16 wearLocation; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_REQ_WEAR_EQUIP_ACK, 0x00aa) +#endif // PACKETVER_MAIN_NUM >= 20121205 || PACKETVER_RE_NUM >= 20121107 || defined(PACKETVER_ZERO) struct packet_unequipitem_ack { int16 PacketType; @@ -1437,7 +1469,8 @@ struct packet_gm_monster_item { #endif } __attribute__((packed)); -struct packet_npc_market_purchase_sub { +#if PACKETVER_MAIN_NUM >= 20130911 || PACKETVER_RE_NUM >= 20130911 || defined(PACKETVER_ZERO) +struct PACKET_CZ_NPC_MARKET_PURCHASE_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 ITID; #else @@ -1446,11 +1479,13 @@ struct packet_npc_market_purchase_sub { int32 qty; } __attribute__((packed)); -struct packet_npc_market_purchase { +struct PACKET_CZ_NPC_MARKET_PURCHASE { int16 PacketType; int16 PacketLength; - struct packet_npc_market_purchase_sub list[]; + struct PACKET_CZ_NPC_MARKET_PURCHASE_sub list[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_NPC_MARKET_PURCHASE, 0x09d6) +#endif #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 struct PACKET_ZC_NPC_MARKET_OPEN_sub { @@ -1880,6 +1915,7 @@ struct PACKET_ZC_ACK_READ_RODEX { int16 TextcontentsLength; int64 zeny; int8 ItemCnt; + char Textcontent[]; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x0b63); // [4144] date unconfirmed @@ -1910,6 +1946,7 @@ struct PACKET_ZC_ACK_READ_RODEX { int16 TextcontentsLength; int64 zeny; int8 ItemCnt; + char Textcontent[]; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x09eb); #endif // PACKETVER >= 20140115 @@ -2170,13 +2207,29 @@ struct PACKET_CZ_OPEN_UI { int8 UIType; } __attribute__((packed)); -struct PACKET_ZC_OPEN_UI { +#if PACKETVER >= 20171122 +struct PACKET_ZC_UI_OPEN { int16 PacketType; int8 UIType; -#if PACKETVER >= 20171122 int32 data; -#endif } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_UI_OPEN, 0x0ae2); +#elif PACKETVER >= 20151202 +struct PACKET_ZC_UI_OPEN { + int16 PacketType; + int8 UIType; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_UI_OPEN, 0x0a38); +#endif + +#if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 +struct PACKET_ZC_UI_OPEN2 { + int16 PacketType; + int8 UIType; + int64 data; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_UI_OPEN2, 0x0b9a); +#endif // PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 struct PACKET_ZC_UI_ACTION { int16 PacketType; @@ -3049,6 +3102,7 @@ struct PACKET_ZC_MYITEMLIST_BUYING_STORE { struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub items[]; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub { uint32 price; uint16 amount; @@ -3061,33 +3115,87 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub { #endif uint8 identified; uint8 damaged; -#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 ) + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint32 location; + uint16 viewSprite; + uint8 refine; + uint8 enchantgrade; +} __attribute__((packed)); + +struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC { + int16 packetType; + int16 packetLength; + uint32 AID; + uint32 venderId; + struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_ITEMLIST_FROMMC, 0x0b3d) +#elif PACKETVER >= 20100105 +struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub { + uint32 price; + uint16 amount; + int16 index; + uint8 itemType; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identified; + uint8 damaged; +#if !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) uint8 refine; #endif struct EQUIPSLOTINFO slot; #if PACKETVER >= 20150226 struct ItemOptions option_data[MAX_ITEM_OPTIONS]; #endif - // [4144] date 20160921 not confirmed. Can be bigger or smaller +// [4144] date 20160921 not confirmed. Can be bigger or smaller #if PACKETVER >= 20160921 uint32 location; uint16 viewSprite; -#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 +#endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 uint8 refine; uint8 enchantgrade; #endif -#endif } __attribute__((packed)); struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC { int16 packetType; int16 packetLength; uint32 AID; -#if PACKETVER >= 20100105 +// [4144] unconfirmed field uint32 venderId; -#endif struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub items[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_ITEMLIST_FROMMC, 0x0800) +#else +struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub { + uint32 price; + uint16 amount; + int16 index; + uint8 itemType; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identified; + uint8 damaged; + uint8 refine; + struct EQUIPSLOTINFO slot; +} __attribute__((packed)); + +struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC { + int16 packetType; + int16 packetLength; + uint32 AID; + struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_ITEMLIST_FROMMC, 0x0133) +#endif struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub { uint32 price; @@ -3404,21 +3512,21 @@ DEFINE_PACKET_HEADER(ZC_ACK_REQNAMEALL, 0x0195); #endif #if PACKETVER_MAIN_NUM >= 20180207 || PACKETVER_RE_NUM >= 20171129 || PACKETVER_ZERO_NUM >= 20171130 -struct PACKET_ZC_ACK_REQNAME_TITLE { +struct PACKET_ZC_ACK_REQNAMEALL_NPC { uint16 packet_id; int32 gid; int32 groupId; char name[NAME_LENGTH]; char title[NAME_LENGTH]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_TITLE, 0x0adf); +DEFINE_PACKET_HEADER(ZC_ACK_REQNAMEALL_NPC, 0x0adf); #else -struct PACKET_ZC_ACK_REQNAME_TITLE { +struct PACKET_ZC_ACK_REQNAMEALL_NPC { uint16 packet_id; int32 gid; char name[NAME_LENGTH]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_TITLE, 0x0095); +DEFINE_PACKET_HEADER(ZC_ACK_REQNAMEALL_NPC, 0x0095); #endif struct PACKET_ZC_OVERWEIGHT_PERCENT { @@ -3518,25 +3626,25 @@ struct PACKET_ZC_REMOVE_EFFECT { } __attribute__((packed)); #if PACKETVER >= 20160525 -struct PACKET_ZC_CAMERA_INFO { +struct PACKET_ZC_VIEW_CAMERAINFO { int16 packetType; int8 action; float range; float rotation; float latitude; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CAMERA_INFO, 0x0a78); +DEFINE_PACKET_HEADER(ZC_VIEW_CAMERAINFO, 0x0a78); #endif #if PACKETVER >= 20160525 -struct PACKET_CZ_CAMERA_INFO { +struct PACKET_CZ_VIEW_CAMERAINFO { int16 packetType; int8 action; float range; float rotation; float latitude; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CAMERA_INFO, 0x0a77); +DEFINE_PACKET_HEADER(CZ_VIEW_CAMERAINFO, 0x0a77); #endif #if PACKETVER_MAIN_NUM >= 20181128 || PACKETVER_RE_NUM >= 20181031 @@ -3557,7 +3665,7 @@ DEFINE_PACKET_HEADER(ZC_AUTOSPELLLIST, 0x01cd); #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 -struct PACKET_ZC_ITEM_PREVIEW { +struct PACKET_ZC_CHANGE_ITEM_OPTION { int16 packetType; int16 index; int8 isDamaged; @@ -3566,9 +3674,9 @@ struct PACKET_ZC_ITEM_PREVIEW { uint8 refiningLevel; uint8 enchantgrade; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0b43); +DEFINE_PACKET_HEADER(ZC_CHANGE_ITEM_OPTION, 0x0b43); #elif PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 -struct PACKET_ZC_ITEM_PREVIEW { +struct PACKET_ZC_CHANGE_ITEM_OPTION { int16 packetType; int16 index; int8 isDamaged; @@ -3576,20 +3684,20 @@ struct PACKET_ZC_ITEM_PREVIEW { struct EQUIPSLOTINFO slot; struct ItemOptions option_data[MAX_ITEM_OPTIONS]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0b13); +DEFINE_PACKET_HEADER(ZC_CHANGE_ITEM_OPTION, 0x0b13); #elif PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) -struct PACKET_ZC_ITEM_PREVIEW { +struct PACKET_ZC_CHANGE_ITEM_OPTION { int16 packetType; int16 index; int16 refiningLevel; struct EQUIPSLOTINFO slot; struct ItemOptions option_data[MAX_ITEM_OPTIONS]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0ab9); +DEFINE_PACKET_HEADER(ZC_CHANGE_ITEM_OPTION, 0x0ab9); #endif // PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 #if PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO) -struct PACKET_ZC_ENCHANT_EQUIPMENT { +struct PACKET_ZC_UPDATE_CARDSLOT { int16 packetType; int16 wearState; int16 cardSlot; @@ -3600,79 +3708,79 @@ struct PACKET_ZC_ENCHANT_EQUIPMENT { #endif int8 equipFlag; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ENCHANT_EQUIPMENT, 0x0a3f); +DEFINE_PACKET_HEADER(ZC_UPDATE_CARDSLOT, 0x0a3f); #endif // PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20170830 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) -struct PACKET_ZC_SERVICE_MESSAGE_COLOR { +struct PACKET_ZC_DEBUGMSG { int16 packetType; int16 packetLength; int32 color; char message[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_SERVICE_MESSAGE_COLOR, 0x0adb); +DEFINE_PACKET_HEADER(ZC_DEBUGMSG, 0x0adb); #endif #if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 -struct PACKET_CZ_START_USE_SKILL { +struct PACKET_CZ_USE_SKILL_START { int16 packetType; int16 skillId; int16 skillLv; uint32 targetId; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_START_USE_SKILL, 0x0b10); +DEFINE_PACKET_HEADER(CZ_USE_SKILL_START, 0x0b10); -struct PACKET_CZ_STOP_USE_SKILL { +struct PACKET_CZ_USE_SKILL_END { int16 packetType; int16 skillId; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_STOP_USE_SKILL, 0x0b11); +DEFINE_PACKET_HEADER(CZ_USE_SKILL_END, 0x0b11); #endif #if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212 -struct PACKET_ZC_INVENTORY_EXPANSION_INFO { +struct PACKET_ZC_EXTEND_BODYITEM_SIZE { int16 packetType; int16 expansionSize; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_INVENTORY_EXPANSION_INFO, 0x0b18); +DEFINE_PACKET_HEADER(ZC_EXTEND_BODYITEM_SIZE, 0x0b18); #endif #if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212 -struct PACKET_ZC_ACK_INVENTORY_EXPAND { +struct PACKET_ZC_ACK_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE { int16 packetType; uint8 result; uint32 itemId; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ACK_INVENTORY_EXPAND, 0x0b15); +DEFINE_PACKET_HEADER(ZC_ACK_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE, 0x0b15); #endif #if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212 -struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT { +struct PACKET_ZC_ACK_EXTEND_BODYITEM_SIZE { int16 packetType; uint8 result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_ACK_INVENTORY_EXPAND_RESULT, 0x0b17); +DEFINE_PACKET_HEADER(ZC_ACK_EXTEND_BODYITEM_SIZE, 0x0b17); #endif #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 -struct PACKET_CZ_INVENTORY_EXPAND { +struct PACKET_CZ_REQ_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND, 0x0b14); +DEFINE_PACKET_HEADER(CZ_REQ_OPEN_MSGBOX_EXTEND_BODYITEM_SIZE, 0x0b14); #endif #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 -struct PACKET_CZ_INVENTORY_EXPAND_CONFIRMED { +struct PACKET_CZ_REQ_EXTEND_BODYITEM_SIZE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND_CONFIRMED, 0x0b16); +DEFINE_PACKET_HEADER(CZ_REQ_EXTEND_BODYITEM_SIZE, 0x0b16); #endif #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 -struct PACKET_CZ_INVENTORY_EXPAND_REJECTED { +struct PACKET_CZ_CLOSE_MSGBOX_EXTEND_BODYITEM_SIZE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND_REJECTED, 0x0b19); +DEFINE_PACKET_HEADER(CZ_CLOSE_MSGBOX_EXTEND_BODYITEM_SIZE, 0x0b19); #endif struct PACKET_CZ_REQ_REMAINTIME { @@ -3687,7 +3795,7 @@ struct PACKET_CZ_PARTY_CONFIG { DEFINE_PACKET_HEADER(CZ_PARTY_CONFIG, 0x02c8); #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 -struct PACKET_ZC_NPC_BARTER_OPEN_sub { +struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -3706,14 +3814,14 @@ struct PACKET_ZC_NPC_BARTER_OPEN_sub { uint16 viewSprite; uint32 location; } __attribute__((packed)); -struct PACKET_ZC_NPC_BARTER_OPEN { +struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO { int16 packetType; int16 packetLength; - struct PACKET_ZC_NPC_BARTER_OPEN_sub list[]; + struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO_sub list[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b78); +DEFINE_PACKET_HEADER(ZC_NPC_BARTER_MARKET_ITEMINFO, 0x0b78); #elif PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 -struct PACKET_ZC_NPC_BARTER_OPEN_sub { +struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -3730,23 +3838,23 @@ struct PACKET_ZC_NPC_BARTER_OPEN_sub { uint32 weight; uint32 index; } __attribute__((packed)); -struct PACKET_ZC_NPC_BARTER_OPEN { +struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO { int16 packetType; int16 packetLength; - struct PACKET_ZC_NPC_BARTER_OPEN_sub list[]; + struct PACKET_ZC_NPC_BARTER_MARKET_ITEMINFO_sub list[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b0e); +DEFINE_PACKET_HEADER(ZC_NPC_BARTER_MARKET_ITEMINFO, 0x0b0e); #endif #if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 -struct PACKET_CZ_NPC_BARTER_CLOSE { +struct PACKET_CZ_NPC_BARTER_MARKET_CLOSE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_NPC_BARTER_CLOSE, 0x0b12); +DEFINE_PACKET_HEADER(CZ_NPC_BARTER_MARKET_CLOSE, 0x0b12); #endif #if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 -struct PACKET_CZ_NPC_BARTER_PURCHASE_sub { +struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; #else @@ -3757,12 +3865,12 @@ struct PACKET_CZ_NPC_BARTER_PURCHASE_sub { uint32 shopIndex; } __attribute__((packed)); -struct PACKET_CZ_NPC_BARTER_PURCHASE { +struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE { int16 packetType; int16 packetLength; - struct PACKET_CZ_NPC_BARTER_PURCHASE_sub list[]; + struct PACKET_CZ_NPC_BARTER_MARKET_PURCHASE_sub list[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_NPC_BARTER_PURCHASE, 0x0b0f); +DEFINE_PACKET_HEADER(CZ_NPC_BARTER_MARKET_PURCHASE, 0x0b0f); #endif #if PACKETVER_MAIN_NUM >= 20181212 || PACKETVER_RE_NUM >= 20181212 || PACKETVER_ZERO_NUM >= 20190130 @@ -3776,7 +3884,7 @@ struct PACKET_ZC_USESKILL_ACK { uint32 element; uint32 delayTime; uint8 disposable; - uint32 unknown; + uint32 attackMT; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_USESKILL_ACK, 0x0b1a); #elif PACKETVER_MAIN_NUM >= 20091124 || PACKETVER_RE_NUM >= 20091124 || defined(PACKETVER_ZERO) @@ -3815,38 +3923,38 @@ DEFINE_PACKET_HEADER(CZ_CLIENT_VERSION, 0x044a); #endif #if PACKETVER_MAIN_NUM >= 20190227 || PACKETVER_RE_NUM >= 20190220 || PACKETVER_ZERO_NUM >= 20190220 -struct PACKET_CZ_PING { +struct PACKET_CZ_PING_LIVE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_PING, 0x0b1c); +DEFINE_PACKET_HEADER(CZ_PING_LIVE, 0x0b1c); #endif #if PACKETVER_MAIN_NUM >= 20190227 || PACKETVER_RE_NUM >= 20190220 || PACKETVER_ZERO_NUM >= 20190220 -struct PACKET_ZC_PING { +struct PACKET_ZC_PING_LIVE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_PING, 0x0b1d); +DEFINE_PACKET_HEADER(ZC_PING_LIVE, 0x0b1d); #endif #if PACKETVER >= 20160622 -struct PACKET_CZ_COOLDOWN_RESET { +struct PACKET_CZ_CMD_RESETCOOLTIME { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_COOLDOWN_RESET, 0x0a88); +DEFINE_PACKET_HEADER(CZ_CMD_RESETCOOLTIME, 0x0a88); #endif #if PACKETVER >= 20151104 -struct PACKET_CZ_STYLE_CLOSE { +struct PACKET_CZ_CLOSE_UI_STYLINGSHOP { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_STYLE_CLOSE, 0x0a48); +DEFINE_PACKET_HEADER(CZ_CLOSE_UI_STYLINGSHOP, 0x0a48); #endif #if PACKETVER_MAIN_NUM >= 20190403 || PACKETVER_RE_NUM >= 20190320 || PACKETVER_ZERO_NUM >= 20190410 -struct PACKET_ZC_LOAD_CONFIRM { +struct PACKET_ZC_NOTIFY_ACTORINIT { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_LOAD_CONFIRM, 0x0b1b); +DEFINE_PACKET_HEADER(ZC_NOTIFY_ACTORINIT, 0x0b1b); #endif #if PACKETVER_MAIN_NUM >= 20070911 || defined(PACKETVER_RE) || PACKETVER_AD_NUM >= 20070911 || PACKETVER_SAK_NUM >= 20070904 || defined(PACKETVER_ZERO) @@ -3964,22 +4072,22 @@ DEFINE_PACKET_HEADER(ZC_SE_PC_BUY_CASHITEM_RESULT, 0x0849); #endif #if PACKETVER_MAIN_NUM >= 20161130 || PACKETVER_RE_NUM >= 20161109 || defined(PACKETVER_ZERO) -struct PACKET_ZC_REFINE_OPEN_WINDOW { +struct PACKET_ZC_OPEN_REFINING_UI { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_REFINE_OPEN_WINDOW, 0x0aa0); +DEFINE_PACKET_HEADER(ZC_OPEN_REFINING_UI, 0x0aa0); #endif #if PACKETVER_MAIN_NUM >= 20161005 || PACKETVER_RE_NUM >= 20161005 || defined(PACKETVER_ZERO) -struct PACKET_CZ_REFINE_ADD_ITEM { +struct PACKET_CZ_REFINING_SELECT_ITEM { int16 packetType; int16 index; }; -DEFINE_PACKET_HEADER(CZ_REFINE_ADD_ITEM, 0x0aa1); +DEFINE_PACKET_HEADER(CZ_REFINING_SELECT_ITEM, 0x0aa1); #endif #if PACKETVER_MAIN_NUM >= 20161130 || PACKETVER_RE_NUM >= 20161109 || defined(PACKETVER_ZERO) -struct PACKET_ZC_REFINE_ADD_ITEM_SUB { +struct PACKET_ZC_REFINING_MATERIAL_LIST_SUB { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; #else @@ -3989,18 +4097,18 @@ struct PACKET_ZC_REFINE_ADD_ITEM_SUB { int32 zeny; } __attribute__((packed)); -struct PACKET_ZC_REFINE_ADD_ITEM { +struct PACKET_ZC_REFINING_MATERIAL_LIST { int16 packetType; - int16 packtLength; + int16 packetLength; int16 itemIndex; int8 blacksmithBlessing; - struct PACKET_ZC_REFINE_ADD_ITEM_SUB req[]; + struct PACKET_ZC_REFINING_MATERIAL_LIST_SUB req[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_REFINE_ADD_ITEM, 0x0aa2); +DEFINE_PACKET_HEADER(ZC_REFINING_MATERIAL_LIST, 0x0aa2); #endif #if PACKETVER_MAIN_NUM >= 20161005 || PACKETVER_RE_NUM >= 20161005 || defined(PACKETVER_ZERO) -struct PACKET_CZ_REFINE_ITEM_REQUEST { +struct PACKET_CZ_REQ_REFINING { int16 packetType; int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -4010,16 +4118,16 @@ struct PACKET_CZ_REFINE_ITEM_REQUEST { #endif int8 blacksmithBlessing; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_REFINE_ITEM_REQUEST, 0x0aa3); +DEFINE_PACKET_HEADER(CZ_REQ_REFINING, 0x0aa3); -struct PACKET_CZ_REFINE_WINDOW_CLOSE { +struct PACKET_CZ_CLOSE_REFINING_UI { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_REFINE_WINDOW_CLOSE, 0x0aa4); +DEFINE_PACKET_HEADER(CZ_CLOSE_REFINING_UI, 0x0aa4); #endif #if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) -struct PACKET_ZC_REFINE_STATUS { +struct PACKET_ZC_BROADCAST_ITEMREFINING_RESULT { int16 packetType; char name[NAME_LENGTH]; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -4030,7 +4138,7 @@ struct PACKET_ZC_REFINE_STATUS { int8 refine_level; int8 status; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_REFINE_STATUS, 0x0ada); +DEFINE_PACKET_HEADER(ZC_BROADCAST_ITEMREFINING_RESULT, 0x0ada); #endif struct PACKET_ZC_ACK_RANKING_name { @@ -4085,14 +4193,14 @@ struct PACKET_ZC_STATUS_CHANGE_ACK { DEFINE_PACKET_HEADER(ZC_STATUS_CHANGE_ACK, 0x00bc); #if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO) -struct PACKET_ZC_HAT_EFFECT { +struct PACKET_ZC_EQUIPMENT_EFFECT { int16 packetType; int16 packetLength; uint32 aid; int8 status; uint16 effects[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_HAT_EFFECT, 0x0a3b); +DEFINE_PACKET_HEADER(ZC_EQUIPMENT_EFFECT, 0x0a3b); #endif // [4144] this struct updated not in all packets in client @@ -4200,50 +4308,50 @@ struct PACKET_ZC_TALKBOX_CHATCONTENTS { DEFINE_PACKET_HEADER(ZC_TALKBOX_CHATCONTENTS, 0x0191); #if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190717 || PACKETVER_ZERO_NUM >= 20190814 -struct PACKET_ZC_GUILD_CASTLE_LIST { +struct PACKET_ZC_GUILD_AGIT_INFO { int16 packetType; int16 packetLength; int8 castle_list[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_GUILD_CASTLE_LIST, 0x0b27); +DEFINE_PACKET_HEADER(ZC_GUILD_AGIT_INFO, 0x0b27); #endif #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190522 || PACKETVER_ZERO_NUM >= 20190515 -struct PACKET_CZ_CASTLE_TELEPORT_REQUEST { +struct PACKET_CZ_REQ_MOVE_GUILD_AGIT { int16 packetType; int8 castle_id; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CASTLE_TELEPORT_REQUEST, 0x0b28); +DEFINE_PACKET_HEADER(CZ_REQ_MOVE_GUILD_AGIT, 0x0b28); #endif #if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190717 || PACKETVER_ZERO_NUM >= 20190814 -struct PACKET_ZC_CASTLE_TELEPORT_RESPONSE { +struct PACKET_ZC_REQ_ACK_MOVE_GUILD_AGIT { int16 packetType; int16 result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CASTLE_TELEPORT_RESPONSE, 0x0b2e); +DEFINE_PACKET_HEADER(ZC_REQ_ACK_MOVE_GUILD_AGIT, 0x0b2e); #endif #if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190717 || PACKETVER_ZERO_NUM >= 20190814 -struct PACKET_ZC_CASTLE_INFO { +struct PACKET_ZC_REQ_ACK_AGIT_INVESTMENT { int16 packetType; int8 castle_id; int32 economy; int32 defense; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CASTLE_INFO, 0x0b2d); +DEFINE_PACKET_HEADER(ZC_REQ_ACK_AGIT_INVESTMENT, 0x0b2d); #endif #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190522 || PACKETVER_ZERO_NUM >= 20190515 -struct PACKET_CZ_CASTLE_INFO_REQUEST { +struct PACKET_CZ_REQ_AGIT_INVESTMENT { int16 packetType; int8 castle_id; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CASTLE_INFO_REQUEST, 0x0b2c); +DEFINE_PACKET_HEADER(CZ_REQ_AGIT_INVESTMENT, 0x0b2c); #endif #if PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) -struct PACKET_ZC_LAPINEDDUKDDAK_OPEN { +struct PACKET_ZC_RANDOM_COMBINE_ITEM_UI_OPEN { int16 packetType; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 int32 itemId; @@ -4251,23 +4359,23 @@ struct PACKET_ZC_LAPINEDDUKDDAK_OPEN { int16 itemId; #endif } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_OPEN, 0x0a4e); +DEFINE_PACKET_HEADER(ZC_RANDOM_COMBINE_ITEM_UI_OPEN, 0x0a4e); #endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO) -struct PACKET_CZ_LAPINEDDUKDDAK_CLOSE { +struct PACKET_CZ_RANDOM_COMBINE_ITEM_UI_CLOSE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_LAPINEDDUKDDAK_CLOSE, 0x0a70); +DEFINE_PACKET_HEADER(CZ_RANDOM_COMBINE_ITEM_UI_CLOSE, 0x0a70); #endif // PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO) #if PACKETVER >= 20160302 -struct PACKET_CZ_LAPINEDDUKDDAK_ACK_sub { +struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM_sub { int16 index; int16 count; } __attribute__((packed)); -struct PACKET_CZ_LAPINEDDUKDDAK_ACK { +struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM { int16 packetType; int16 packetLength; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -4275,25 +4383,25 @@ struct PACKET_CZ_LAPINEDDUKDDAK_ACK { #else int16 itemId; #endif - struct PACKET_CZ_LAPINEDDUKDDAK_ACK_sub items[]; + struct PACKET_CZ_REQ_RANDOM_COMBINE_ITEM_sub items[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_LAPINEDDUKDDAK_ACK, 0x0a4f); +DEFINE_PACKET_HEADER(CZ_REQ_RANDOM_COMBINE_ITEM, 0x0a4f); #endif // PACKETVER >= 20160302 #if PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) -struct PACKET_ZC_LAPINEDDUKDDAK_RESULT { +struct PACKET_ZC_ACK_RANDOM_COMBINE_ITEM { int16 packetType; int16 result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_RESULT, 0x0a50); +DEFINE_PACKET_HEADER(ZC_ACK_RANDOM_COMBINE_ITEM, 0x0a50); #endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709 -struct PACKET_CZ_REQ_MOUNTOFF { - int16 packetType; - uint8 action; +struct PACKET_CZ_UNINSTALLATION { + int16 PacketType; + uint8 InstallationKind; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_REQ_MOUNTOFF, 0x0b35); +DEFINE_PACKET_HEADER(CZ_UNINSTALLATION, 0x0b35); #endif // in 3 clients from same version @@ -4331,10 +4439,10 @@ DEFINE_PACKET_HEADER(CZ_SE_CASHSHOP_OPEN2, 0x0b6d); #endif #if PACKETVER >= 20190724 -struct PACKET_CZ_SE_CASHSHOP_LIMITED_REQ { +struct PACKET_CZ_GET_ACCOUNT_LIMTIED_SALE_LIST { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_SE_CASHSHOP_LIMITED_REQ, 0x0b4c); +DEFINE_PACKET_HEADER(CZ_GET_ACCOUNT_LIMTIED_SALE_LIST, 0x0b4c); #endif #if PACKETVER_MAIN_NUM >= 20200129 || PACKETVER_RE_NUM >= 20200205 || PACKETVER_ZERO_NUM >= 20191224 @@ -4345,7 +4453,14 @@ struct PACKET_ZC_SE_CASHSHOP_OPEN { uint32 tab; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_SE_CASHSHOP_OPEN, 0x0b6e); -// for ragexeRE in some version this packet unused [4144] +#elif PACKETVER >= 20140730 +struct PACKET_ZC_SE_CASHSHOP_OPEN { + int16 packetType; + uint32 cashPoints; + uint32 kafraPoints; + uint32 tab; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SE_CASHSHOP_OPEN, 0x0a2b); #elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO) struct PACKET_ZC_SE_CASHSHOP_OPEN { int16 packetType; @@ -4356,14 +4471,14 @@ DEFINE_PACKET_HEADER(ZC_SE_CASHSHOP_OPEN, 0x0845); #endif #if PACKETVER_MAIN_NUM >= 20190904 || PACKETVER_RE_NUM >= 20190904 || PACKETVER_ZERO_NUM >= 20190828 -struct PACKET_CZ_NPC_EXPANDED_BARTER_CLOSE { +struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_CLOSE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_NPC_EXPANDED_BARTER_CLOSE, 0x0b58); +DEFINE_PACKET_HEADER(CZ_NPC_EXPANDED_BARTER_MARKET_CLOSE, 0x0b58); #endif #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2 { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -4374,7 +4489,7 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { uint16 type; } __attribute__((packed)); -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -4389,19 +4504,19 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { uint32 location; uint32 currency_count; // Workaround: this should be currencies[], but compilers do not support multiple layers of incomplete types. See error C2233 - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1]; + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2 currencies[1]; } __attribute__((packed)); -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO { int16 packetType; int16 packetLength; int32 items_count; - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub items[]; + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub items[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_OPEN, 0x0b79); +DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO, 0x0b79); #elif PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2 { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -4412,7 +4527,7 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { uint16 type; } __attribute__((packed)); -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; #else @@ -4425,21 +4540,21 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { uint32 zeny; uint32 currency_count; // Workaround: this should be currencies[], but compilers do not support multiple layers of incomplete types. See error C2233 - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1]; + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub2 currencies[1]; } __attribute__((packed)); -struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN { +struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO { int16 packetType; int16 packetLength; int32 items_count; - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub items[]; + struct PACKET_ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO_sub items[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_OPEN, 0x0b56); +DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_MARKET_ITEMINFO, 0x0b56); #endif // PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 #if PACKETVER_MAIN_NUM >= 20190904 || PACKETVER_RE_NUM >= 20190904 || PACKETVER_ZERO_NUM >= 20190828 -struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE_sub { +struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; #else @@ -4449,12 +4564,12 @@ struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE_sub { uint32 amount; } __attribute__((packed)); -struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE { +struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE { int16 packetType; int16 packetLength; - struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE_sub list[]; + struct PACKET_CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE_sub list[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_NPC_EXPANDED_BARTER_PURCHASE, 0x0b57); +DEFINE_PACKET_HEADER(CZ_NPC_EXPANDED_BARTER_MARKET_PURCHASE, 0x0b57); #endif #if PACKETVER >= 7 @@ -4492,7 +4607,7 @@ struct PACKET_ZC_AUTORUN_SKILL { DEFINE_PACKET_HEADER(ZC_AUTORUN_SKILL, 0x0147); #if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) -struct PACKET_ZC_LAPINEUPGRADE_OPEN { +struct PACKET_ZC_RANDOM_UPGRADE_ITEM_UI_OPEN { int16 packetType; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; @@ -4500,22 +4615,22 @@ struct PACKET_ZC_LAPINEUPGRADE_OPEN { uint16 itemId; #endif } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_OPEN, 0x0ab4); +DEFINE_PACKET_HEADER(ZC_RANDOM_UPGRADE_ITEM_UI_OPEN, 0x0ab4); -struct PACKET_ZC_LAPINEUPGRADE_RESULT { +struct PACKET_ZC_ACK_RANDOM_UPGRADE_ITEM { int16 packetType; uint16 result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_RESULT, 0x0ab7); +DEFINE_PACKET_HEADER(ZC_ACK_RANDOM_UPGRADE_ITEM, 0x0ab7); #endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) -struct PACKET_CZ_LAPINEUPGRADE_CLOSE { +struct PACKET_CZ_RANDOM_UPGRADE_ITEM_UI_CLOSE { int16 packetType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_CLOSE, 0x0ab5); +DEFINE_PACKET_HEADER(CZ_RANDOM_UPGRADE_ITEM_UI_CLOSE, 0x0ab5); -struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM { +struct PACKET_CZ_REQ_RANDOM_UPGRADE_ITEM { int16 packetType; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; @@ -4524,7 +4639,7 @@ struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM { #endif uint16 index; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_MAKE_ITEM, 0x0ab6); +DEFINE_PACKET_HEADER(CZ_REQ_RANDOM_UPGRADE_ITEM, 0x0ab6); #endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) @@ -4836,152 +4951,152 @@ struct PACKET_ZC_MYGUILD_BASIC_INFO { DEFINE_PACKET_HEADER(ZC_MYGUILD_BASIC_INFO, 0x014c); #if PACKETVER >= 20160316 -struct PACKET_CZ_CAPTCHA_REGISTER { +struct PACKET_CZ_REQ_UPLOAD_MACRO_DETECTOR { int16 PacketType; char answer[16]; int16 imageSize; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CAPTCHA_REGISTER, 0x0a52); +DEFINE_PACKET_HEADER(CZ_REQ_UPLOAD_MACRO_DETECTOR, 0x0a52); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_CAPTCHA_UPLOAD_REQUEST { +struct PACKET_ZC_ACK_UPLOAD_MACRO_DETECTOR { int16 PacketType; char captchaKey[4]; int captchaFlag; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CAPTCHA_UPLOAD_REQUEST, 0x0a53); +DEFINE_PACKET_HEADER(ZC_ACK_UPLOAD_MACRO_DETECTOR, 0x0a53); #endif #if PACKETVER >= 20160316 -struct PACKET_CZ_CAPTCHA_UPLOAD_REQUEST_ACK { +struct PACKET_CZ_UPLOAD_MACRO_DETECTOR_CAPTCHA { int16 PacketType; int16 PacketLength; char captchaKey[4]; char imageData[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CAPTCHA_UPLOAD_REQUEST_ACK, 0x0a54); +DEFINE_PACKET_HEADER(CZ_UPLOAD_MACRO_DETECTOR_CAPTCHA, 0x0a54); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_CAPTCHA_UPLOAD_REQUEST_STATUS { +struct PACKET_ZC_COMPLETE_UPLOAD_MACRO_DETECTOR_CAPTCHA { int16 PacketType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CAPTCHA_UPLOAD_REQUEST_STATUS, 0x0a55); +DEFINE_PACKET_HEADER(ZC_COMPLETE_UPLOAD_MACRO_DETECTOR_CAPTCHA, 0x0a55); #endif #if PACKETVER >= 20160316 -struct PACKET_CZ_MACRO_REPORTER_ACK { +struct PACKET_CZ_REQ_APPLY_MACRO_DETECTOR { int16 PacketType; uint32 AID; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_MACRO_REPORTER_ACK, 0x0a56); +DEFINE_PACKET_HEADER(CZ_REQ_APPLY_MACRO_DETECTOR, 0x0a56); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_REPORTER_STATUS { +struct PACKET_ZC_ACK_APPLY_MACRO_DETECTOR { int16 PacketType; int status; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_REPORTER_STATUS, 0x0a57); +DEFINE_PACKET_HEADER(ZC_ACK_APPLY_MACRO_DETECTOR, 0x0a57); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_DETECTOR_REQUEST { +struct PACKET_ZC_APPLY_MACRO_DETECTOR { int16 PacketType; int16 imageSize; char captchaKey[4]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_DETECTOR_REQUEST, 0x0a58); +DEFINE_PACKET_HEADER(ZC_APPLY_MACRO_DETECTOR, 0x0a58); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_DETECTOR_REQUEST_DOWNLOAD { +struct PACKET_ZC_APPLY_MACRO_DETECTOR_CAPTCHA { int16 PacketType; int16 PacketLength; char captchaKey[4]; char imageData[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_DETECTOR_REQUEST_DOWNLOAD, 0x0a59); +DEFINE_PACKET_HEADER(ZC_APPLY_MACRO_DETECTOR_CAPTCHA, 0x0a59); #endif #if PACKETVER >= 20160316 -struct PACKET_CZ_MACRO_DETECTOR_DOWNLOAD { +struct PACKET_CZ_COMPLETE_APPLY_MACRO_DETECTOR_CAPTCHA { int16 PacketType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_MACRO_DETECTOR_DOWNLOAD, 0x0a5a); +DEFINE_PACKET_HEADER(CZ_COMPLETE_APPLY_MACRO_DETECTOR_CAPTCHA, 0x0a5a); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_DETECTOR_SHOW { +struct PACKET_ZC_REQ_ANSWER_MACRO_DETECTOR { int16 PacketType; uint8 retryCount; int timeout; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_DETECTOR_SHOW, 0x0a5b); +DEFINE_PACKET_HEADER(ZC_REQ_ANSWER_MACRO_DETECTOR, 0x0a5b); #endif #if PACKETVER >= 20160316 -struct PACKET_CZ_MACRO_DETECTOR_ANSWER { +struct PACKET_CZ_ACK_ANSWER_MACRO_DETECTOR { int16 PacketType; char answer[16]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_MACRO_DETECTOR_ANSWER, 0x0a5c); +DEFINE_PACKET_HEADER(CZ_ACK_ANSWER_MACRO_DETECTOR, 0x0a5c); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_DETECTOR_STATUS { +struct PACKET_ZC_CLOSE_MACRO_DETECTOR { int16 PacketType; int status; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_DETECTOR_STATUS, 0x0a5d); +DEFINE_PACKET_HEADER(ZC_CLOSE_MACRO_DETECTOR, 0x0a5d); #endif #if PACKETVER >= 20160323 -struct PACKET_CZ_CAPTCHA_PREVIEW_REQUEST { +struct PACKET_CZ_REQ_PREVIEW_MACRO_DETECTOR { int16 PacketType; int captchaID; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_CAPTCHA_PREVIEW_REQUEST, 0x0a69); +DEFINE_PACKET_HEADER(CZ_REQ_PREVIEW_MACRO_DETECTOR, 0x0a69); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_CAPTCHA_PREVIEW_REQUEST { +struct PACKET_ZC_ACK_PREVIEW_MACRO_DETECTOR { int16 PacketType; int captchaFlag; int16 imageSize; char captchaKey[4]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CAPTCHA_PREVIEW_REQUEST, 0x0a6a); +DEFINE_PACKET_HEADER(ZC_ACK_PREVIEW_MACRO_DETECTOR, 0x0a6a); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_CAPTCHA_PREVIEW_REQUEST_DOWNLOAD { +struct PACKET_ZC_PREVIEW_MACRO_DETECTOR_CAPTCHA { int16 PacketType; int16 PacketLength; char captchaKey[4]; char imageData[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_CAPTCHA_PREVIEW_REQUEST_DOWNLOAD, 0x0a6b); +DEFINE_PACKET_HEADER(ZC_PREVIEW_MACRO_DETECTOR_CAPTCHA, 0x0a6b); #endif #if PACKETVER >= 20160330 -struct PACKET_CZ_MACRO_REPORTER_SELECT { +struct PACKET_CZ_REQ_PLAYER_AID_IN_RANGE { int16 PacketType; int16 xPos; int16 yPos; int8 RadiusRange; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_MACRO_REPORTER_SELECT, 0x0a6c); +DEFINE_PACKET_HEADER(CZ_REQ_PLAYER_AID_IN_RANGE, 0x0a6c); #endif #if PACKETVER >= 20160330 -struct PACKET_ZC_MACRO_REPORTER_SELECT { +struct PACKET_ZC_ACK_PLAYER_AID_IN_RANGE { int16 PacketType; int16 PacketLength; uint32 AID[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MACRO_REPORTER_SELECT, 0x0a6d); +DEFINE_PACKET_HEADER(ZC_ACK_PLAYER_AID_IN_RANGE, 0x0a6d); #endif struct PACKET_ZC_ACK_MAKE_GROUP { @@ -5057,13 +5172,13 @@ DEFINE_PACKET_HEADER(ZC_NOTIFY_HP_TO_GROUPM, 0x0106); #endif // PACKETVER >= 20100119 #if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO) -struct PACKET_ZC_PARTY_MEMBER_JOB_LEVEL { +struct PACKET_ZC_NOTIFY_MEMBERINFO_TO_GROUPM { int16 PacketType; int AID; int16 job; int16 level; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_PARTY_MEMBER_JOB_LEVEL, 0x0abd); +DEFINE_PACKET_HEADER(ZC_NOTIFY_MEMBERINFO_TO_GROUPM, 0x0abd); #endif struct PACKET_ZC_DELETE_MEMBER_FROM_GROUP { @@ -5082,11 +5197,11 @@ DEFINE_PACKET_HEADER(CZ_REQ_TAKEOFF_EQUIP_ALL, 0x0bad); #endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20210818 #if PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 -struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK { +struct PACKET_ZC_ACK_TAKEOFF_EQUIP_ALL { int16 PacketType; uint8 result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_TAKEOFF_EQUIP_ALL_ACK, 0x0bae); +DEFINE_PACKET_HEADER(ZC_ACK_TAKEOFF_EQUIP_ALL, 0x0bae); #endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_RE_NUM >= 20211103 #if PACKETVER_ZERO_NUM >= 20210504 @@ -5119,33 +5234,33 @@ DEFINE_PACKET_HEADER(ZC_BATTLEFIELD_NOTIFY_HP, 0x02e0); #endif // PACKETVER >= 20071009 #if PACKETVER_ZERO_NUM >= 20210721 -struct PACKET_ZC_SAY_DIALOG_ZERO1 { +struct PACKET_ZC_QUEST_DIALOG { int16 PacketType; int16 PacketLength; uint32 NpcID; char message[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ZERO1, 0x0ba6); +DEFINE_PACKET_HEADER(ZC_QUEST_DIALOG, 0x0ba6); #endif // PACKETVER_ZERO_NUM >= 20210721 #if PACKETVER_ZERO_NUM >= 20210721 -struct PACKET_ZC_SAY_DIALOG_ZERO2 { +struct PACKET_ZC_MONOLOG_DIALOG { int16 PacketType; int16 PacketLength; uint32 NpcID; char message[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ZERO2, 0x0ba9); +DEFINE_PACKET_HEADER(ZC_MONOLOG_DIALOG, 0x0ba9); #endif // PACKETVER_ZERO_NUM >= 20210721 #if PACKETVER_ZERO_NUM >= 20210721 -struct PACKET_ZC_MENU_LIST_ZERO { +struct PACKET_ZC_QUEST_DIALOG_MENU_LIST { int16 PacketType; int16 PacketLength; uint32 NpcID; char message[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_MENU_LIST_ZERO, 0x0ba7); +DEFINE_PACKET_HEADER(ZC_QUEST_DIALOG_MENU_LIST, 0x0ba7); #endif // PACKETVER_ZERO_NUM >= 20210721 #if PACKETVER_MAIN_NUM >= 20210317 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20210317 @@ -5158,19 +5273,19 @@ DEFINE_PACKET_HEADER(CZ_CHOOSE_MENU_ZERO, 0x0ba8); #endif // PACKETVER_MAIN_NUM >= 20210317 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20210317 #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 -struct PACKET_ZC_SAY_DIALOG_ALIGN { +struct PACKET_ZC_DIALOG_TEXT_ALIGN { int16 PacketType; uint8 align; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ALIGN, 0x0ba1); +DEFINE_PACKET_HEADER(ZC_DIALOG_TEXT_ALIGN, 0x0ba1); #endif // PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 #if PACKETVER_MAIN_NUM >= 20191016 || PACKETVER_RE_NUM >= 20191016 || PACKETVER_ZERO_NUM >= 20191008 -struct PACKET_CZ_GRADE_ENCHANT_ADD_ITEM { +struct PACKET_CZ_GRADE_ENCHANT_SELECT_EQUIPMENT { int16 PacketType; int16 index; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_ADD_ITEM, 0x0b59); +DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_SELECT_EQUIPMENT, 0x0b59); #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 @@ -5189,7 +5304,7 @@ struct GRADE_ENCHANT_MATERIAL { int8 breakable; } __attribute__((packed)); -struct PACKET_ZC_GRADE_ENCHANT_ADD_ITEM_RESULT { +struct PACKET_ZC_GRADE_ENCHANT_MATERIAL_LIST { int16 PacketType; int16 PacketLength; int16 index; @@ -5199,11 +5314,11 @@ struct PACKET_ZC_GRADE_ENCHANT_ADD_ITEM_RESULT { int32 protect_amount; // used only for PACKETVER_RE_NUM >= 20200723 && PACKETVER_RE_NUM <= 20200819 struct GRADE_ENCHANT_MATERIAL material_info[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_ADD_ITEM_RESULT, 0x0b5a); +DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_MATERIAL_LIST, 0x0b5a); #endif #if PACKETVER_MAIN_NUM >= 20191016 || PACKETVER_RE_NUM >= 20191016 || PACKETVER_ZERO_NUM >= 20191008 -struct PACKET_CZ_GRADE_ENCHANT_START { +struct PACKET_CZ_GRADE_ENCHANT_REQUEST { int16 PacketType; int16 index; int material_index; @@ -5211,37 +5326,161 @@ struct PACKET_CZ_GRADE_ENCHANT_START { int blessing_amount; int8 protect_flag; // used only for PACKETVER_RE_NUM >= 20200723 && PACKETVER_RE_NUM <= 20200819 } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_START, 0x0b5b); +DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_REQUEST, 0x0b5b); #endif #if PACKETVER_MAIN_NUM >= 20191016 || PACKETVER_RE_NUM >= 20191016 || PACKETVER_ZERO_NUM >= 20191008 -struct PACKET_CZ_GRADE_ENCHANT_CLOSE { +struct PACKET_CZ_GRADE_ENCHANT_CLOSE_UI { int16 PacketType; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_CLOSE, 0x0b5c); +DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_CLOSE_UI, 0x0b5c); #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 -struct PACKET_ZC_GRADE_ENCHANT_RESULT { +struct PACKET_ZC_GRADE_ENCHANT_ACK { int16 PacketType; int16 index; int16 grade; int result; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_RESULT, 0x0b5d); +DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_ACK, 0x0b5d); #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 -struct PACKET_ZC_GRADE_STATUS { +struct PACKET_ZC_GRADE_ENCHANT_BROADCAST_RESULT { int16 packetType; char name[NAME_LENGTH]; uint32 itemId; int16 grade; int8 status; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_GRADE_STATUS, 0x0b5e); +DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_BROADCAST_RESULT, 0x0b5e); #endif +struct PACKET_ZC_SHOW_IMAGE { + int16 packetType; + char image[64]; + uint8 type; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SHOW_IMAGE, 0x01b3) + +#if PACKETVER_MAIN_NUM >= 20131204 || PACKETVER_RE_NUM >= 20131120 || defined(PACKETVER_ZERO) +struct PACKET_ZC_WHISPER { + int16 PacketType; + int16 PacketLength; + uint32 senderGID; + char sender[NAME_LENGTH]; + uint8 isAdmin; + char message[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_WHISPER, 0x09de) +// [4144] unconfirmed version +#elif PACKETVER >= 20091104 +struct PACKET_ZC_WHISPER { + int16 PacketType; + int16 PacketLength; + char sender[NAME_LENGTH]; + int32 isAdmin; + char message[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_WHISPER, 0x0097) +#else // PACKETVER_MAIN_NUM >= 20131204 || PACKETVER_RE_NUM >= 20131120 || defined(PACKETVER_ZERO) +struct PACKET_ZC_WHISPER { + int16 PacketType; + int16 PacketLength; + char sender[NAME_LENGTH]; + char message[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_WHISPER, 0x0097) +#endif // PACKETVER_MAIN_NUM >= 20131204 || PACKETVER_RE_NUM >= 20131120 || defined(PACKETVER_ZERO) + +#if PACKETVER_MAIN_NUM >= 20220216 +struct PACKET_ZC_UPDATE_GDID { + int16 PacketType; + uint32 guildId; + int emblemVersion; + uint32 mode; + uint8 isMaster; + int32 interSid; + char guildName[NAME_LENGTH]; + uint32 masterGID; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_UPDATE_GDID, 0x02f7) +#else // PACKETVER_MAIN_NUM >= 20220216 +struct PACKET_ZC_UPDATE_GDID { + int16 PacketType; + uint32 guildId; + int emblemVersion; + uint32 mode; + uint8 isMaster; + int32 interSid; + char guildName[NAME_LENGTH]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_UPDATE_GDID, 0x016c) +#endif // PACKETVER_MAIN_NUM >= 20220216 + +#if PACKETVER_MAIN_NUM >= 20220216 +struct PACKET_CZ_SEE_GUILD_MEMBERS { + int16 PacketType; + uint32 masterGID; + uint16 unused1; + uint8 unused2; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_SEE_GUILD_MEMBERS, 0x0bb0) +#endif // PACKETVER_MAIN_NUM >= 20220216 + + +struct PACKET_CZ_CONTACTNPC { + int16 PacketType; + uint32 AID; + uint8 type; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_CONTACTNPC, 0x0090) + +struct PACKET_ZC_ATTACK_FAILURE_FOR_DISTANCE { + int16 PacketType; + uint32 targetAID; + int16 targetXPos; + int16 targetYPos; + int16 xPos; + int16 yPos; + int16 currentAttRange; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ATTACK_FAILURE_FOR_DISTANCE, 0x0139) + +struct PACKET_ZC_START_CAPTURE { + int16 PacketType; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_START_CAPTURE, 0x019e) + +struct PACKET_ZC_TRYCAPTURE_MONSTER { + int16 PacketType; + int8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_TRYCAPTURE_MONSTER, 0x01a0) + +struct PACKET_ZC_PROPERTY_PET { + int16 PacketType; + char szName[NAME_LENGTH]; + int8 bModified; + int16 nLevel; + int16 nFullness; + int16 nRelationship; + int16 ITID; +#if PACKETVER >= 20081126 + int16 job; +#endif +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PROPERTY_PET, 0x01a2) + +struct PACKET_ZC_CHANGESTATE_PET { + int16 PacketType; + int8 type; + int GID; + int data; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_CHANGESTATE_PET, 0x01a4) + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris