Jump to content

Insane Limits Requests


ImportBot

Recommended Posts

  • Replies 3.2k
  • Created
  • Last Reply

Originally Posted by naurel*:

 

Few days ago I was playing on BF3 and I found a server where a full team is being nuke as long as they have full flags. And I was like : Damned this is so great I want it on my Locker only (so BF4). But when I look at the events on Insane Limits I don't know how to detect when all flags are captured by a team.

 

Any idea ? I didn't found anything on the forum (by the way I think i'll try to make a index of all limits available, searching function isn't so great when it's inside a post of 212 pages :biggrin: )

Check with ColColonCleaner. I think that was AdKats doing that.
I've looked with him and he is thinking that it was done with Insane Limits >
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Oh my bad, change the second_check Code to:

Code:

TimeSpan time = TimeSpan.FromSeconds(60);
if (limit.Activations(player.Name, time) == 1)
{
    plugin.ServerCommand("punkBuster.pb_sv_command", "PB_SV_GetSs \"" + killer.Name + "\"");
    return true;
}
return false;
Hmm, doesn't that mean that the SS is sent only when a player has 1 kill in the last 60 seconds? So if a good player is killing more frequently than that, like 2 every 60 seconds, he never gets a screenshot?

 

I think storing DateTime.Now on each killer.RoundData will work better, and goes along the lines of the other requests for limiting the total number of SS requests per player per time interval.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

I've looked with him and he is thinking that it was done with Insane Limits >

CCC kind of has a narrow band filter when you ask questions. If you don't use exactly the right keywords that he recognizes, he'll deny all knowledge. :smile:

 

Refer him to this link in his AdKats thread: myrcon.net/...advanced-in-game-admin-and-ban-enforcer-adkats#entry38829

 

It's not exactly the same thing as what you want in terms of the results, but the underlying logic is the same.

 

Keywords to use: ticket loss rate detection to trigger a nuke of the winning team if they have all the flags.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by dyn*:

 

Have an issue where seeders are getting stuck in the neutral team on my old -- very slow -- computers. Without changing up Multibalancer settings, I'm trying to find a way to move seeders from neutral team to either team1 or team2.

 

