瀏覽代碼

Converted ZC_USER_COUNT to struct (#8585)

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
AoShinHo 8 月之前
父節點
當前提交
e0d1250645
共有 3 個文件被更改,包括 20 次插入12 次删除
  1. 14 11
      src/map/clif.cpp
  2. 0 1
      src/map/clif_packetdb.hpp
  3. 6 0
      src/map/packets.hpp

+ 14 - 11
src/map/clif.cpp

@@ -11520,25 +11520,28 @@ void clif_parse_Emotion(int fd, map_session_data *sd){
 }
 
 
-/// Amount of currently online players, reply to /w /who (ZC_USER_COUNT).
-/// 00c2 <count>.L
-void clif_user_count(map_session_data* sd, int count)
+/// Amount of currently online players, reply to /w /who
+/// 00c2 <count>.L (ZC_USER_COUNT)
+static void clif_user_count(map_session_data& sd)
 {
-	int fd = sd->fd;
+	PACKET_ZC_USER_COUNT p{};
+
+	p.packetType = HEADER_ZC_USER_COUNT;
+	p.playersCount = map_getusers();
 
-	WFIFOHEAD(fd,packet_len(0xc2));
-	WFIFOW(fd,0) = 0xc2;
-	WFIFOL(fd,2) = count;
-	WFIFOSET(fd,packet_len(0xc2));
+	clif_send(&p,sizeof(p),&sd.bl,SELF);
 }
 
 
 /// /w /who (CZ_REQ_USER_COUNT).
 /// Request to display amount of currently connected players.
 /// 00c1
-void clif_parse_HowManyConnections(int fd, map_session_data *sd)
-{
-	clif_user_count(sd, map_getusers());
+void clif_parse_HowManyConnections(int fd, map_session_data *sd) {
+	if( sd == nullptr ){
+		return;
+	}
+
+	clif_user_count(*sd);
 }
 
 void clif_parse_ActionRequest_sub( map_session_data& sd, uint8 action_type, int target_id, t_tick tick ){

+ 0 - 1
src/map/clif_packetdb.hpp

@@ -73,7 +73,6 @@
 	parseable_packet(0x00bf,3,clif_parse_Emotion,2);
 	packet(0x00c0,7);
 	parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0);
-	packet(0x00c2,6);
 	packet(0x00c3,8);
 	parseable_packet(0x00c5,7,clif_parse_NpcBuySellSelected,2,6);
 	packet(0x00c6,-1);

+ 6 - 0
src/map/packets.hpp

@@ -32,6 +32,12 @@
 	#pragma pack( push, 1 )
 #endif
 
+struct PACKET_ZC_USER_COUNT{
+	uint16 packetType;
+	int32 playersCount;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_USER_COUNT, 0xc2)
+
 struct PACKET_ZC_PC_PURCHASE_RESULT{
 	int16 packetType;
 	uint8 result;