Jump to content

A plugin that accurately prevents rushing


Sky

Recommended Posts

Sky
Member
(edited)

Hi all

 

 

 

So, this morning, I popped in to the GC server to play for a bit, and it was riddled with players who were both team killing and rushing. Back when I had time to run and maintain my own community, I developed a solution to quell rushing, permanently. And because I'm such a sharing, caring, thoughtful person, and realized that rushing is a rampant problem across multiple communities, I decided that sharing the solution was the best course of action.

 

I know Jackie really doesn't like me (I used to come off as a bit of an weenie, but crasx can tell you that is never the intention; I get super excited, that's all) so he might completely avoid this topic, but...

 

If you could thwart rushers, without having an admin present, with a plugin that is elegant, yet flexible, wouldn't you at the least want to take a peeksy-poo?

 

 

So, totally simple explanation here.

 

I wrote a ready up plugin a while a go that is similar to the one GC uses, it just lets people press '3' instead of having to type !r or !ready (and supporting any language, I found it was easier to get people to just hit the key) and these anti - rush pieces are optional modules that can be installed / uninstalled at any time.

 

 

The info here is really just copied from the plugin page, but it beats anyone having to go to an external link to see it. I said to myself, "rushing is an issue, but sometimes, when your team is near the end safe room, some players like to open the door and just camp inside, while you get obliterated outside." So, I presented two solutions that can be used independently or combined.

 

 

Rush Distance

 

This module requires l4d2 direct.

 

This module sets a maximum distance that players can travel ahead of their team. It also allows server owners to

set how far behind their team a player can be before it teleports them forward. Only players who rush a significant

distance ahead of their team will be punished. Stragglers will not be punished when teleported.

Please keep in mind that the actual distance will differ based on the number of valid players.

 

rum_warning_limit: Reaching this warning limit will result in punishment; the player will be killed.

rum_incapacitated_ignore: Do we ignore incapacitated players in the team's average distance?

rum_distance_ignore_teleport: Do we teleport players who are this far behind their team?

rum_active_survivors_required: The number of active survivors required for calculations to be considered.

 

You must upload the configs for each map that you want this plugin to be active on.

I've compiled the stock maps, but you will need to add new configs for any custom maps. If the config isn't found, the

module will simply not do anything on the given map.

Please upload the configs to /sourcemod/configs/readyup/

 

 

Setting up the configs for each map is simple. Here's an example:

 

"c1m2_streets"

{

"distance_notice" "0.1"

"distance_warning" "0.15"

"distance_ignore" "0.16"

}

 

Because the distance is calculated differently for maps that are longer or shorter than others, it was necessary to allow sever admins to modify the parameters for each action. An example here is 10% of c1m2_streets (the second map of dead center) requires running from the start of the map to the door into the building, but 10% of c2m5_concert is about 10 feet out of the safe room door.

 

