-
-
Notifications
You must be signed in to change notification settings - Fork 54
Spamming Votekick when timelimit has not ran out #168
Comments
Official Casual servers have a votekick timeout of 2 minutes, if a kick is successfully called the tool needs to pause the votekick commands at least that long. Is there a way for the tool to determine when it has successfully called a votekick vs when the command was sent but denied by the server? |
If the votekick is not successful, it still requires a timeout |
The main reason this hasn't been implemented yet is because I didn't get to it before feature freeze for v1.1. I'll prioritize it for the next version though. |
This is still an important issue, I think. Issues should only be closed if the tasks associated with them are completed, or the issue is invalid somehow. |
Can I safely close this now? |
No, this is not implemented yet. I will close this when it is fixed. |
A setting for "votekick call cooldown" could be added. |
If its a constant 2 minutes, some manual delay could be implemented, being the 2 minutes plus the time for a votekick to time out. |
I can see this being implemented as a "sleep" command, when you see that your votekick didn't succeed you could press a bind that would time 2 minutes before attempting a new votekick. Pressing the bind again while the timer is still counting would "wake" BD prematurely, which I can see being used in the event you switch sessions early or accidentally press the bind. |
This doesn't seem like something that should be done manually. I think the delay should be customizable via a setting. A tool like this should require minimal user interaction IMHO. I usually just leave this running in the background when I play the game. |
I agree with the minimal user interaction thing, I was thinking about it while typing my comment, however then we come back to the same problem, there is no known way to detect the current status of a votekick (if yours went through, if you are on cooldown, if there is another one going on at the same time so yours errors out) with the log files. And on my mind any delay that doesn't feel "spammy" when i'm on cooldown will be too slow if that isn't the case. The only ways I can see this being solved is a manual action by the player or someone figuring out a non-intrusive way to detect the status of votekicks. In the future, if we can interact with the program by binds like is being suggested on #205, this interaction would be less cumbersome, but of couse, an automatic solution would be much better. |
As I said in my original suggestion, just make it the cooldown time + the time for a vote to time out. That means even if the vote passes super quickly you'll only be losing ~15 seconds |
that doesn't account for the times when another vote is already in progress when yours is called, which happens a lot considering many bots call a vote right after joining. So in that case the BD would wait more than 2 minutes for no reason before trying a second time |
Without some kind of wild and fragile logic I don't see how this would be possible without demo parsing. I'm going to remove this from the 1.2 milestone since demo parsing is out of scope for this dev cycle. This is still a top issue which is why it will remain a high priority. |
Pazer stated in my duplicate of this issue that there's some technical issues with this bug because you cant tell in console who started the vote/who its against. I have a slightly crude idea that may work for a fix. When the bot detector sends out the command to attempt the vote kick, you could have a generic command go with it, like a help command, sort of like a ping. (or maybe even just the auto generated password, which would return as unknown command, but then it could see if your bot detector started the vote) Then if the bot detector sees the pong of that generic command and vote kick started, it can start a 2 minute cooldown and you can attach anything else to that such as chat messages warning there's still a cheater. It wouldn't be perfect but it could be a temporary band aid. |
Whether or not the attempt to start a votekick is successful the companion command would be passed to console. |
But if the bot detector could see a vote started and the companion command at the same time, then it would start the cooldown. if it didn't see both at the same time it would just start sending attempts to start a vote again. I feel like the chances are pretty low that someone else starts a vote at the same time as the detector, before the detector can verify it started the vote with the companion command. So I guess I'm saying: any vote started + companion>start cooldown (I'm obviously no expert on how this works and I'm not trying to argue, just trying to help.) |
The tool knows when it sends a votekick, right? There's no need to send a chat message to remind itself that it has sent a vote, if that's what you're suggesting. |
It has no way of knowing that. The only thing the tool knows is when a user joins a lobby, when it calls a votekick, and when a user leaves a lobby.
They are actually incredibly high, both users and the tool try to rid a lobby of bots as quickly as possible. Not to mention the other team and other TF2BD users. Also we do not know how long a vote would take to complete. That time can range significantly.
Correct, this would be equivalent to just starting a timer whenever the command is sent. |
I'm trying to find a way to verify your bot detector sent the vote start (of the vote that's currently happening), due to the lack of information in the console during votes. Looks like my idea won't work though. |
Can't really verify a votekick (sent by you) with a chat message (sent by you). The detector itself knows it has started a vote. However, a chat message could help for communication between bot detectors to know that another bot detector has started a vote. |
Thanks for all the brainstorming going on here. This actually does give me a few ideas that could be integrated into an upcoming version of tf2bd without too much work. You're right that the tool does indeed know if we were able to start a votekick. There is a unique usermessage type that gets sent to the player if they tried to call a vote, and it failed to start for any reason. So the absense of that usermessage indicates that a vote was successfully started. The end of that vote can start a 2 minute timer before additional votes are attempted. |
…on cooldown). This only handles the most common case (tool calls vote, vote succeeds/fails, we wait for our two minutes to be up). Simple exponential backoff should probably be implemented to improve the remaining cases where we are getting CallVoteFailed over and over again.
The attempted fix here was simply non-viable. Usermessages are just waaaay to unreliable to do anything with. Likely is going to have to wait until demo support again |
Sometimes when 2 cheaters are on your team, the side of your screen will get spammed with "you cant votekick yet" I once even got kicked for issuing too many commands
The text was updated successfully, but these errors were encountered: