Quellcode durchsuchen

Converted ZC_DISAPPEAR_ENTRY to struct (#9084)

Co-authored-by: Atemo <Atemo@users.noreply.github.com>
Lemongrass3110 vor 2 Monaten
Ursprung
Commit
5939e8a5fb
5 geänderte Dateien mit 21 neuen und 19 gelöschten Zeilen
  1. 13 16
      src/map/clif.cpp
  2. 1 1
      src/map/clif.hpp
  3. 0 1
      src/map/clif_packetdb.hpp
  4. 6 0
      src/map/packets.hpp
  5. 1 1
      src/map/vending.cpp

+ 13 - 16
src/map/clif.cpp

@@ -5640,7 +5640,7 @@ int32 clif_outsight(struct block_list *bl,va_list ap)
 					clif_dispchat(*cd);
 			}
 			if(sd->state.vending)
-				clif_closevendingboard(bl,tsd->fd);
+				clif_closevendingboard( *bl, SELF, &tsd->bl );
 			if(sd->state.buyingstore)
 				clif_buyingstore_disappear_entry( *sd, &tsd->bl );
 			break;
@@ -7625,23 +7625,20 @@ void clif_showvendingboard( map_session_data& sd, enum send_target target, struc
 }
 
 
-/// Removes a vending board from screen (ZC_DISAPPEAR_ENTRY).
-/// 0132 <owner id>.L
-void clif_closevendingboard(struct block_list* bl, int32 fd)
-{
-	unsigned char buf[16];
+/// Removes a vending board from screen.
+/// 0132 <owner id>.L (ZC_DISAPPEAR_ENTRY)
+void clif_closevendingboard( block_list& bl, send_target target, block_list* tbl ){
+	if( tbl == nullptr ){
+		tbl = &bl;
+		target = AREA_WOS;
+	}
 
-	nullpo_retv(bl);
+	PACKET_ZC_DISAPPEAR_ENTRY p = {};
 
-	WBUFW(buf,0) = 0x132;
-	WBUFL(buf,2) = bl->id;
-	if( session_isActive(fd) ) {
-		WFIFOHEAD(fd,packet_len(0x132));
-		memcpy(WFIFOP(fd,0),buf,packet_len(0x132));
-		WFIFOSET(fd,packet_len(0x132));
-	} else {
-		clif_send(buf,packet_len(0x132),bl,AREA_WOS);
-	}
+	p.packetType = HEADER_ZC_DISAPPEAR_ENTRY;
+	p.GID = bl.id;
+
+	clif_send( &p, sizeof( p ), tbl, target );
 }
 
 

+ 1 - 1
src/map/clif.hpp

@@ -1052,7 +1052,7 @@ void clif_changed_dir(block_list& bl, enum send_target target);
 // vending
 void clif_openvendingreq( map_session_data& sd, uint16 num );
 void clif_showvendingboard( map_session_data& sd, enum send_target target = AREA_WOS, struct block_list* tbl = nullptr );
-void clif_closevendingboard(struct block_list* bl, int32 fd);
+void clif_closevendingboard( block_list& bl, send_target target, block_list* tbl );
 void clif_vendinglist( map_session_data& sd, map_session_data& vsd );
 void clif_buyvending( map_session_data& sd, uint16 index, uint16 amount, e_pc_purchase_result_frommc result );
 void clif_openvending( map_session_data& sd );

+ 0 - 1
src/map/clif_packetdb.hpp

@@ -129,7 +129,6 @@
 	parseable_packet(0x012e,2,clif_parse_CloseVending,0);
 	parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84);
 	parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
-	packet(0x0132,6);
 	parseable_packet( HEADER_CZ_PC_PURCHASE_ITEMLIST_FROMMC, -1, clif_parse_PurchaseReq, 0 );
 	packet(0x0138,3);
 	packet(0x013e,24);

+ 6 - 0
src/map/packets.hpp

@@ -1971,6 +1971,12 @@ struct PACKET_CZ_REQ_EMOTION_EXPANSION{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_REQ_EMOTION_EXPANSION, 0xbe9);
 
+struct PACKET_ZC_DISAPPEAR_ENTRY{
+	int16 packetType;
+	int32 GID;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_DISAPPEAR_ENTRY, 0x132);
+
 // 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 )

+ 1 - 1
src/map/vending.cpp

@@ -67,7 +67,7 @@ void vending_closevending(map_session_data* sd)
 
 		sd->state.vending = false;
 		sd->vender_id = 0;
-		clif_closevendingboard(&sd->bl, 0);
+		clif_closevendingboard( sd->bl, AREA_WOS, nullptr );
 		idb_remove(vending_db, sd->status.char_id);
 	}
 }