EssentialsX

EssentialsX

2M Downloads

/tpa being used to spam players

neokyle opened this issue · 23 comments

commented

It's become incredibly common on my server for people to use /tpa as a tool to spam other players. See example image below:

http://i.imgur.com/PweJHJa.jpg?1

A simple change would be to make it so you can only have one pending request per player. With this change the player in my example image would only be able to use /tpa again on me after 90 seconds.

commented

You could also add command cost to tpa. This is a feature included in Essentials and it fixed tpa spam for me.

commented

@Kakifrucht while that could work, that's adding more functionality to fix an issue. I generally just do what @EvilOlaf does but I think making it so you send a new request to a person you already have a pending request to would be a good idea.

commented

Command cost is a feature Essentials already provides! ;)

commented

I like the idea but also brings problems with itself.
If a player does tpa to the wrong person and wants to correct it by using tpa at the right person he won't be able to do that anymore for the tpa period.

The way I solved this issue is that I added a cooldown for - dunno, was it 10 seconds? - both tpa and tpahere by using a 3rd party plugin. This spoils the party hard for spamers :P

commented

Actually what I'm suggesting is the cool down be per player. So you do /tpa playerA and you have to wait 90 seconds before you can do /tpa playerA again. You can still make as many tpa requests to other players as you want, just not the same person multiple times before a previous request expires.

I've thought of adding a seperate plugin to handle cooldowns which is actually a very reasonable idea. In my situation all I need the extra plugin for is this one command.

commented

I know it is. I'm saying you have to add functionality to your server that you might not want in order to "fix" an issue.

commented

Good thinking...

commented

@gsand recommended a solution for this issue.

or how about being able to dictate who you accept teleports from
like
tpapprove

So if I wanted to block all tp requests I'd type:

/tpapprove -*

And later, I can add drtshock by typing:

/tpapprove drtshock

I'm not too happy with /tpapprove -*. I feel it's not user friendly enough. Either a separate command, with support for special keywords like

/tpdisallow all

all being the keyword that disallows everyone. The issue of actually trying to disallow someone named all is easy to fix, maybe wrap it around double quotes:

/tpdisallow "all"

commented

Additional commands is not a good way of handling this imo. This should be really intuitive without the need to add additional functionality in form of additional commands users need to "learn".

commented

Why not just allow 1 tpa request per player? So when you try to /tpa to someone, but you already /tpa'd them, it will print an error message.

commented

Sure, but it still doesn't resolve the issue, I can /tpa to someone else temporarily. I'd advise usage of command cooldowns for servers who are bothered by this feature.

commented

Would be nice if there will be a feature to prevent tpa spamming like neokyle said.

commented

Isn't that why there's a "/ignore (player)" command?

commented

I requested this many months ago... #59

I really don't want to mess around with a cooldown plugin - someone could accidentally send a /tpa to the wrong person, or they happened to move when it was accepted, and attempt to send again... I could investigate looking for something that only triggers cooldown when command is used x amount of times I guess... Not ideal regarding spam though.

Sure, but it still doesn't resolve the issue, I can /tpa to someone else temporarily.

Even if someone can switch to /tpa someone else they can remain to be on cooldown for the other.

commented

Although this issue is the same as #59 which has just been fixed. I will be keeping this one open as it includes discussion of a separate feature which targets the same problem from a different angle.

commented

There's already a /tpatoggle (or /tptoggle, I don't quite remember) that allows players to enable or disable teleport requests sent to them. Staff with permission can still use /tpo to force-teleport to the player and if the player who disabled teleport requests wants someone to teleport to them they can use /tpahere. If people are spamming tpa requests at eachother this is the best way to prevent it in my point of view.

commented

this is the best way to prevent it in my point of view.

No, it isn't.

I actually implemented the aformentioned version of teleport approvals in my plugin (without even noticing/recalling it was mentioned here before).

commented

@RoboMWM I said it was in my point of view. Also, if issue #59 was already fixed then I actually don't understand how are players spamming other players with requests.

commented

Hmm, I guess I was too tired and didn't expand on my initial comment... anyways, it's not a good solution for the same reason /block or /ignore isn't - it does too much (either blocking everything from that one person, or blocking all tp requests) to solve an issue being caused via one specific feature by (usually) one player.

If you read the last comment, the reason why this is still open is because the "tpapproval/disallow" system is also an appropriate solution (which I stated I implemented in my own tpa plugin).

commented

You can also just add a command cooldown.

Is this still an issue / something people want?

commented

I don't know if the other solution was implemented correctly - I recall it having some issues, though I never did thoroughly test since I went ahead with my solution (which is pretty much the same that's proposed here).

The reason why adding a generic command cooldown may not be ideal is someone might've made a mistake, and wants to /tpa another person. Since EssX does partial name matching, merely doing an exact check won't help either (though probably would stop most anyways).

commented

Hm alright. If anyone has a suggestion on how to improve it, please open a new ticket <3 Otherwise, leaving this one closed.

commented