Jump to content

Insane Limits Requests


ImportBot

Recommended Posts

Originally Posted by PapaCharlie9*:

 

I tried to change

 

double OS_P = Math.Round((player.ScoreObjective / total) * 100, 2);

to

double OS_P = Math.Round((player.ScoreSquad / total) * 100, 2);

 

but:

15:11:41 03] [insane Limits] Thread(settings): ERROR: (CS0117, line: 0, column: 0): PRoConEvents.PlayerInfoInterface enthält keine Definition für ScoreSquad.

That's because there is no player.ScoreSquad.

 

Here are all the Battlelog score stats you can use with player.

 

Code:

double ScoreTeam { get; }
    double ScoreCombat{ get; }
    double ScoreVehicle{ get; }
    double ScoreObjective { get; }
* Restored post. It could be that the author is no longer active.
Link to comment
  • Replies 3.2k
  • Created
  • Last Reply

Originally Posted by Dudenell*:

 

Um, as far as I can tell from that code, !admin with no reason is the ONLY command that works. I don't see any code that handles a reason. Maybe there is more going on in your first_check than the comment suggests?

Yeah there isn't any code that handles the reason at the moment, I guess I was looking for ideas on how to deal with the string. Currently what happens is it goes through the list of players looking for an admin, and based on the number of activations (so they don't spam us) it will only send one tweet per round per player.

 

Here's the part of the script that sends the message we are looking for

Code:

plugin.Tweet(player.Name + msg2 + player.LastChat);
I guess I'm lost where

Code:

if (string == !admin){
plugin.ServerCommand("admin.say" , (player.Name + " The correct format for calling an admin is !admin <reason>"), "player" , player.Name );
}
But if we did something like this, then wouldn't it mess with the amount of times it was activated (we also check, so they don't send too many messages).

 

Maybe it would be best to again split this into two plugins so that one checks to see if they typed just !admin and the other checks to see if they type !admin message (for activations)?

 

Just trying to get ideas on how to handle it

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

Originally Posted by PapaCharlie9*:

 

Yeah there isn't any code that handles the reason at the moment, I guess I was looking for ideas on how to deal with the string. Currently what happens is it goes through the list of players looking for an admin, and based on the number of activations (so they don't spam us) it will only send one tweet per round per player.

 

Here's the part of the script that sends the message we are looking for

Code:

plugin.Tweet(player.Name + msg2 + player.LastChat);
I guess I'm lost where

Code:

if (string == !admin){
plugin.ServerCommand("admin.say" , (player.Name + " The correct format for calling an admin is !admin <reason>"), "player" , player.Name );
}
But if we did something like this, then wouldn't it mess with the amount of times it was activated (we also check, so they don't send too many messages).

 

Maybe it would be best to again split this into two plugins so that one checks to see if they typed just !admin and the other checks to see if they type !admin message (for activations)?

 

Just trying to get ideas on how to handle it

Let's take a step back. Forget about the existing code, what is it you are trying to accomplish?

 

It sounds like:

 

* Anyone can type !admin

 

* For each admin that is a current player, a tweet with the is sent to them

 

* Only allow a random player to use the !admin command a certain number of times (per round? total_)

 

* If !admin without a reason is typed, post an error message in chat

 

Anything else?

 

If that's what you are trying to do, a single limit is more than sufficient.

 

first_check should match the command, just like you have.

 

second_check should do this, in outline:

 

1) Use a second Regex.Match to get the reason (see below).

 

2) If there is no reason, post the error message and return false.

 

3) Now check the activation count. If it is higher than max, return false (or maybe post an error message just to the player and return false).

 

4) If you get this far, its a legit command, so do the foreach loop and tweets, just like you already have

 

Make sense?

 

EDIT: I forgot the new Regex:

 

Code:

