Procházet zdrojové kódy

Converted CZ_ACK_SELECT_DEALTYPE to struct (#8796)

Lemongrass3110 před 6 měsíci
rodič
revize
48484433c2
3 změnil soubory, kde provedl 19 přidání a 7 odebrání
  1. 11 6
      src/map/clif.cpp
  2. 1 1
      src/map/clif_packetdb.hpp
  3. 7 0
      src/map/packets.hpp

+ 11 - 6
src/map/clif.cpp

@@ -12203,17 +12203,22 @@ void clif_parse_NpcClicked( int fd, map_session_data* sd ){
 }
 
 
-/// Selection between buy/sell was made (CZ_ACK_SELECT_DEALTYPE).
-/// 00c5 <id>.L <type>.B
+/// Selection between buy/sell was made.
+/// 00c5 <id>.L <type>.B (CZ_ACK_SELECT_DEALTYPE)
 /// type:
 ///     0 = buy
 ///     1 = sell
-void clif_parse_NpcBuySellSelected(int fd,map_session_data *sd)
-{
-	struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
+void clif_parse_NpcBuySellSelected( int fd, map_session_data* sd ){
+	const PACKET_CZ_ACK_SELECT_DEALTYPE* p = reinterpret_cast<PACKET_CZ_ACK_SELECT_DEALTYPE*>( RFIFOP( fd, 0 ) );
+
+	if( sd == nullptr ){
+		return;
+	}
+
 	if (sd->state.trading)
 		return;
-	npc_buysellsel(sd,RFIFOL(fd,info->pos[0]),RFIFOB(fd,info->pos[1]));
+
+	npc_buysellsel( sd, p->GID, p->type );
 }
 
 

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -69,7 +69,7 @@
 	packet(0x00c0,7);
 	parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0);
 	packet(0x00c3,8);
-	parseable_packet(0x00c5,7,clif_parse_NpcBuySellSelected,2,6);
+	parseable_packet( HEADER_CZ_ACK_SELECT_DEALTYPE, sizeof( PACKET_CZ_ACK_SELECT_DEALTYPE ), clif_parse_NpcBuySellSelected, 0 );
 	packet(0x00c6,-1);
 	parseable_packet(0x00c8,-1,clif_parse_NpcBuyListSend,2,4);
 	parseable_packet(HEADER_CZ_PC_SELL_ITEMLIST,-1,clif_parse_NpcSellListSend,2,4);

+ 7 - 0
src/map/packets.hpp

@@ -1441,6 +1441,13 @@ struct PACKET_CZ_REQ_WEAR_EQUIP{
 DEFINE_PACKET_HEADER(CZ_REQ_WEAR_EQUIP, 0xa9);
 #endif
 
+struct PACKET_CZ_ACK_SELECT_DEALTYPE{
+	int16 packetType;
+	uint32 GID;
+	uint8 type;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_ACK_SELECT_DEALTYPE, 0xc5);
+
 // 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 )