summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt3
-rw-r--r--src/map/atcommand.c25
-rw-r--r--src/map/clif.c2
3 files changed, 22 insertions, 8 deletions
diff --git a/Changelog.txt b/Changelog.txt
index a299675fd..fb7eb0905 100644
--- a/Changelog.txt
+++ b/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]
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index b93fc3c34..2739a5cf8 100644
--- a/src/map/atcommand.c
+++ b/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);
}
}
diff --git a/src/map/clif.c b/src/map/clif.c
index aa74f4e87..b0b0546aa 100644
--- a/src/map/clif.c
+++ b/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