Match m = Regex.Match(player.LastChat, @"^\s*!admin\s+([^\s].*)$", RegexOptions.IgnoreCase);
String reason = String.Empty;
if (m.Success) reason = m.Groups[1].Value; // This is the reason, captured by ([^\s].*)$
if (reason == String.Empty) 
{
    // then post the syntax error message and return false ... 
}
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by dflynn*:

 

can someone help me with this limit.. I'm getting a couple of compile errors both errors say pRoConEvents.PlayerinfoInterface does not contain a definition for 'name' I pretty much followed the example but added the BF4 pistols and added melee and Knife the rest of it is letter for letter

 

 

! Regex.Match(kill.Weapon, @"(M1911|M9|M93R|G17|M44|P226|FN57|QSZ-92|CZ-75|MP412REX|MP443|Glock|Melee|Knife)", RegexOptions.IgnoreCase).Success

 

double count = limit.Activations (player.name) ;

if (count == 1)

plugin.SendGlobalMessage (plugin.R ("%p_n%, this is a pistol and knife only server, do not use %w_n% again! Next time kick") ) ;

else if (count > 1)

plugin.KickPlayerWithMessage (player.name, plugin.R ("%p_n%, kicked you for using %w_n% on pistol and knife only server") ) ;

return false;

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

Originally Posted by Dudenell*:

 

Let's take a step back. Forget about the existing code, what is it you are trying to accomplish?

 

It sounds like:

 

* Anyone can type !admin

 

* For each admin that is a current player, a tweet with the is sent to them

 

* Only allow a random player to use the !admin command a certain number of times (per round? total_)

 

* If !admin without a reason is typed, post an error message in chat

  • Anyone can type !admin or !admin
  • To call an admin (tweet the message) it must be in the format !admin
  • If an admin types !admin, it will say that "XXX is a current admin!" to the whole server (hence the reason for two limits)
  • If someone types !admin or !admin and an admin or admins are present on the server, it will list their names and tell the whole server
  • If the player is not an admin, and they type !admin without they are given an error message and it doesn't count as an activation
  • If the player is not an admin, they are only allowed 1 tweet (or admin call per round), currently based on activations

Make sense?

It does, the only thing that I'm a little confused about past this point is the activation count, for example if a player got the !admin wrong, wouldn't it still count as 1 activation?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

Hi,

That's because there is no player.ScoreSquad.

thank you!

 

Another request:

 

( Regex.Match(kill.Weapon, "(U_Claymore|U_Claymore_Recon)").Success )

 

If this limit is activated >1 from the same player in one round:

 

Proconchat:

plugin.PRoConChat: VictimPlayer found 2/3/4..... Claymores in this round!

