Sfoglia il codice sorgente

Converted CZ_MOVE_ITEM_FROM_CART_TO_STORE to struct (#8994)

Lemongrass3110 3 mesi fa
parent
commit
affe15f176
3 ha cambiato i file con 19 aggiunte e 16 eliminazioni
  1. 11 15
      src/map/clif.cpp
  2. 1 1
      src/map/clif_packetdb.hpp
  3. 7 0
      src/map/packets.hpp

+ 11 - 15
src/map/clif.cpp

@@ -13608,13 +13608,12 @@ void clif_parse_MoveFromKafra(int32 fd,map_session_data *sd)
 }
 
 
-/// Request to move an item from cart to storage (CZ_MOVE_ITEM_FROM_CART_TO_STORE).
-/// 0129 <index>.W <amount>.L
+/// Request to move an item from cart to storage.
+/// 0129 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_CART_TO_STORE)
 void clif_parse_MoveToKafraFromCart(int32 fd, map_session_data *sd){
-	struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-
-	int32 idx = RFIFOW(fd,info->pos[0]) - 2;
-	int32 amount = RFIFOL(fd,info->pos[1]);
+	if( sd == nullptr ){
+		return;
+	}
 
 	if( sd->state.vending )
 		return;
@@ -13623,19 +13622,16 @@ void clif_parse_MoveToKafraFromCart(int32 fd, map_session_data *sd){
 	if (map_getmapflag(sd->bl.m, MF_NOUSECART))
 		return;
 
-	if (idx < 0 || idx >= MAX_INVENTORY || amount < 1)
-		return;
-	if( sd->inventory.u.items_inventory[idx].equipSwitch ){
-		clif_msg( sd, MSI_SWAP_EQUIPITEM_UNREGISTER_FIRST );
-		return;
-	}
+	const PACKET_CZ_MOVE_ITEM_FROM_CART_TO_STORE* p = reinterpret_cast<PACKET_CZ_MOVE_ITEM_FROM_CART_TO_STORE*>( RFIFOP( fd, 0 ) );
+	uint16 idx = server_index( p->index );
+
 
 	if (sd->state.storage_flag == 1)
-		storage_storageaddfromcart(sd, &sd->storage, idx, amount);
+		storage_storageaddfromcart( sd, &sd->storage, idx, p->amount );
 	else if (sd->state.storage_flag == 2)
-		storage_guild_storageaddfromcart(sd, idx, amount);
+		storage_guild_storageaddfromcart( sd, idx, p->amount );
 	else if (sd->state.storage_flag == 3)
-		storage_storageaddfromcart(sd, &sd->premiumStorage, idx, amount);
+		storage_storageaddfromcart( sd, &sd->premiumStorage, idx, p->amount );
 }
 
 

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -128,7 +128,7 @@
 	parseable_packet( HEADER_CZ_MOVE_ITEM_FROM_BODY_TO_CART, sizeof( PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART ), clif_parse_PutItemToCart, 0 );
 	parseable_packet( HEADER_CZ_MOVE_ITEM_FROM_CART_TO_BODY, sizeof( PACKET_CZ_MOVE_ITEM_FROM_CART_TO_BODY ), clif_parse_GetItemFromCart, 0 );
 	parseable_packet( HEADER_CZ_MOVE_ITEM_FROM_STORE_TO_CART, sizeof( PACKET_CZ_MOVE_ITEM_FROM_STORE_TO_CART ), clif_parse_MoveFromKafraToCart, 0 );
-	parseable_packet(0x0129,8,clif_parse_MoveToKafraFromCart,2,4);
+	parseable_packet( HEADER_CZ_MOVE_ITEM_FROM_CART_TO_STORE, sizeof( PACKET_CZ_MOVE_ITEM_FROM_CART_TO_STORE ), clif_parse_MoveToKafraFromCart, 0 );
 	parseable_packet(0x012a,2,clif_parse_RemoveOption,0);
 	parseable_packet(0x012e,2,clif_parse_CloseVending,0);
 	parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84);

+ 7 - 0
src/map/packets.hpp

@@ -1835,6 +1835,13 @@ struct PACKET_CZ_LOCALBROADCAST{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_LOCALBROADCAST, 0x19c);
 
+struct PACKET_CZ_MOVE_ITEM_FROM_CART_TO_STORE{
+	int16 packetType;
+	uint16 index;
+	int32 amount;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_CART_TO_STORE, 0x129);
+
 // 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 )