|
Kuga Beginner
Joined: 21 May 2005 Posts: 24
|
Posted: Wed Jun 01, 2005 2:58 am
Spammed! Need help fixing. |
I setup a script that provides services and lists them through tells. Now when people send me a tell it works fine, but if I get spammed (3+ tells in a row) for deliberate reasons of causing havoc, I time out due to trying to send too many commands to the mud. I do not really know how to defend against this.
I know of some auto-ignore concepts but not in practice with zMUD. Basically if someone sends me 3 sequential tells, I wish to ignore them. Anyone have any knowhow of doing this or some leads or places to read?
Edit: No, I cannot change the system from tells, it will not work to my liking or properly then. |
|
|
|
MattLofton GURU
Joined: 23 Dec 2000 Posts: 4834 Location: USA
|
Posted: Wed Jun 01, 2005 3:09 am |
You have to rely on counter variables or a carefully-timed series of triggers (ie, the tells trigger enables the trigger for the action message and then turns itself off, that action trigger does its thing and enables the next before turning itself off, so on and so forth until the tells trigger is re-enabled)
|
|
_________________ EDIT: I didn't like my old signature |
|
|
|
Tarn GURU
Joined: 10 Oct 2000 Posts: 873 Location: USA
|
Posted: Wed Jun 01, 2005 3:36 am |
A reasonable compromise between answering legitimate players and not sending too much data:
The trigger that receives requests doesn't actually reply, but instead adds the person's name to a list. If the person's name is already in the list, it's not added again.
Every second or two, an alarm fires and replies to the first person in the list, removing their name.
That way, even if you've got spammers, the legitimate users of your services will still get replies (though it might be a little slow).
If there are enough really abusive players to be a problem, you could create an ignore list of players that never get added to the reply list.
-Tarn |
|
|
|
Guinn Wizard
Joined: 03 Mar 2001 Posts: 1127 Location: London
|
Posted: Wed Jun 01, 2005 12:53 pm |
either of these should work to a certain degree. It's off the top of my head, so you may need to tweak the syntax if I've not got it perfect. The top one will only reply if the tell received is different to the previous tell. The bottom one will limit you to one automatic reply every 5 seconds.
Code: |
#TR {%w tells you: (*)} {#if (%1 != @lastTell) {Do whatever};lastTell = %1} |
or
Code: |
#TR {%w tells you: (*)} {#if (@antiSpam = 0) {Do whatever};antiSpam = 1;#ALARM antiSpam {+5} {antiSpam = 0}} |
|
|
|
|
|
|