소스 검색

Removed use of emote packet to send red mute icon.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@270 54d463be-8e91-2dee-dedb-b68131a5f0ec
valaris 20 년 전
부모
커밋
a7617f739b
3개의 변경된 파일22개의 추가작업 그리고 8개의 파일을 삭제
  1. 2 1
      Changelog.txt
  2. 18 7
      src/map/atcommand.c
  3. 2 0
      src/map/clif.c

+ 2 - 1
Changelog.txt

@@ -1,9 +1,10 @@
 Date	Added
 11/20
+	* Prevent use of emotion packet to display red mute emote. [Valaris]
 	* Initialized "day" variable in npc.c. [Valaris]
 	* Added @whozeny. Shows list of top 50 online players and their zeny sorted from highest to lowest. [Valaris]
 	* Added @happyhappyjoyjoy. Makes all players on server do a random emote. [Valaris]
-	* Removed -funroll-loops from compile. (Do not re-add!) [Valaris]
+	* Removed -funroll-loops from compile, thanks to kashy for pointing out the problems caused by this. (Do not re-add!) [Valaris]
 	* Skill updates [celest]
 	* Added check for max vending_max_value when reading config [kobra_k88]
 	* Skill updates [celest]

+ 18 - 7
src/map/atcommand.c

@@ -565,6 +565,18 @@ char * job_name(int class) {
 	return "Unknown Job";
 }
 
+// compare function for sorting high to lowest
+int hightolow_compare (const void * a, const void * b)
+{
+  return ( *(int*)b - *(int*)a );
+}
+
+// compare function for sorting lowest to highest
+int lowtohigh_compare (const void * a, const void * b)
+{
+  return ( *(int*)a - *(int*)b );
+}
+
 //-----------------------------------------------------------
 // Return the message string of the specified number by [Yor]
 //-----------------------------------------------------------
@@ -1600,11 +1612,6 @@ int atcommand_whogm(
 	return 0;
 }
 
-int compare (const void * a, const void * b)
-{
-  return ( *(int*)b - *(int*)a );
-}
-
 int atcommand_whozeny(
 	const int fd, struct map_session_data* sd,
 	const char* command, const char* message)
@@ -1639,7 +1646,7 @@ int atcommand_whozeny(
 		}
 	}
 
-	qsort(zeny, count, sizeof(int), compare);
+	qsort(zeny, count, sizeof(int), hightolow_compare);
 	for (c = 0; c < count && c < 50; c++) {
 		if(!zeny[c])
 			continue;
@@ -1667,6 +1674,8 @@ int atcommand_whozeny(
 	return 0;
 }
 
+
+// cause random emote on all online players [Valaris]
 int atcommand_happyhappyjoyjoy(
 	const int fd, struct map_session_data* sd,
 	const char* command, const char* message)
@@ -1677,7 +1686,9 @@ int atcommand_happyhappyjoyjoy(
 
 	for (i = 0; i < fd_max; i++) {
 		if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) {
-			e=rand()%40;	
+			e=rand()%40;
+			if(e==34) 
+				e = 0;
 			clif_emotion(&pl_sd->bl,e);
 		}
 	}

+ 2 - 0
src/map/clif.c

@@ -7774,6 +7774,8 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd) {
 	if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) {
 		WBUFW(buf,0) = 0xc0;
 		WBUFL(buf,2) = sd->bl.id;
+		if(RFIFOB(fd,2)==34) // prevent use of the mute emote [Valaris]
+			return;
 		WBUFB(buf,6) = RFIFOB(fd,2);
 		clif_send(buf, packet_len_table[0xc0], &sd->bl, AREA);
 	} else