plugin.ServerCommand("admin.say": VictimPlayer found 2/3/4..... Claymores in this round!

 

Thank you!

Rucki

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

Originally Posted by PapaCharlie9*:

 

can someone help me with this limit.. I'm getting a couple of compile errors both errors say pRoConEvents.PlayerinfoInterface does not contain a definition for 'name' I pretty much followed the example but added the BF4 pistols and added melee and Knife the rest of it is letter for letter

Code is detail-oriented. Details matter. You get an error for player.name because it should be player.Name, that is, the case counts.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

It does, the only thing that I'm a little confused about past this point is the activation count, for example if a player got the !admin wrong, wouldn't it still count as 1 activation?

Yes, you are right, I oversimplified. We need to do some additional checking in first_check for your other cases.

 

In first_check, you need to know if !admin by itself should trigger an activation or not. If the player is an admin, you don't want to restrict by activations, but that's fine, you can adjust for that in second_check. You only need activation counting for the non-admin player, and even then, only if the type !admin correctly.

 

So basically first_check should handle all of the "player is an admin" cases and also the "player is not an admin and only typed !admin" case. You can do that entirely in first_check code.

 

That means second_check just has to handle the "player correctly typed !admin " cases, ignoring the activation count if the player is an admin.

 

Still one limit, just a much more complicated first_check Code.

 

Annotating your list with which check does the work:

 

* Anyone can type !admin or !admin (both first and second)

 

* To call an admin (tweet the message) it must be in the format !admin (both first and second, mostly second)

 

* If an admin types !admin, it will say that "XXX is a current admin!" to the whole server (hence the reason for two limits) (first only, to avoid activation counting and error messaging)

 

* If someone types !admin or !admin and an admin or admins are present on the server, it will list their names and tell the whole server (contradicts the next bullet_)

 

* If the player is not an admin, and they type !admin without they are given an error message and it doesn't count as an activation (first only)

 

* If the player is not an admin, they are only allowed 1 tweet (or admin call per round), currently based on activations (first and second, mostly second)

 

EDIT: You can think of it this way. first_check and second_check are like two separate limits. first_check can't do any activation counting, so you put all the code that doesn't care about activation counting in first_check. second_check does care about activation counting, but you can conditionally ignore the count if you want to.

 

While separate, they do have a dependency. Whatever bool value first_check returns controls whether or not second_check runs and gets an activation count. You are completely in control of when that matters and when that doesn't, though.

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

Originally Posted by dflynn*:

 

Code is detail-oriented. Details matter. You get an error for player.name because it should be player.Name, that is, the case counts.

Thanks! I should've caught that myself..

 

On a side note I've been trying to change the kick to a kill.. but I keep getting a PRoConEvents.PluginInterface does not contain a definition for KillPlayerWithMessage

 

(I'm not a code writer so sorry if I'm asking stupid questions, just trying to make the best of the plugin)

below is what I tried:

double count = limit.Activations (player.Name) ;

if (count == 1)

plugin.SendGlobalMessage (plugin.R ("%p_n%, this is a pistol and knife only server, do not use %w_n% again! Next time kill then kick") ) ;

if (count > 1)

plugin.KillPlayerWithMessage (player.Name, plugin.R ("%p_n%, killed you for using %w_n% on pistol and knife only server") ) ;

else if (count > 2)

plugin.KickPlayerWithMessage (player.Name, plugin.R ("%p_n%, kicked you for using %w_n% on pistol and knife only server") ) ;

return false;

 

Thanks

Dflynn

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

Originally Posted by PapaCharlie9*:

 

Thanks! I should've caught that myself..

 

On a side note I've been trying to change the kick to a kill.. but I keep getting a PRoConEvents.PluginInterface does not contain a definition for KillPlayerWithMessage

That might be because plugin doesn't contain a definition of KillPlayerWithMessage. :smile:

 

All of the functions, with their correct spellings, are in post #1 of the plugin thread:

 

showthread....0-17-NOV-2013)*

 

The same documentation is in the Details tab of the plugin itself in Procon.

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

Originally Posted by Lannovar*:

 

Hey Papa, we had a bit of brainstorm and here's the product.

 

Automated vars.preset on server restart.

 

The problem

You know when a server crashes and resets to startup.txt? Even with vars.preset hardcore, it still comes out as custom until either you send it manually in the console or a plugin such as simple command does it for you on interval.

 

During that time when it is custom, many people who crashed and want to rejoin, may not realize the server is up since it's gone from their filters.

 

So how about we speed the process up and automate it?

 

Solution

We have been trying to find the best way of evaluating when a restart has happened and use that as a trigger point for a insane limit script to send the vars.preset command. I recall reading that insane limit can actually evaluate which map (from map index) it is currently on? If so, can we initate a vars.preset hardcore (or normal) command X seconds after it detects map #1 in the rotation?

 

We can't use server uptime (Insane limit doesn't read that I think_). Neither player join or round start since that hinges on people actually seeing the server, which they won't if it is custom.

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

Originally Posted by L1ndsayLohan*:

 

Hey,

 

1st off I'm new to this whole server stuff.

 

Okay, so I need help with "No Explosives" plugin BF4.

 

Here's what I've done so far;

 

Posted Image

 

Posted Image

 

I've obviously done something wrong (it's not working), but i can't seem to know what.

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

Originally Posted by PapaCharlie9*:

 

