Browse Source

Converted some banking packets to struct (#8297)

Lemongrass3110 1 year ago
parent
commit
3ada0c11be
3 changed files with 71 additions and 34 deletions
  1. 34 29
      src/map/clif.cpp
  2. 5 5
      src/map/clif_packetdb.hpp
  3. 32 0
      src/map/packets.hpp

+ 34 - 29
src/map/clif.cpp

@@ -7449,9 +7449,12 @@ void clif_bank_open( map_session_data& sd ){
 
 
 /*
 /*
  * Request to Open the banking system
  * Request to Open the banking system
- * 09B6 <aid>L ??? (dunno just wild guess checkme)
+ * 09B6 <aid>L (CZ_REQ_OPEN_BANKING)
  */
  */
 void clif_parse_BankOpen(int fd, map_session_data* sd) {
 void clif_parse_BankOpen(int fd, map_session_data* sd) {
+#if PACKETVER >= 20130717
+	PACKET_CZ_REQ_OPEN_BANKING* p = (PACKET_CZ_REQ_OPEN_BANKING*)RFIFOP( fd, 0 );
+
 	//TODO check if preventing trade or stuff like that
 	//TODO check if preventing trade or stuff like that
 	//also mark something in case char ain't available for saving, should we check now ?
 	//also mark something in case char ain't available for saving, should we check now ?
 	nullpo_retv(sd);
 	nullpo_retv(sd);
@@ -7464,9 +7467,7 @@ void clif_parse_BankOpen(int fd, map_session_data* sd) {
 		return;
 		return;
 	}
 	}
 	else {
 	else {
-		struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-		int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ?
-		if(sd->status.account_id == aid){
+		if(sd->status.account_id == p->AID){
 			sd->state.banking = 1;
 			sd->state.banking = 1;
 			//request save ?
 			//request save ?
 			//chrif_bankdata_request(sd->status.account_id, sd->status.char_id);
 			//chrif_bankdata_request(sd->status.account_id, sd->status.char_id);
@@ -7474,6 +7475,7 @@ void clif_parse_BankOpen(int fd, map_session_data* sd) {
 			clif_bank_open( *sd );
 			clif_bank_open( *sd );
 		}
 		}
 	}
 	}
+#endif
 }
 }
 
 
 // 09B9 <unknow data> (ZC_ACK_CLOSE_BANKING)
 // 09B9 <unknow data> (ZC_ACK_CLOSE_BANKING)
@@ -7490,21 +7492,22 @@ void clif_bank_close( map_session_data& sd ){
 
 
 /*
 /*
  * Request to close the banking system
  * Request to close the banking system
- * 09B8 <aid>L ??? (dunno just wild guess checkme)
+ * 09B8 <aid>L (CZ_REQ_CLOSE_BANKING)
  */
  */
 void clif_parse_BankClose(int fd, map_session_data* sd) {
 void clif_parse_BankClose(int fd, map_session_data* sd) {
-	struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-	int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ?
+#if PACKETVER >= 20130717
+	PACKET_CZ_REQ_CLOSE_BANKING* p = (PACKET_CZ_REQ_CLOSE_BANKING*)RFIFOP( fd, 0 );
 
 
 	nullpo_retv(sd);
 	nullpo_retv(sd);
 	if( !battle_config.feature_banking ) {
 	if( !battle_config.feature_banking ) {
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
 		//still allow to go trough to not stuck player if we have disable it while they was in
 		//still allow to go trough to not stuck player if we have disable it while they was in
 	}
 	}
-	if(sd->status.account_id == aid){
+	if(sd->status.account_id == p->AID){
 		sd->state.banking = 0;
 		sd->state.banking = 0;
 		clif_bank_close( *sd );
 		clif_bank_close( *sd );
 	}
 	}
+#endif
 }
 }
 
 
 /*
 /*
@@ -7525,9 +7528,12 @@ void clif_Bank_Check( map_session_data& sd ){
 
 
 /*
 /*
  * Requesting the data in bank
  * Requesting the data in bank
- * 09AB <aid>L (PACKET_CZ_REQ_BANKING_CHECK)
+ * 09AB <aid>L (CZ_REQ_BANKING_CHECK)
  */
  */
 void clif_parse_BankCheck(int fd, map_session_data* sd) {
 void clif_parse_BankCheck(int fd, map_session_data* sd) {
+#if PACKETVER >= 20130717
+	PACKET_CZ_REQ_BANKING_CHECK* p = (PACKET_CZ_REQ_BANKING_CHECK*)RFIFOP( fd, 0 );
+
 	nullpo_retv(sd);
 	nullpo_retv(sd);
 
 
 	if( !battle_config.feature_banking ) {
 	if( !battle_config.feature_banking ) {
@@ -7539,16 +7545,15 @@ void clif_parse_BankCheck(int fd, map_session_data* sd) {
 		return;
 		return;
 	}
 	}
 	else {
 	else {
-		struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-		int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ?
-		if(sd->status.account_id == aid) //since we have it let check it for extra security
+		if(sd->status.account_id == p->AID) //since we have it let check it for extra security
 			clif_Bank_Check( *sd );
 			clif_Bank_Check( *sd );
 	}
 	}
+#endif
 }
 }
 
 
 /*
 /*
  * Acknowledge of deposit some money in bank
  * Acknowledge of deposit some money in bank
-  09A8 <Reason>W <Money>Q <balance>L (PACKET_ZC_ACK_BANKING_DEPOSIT)
+  09A8 <Reason>W <Money>Q <balance>L (ZC_ACK_BANKING_DEPOSIT)
  */
  */
 void clif_bank_deposit( map_session_data& sd, enum e_BANKING_DEPOSIT_ACK reason ){
 void clif_bank_deposit( map_session_data& sd, enum e_BANKING_DEPOSIT_ACK reason ){
 #if PACKETVER >= 20130717
 #if PACKETVER >= 20130717
@@ -7566,9 +7571,12 @@ void clif_bank_deposit( map_session_data& sd, enum e_BANKING_DEPOSIT_ACK reason
 /*
 /*
  * Request saving some money in bank
  * Request saving some money in bank
  * @author : original [Yommy/Hercules]
  * @author : original [Yommy/Hercules]
- * 09A7 <AID>L <Money>L (PACKET_CZ_REQ_BANKING_DEPOSIT)
+ * 09A7 <AID>L <Money>L (CZ_REQ_BANKING_DEPOSIT)
  */
  */
 void clif_parse_BankDeposit(int fd, map_session_data* sd) {
 void clif_parse_BankDeposit(int fd, map_session_data* sd) {
+#if PACKETVER >= 20130717
+	PACKET_CZ_REQ_BANKING_DEPOSIT* p = (PACKET_CZ_REQ_BANKING_DEPOSIT*)RFIFOP( fd, 0 );
+
 	nullpo_retv(sd);
 	nullpo_retv(sd);
 	if( !battle_config.feature_banking ) {
 	if( !battle_config.feature_banking ) {
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
@@ -7579,20 +7587,17 @@ void clif_parse_BankDeposit(int fd, map_session_data* sd) {
 		return;
 		return;
 	}
 	}
 	else {
 	else {
-		struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-		int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ?
-		int money = RFIFOL(fd,info->pos[1]);
-
-		if(sd->status.account_id == aid){
-			enum e_BANKING_DEPOSIT_ACK reason = pc_bank_deposit(sd,max(0,money));
+		if(sd->status.account_id == p->AID){
+			enum e_BANKING_DEPOSIT_ACK reason = pc_bank_deposit(sd,max(0,p->zeny));
 			clif_bank_deposit( *sd, reason );
 			clif_bank_deposit( *sd, reason );
 		}
 		}
 	}
 	}
+#endif
 }
 }
 
 
 /*
 /*
  * Acknowledge of withdrawing some money from bank
  * Acknowledge of withdrawing some money from bank
-  09AA <Reason>W <Money>Q <balance>L (PACKET_ZC_ACK_BANKING_WITHDRAW)
+ * 09AA <Reason>W <Money>Q <balance>L (ZC_ACK_BANKING_WITHDRAW)
  */
  */
 void clif_bank_withdraw( map_session_data& sd, enum e_BANKING_WITHDRAW_ACK reason ){
 void clif_bank_withdraw( map_session_data& sd, enum e_BANKING_WITHDRAW_ACK reason ){
 #if PACKETVER >= 20130717
 #if PACKETVER >= 20130717
@@ -7609,10 +7614,13 @@ void clif_bank_withdraw( map_session_data& sd, enum e_BANKING_WITHDRAW_ACK reaso
 
 
 /*
 /*
  * Request Withdrawing some money from bank
  * Request Withdrawing some money from bank
- * 09A9 <AID>L <Money>L (PACKET_CZ_REQ_BANKING_WITHDRAW)
+ * 09A9 <AID>L <Money>L (CZ_REQ_BANKING_WITHDRAW)
  */
  */
 void clif_parse_BankWithdraw(int fd, map_session_data* sd) {
 void clif_parse_BankWithdraw(int fd, map_session_data* sd) {
-        nullpo_retv(sd);
+#if PACKETVER >= 20130717
+	PACKET_CZ_REQ_BANKING_WITHDRAW* p = (PACKET_CZ_REQ_BANKING_WITHDRAW*)RFIFOP( fd, 0 );
+
+	nullpo_retv(sd);
 	if( !battle_config.feature_banking ) {
 	if( !battle_config.feature_banking ) {
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
 		clif_messagecolor(&sd->bl,color_table[COLOR_RED],msg_txt(sd,1496),false,SELF); //Banking is disabled
 		return;
 		return;
@@ -7622,14 +7630,12 @@ void clif_parse_BankWithdraw(int fd, map_session_data* sd) {
 		return;
 		return;
 	}
 	}
 	else {
 	else {
-		struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-		int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ?
-		int money = RFIFOL(fd,info->pos[1]);
-		if(sd->status.account_id == aid){
-			enum e_BANKING_WITHDRAW_ACK reason = pc_bank_withdraw(sd,max(0,money));
+		if(sd->status.account_id == p->AID){
+			enum e_BANKING_WITHDRAW_ACK reason = pc_bank_withdraw(sd,max(0,p->zeny));
 			clif_bank_withdraw( *sd, reason );
 			clif_bank_withdraw( *sd, reason );
 		}
 		}
 	}
 	}
+#endif
 }
 }
 
 
 /// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART).
 /// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART).
@@ -11497,7 +11503,6 @@ void clif_disconnect_ack(map_session_data* sd, short result)
 void clif_parse_QuitGame(int fd, map_session_data *sd)
 void clif_parse_QuitGame(int fd, map_session_data *sd)
 {
 {
 	/*	Rovert's prevent logout option fixed [Valaris]	*/
 	/*	Rovert's prevent logout option fixed [Valaris]	*/
-	//int type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]);
 	if( !sd->sc.getSCE(SC_CLOAKING) && !sd->sc.getSCE(SC_HIDING) && !sd->sc.getSCE(SC_CHASEWALK) && !sd->sc.getSCE(SC_CLOAKINGEXCEED) && !sd->sc.getSCE(SC_SUHIDE) && !sd->sc.getSCE(SC_NEWMOON) &&
 	if( !sd->sc.getSCE(SC_CLOAKING) && !sd->sc.getSCE(SC_HIDING) && !sd->sc.getSCE(SC_CHASEWALK) && !sd->sc.getSCE(SC_CLOAKINGEXCEED) && !sd->sc.getSCE(SC_SUHIDE) && !sd->sc.getSCE(SC_NEWMOON) &&
 		(!battle_config.prevent_logout || sd->canlog_tick == 0 || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
 		(!battle_config.prevent_logout || sd->canlog_tick == 0 || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
 	{
 	{

+ 5 - 5
src/map/clif_packetdb.hpp

@@ -2038,11 +2038,11 @@
 
 
 // 2013-07-17Ragexe
 // 2013-07-17Ragexe
 #if PACKETVER >= 20130717
 #if PACKETVER >= 20130717
-	parseable_packet(0x09A7,10,clif_parse_BankDeposit,2,6);
-	parseable_packet(0x09A9,10,clif_parse_BankWithdraw,2,6);
-	parseable_packet(0x09AB,6,clif_parse_BankCheck,2);
-	parseable_packet(0x09B6,6,clif_parse_BankOpen,2);
-	parseable_packet(0x09B8,6,clif_parse_BankClose,2);
+	parseable_packet( HEADER_CZ_REQ_BANKING_DEPOSIT, sizeof( PACKET_CZ_REQ_BANKING_DEPOSIT ), clif_parse_BankDeposit, 0 );
+	parseable_packet( HEADER_CZ_REQ_BANKING_WITHDRAW, sizeof( PACKET_CZ_REQ_BANKING_WITHDRAW ), clif_parse_BankWithdraw, 0 );
+	parseable_packet( HEADER_CZ_REQ_BANKING_CHECK, sizeof( PACKET_CZ_REQ_BANKING_CHECK ), clif_parse_BankCheck, 0 );
+	parseable_packet( HEADER_CZ_REQ_OPEN_BANKING, sizeof( PACKET_CZ_REQ_OPEN_BANKING ), clif_parse_BankOpen, 0 );
+	parseable_packet( HEADER_CZ_REQ_CLOSE_BANKING, sizeof( PACKET_CZ_REQ_CLOSE_BANKING ), clif_parse_BankClose, 0 );
 #endif
 #endif
 
 
 // 2013-07-31cRagexe
 // 2013-07-31cRagexe

+ 32 - 0
src/map/packets.hpp

@@ -438,6 +438,33 @@ struct PACKET_ZC_SKILL_SELECT_REQUEST{
 	struct PACKET_ZC_SKILL_SELECT_REQUEST_sub skills[];
 	struct PACKET_ZC_SKILL_SELECT_REQUEST_sub skills[];
 } __attribute__((packed));
 } __attribute__((packed));
 
 
+struct PACKET_CZ_REQ_OPEN_BANKING{
+	int16 packetType;
+	uint32 AID;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_CLOSE_BANKING{
+	int16 packetType;
+	uint32 AID;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_BANKING_CHECK{
+	int16 packetType;
+	uint32 AID;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_BANKING_DEPOSIT{
+	int16 packetType;
+	uint32 AID;
+	int32 zeny;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_BANKING_WITHDRAW{
+	int16 packetType;
+	uint32 AID;
+	int32 zeny;
+} __attribute__((packed));
+
 // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
 // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
 #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
 #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
 	#pragma pack( pop )
 	#pragma pack( pop )
@@ -481,15 +508,20 @@ DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
 DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
 DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
 DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
 DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
 DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
 DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
+DEFINE_PACKET_HEADER(CZ_REQ_BANKING_DEPOSIT, 0x9a7)
 DEFINE_PACKET_HEADER(ZC_ACK_BANKING_DEPOSIT, 0x9a8)
 DEFINE_PACKET_HEADER(ZC_ACK_BANKING_DEPOSIT, 0x9a8)
+DEFINE_PACKET_HEADER(CZ_REQ_BANKING_WITHDRAW, 0x9a9)
 DEFINE_PACKET_HEADER(ZC_ACK_BANKING_WITHDRAW, 0x9aa)
 DEFINE_PACKET_HEADER(ZC_ACK_BANKING_WITHDRAW, 0x9aa)
+DEFINE_PACKET_HEADER(CZ_REQ_BANKING_CHECK, 0x9ab)
 DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
 DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
 DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
 DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
 DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae)
 DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae)
 DEFINE_PACKET_HEADER(CZ_REQ_REMOVE_BARGAIN_SALE_ITEM, 0x9b0)
 DEFINE_PACKET_HEADER(CZ_REQ_REMOVE_BARGAIN_SALE_ITEM, 0x9b0)
 DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2)
 DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2)
 DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3)
 DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3)
+DEFINE_PACKET_HEADER(CZ_REQ_OPEN_BANKING, 0x9b6)
 DEFINE_PACKET_HEADER(ZC_ACK_OPEN_BANKING, 0x9b7)
 DEFINE_PACKET_HEADER(ZC_ACK_OPEN_BANKING, 0x9b7)
+DEFINE_PACKET_HEADER(CZ_REQ_CLOSE_BANKING, 0x9b8)
 DEFINE_PACKET_HEADER(ZC_ACK_CLOSE_BANKING, 0x9b9)
 DEFINE_PACKET_HEADER(ZC_ACK_CLOSE_BANKING, 0x9b9)
 DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4)
 DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4)
 DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da)
 DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da)