Check to see if a known seeder is on Team0 (I think it's team0_).

If known seed IS on Team0 move player to Team1 or Team2 so the balancing script(s) can take care of it.

 

Does not matter which team player is moved to as the only time the seeder will join is when the server is extremly low in population.

 

I tried piecing something with onintervalserver but it kept throwing errors... Just lost.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Have an issue where seeders are getting stuck in the neutral team on my old -- very slow -- computers. Without changing up Multibalancer settings, I'm trying to find a way to move seeders from neutral team to either team1 or team2.

 

Check to see if a known seeder is on Team0 (I think it's team0_).

If known seed IS on Team0 move player to Team1 or Team2 so the balancing script(s) can take care of it.

 

Does not matter which team player is moved to as the only time the seeder will join is when the server is extremly low in population.

 

I tried piecing something with onintervalserver but it kept throwing errors... Just lost.

I don't understand how it is possible for anyone to remain in team 0. What events has Procon seen for this player? Are they just joining? Have they authenticated yet? Obviously they haven't been assigned to a team yet, and for both BF3 and BF4, that's the same as saying the player doesn't exist yet.

 

You sure the idlers aren't commander or spectator? That would make more sense, in BF4 at least. Well actually commander has to be in a non-zero team, so only spectators.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by dyn*:

 

What events has Procon seen for this player? Are they just joining? Have they authenticated yet? Obviously they haven't been assigned to a team yet, and for both BF3 and BF4, that's the same as saying the player doesn't exist yet.

They are seen in procon as I'm able to move them from team to team manually. They appear to be a joining client and are just stuck in the neutral team until they're manually moved out.

 

I decreased the usage of the game to a very minimal level. Found this out while trying some seeding with old computers (read: like DX10 512 MB AGP video card old) not being able to load the game and stay. Or they would constantly join the server over and over never getting in to start with.

 

Essentially once the seeder is put into this state the game client does not load in all the way or even load the maps which causes the seeder to sit in the neutral state until they're kicked for idle. So instead of using 850+ MB of ram it ends up using 186 MB and not putting any load on the gfx card.

 

Manually moving them out works... but that requires someone to be there and we can't always be there. =(

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

They are seen in procon as I'm able to move them from team to team manually. They appear to be a joining client and are just stuck in the neutral team until they're manually moved out.

 

I decreased the usage of the game to a very minimal level. Found this out while trying some seeding with old computers (read: like DX10 512 MB AGP video card old) not being able to load the game and stay. Or they would constantly join the server over and over never getting in to start with.

 

Essentially once the seeder is put into this state the game client does not load in all the way or even load the maps which causes the seeder to sit in the neutral state until they're kicked for idle. So instead of using 850+ MB of ram it ends up using 186 MB and not putting any load on the gfx card.

 

Manually moving them out works... but that requires someone to be there and we can't always be there. =(

Well if manual moving works, plugin moving will work too. I've just never seen that state. It is suggestive that the server actually has to get some kind of reply back from the game client to transition to the state where the player is moved to a team. Very interesting.

 

Unfortunately, you can't use Insane Limits to do it. IL needs to see the player in a team before it believes the player exists. You'd need a custom built plugin to do what you want.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by IAF-SDS*:

 

Hi Papa. I have a request for a new limit when you have a moment please.

 

I would like the limit to end the map in favor of the winning team when either team has at least X players less than the other team for a period of Y seconds or longer (not counting spectators nor commanders). For now during testing, X would be 4 and Y would be 120 seconds.

 

It's important that nothing happens by the limit during intermission or at the start of a new map/round; in particular if people leave during intermission or at the start of a map (or even if a scramble fails to create balanced teams for whatever reason) and this results in one team to suddenly have Y players less than the other team. Perhaps, if possible, the limit goes to sleep for Z seconds once the end of round is detected to deal with this (for example, Z could be 600 seconds to deal with intermission and the time it may take MB to eliminate the Y player difference at the start of a new map).

 

The limit could be called Exodus End and would work regardless of game mode and regardless of ticket count.

 

As for messages, only plugin tab console messages are necessary in the color ^3 Dark Orange please and without any messages shown to the players. Perhaps something like this in the plugin tab console:

 

plugin.ConsoleWrite("^b[Exodus End]^n ***** ^3ENDING ROUND with winning team " + facts[winFaction] + " (" + winRem.ToString("F0") + " tickets) and losing team " + facts[loseFaction] + " (" + loseRem.ToString("F0") + " tickets)");

 

Plugin tab example:

[Exodus End] ***** ENDING ROUND with winning team US (500 tickets) and losing team CN (100 tickets)

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hi Papa. I have a request for a new limit when you have a moment please.

 

I would like the limit to end the map in favor of the winning team when either team has at least X players less than the other team for a period of Y seconds or longer (not counting spectators nor commanders). For now during testing, X would be 4 and Y would be 120 seconds.

 

It's important that nothing happens by the limit during intermission or at the start of a new map/round; in particular if people leave during intermission or at the start of a map (or even if a scramble fails to create balanced teams for whatever reason) and this results in one team to suddenly have Y players less than the other team. Perhaps, if possible, the limit goes to sleep for Z seconds once the end of round is detected to deal with this (for example, Z could be 600 seconds to deal with intermission and the time it may take MB to eliminate the Y player difference at the start of a new map).

 

The limit could be called Exodus End and would work regardless of game mode and regardless of ticket count.

 

As for messages, only plugin tab console messages are necessary in the color ^3 Dark Orange please and without any messages shown to the players. Perhaps something like this in the plugin tab console:

 

plugin.ConsoleWrite("^b[Exodus End]^n ***** ^3ENDING ROUND with winning team " + facts[winFaction] + " (" + winRem.ToString("F0") + " tickets) and losing team " + facts[loseFaction] + " (" + loseRem.ToString("F0") + " tickets)");

 

Plugin tab example:

[Exodus End] ***** ENDING ROUND with winning team US (500 tickets) and losing team CN (100 tickets)

Is this like an insurance policy if the balancer (assuming you have one) doesn't even teams out quickly enough?

 

I'll make the limit OnKill, which can't happen between rounds, solving that problem. I'll also make it happen Z seconds after the start of the round.

 

Create a limit to evaluate OnKill, call it "Exodus End".

 

Set first_check to this Code:

 

Code:

int MaxTeamDiff = 4; // X - CHANGE
double SecsTeamIsDown = 120; // Y - CHANGE
double DelaySecsFromRoundStart = 600; // Z - CHANGE

int level = 2;

try {
    level = Convert.ToInt32(plugin.getPluginVarValue("debug_level"));
} catch (Exception e) {}

String key = "StartTimeTeamDownByX";

if (server.TimeRound < DelaySecsFromRoundStart)
    return false;
if (!server.RoundData.issetBool(key)) {
    plugin.ConsoleWrite("^b[Exodus End]^n: Delay of " + DelaySecsFromRoundStart + " secs ended, limit is now armed!");
    server.RoundData.setBool(key, true);
}

DateTime start = DateTime.MinValue;
bool timerStarted = false;
if (plugin.RoundData.issetObject(key)) {
    start = (DateTime)plugin.RoundData.getObject(key);
    timerStarted = true;
}

int diff = Math.Abs(team1.players.Count - team2.players.Count);
if (diff < MaxTeamDiff) {
    if (timerStarted) {
        if (level >= 3) {
            plugin.ConsoleWrite("^b[Exodus End]^n: team difference declining, countdown aborted!");
        }
        plugin.RoundData.unsetObject(key);
    }
    return false;
}
if (!timerStarted) {
    start = DateTime.Now;
    plugin.RoundData.setObject(key, start);
    timerStarted = true;
}

double elapsed = DateTime.Now.Subtract(start).TotalSeconds;

if (elapsed < SecsTeamIsDown) {
    return false;
}

// If we get here, it's time to end the round

String[] factionName = new String[]{"US", "RU", "CN"};
int winTeam = (team1.RemainTickets > team2.RemainTickets) _ 1 : 2;
int loseTeam = (winTeam == 1) _ 2 : 1;
int winFaction = (winTeam == 1) _ team1.Faction : team2.Faction;
int loseFaction = (loseTeam == 1) _ team1.Faction : team2.Faction;

plugin.ConsoleWrite("^b[Exodus End]^n: ***** ^3ENDING ROUND with winning team " + factionName[winFaction] + " (" + server.RemainTickets(winTeam).ToString("F0") + " tickets) and losing team " + factionName[loseFaction] + " (" + server.RemainTickets(loseTeam).ToString("F0") + " tickets)");

plugin.ServerCommand("mapList.endRound", winTeam.ToString());

return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by dyn*:

 

Unfortunately, you can't use Insane Limits to do it. IL needs to see the player in a team before it believes the player exists. You'd need a custom built plugin to do what you want.

We are able to monitor for onjoin, however.

 

Would it be possible / even make sense to monitor onjoin events for a list of known 'BadSeeders' and then wait 60 seconds after a detected onjoin event to issue a protected plugin command to move the player to the team with fewer players?

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

We are able to monitor for onjoin, however.

 

Would it be possible / even make sense to monitor onjoin events for a list of known 'BadSeeders' and then wait 60 seconds after a detected onjoin event to issue a protected plugin command to move the player to the team with fewer players?

If you are referring to Insane Limit's OnJoin, I'm afraid you've been mislead by the name. It says OnJoin, but what it really means is "on first spawn". So no, it doesn't make sense.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Is it possible too set only transport vehicles like just dirtbike or PWC? Would like too know. Dont want tanks and airplanes.

It is possible -- if you run in Infantry Only mode. :smile: It's not possible by any kind of Insane Limit, no.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by aduh*:

 

Hmm, doesn't that mean that the SS is sent only when a player has 1 kill in the last 60 seconds? So if a good player is killing more frequently than that, like 2 every 60 seconds, he never gets a screenshot?

 

I think storing DateTime.Now on each killer.RoundData will work better, and goes along the lines of the other requests for limiting the total number of SS requests per player per time interval.

so Papa how this code should be ? Could you fix & share ?

Thank you

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Is it possible to use google's profanity API inside a limit? :smile:

 

http://www.wdyl.com/profanity_q=xxx

o

Yes. I tried noob and boob and it returned reasonable answers.

 

EDIT: WAIT! Turns out you can do an entire chat line all in one request, but I don't have time right now to do the code. You have to URL encode the chat line to make it work.

 

Try this code:

Code:

String word = "..."; // the word you want to test
    bool bad = false;
    try {
        WebClient client = new WebClient();
        String json = client.DownloadString("http://www.wdyl.com/profanity_q=" + word);
        bad = json.Contains("true");
    } catch (Exception e) {
        plugin.ConsoleWrite("Profanity check failed! Error: " + e);
    }
    if (bad) {
        // ... whatever warnings or punishments you want here
    }
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

o

Yes. I tried noob and boob and it returned reasonable answers.

 

EDIT: WAIT! Turns out you can do an entire chat line all in one request, but I don't have time right now to do the code. You have to URL encode the chat line to make it work.

 

Try this code:

Code:

String word = "..."; // the word you want to test
    bool bad = false;
    try {
        WebClient client = new WebClient();
        String json = client.DownloadString("http://www.wdyl.com/profanity_q=" + word);
        bad = json.Contains("true");
    } catch (Exception e) {
        plugin.ConsoleWrite("Profanity check failed! Error: " + e);
    }
    if (bad) {
        // ... whatever warnings or punishments you want here
    }
Ah, this is great! Maybe we need exception words too? Don't want it to be too strict. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ColColonCleaner*:

 

Ah, this is great! Maybe we need exception words too? Don't want it to be too strict. :smile:

You suggested the API, so is there an option in that API to allow exceptions to the rule?

 

EDIT: I'm sure you could add a secondary detector after the call returns, so if it returns true but contains X word then don't act on it. The problem with that is it doesn't tell you which word(s) it considers profane in the request.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

You suggested the API, so is there an option in that API to allow exceptions to the rule?

 

EDIT: I'm sure you could add a secondary detector after the call returns, so if it returns true but contains X word then don't act on it. The problem with that is it doesn't tell you which word(s) it considers profane in the request.

Not that i am aware of, just found the api and tossed the idea in here, together with the exception idea...
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ColColonCleaner*:

 

Not that i am aware of, just found the api and tossed the idea in here, together with the exception idea...

Could be done, is the language enforcer plugin still in active dev?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

o

Yes. I tried noob and boob and it returned reasonable answers.

 

EDIT: WAIT! Turns out you can do an entire chat line all in one request, but I don't have time right now to do the code. You have to URL encode the chat line to make it work.

Okay, by URL encoding the entire chat line, you can test the entire line in one request. I also included exception list processing.

 

Code:

// Exception list
    List<String> good = new List<String>();
    good.Add("boob");
    good.Add("tit");
    // add more here, use all lowercase letters

    // Split chat line into words
    String[] words = player.LastChat.Trim().Split(new Char[]{' ','\t'});
    StringBuilder edited = new StringBuilder();
    // Remove exception list words from line
    foreach (String w in words) {
        if (good.Contains(w.ToLower())) {
            continue;
        }
        edited.Append(w);
        edited.Append(" ");
    }

    // URL Encode edited string
    String UnreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
    StringBuilder Result = new StringBuilder();
    String Input = edited.ToString();

    for (int x = 0; x < Input.Length; ++x)
    {
        if (UnreservedChars.IndexOf(Input[x]) != -1)
            Result.Append(Input[x]);
        else
            Result.Append("%").Append(String.Format("{0:X2}", (int)Input[x]));
    }

    // Test for badness
    bool bad = false;
    try {
        WebClient client = new WebClient();
        String json = client.DownloadString("http://www.wdyl.com/profanity_q=" + Result.ToString());
        bad = json.Contains("true");
    } catch (Exception e) {
        plugin.ConsoleWrite("Profanity check failed! Error: " + e);
    }

    if (bad) {
        // Do warning or punishment here
    }

return bad; // for Actions
BTW, I noticed that the request only recognizes English profanity. I tried merde and Sheiße, but both were false.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Ha, this shit :tongue: works!

 

Profanity: SuppaguyTM chatted: damn the servers are full of these f2p noobs O.o

 

But didn't catch this:

 

SuppaguyTM > how the fk did u got that statement from wut i said

 

So abbreviations and l337 are not going to be caught.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

Ha, this shit :tongue: works!

 

Profanity: SuppaguyTM chatted: damn the servers are full of these f2p noobs O.o

 

But didn't catch this:

 

SuppaguyTM > how the fk did u got that statement from wut i said

 

So abbreviations and l337 are not going to be caught.

Damn this is nice! :cool:

 

Is it possible to do some regex to catch abbreviations and l337?

 

Works fine here too:

[08-11-2014][18:53:15] Galdwinn said: [FUCKING SPAWN !!!!]

[08-11-2014][18:59:51] I_C_E_Old1990 said: [who give a fuck, cant you see who is friendly and not]

[08-11-2014][19:10:43] I_C_E_Old1990 said: [fag server]

Have it on virtual for now, to catch all words for a period of time to see what words i have to add in the "good" list of words. :smile:

 

Could we do lists for the "good" words?

 

Like if plugin.isInList(chat_word, "good_words_list")? How would that look like? :ohmy:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Damn this is nice! :cool:

 

Is it possible to do some regex to catch abbreviations and l337?

It's possible, but if you are going to bother to do that, why use the service at all? You could just do all the detections with regex.

 

Could we do lists for the "good" words?

I put "damn" and "hell" in the exclusion list so far. Tell you want, I'll created a new limit thread with the code and we can post exclusions as replies.

 

Like if plugin.isInList(chat_word, "good_words_list")? How would that look like? :ohmy:

Good idea! I'll change the code to use that.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Please help me with a script to auto run next round after current round ended.

Well something was lost in translation, since what it sounds like you are asking for is a script to do what the server already does automatically, start the next round after the current round ends.
* Restored post. It could be that the author is no longer active.
Link to comment

Archived

This topic is now archived and is closed to further replies.




  • Our picks

    • Game Server Hosting:

      We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

      You can see all the available games here. Currently, we have the following games available.

      Valheim (From $1.50 USD)


      Rust (From $3.20 USD)


      Minecraft (Basic) (From $4.00 USD)


      Call of Duty 4X (From $7.00 USD)


      OpenTTD (From $4.00 USD)


      Squad (From $9.00 USD)


      Insurgency: Sandstorm (From $6.40 USD)


      Changes to US-East:

      Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them.
      • 5 replies
    • Hello All,

      I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. 

      We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see.

      We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter.
      • 4 replies
    • Added ability to disable the new API check for player country info


      Updated GeoIP database file


      Removed usage sending stats


      Added EZRCON ad banner



      If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True.

      procon.private.options.UseGeoIpFileOnly False
      procon.private.options.BlockRssFeedNews False



       
      • 2 replies
    • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it.

      Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020.

      Single MySQL database (up to 30 GB) is $10 USD per month.



      If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this.


      Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions.


      Databases will also be backed up daily and retained for 7 days.




      Procon Layer will be $2 USD per month.


      Each layer will only allow one (1) game server connection. The reason behind this is for performance.


      Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.


      Each layer will automatically restart if Procon crashes. 


      Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.


      Custom plugins can be installed by submitting a support ticket.




      Battlefield Admin Control Panel (BFACP) will be $5 USD per month


      As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.





      All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

      If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

       
      • 11 replies
    • I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

       
      • 9 replies
×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.