Hey Papa, we had a bit of brainstorm and here's the product.

 

Automated vars.preset on server restart.

 

The problem

You know when a server crashes and resets to startup.txt? Even with vars.preset hardcore, it still comes out as custom until either you send it manually in the console or a plugin such as simple command does it for you on interval.

 

During that time when it is custom, many people who crashed and want to rejoin, may not realize the server is up since it's gone from their filters.

 

So how about we speed the process up and automate it?

 

Solution

We have been trying to find the best way of evaluating when a restart has happened and use that as a trigger point for a insane limit script to send the vars.preset command. I recall reading that insane limit can actually evaluate which map (from map index) it is currently on? If so, can we initate a vars.preset hardcore (or normal) command X seconds after it detects map #1 in the rotation?

 

We can't use server uptime (Insane limit doesn't read that I think_). Neither player join or round start since that hinges on people actually seeing the server, which they won't if it is custom.

Sure, you can use detection of the Index 0 map, but it would be good to ALSO check game server uptime with server.TimeUp. Store the last known good time in a plugin.Data.setDouble variable and compare it on each interval. If the new server.TimeUp is less than the stored value, you know you restarted.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hey,

 

1st off I'm new to this whole server stuff.

 

Okay, so I need help with "No Explosives" plugin BF4.

 

Here's what I've done so far;

 

Posted Image

 

Posted Image

 

I've obviously done something wrong (it's not working), but i can't seem to know what.

Just a misunderstanding. If a post says "kick_mesage =", it means, fill in the form with the specified text, don't literally type kick_message =. You see that you have a limit_1_kick_message text entry? Just put the text in there

 

Code:

No M320/RPG/SMAW! Connect again and don't use this weapon!
Each one is a separate setting. So say_message = means that you should have a limit_1_say_message setting to fill in. I don't see it, so maybe you forgot to add it to the Action? The Action is a list.

 

BTW, you weapon names are spelt wrong for BF4. The correct weapon names are in Procon/Configs/BF4.defs. The first_check expression should be:

 

Code:

(kill.Weapon.StartsWith("U_M320") || kill.Weapon.Equals("U_RPG7") || kill.Weapon.Equals("U_SMAW"))
I changed the M320 to .StartsWith, because as you can see in BF4.defs, there are several M320 weapon codes.

 

You can't detect the M224 mortar, unfortunately, so I removed it.

 

Finally, you should set your second_check to Disabled. Looks like you have an empty Expression there.

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

Originally Posted by pharbehind*:

 

Hey PC, I need something slightly custom, but related to your Presetter limit.

 

First, here's my problem:

 

I want a Hardcore server that has 200% tickets no matter the player count, but also shows the Minimap between 48-64 players. I understand that the server preset must remain "Custom" during the times that the Minimap should be active, and that's fine. 0-47 players though, it should be default hardcore preset with minimap off.

 

You directed me to the Ticket Booster and Preset insane limit. If I'm understanding correctly, I can copy the Ticket Booster verbatim, but I'll need to add an expression to Step 1 of Preset that will determine player count and when to activate the preset. Then the 2nd check will be the code you posted. Is that correct?

 

If so, what expression should I use to say "only turn the preset to hardcore if less than 48 players"?

 

Thanks a ton.

 

EDIT

 

Nevermind! falcon's latest UMM plugin gives us the flexibility we need for these situations!

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

Originally Posted by Wiggles*:

 

Hi

I was trying to make a limit that kicks for seirtan word use. I used micoverys version of "bad word kicker"

myrcon.net/...insane-limits-examples#entry18424

and just removed the part about sending a message to everybody Code:

plugin.SendGlobalMessage(plugin.R("Kicking %p_n% for profanity!"));
however, it doesnt show to the kicked player a message why they was kicked.

 

also, how do you make it understand more versions of a word? ive seen it before but i cant find it again (ie noob, n00b, nooooob, nub and such)(im not kicking for that, just made it easier to explain)

 

