소스 검색

Converted CZ_SELECTAUTOSPELL to struct (#8999)

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

+ 7 - 3
src/map/clif.cpp

@@ -13426,14 +13426,18 @@ void clif_parse_SelectArrow(int32 fd,map_session_data *sd) {
 }
 
 
-/// Answer to SA_AUTOSPELL skill selection dialog (CZ_SELECTAUTOSPELL).
-/// 01ce <skill id>.L
+/// Answer to SA_AUTOSPELL skill selection dialog.
+/// 01ce <skill id>.L (CZ_SELECTAUTOSPELL)
 void clif_parse_AutoSpell(int32 fd,map_session_data *sd)
 {
 	if (sd->menuskill_id != SA_AUTOSPELL)
 		return;
 	sd->state.workinprogress = WIP_DISABLE_NONE;
-	skill_autospell(sd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]));
+
+	const PACKET_CZ_SELECTAUTOSPELL* p = reinterpret_cast<PACKET_CZ_SELECTAUTOSPELL*>( RFIFOP( fd, 0 ) );
+
+	skill_autospell( sd, static_cast<uint16>( p->skill_id ) );
+
 	clif_menuskill_clear(sd);
 }
 

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -231,7 +231,7 @@
 	packet(0x01c7,2);
 	packet(0x01cb,9);
 	packet(0x01cc,9);
-	parseable_packet(0x01ce,6,clif_parse_AutoSpell,2);
+	parseable_packet( HEADER_CZ_SELECTAUTOSPELL, sizeof( PACKET_CZ_SELECTAUTOSPELL ), clif_parse_AutoSpell, 0 );
 	packet(0x01cf,28);
 	packet(0x01d0,8);
 	parseable_packet( HEADER_CZ_INPUT_EDITDLGSTR, -1, clif_parse_NpcStringInput, 0 );

+ 6 - 0
src/map/packets.hpp

@@ -1809,6 +1809,12 @@ struct PACKET_CZ_REQ_ITEMIDENTIFY{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(CZ_REQ_ITEMIDENTIFY, 0x178);
 
+struct PACKET_CZ_SELECTAUTOSPELL{
+	int16 packetType;
+	uint32 skill_id;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_SELECTAUTOSPELL, 0x1ce);
+
 // 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 )