In the above example, if a player is 10% the distance of the map ahead of their team (that's everyones distance, excluding the said players calculated) they get a nice notice letting them know to stop rushing. If they continue forward, at 15%, they get teleported; and it can punish/slay players if they do it too many times, at the discretion of the server owner. Players who are 16% behind their team are teleported to their team, but aren't penalized; they'll receive a notice to return to their team as well, though.

 

There are a few concerns that rise here, so I'm going to quell them, quickly.

First, if you get smoked, jockeyed, or some other means of forced out of the legal distance range, the plugin will not penalize you as long as when you are released, you immediately make your way back to your team. If you attempt to continue moving forward, that's when it'll say "Alright, the player is now rushing, taking action." The only instance where you don't have a chance to return is if a tank punches you out of bounds, but realistically, if that punch sends you out, you were most likely beyond the notice distance anyway.

If you respawn and you're behind or ahead of your team, again, it will allow you to catch up or return before taking action.

 

Second, the.dude brought up a concern about incapacitated players, or if your team is dead and you want to bolt for it, for distance points. There's a server cvar that can be enabled that says "Hey, we don't want to calculate the teams distance with any players who are incapacitated," and then they aren't part of the equation. It also doesn't consider dead players. There's another server cvar that lets you decide how many "active" (that means alive, not dead) players must exist on the survivor team to even run calculations; so clearly, if there's less than a certain value, say, 3 (default), it's a safe bet that you don't want to run the calculations, because that generally means the two players would be bouncing back and forth, and you can't calculate if there's only one living player.

 

 

 

 

Locked End of Map Saferoom

 

This module closes and locks the end of map safe room door when the round begins. It opens automatically when

all living survivors are within a set range. I designed it this way instead of assigning a player to hold a key because

let's face it: some people might troll and refuse to open the door. With this method, there's no waiting for a player

to open it or trying to figure out who has the key.

 

rum_antirush_unlockrange: The range all living survivors must be in relation to the door for it to unlock.

 

 

 

I've hidden the information about each module in a spoiler, so the post is easier to read.

I really implore Jackie to take a look at this, and consider implementing it.

The plugins anti-rushing modules are included in the zip file, with separate binaries .smx for each one.

readyup w_Modules.zip

Edited by Sky
Link to comment
Share on other sites

I really like this idea, but I'd obviously defer to people who know the game better than myself in implementing it.

 

 

However, the part I don't think should be implemented is teleporting people who fall too far behind. If that happened, there would be a whole host of other issues: respawning people at the end of the round via points would be awesome, people who get jockeyed back could be ignored by their team, etc.

 

I like the teleporting rushers back part, but not the teleporting dead/vulnerable people forward part, basically.

 

Regardless, kudos for sharing!

Link to comment
Share on other sites

Sky
Member

the problem with a vote-anything is it requires everyone to stop playing to vote, and it can be abused. it's easier to just let the system automate itself (you can actually turn off the feature to teleport people in the back, you just set that value in the configs to be 1.0.)

Link to comment
Share on other sites

well the thing about automating is that when we have the fairly common case of getting owned and telling the mains to run, theyre going to be tp'd back so we cant get as many points as we could have. i have no problem with quickly typing out some vote command, and the voting should be simple, just tell everyone on mic that this dude is rushing and needs to be tp'd back. automation is great but there are too many exceptions for it to cover.

 

im not sure what you mean by it being abused, like the votekick we would have it be set to members only. of course if someone is respawned in the back or something it would be rather exploitative..

Link to comment
Share on other sites

Sky
Member

I'm not sure why Jackie hasn't patched this already, but there are plugins that make it so the score is based on all players on the team, instead of the 4 on the score board.

The way this plugin handles rushing is based on the number of players, it's weighed differently. If there are 10 people who are alive and not incapacitated, each person is weighed for 10%.

If you have 4 people rushing forward, 40% of your teams distance is calculated from them; If there are only a few people left, and the majority starts booking it, they won't be penalized.

This algorithm was developed on purpose, by design, to allow teams to make a final push when they're being whittled down.

In regards to players in the back, as I stated before, you would simply set distance_ignore to 1.0 in each file and players in the back would never be teleported forward.

However, if a player is greater than distance_ignore + 4% (0.04) The plugin assumes they meet special circumstances (such as respawning) and are not teleported forward for any reason.

This pretty much prevents players from exploiting the system by waiting to respawn until their team is a solid distance forward. The question then becomes whether or not they'd be teleported

forward as soon as they're within the distance_ignore + 4% range, and the answer is no. The teleportation would only occur if they're within distance_ignore and ergo are not too far back, and then

happen to some how fall further back behind the team. This is the case if they are jockeyed, smoked, etc., backwards; The plugin notes that they were not teleported because of being ensnared and

doesn't teleport them forward at any time.

Also, as stated in the above, there's a variable that defines the number of players that must be active for the plugin to even consider distance; all jackie would effectively have to do is set that

to a certain value, and if that value of players or less is alive (and not incapacitated) on the survivor team, you could rush all you want, whether alone or with your team, and never be teleported.

Automated algorithms work, when they cover all of the bases, and fortunately, they've been covered here, although it was a bit of a pain to implement, because it really took a lot of experimentation.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...