Bladeren bron

Converted CZ_RESET to struct (#8996)

Lemongrass3110 3 maanden geleden
bovenliggende
commit
ec2c5278e0
3 gewijzigde bestanden met toevoegingen van 25 en 8 verwijderingen
  1. 18 7
      src/map/clif.cpp
  2. 1 1
      src/map/clif_packetdb.hpp
  3. 6 0
      src/map/packets.hpp

+ 18 - 7
src/map/clif.cpp

@@ -13472,19 +13472,30 @@ void clif_parse_SolveCharName(int32 fd, map_session_data *sd)
 }
 
 
-/// /resetskill /resetstate (CZ_RESET).
+/// /resetskill /resetstate.
 /// Request to reset stats or skills.
-/// 0197 <type>.W
+/// 0197 <type>.W (CZ_RESET)
 /// type:
 ///     0 = state
 ///     1 = skill
 void clif_parse_ResetChar(int32 fd, map_session_data *sd) {
-	char cmd[15];
+	if( sd == nullptr ){
+		return;
+	}
 
-	if( RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) )
-		safesnprintf(cmd,sizeof(cmd),"%cresetskill",atcommand_symbol);
-	else
-		safesnprintf(cmd,sizeof(cmd),"%cresetstat",atcommand_symbol);
+	const PACKET_CZ_RESET* p = reinterpret_cast<PACKET_CZ_RESET*>( RFIFOP( fd, 0 ) );
+	char cmd[CHAT_SIZE_MAX];
+
+	switch( p->type ){
+		case 0:
+			safesnprintf( cmd, sizeof( cmd ), "%cresetstat", atcommand_symbol );
+			break;
+		case 1:
+			safesnprintf( cmd, sizeof(cmd), "%cresetskill", atcommand_symbol );
+			break;
+		default:
+			return;
+	}
 
 	is_atcommand(fd, sd, cmd, 1);
 }

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -192,7 +192,7 @@
 	parseable_packet(0x0190,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
 	parseable_packet(0x0193,6,clif_parse_SolveCharName,2);
 	packet(0x0196,9);
-	parseable_packet(0x0197,4,clif_parse_ResetChar,2);
+	parseable_packet( HEADER_CZ_RESET, sizeof( PACKET_CZ_RESET ), clif_parse_ResetChar, 0 );
 	parseable_packet(0x0198,8,clif_parse_GMChangeMapType,2,4,6);
 	packet(0x0199,4);
 	packet(0x019a,14);

+ 6 - 0
src/map/packets.hpp

@@ -1790,6 +1790,12 @@ struct PACKET_CZ_CLOSE_DIALOG{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_CLOSE_DIALOG, 0x146);
 
+struct PACKET_CZ_RESET{
+	int16 packetType;
+	uint16 type;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_RESET, 0x197);
+
 // 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 )