summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadCamel <madcamel@gmail.com>2010-05-02 14:19:23 -0400
committerMadCamel <madcamel@gmail.com>2010-05-02 14:19:23 -0400
commit29fb4ebc5ca42095e6abbb7814abe18aff27acf3 (patch)
tree591097896e8a00b16a51d5f03af2813050c27a43
parentf167bb005986ac15376733b76b575235127471c1 (diff)
downloadtmwa-29fb4ebc5ca42095e6abbb7814abe18aff27acf3.tar.gz
tmwa-29fb4ebc5ca42095e6abbb7814abe18aff27acf3.tar.bz2
tmwa-29fb4ebc5ca42095e6abbb7814abe18aff27acf3.tar.xz
tmwa-29fb4ebc5ca42095e6abbb7814abe18aff27acf3.zip
ChangeDir packets are now rate limited
Breakdancing is fun. Spinbotting isn't..
-rw-r--r--src/map/clif.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index da26b5d..217c374 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9337,7 +9337,7 @@ func_table clif_parse_func_table[0x220] =
{ NULL, 0 }, // 98
{ clif_parse_GMmessage, 300 }, // 99
{ NULL, 0 }, // 9a
- { clif_parse_ChangeDir, -1 }, // 9b .29 clients spam this packet when walking into a blocked tile
+ { clif_parse_ChangeDir, 0 }, // 9b
{ NULL, 0 }, // 9c
{ NULL, 0 }, // 9d
{ NULL, 0 }, // 9e
@@ -9763,6 +9763,16 @@ int clif_check_packet_flood(fd, cmd)
rate = 1000;
}
+ // ChangeDir - only apply limit if not walking
+ if (cmd == 0x9b)
+ {
+ // .29 clients spam this packet when walking into a blocked tile
+ if (RFIFOB(fd, 4) == sd->dir || sd->walktimer != -1)
+ return 0;
+
+ rate = 500;
+ }
+
// They are flooding
if (tick < sd->flood_rates[cmd] + rate)
{