diff options
-rw-r--r-- | Changelog-SVN.txt | 2 | ||||
-rw-r--r-- | src/map/clif.c | 14 | ||||
-rw-r--r-- | src/map/map.h | 2 |
3 files changed, 15 insertions, 3 deletions
diff --git a/Changelog-SVN.txt b/Changelog-SVN.txt index 8d778a8bc..147ab8256 100644 --- a/Changelog-SVN.txt +++ b/Changelog-SVN.txt @@ -1,7 +1,7 @@ Date Added 03/02 - + * Fixed Emotion Flood (by Yor) [Lupus] * SQL: Fixed temporary ban. Now banned players can enter the server when the ban time is over. [Lupus] It wasn't working because STATE hasn't been cleared properly. Also fixed wrong client messages (ban reasons: Banned by GM / Temp ban till DATE). diff --git a/src/map/clif.c b/src/map/clif.c index d658866cc..9670983d1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8163,10 +8163,20 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd) { nullpo_retv(sd); if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) { + if (RFIFOB(fd,2) == 34) {// prevent use of the mute emote [Valaris] + clif_skill_fail(sd, 1, 0, 1); + return; + } + // fix flood of emotion icon (ro-proxy): flood only the hacker player + if (sd->emotionlasttime >= time(NULL)) { + sd->emotionlasttime = time(NULL) + 2; // not more than 1 every 2 seconds (normal client is every 3-4 seconds) + clif_skill_fail(sd, 1, 0, 1); + return; + } + sd->emotionlasttime = time(NULL) + 2; // not more than 1 every 2 seconds (normal client is every 3-4 seconds) + 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 diff --git a/src/map/map.h b/src/map/map.h index dc95fa02b..c1d0670e7 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -200,6 +200,8 @@ struct map_session_data { int followtimer; // [MouseJstr] int followtarget; + time_t emotionlasttime; // to limit flood with emotion packets + short attackrange,attackrange_; int skilltimer; int skilltarget; |