Ver código fonte

Converted ZC_MEMBER_EXIT to struct (#8790)

Lemongrass3110 6 meses atrás
pai
commit
ad21e734e0
5 arquivos alterados com 19 adições e 16 exclusões
  1. 1 1
      src/map/chat.cpp
  2. 9 13
      src/map/clif.cpp
  3. 1 1
      src/map/clif.hpp
  4. 0 1
      src/map/clif_packetdb.hpp
  5. 8 0
      src/map/packets.hpp

+ 1 - 1
src/map/chat.cpp

@@ -209,7 +209,7 @@ int chat_leavechat(map_session_data* sd, bool kicked)
 		return -1;
 	}
 
-	clif_leavechat(cd, sd, kicked);
+	clif_chat_leave( *cd, *sd, kicked );
 	pc_setchatid(sd, 0);
 	cd->users--;
 

+ 9 - 13
src/map/clif.cpp

@@ -4694,24 +4694,20 @@ void clif_changechatowner(struct chat_data* cd, map_session_data* sd)
 }
 
 
-/// Notify about user leaving the chatroom (ZC_MEMBER_EXIT).
-/// 00dd <users>.W <nick>.24B <flag>.B
+/// Notify about user leaving the chatroom.
+/// 00dd <users>.W <nick>.24B <flag>.B (ZC_MEMBER_EXIT)
 /// flag:
 ///     0 = left
 ///     1 = kicked
-void clif_leavechat(struct chat_data* cd, map_session_data* sd, bool flag)
-{
-	unsigned char buf[32];
-
-	nullpo_retv(sd);
-	nullpo_retv(cd);
+void clif_chat_leave( chat_data& cd, map_session_data& sd, bool kicked ){
+	PACKET_ZC_MEMBER_EXIT p = {};
 
-	WBUFW(buf, 0) = 0xdd;
-	WBUFW(buf, 2) = cd->users-1;
-	safestrncpy(WBUFCP(buf,4),sd->status.name,NAME_LENGTH);
-	WBUFB(buf,28) = flag;
+	p.packetType = HEADER_ZC_MEMBER_EXIT;
+	p.count = cd.users - 1;
+	safestrncpy( p.name, sd.status.name, sizeof( p.name ) );
+	p.kicked = kicked;
 
-	clif_send(buf,packet_len(0xdd),&sd->bl,CHAT);
+	clif_send( &p, sizeof( p ), &sd.bl, CHAT );
 }
 
 

+ 1 - 1
src/map/clif.hpp

@@ -889,7 +889,7 @@ void clif_joinchatok(map_session_data& sd,chat_data& cd);
 void clif_addchat( chat_data& cd, map_session_data& sd );
 void clif_changechatowner(struct chat_data* cd, map_session_data* sd);	// chat
 void clif_clearchat(chat_data &cd);
-void clif_leavechat(struct chat_data* cd, map_session_data* sd, bool flag);	// chat
+void clif_chat_leave( chat_data& cd, map_session_data& sd, bool kicked );
 void clif_changechatstatus(chat_data& cd);
 void clif_refresh_storagewindow(map_session_data *sd);
 void clif_refresh(map_session_data *sd);	// self

+ 0 - 1
src/map/clif_packetdb.hpp

@@ -87,7 +87,6 @@
 	parseable_packet(0x00d5,-1,clif_parse_CreateChatRoom,2,4,6,7,15);
 	packet(0x00d7,-1);
 	parseable_packet(0x00d9,14,clif_parse_ChatAddMember,2,6);
-	packet(0x00dd,29);
 	parseable_packet(0x00de,-1,clif_parse_ChatRoomStatusChange,2,4,6,7,15);
 	parseable_packet(0x00e0,30,clif_parse_ChangeChatOwner,2,6);
 	packet(0x00e1,30);

+ 8 - 0
src/map/packets.hpp

@@ -1401,6 +1401,14 @@ struct PACKET_ZC_MEMBER_NEWENTRY{
 } __attribute__((packed));
 DEFINE_PACKET_HEADER(ZC_MEMBER_NEWENTRY, 0xdc);
 
+struct PACKET_ZC_MEMBER_EXIT{
+	int16 packetType;
+	uint16 count;
+	char name[NAME_LENGTH];
+	uint8 kicked;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_MEMBER_EXIT, 0xdd);
+
 // 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 )