this is for bf4 with version 0.9.14.0 and 1.4.1.3 (R14)

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

Originally Posted by PapaCharlie9*:

 

however, it doesnt show to the kicked player a message why they was kicked.

That is (or was? might alredy be fixed) a bug in the Battlelog browser plugin. It's true for all kicks and bans, not just this one. Nothing we can do about it until the browser plugin is fixed.

 

also, how do you make it understand more versions of a word? ive seen it before but i cant find it again (ie noob, n00b, nooooob, nub and such)(im not kicking for that, just made it easier to explain)

Search for bad_words in this thread and in Insane Examples thread.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by bahtre*:

 

Hey Papa, what I'm doing wrong? Please help to improve the code for no explosives server.

It's just kicking at 1st time and at 2nd and after too.

I would like it to KICK after 1st kill, BAN for 2 days after 2nd, and Ban Permanently after 3rd if it is possible.

 

Limit = OnKill, Action = None

First_check to this Expression:

Code:

Regex.Match(kill.Weapon, @"(U_M320_HE|U_M320_LVG|U_FGM148|U_RPG7|U_SMAW|U_SRAW|U_XM25|U_Grenade_RGO|U_M67|U_V40|U_M34)", RegexOptions.IgnoreCase).Success
Second_check to this Code:

 

Code:

if (limit.Data.issetBool(player.Name))
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n% FOREVER!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Permanent, player.Name, 0, plugin.R("%p_n% you have been banned forever for using %w_n%"));
     limit.Data.unsetBool(player.Name);
  }
  
  int count = (int) limit.Activations(player.Name);
   
  if (count == 1)
  {
      plugin.SendGlobalMessage(plugin.R("%p_n% has been kicked for using %w_n%"));
      plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n% you have been kicked for using %w_n%"));
  }
  else if (count == 2)
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 2880, plugin.R("%p_n% you have been banned for 2 days for using %w_n%"));
     limit.Data.unsetBool(player.Name);
     
     if (!limit.Data.issetBool(player.Name))
         limit.Data.setBool(player.Name, true);
  }
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hey Papa, what I'm doing wrong? Please help to improve the code for no explosives server.

It's just kicking at 1st time and at 2nd and after too.

I would like it to KICK after 1st kill, BAN for 2 days after 2nd, and Ban Permanently after 3rd if it is possible.

 

Limit = OnKill, Action = None

First_check to this Expression:

Code:

Regex.Match(kill.Weapon, @"(U_M320_HE|U_M320_LVG|U_FGM148|U_RPG7|U_SMAW|U_SRAW|U_XM25|U_Grenade_RGO|U_M67|U_V40|U_M34)", RegexOptions.IgnoreCase).Success
Second_check to this Code:

 

Code:

if (limit.Data.issetBool(player.Name))
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n% FOREVER!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Permanent, player.Name, 0, plugin.R("%p_n% you have been banned forever for using %w_n%"));
     limit.Data.unsetBool(player.Name);
  }
  
  int count = (int) limit.Activations(player.Name);
   
  if (count == 1)
  {
      plugin.SendGlobalMessage(plugin.R("%p_n% has been kicked for using %w_n%"));
      plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n% you have been kicked for using %w_n%"));
  }
  else if (count == 2)
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 2880, plugin.R("%p_n% you have been banned for 2 days for using %w_n%"));
     limit.Data.unsetBool(player.Name);
     
     if (!limit.Data.issetBool(player.Name))
         limit.Data.setBool(player.Name, true);
  }
Use if (count > 1) instead of if (count == 2).

 

There's no need to unsetBool the player.Name.

 

If a player kills more than one victim with a single explosive, like nading two players, they will be banned and never kicked. You should use this code to avoid that:

 

showthread....s-Count-As-One*

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

Originally Posted by bahtre*:

 

Thanks for quick answer, but it still just kicking :sad:

 

That is what I got:

Code:

