Prechádzať zdrojové kódy

Converted CZ_REQ_ITEMIDENTIFY to struct (#9000)

Lemongrass3110 3 mesiacov pred
rodič
commit
634b0846ef
3 zmenil súbory, kde vykonal 13 pridanie a 6 odobranie
  1. 6 5
      src/map/clif.cpp
  2. 1 1
      src/map/clif_packetdb.hpp
  3. 6 0
      src/map/packets.hpp

+ 6 - 5
src/map/clif.cpp

@@ -13363,21 +13363,22 @@ void clif_parse_NpcCloseClicked(int32 fd,map_session_data *sd)
 }
 
 
-/// Answer to identify item selection dialog (CZ_REQ_ITEMIDENTIFY).
-/// 0178 <index>.W
+/// Answer to identify item selection dialog.
+/// 0178 <index>.W (CZ_REQ_ITEMIDENTIFY)
 /// index:
 ///     -1 = cancel
 void clif_parse_ItemIdentify(int32 fd,map_session_data *sd) {
-	int16 idx = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) - 2;
-
 	if (sd->menuskill_id != MC_IDENTIFY)
 		return;
 
+	const PACKET_CZ_REQ_ITEMIDENTIFY* p = reinterpret_cast<PACKET_CZ_REQ_ITEMIDENTIFY*>( RFIFOP( fd, 0 ) );
+	uint16 idx = server_index( p->index );
+
 	// Ignore the request
 	// - Invalid item index
 	// - Invalid item ID or item doesn't exist
 	// - Item is already identified
-	if (idx < 0 || idx >= MAX_INVENTORY ||
+	if ( idx >= MAX_INVENTORY ||
 		sd->inventory.u.items_inventory[idx].nameid == 0 || sd->inventory_data[idx] == nullptr ||
 		sd->inventory.u.items_inventory[idx].identify) {// cancel pressed
 			sd->state.workinprogress = WIP_DISABLE_NONE;

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -176,7 +176,7 @@
 	packet(0x0175,6);
 	packet(0x0176,106);
 	packet(0x0177,-1);
-	parseable_packet(0x0178,4,clif_parse_ItemIdentify,2);
+	parseable_packet( HEADER_CZ_REQ_ITEMIDENTIFY, sizeof( PACKET_CZ_REQ_ITEMIDENTIFY ), clif_parse_ItemIdentify, 0 );
 	parseable_packet(0x017a,4,clif_parse_UseCard,2);
 	packet(0x017b,-1);
 	parseable_packet(0x017c,6,clif_parse_InsertCard,2,4);

+ 6 - 0
src/map/packets.hpp

@@ -1803,6 +1803,12 @@ struct PACKET_CZ_MOVE_ITEM_FROM_STORE_TO_CART{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_STORE_TO_CART, 0x128);
 
+struct PACKET_CZ_REQ_ITEMIDENTIFY{
+	int16 packetType;
+	uint16 index;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_REQ_ITEMIDENTIFY, 0x178);
+
 // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
 #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
 	#pragma pack( pop )