소스 검색

Converted CZ_ACTIVE_QUEST to struct (#8821)

Lemongrass3110 6 달 전
부모
커밋
cd0840d6dc
3개의 변경된 파일19개의 추가작업 그리고 8개의 파일을 삭제
  1. 8 7
      src/map/clif.cpp
  2. 4 1
      src/map/clif_packetdb.hpp
  3. 7 0
      src/map/packets.hpp

+ 8 - 7
src/map/clif.cpp

@@ -17946,13 +17946,14 @@ void clif_quest_update_objective(map_session_data *sd, struct quest *qd)
 }
 
 
-/// Request to change the state of a quest (CZ_ACTIVE_QUEST).
-/// 02b6 <quest id>.L <active>.B
-void clif_parse_questStateAck(int32 fd, map_session_data *sd)
-{
-	struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-	quest_update_status(sd, RFIFOL(fd,info->pos[0]),
-	    RFIFOB(fd,info->pos[1])?Q_ACTIVE:Q_INACTIVE);
+/// Request to change the state of a quest.
+/// 02b6 <quest id>.L <active>.B (CZ_ACTIVE_QUEST)
+void clif_parse_questStateAck( int32 fd, map_session_data* sd ){
+#if PACKETVER >= 20070622
+	const PACKET_CZ_ACTIVE_QUEST* p = reinterpret_cast<PACKET_CZ_ACTIVE_QUEST*>( RFIFOP( fd, 0 ) );
+
+	quest_update_status( sd, p->quest_id, ( p->active != 0 ) ? Q_ACTIVE : Q_INACTIVE );
+#endif
 }
 
 

+ 4 - 1
src/map/clif_packetdb.hpp

@@ -938,7 +938,6 @@
 	packet(0x02b3,107);
 	packet(0x02b4,6);
 	packet(0x02b5,-1);
-	parseable_packet(0x02b6,7,clif_parse_questStateAck,2,6);
 	packet(0x02b7,7);
 	packet( HEADER_ZC_ITEM_PICKUP_PARTY, sizeof( struct PACKET_ZC_ITEM_PICKUP_PARTY ) );
 	packet(0x02b9,191);
@@ -971,6 +970,10 @@
 	packet(0x02e0,34);
 #endif
 
+#if PACKETVER >= 20070622
+	parseable_packet( HEADER_CZ_ACTIVE_QUEST, sizeof( PACKET_CZ_ACTIVE_QUEST ), clif_parse_questStateAck, 0 );
+#endif
+
 // 2007-10-23aSakexe
 #if PACKETVER >= 20071023
 	packet(0x02cb,65);

+ 7 - 0
src/map/packets.hpp

@@ -1577,6 +1577,13 @@ struct PACKET_CZ_LESSEFFECT{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_LESSEFFECT, 0x21d);
 
+struct PACKET_CZ_ACTIVE_QUEST{
+	int16 packetType;
+	uint32 quest_id;
+	uint8 active;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_ACTIVE_QUEST, 0x2b6);
+
 // 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 )