if (limit.Data.issetBool(player.Name))
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n% FOREVER!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Permanent, player.Name, 0, plugin.R("%p_n% you have been banned forever for using %w_n%"));
  }
  
  int count = (int) limit.Activations(player.Name);
   
  if (count == 1)
  {
      plugin.SendGlobalMessage(plugin.R("%p_n% has been kicked for using %w_n%"));
      plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n% you have been kicked for using %w_n%"));
  }
  else if (count > 1)
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 2880, plugin.R("%p_n% you have been banned for 2 days for using %w_n%"));
     
     if (!limit.Data.issetBool(player.Name))
         limit.Data.setBool(player.Name, true);
  }
What's wrong with it? Or may be the problem is me:sad:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Thanks for quick answer, but it still just kicking :sad:

 

That is what I got:

Code:

if (limit.Data.issetBool(player.Name))
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n% FOREVER!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Permanent, player.Name, 0, plugin.R("%p_n% you have been banned forever for using %w_n%"));
  }
  
  int count = (int) limit.Activations(player.Name);
   
  if (count == 1)
  {
      plugin.SendGlobalMessage(plugin.R("%p_n% has been kicked for using %w_n%"));
      plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n% you have been kicked for using %w_n%"));
  }
  else if (count > 1)
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 2880, plugin.R("%p_n% you have been banned for 2 days for using %w_n%"));
     
     if (!limit.Data.issetBool(player.Name))
         limit.Data.setBool(player.Name, true);
  }
What's wrong with it? Or may be the problem is me:sad:
Try using the code in the link I put in my previous reply. It will work better.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

PC, I have a request for a hopefully easy limit...

 

Anytime the server population drops to 14 or less, change vars.idleTimeout to 86400. Else, set to the default 300.

I think Adaptive Server Size already does that for you, so check that first. Not sure if it is working for BF4, though, or if you even use it. If you still want a limit:

 

Create a new limit OnIntervalServer, call it Adaptive Idle, set interval to 60 seconds (or longer), leave Action set to None.

 

Set first_check to this Code:

 

Code:

String key = "current idle";
int idle = 300;
if (server.Data.issetInt(key)) idle = server.Data.getInt(key);

if (server.PlayerCount >= 16 && idle != 300) {
    plugin.ServerCommand("vars.idleTimeout", "300");
    plugin.ServerCommand("vars.preset", "Normal", "false");
    server.Data.setInt(key, 300);
    plugin.ConsoleWrite("Player count = " + server.PlayerCount + ", setting idle to 300");
}
if  (server.PlayerCount <= 14 && idle == 300) {
    plugin.ServerCommand("vars.idleTimeout", "86400");
    plugin.ServerCommand("vars.preset", "Normal", "false");
    server.Data.setInt(key, 86400);
    plugin.ConsoleWrite("Player count = " + server.PlayerCount + ", setting idle to 86400");
}
return false;
I added a preset Normal command, just in case. If you are running Hardcore instead of Normal, change those two lines.

 

The reason I use 16 rather than 14 for resetting to 300 is because of the risk that your server can bounce between 14 and 15 players as people are leaving/joining/leaving the queue, etc. That will spam your server with config changes. You never want to base a server configuration change on a single player count level. Instead, you space it out over a range. This is called hysteresis. The same principle is used in your thermostat for your household heat. You'll notice it tends to turn on at slightly below the temperature you set and turn off at slightly above the temperature you set. Otherwise it would turn on/off rapidly while your room temperature equalizes, which is bad for your furnace.

 

Even 14 vs 16 is a bit too close for comfort. I've seen player count bounce up and down over a range of 4 players in mere seconds. The interval should smooth that out, though. You can give that a try and see how it goes. If there is too much spamming, increase the gap to 4, like 12 vs 16 or 14 vs 18. Or, alternatively, increase the interval.

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

Originally Posted by pharbehind*:

 

You're the man, thanks dude. FWIW - I forgot Adaptive Server Size has the adpative idle kick too. Though, his is a strict enable/disable option, which I don't think is working yet.

 

I'll use yours until DICE gets that sorted out. Thanks again.

 

Couple questions:

 

1) In both if statements, the normal/hardcore preset is false. Should one or the other be true?

2) If I remove the preset lines and given the server was on either a normal or hardcore preset to begin with, woudl changing the idleTime from 300 to 86400 then back to 300 resume the normal or hardcore preset automatically? Or, is that the "just in case" scenario you prepared for?

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

Originally Posted by PapaCharlie9*:

 

1) In both if statements, the normal/hardcore preset is false. Should one or the other be true?

The "false" specifies that your other config settings should not be changed. If it is set to true, it will overwrite gameModeCounter, commanders, etc.

 

2) If I remove the preset lines and given the server was on either a normal or hardcore preset to begin with, woudl changing the idleTime from 300 to 86400 then back to 300 resume the normal or hardcore preset automatically? Or, is that the "just in case" scenario you prepared for?

It's "just in case". Who knows what will break in the next patch?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Talzac*:

 

Apparently i need to post here.

 

@Papa

 

Thought about a way to have limit actions send through AdKats. Does the second limit have access to ExecuteCommand? If it did i could just write a limit to include a "procon.protected.plugins.call" on AdKats with the needed parameters to get the job done. Let me know.

 

Currently getting these errors:

 

Code:

[20:18:07 96] [Insane Limits] ERROR: (CS0117, line: 55, column: 20):  'PRoConEvents.PluginInterface' does not contain a definition for 'ExecuteCommand'
[20:18:07 97] [Insane Limits] ERROR: (CS0103, line: 55, column: 110):  The name 'JSON' does not exist in the current context
When attempting to use this in the second check:

 

Code:

//Activations within 5 seconds count as 1
TimeSpan time = TimeSpan.FromSeconds(5);
if (limit.Activations(killer.Name, time) > 1) return false;

//Build the request to send to AdKats for action handling
Hashtable request = new Hashtable();
request["source_name"] = "InsaneLimits";
request["target_name"] = killer.Name;
request["command_type"] = "Punish";
//request["command_numeric"] = 0;
request["record_message"] = plugin.R("Using Restricted Weapon: %w_n%!");

// Send the request
plugin.ExecuteCommand("procon.protected.plugins.call", "AdKats", "PerformExternalPluginCommand", JSON.JsonEncode(request));
What should i do to get this working?
Is this working now? I am using adkats and insane limits, this should give me more options.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by p19blo*:

 

hello

 

i use the knife and pistol only limit and when it temp bans someone is there a way for the ban to record the weapon that was used, as im getting players insisting they havent used said weapons.

 

i use adkats, dont know if this is something needed to know.

 

i did try Code:

%p_n%, banned for using %w_n% on Pistol and Knife only server
but it records it as that exactly.

 

 

Thanks

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

Originally Posted by PapaCharlie9*:

 

hello

 

i use the knife and pistol only limit and when it temp bans someone is there a way for the ban to record the weapon that was used, as im getting players insisting they havent used said weapons.

 

i use adkats, dont know if this is something needed to know.

 

i did try Code:

%p_n%, banned for using %w_n% on Pistol and Knife only server
but it records it as that exactly.

 

 

Thanks

Probably best to ask that question in the knife/pistol limit thread, particularly since part of the answer is already there:

myrcon.net/.../insane-limits-knife-and-pistols-only

 

Basically, you need to add plugin.R( ) around the string:

 

Code:

plugin.R("%p_n%, banned for using %w_n% on Pistol and Knife only server")
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Disturbed11B*:

 

Papa, got a request for you and I'm obviously not sure how to do it... It would utilize the Weapon Restriction Script but id like the infractions to be used with Adkats Punishment settings. So if they use a restricted weapon it would use ADKats and send them a message and a reason just as if someone typed "!punish player used a restricted weapon"

* 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.