Jump to content

Insane Limits - Examples


Recommended Posts

Originally Posted by supermillhouse*:

 

This limit will say server rules to the player on request when the player type !rules

 

Set limit to evaluate OnAnyChat and set action to None

 

Set first_check to Expression

Code:

player.LastChat.StartsWith("!rules")
Set second_check to Code

Code:

// Edit rules here
List<String> Rules = new List<String>();
Rules.Add("----- SERVER RULES -----");
Rules.Add("No Cheating, Glitching, Statspadding!");
Rules.Add("No Baserape or spawncamping");
Rules.Add("No mainbase camping");
// Try not to add more Rules.Add because it won't fit in the chat box.


if(limit.Activations(player.Name) <= 2)
    foreach(string Rule in Rules)
        plugin.SendSquadMessage(player.TeamId, player.SquadId, Rule);

return false;
would it be easy to adapt this to yell the rules for 3 seconds with a delay between them of 1 second and prob change if possible to the individual player_?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

would it be easy to adapt this to yell the rules for 3 seconds with a delay between them of 1 second and prob change if possible to the individual player_?

The last item, individual player, is easy. Just change plugin.SendSquadMessage to:

 

Code:

plugin.ServerCommand("admin.say", Rule, "player", player.Name);
The other part, the delay, is hard. It can be done, but it requires using separate threads. If you are up for it, look at my Team Switching limit example for how to do a separate thread.

 

www.phogue.net/forumvb/showth...witching-Limit*

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

Originally Posted by KoM_Simon*:

 

PISTOLS, SNIPERS, REPAIR TOOL ~ SERVER STARTER

with ingame admin controls!

{create a custom admin list for this to work} - name admins

 

---snip---

Nazra7, you're AWESOME!!!!!!! I LOVE YOU!!!!!!! THANK YOU!!!!!!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by pharbehind*:

 

Nazra7 or PapaCharlie, is there a way to add another Limit to the Pistols/Snipers only mode so that if the server reaches 0 players that it will automatically turn OFF again?

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

Originally Posted by Singh400*:

 

Nazra7 or PapaCharlie, is there a way to add another Limit to the Pistols/Snipers only mode so that if the server reaches 0 players that it will automatically turn OFF again?

Erm, maybe something like:-

 

Code:

if ( server.playerCount == 0 )
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

Can we detect squad specialization yet? I'm sure I read something about this a while ago, but at that moment in time it was broken.

 

Where would I place that?

At the beginning of your code.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Can we detect squad specialization yet? I'm sure I read something about this a while ago, but at that moment in time it was broken.

It's not broken, it's just not there at all. Nowhere in the RCON protocol like a lot of other things -- it still makes me shake my head that there is no OnEnterVehicle/OnExitVehicle events for a game that differentiates itself with vehicle combat. Or that doesn't tell you what ammo is being used (remember when Frag Rounds were OP_)
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Nazra7*:

 

Code:

if (limit.Data.issetBool(player.Name))
  {
     plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
     plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 15, plugin.R("%p_n% you have been banned for 15 minutes for using %w_n%"));
     limit.Data.unsetBool(player.Name);
  }
  
  int count = (int) limit.Activations(player.Name);
   
  String msg = plugin.R("%p_n%, this is a Knife, RT, Pistol, Bolt Action Sniper only server, until populated to 5v5!");
String kPistols = "pistols";
if (!plugin.Data.issetBool(kPistols)) {
		plugin.Data.setBool(kPistols, false);
	}
	bool isPistolsEnabled = plugin.Data.getBool(kPistols);
	if (server.PlayerCount<=9&&isPistolsEnabled) 
{
		if (server.PlayerCount<=9&&count >= 1&&count <= 2)
		{
			plugin.KillPlayer(player.Name);
			plugin.ServerCommand("admin.yell", msg, "10", "player", player.Name);
		}
}	
else if (server.PlayerCount<=9&&count >= 3)
{     
	plugin.KickPlayerWithMessage(player.Name, plugin.R("Kicked using %w_n% during Knife/RT/Pistol/BA Sniper Mode!"));
	if (!limit.Data.issetBool(player.Name))
    limit.Data.setBool(player.Name, true);
}

return false;
added a smidge of you got banned to the !pistols
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by killengage*:

 

Hey Guys,

 

Since two days our twitter account _defr? doesn't receive our twits anymore from the insane limits plugin. So i tried to reset it by setting True at setting "twitter_reset_defaults" and finally set the setting "twitter_setup_account" to true.

 

It constantly coming back with "Twitter RequestToken Request(HTTP/1.1) failed, System.Net.WebException: The remote server returned an error: (401) Unauthorized."

 

I expected a twitter url link where i normally get the token, but only thing i get is this error.

 

I restarted procon and even the whole Windows server but nothing changed. Any idea's ?

 

Cheers,

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

Originally Posted by QUACK-Major-Pain*:

 

Might want to delete everything on Twitters end and create a new app.

 

I was having the same issue with Facebook login on our website and that did the trick for me.

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

Originally Posted by Singh400*:

 

Did I code this right?

 

Set limit to evaluate OnIntervalServer (30), set action to None.

 

Set first_check to this Code:

 

Code:

if (server.Gamemode != "TeamDeathMatch0")
	return false;
	
if (server.PlayerCount <= 44)	
	plugin.ServerCommand("vars.serverName", "Server_Name_One");

if (server.PlayerCount >= 48)	
	plugin.ServerCommand("vars.serverName", "Server_Name_Two");

return false;
Any know how I specify a simple range? As in IF server.PlayerCount is BETWEEN 0 AND 24
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by QUACK-Major-Pain*:

 

Not sure what your code is to do, but your second "if" has no result.

Is it supposed to be true or false or something else?

 

Also, I don't know code much, but what is "!="? Or was that a typo?

 

if (server.PlayerCount >= 0) && (server.PlayerCount

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

Originally Posted by PapaCharlie9*:

 

Did I code this right?

 

Set limit to evaluate OnIntervalServer (30), set action to None.

 

Set first_check to this Code:

 

Code:

if (server.Gamemode != "TeamDeathMatch0")
	return false;
	
if (server.PlayerCount <= 44)	
	plugin.ServerCommand("vars.serverName", "Server_Name_One");

if (server.PlayerCount >= 48)	
	plugin.ServerCommand("vars.serverName", "Server_Name_Two");

return false;
Any know how I specify a simple range? As in IF server.PlayerCount is BETWEEN 0 AND 24
The code looks good, if what you want is 48 and higher, you set one server name, 44 and lower, you set a different server name. It's good that you have a gap of 4 between those two numbers, to avoid your server name flashing between the two choices just because your player count bounces between 47 and 48.

 

If by "between" you mean a range exclusive of the boundaries, it's like this:

 

if (server.PlayerCount > 0 && server.PlayerCount

 

That means if 1 thru 23, do ..., otherwise don't.

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

Originally Posted by PapaCharlie9*:

 

Not sure what your code is to do, but your second "if" has no result.

Is it supposed to be true or false or something else?

 

Also, I don't know code much, but what is "!="? Or was that a typo?

 

if (server.PlayerCount >= 0) && (server.PlayerCount

The second if is okay. It doesn't have to return true or false, it just executes the server name change. I write one-line if statements all on one line, to make it clear that it's just one line:

 

Code:

if (server.PlayerCount <= 44) plugin.ServerCommand("vars.serverName", "Server_Name_One");
That also makes it clearer that the next line isn't part of that if statement, like:

 

Code:

if (server.PlayerCount >= 48) plugin.ServerCommand("vars.serverName", "Server_Name_Two");
return false;
The return false doesn't have anything to do with the previous if statement, totally separate line of code.

 

The != operator is "not equal", so that line says, "if the game mode is not team death match, don't do anything". That's the preferred way of doing "if the game mode IS team death match, do all these lines of code". Get rid of the case you don't care about at the top and then the rest of the code can just be about the case you do care about.

 

Your if is missing the outer parens:

 

Code:

if ( (server.PlayerCount >= 0) && (server.PlayerCount <= 24) )
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

The code looks good, if what you want is 48 and higher, you set one server name, 44 and lower, you set a different server name. It's good that you have a gap of 4 between those two numbers, to avoid your server name flashing between the two choices just because your player count bounces between 47 and 48.

 

If by "between" you mean a range exclusive of the boundaries, it's like this:

 

if (server.PlayerCount > 0 && server.PlayerCount

 

That means if 1 thru 23, do ..., otherwise don't.

Yes mate, cheers that is exactly what I meant. My brain wasn't functioning at 01:30am :mad:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

Set the limit to evaluate OnAnyChat, and set the action to None.

 

Set first_check to this Expression:

Code:

player.LastChat.StartsWith("@shownext")
Set second_check to this Code:

Code:

/* BF3 friendly map names */
	Dictionary<String, String> Maps = new Dictionary<String, String>();
	Maps.Add("MP_001", "Grand Bazaar");
	Maps.Add("MP_003", "Teheran Highway");
	Maps.Add("MP_007", "Caspian Border");
	Maps.Add("MP_011", "Seine Crossing");
	Maps.Add("MP_012", "Operation Firestorm");
	Maps.Add("MP_013", "Damavand Peak");
	Maps.Add("MP_017", "Noshahr Canals");
	Maps.Add("MP_018", "Kharg Island");
	Maps.Add("MP_Subway", "Operation Metro");
	//Back to Karkand maps
	Maps.Add("XP1_001", "Strike at Karkand");
	Maps.Add("XP1_002", "Gulf of Oman");
	Maps.Add("XP1_003", "Sharqi Peninsula");
	Maps.Add("XP1_004", "Wake Island");
	//Close Quarters maps
	Maps.Add("XP2_Factory", "Scrap Metal");
	Maps.Add("XP2_Office", "Operation 925");
	Maps.Add("XP2_Palace", "Donya Fortress");
	Maps.Add("XP2_Skybar", "Ziba Tower");
	
/* BF3 friendly game modes */
	Dictionary<String, String> Modes = new Dictionary<String, String>();    
	Modes.Add("ConquestLarge0", "Conquest Large");
	Modes.Add("ConquestSmall0", "Conquest Smalll");
	Modes.Add("RushLarge0", "Rush");
	Modes.Add("SquadRush0", "Squad Rush");
	Modes.Add("SquadDeathMatch0", "Squad Deathmatch");
	Modes.Add("TeamDeathMatch0", "Team Deathmatch");
	//Back to Karkand modes
	Modes.Add("ConquestAssaultLarge0", "Conquest Assault");
	Modes.Add("ConquestAssaultSmall0", "Conquest Assault");
	Modes.Add("ConquestAssaultSmall1", "Conquest Assault");
	//Close Quarters modes
	Modes.Add("Domination0", "Conquest Domination");
	Modes.Add("GunMaster0", "Gun Master");
	Modes.Add("TeamDeathMatchC0", "TDM Close Quarters");
    
plugin.ConsoleWrite(plugin.R("%p_n% wants to know the next map"));

if ( Maps.ContainsKey ( server.NextMapFileName ) && Modes.ContainsKey ( server.NextGamemode ) )
	{
		string map_msg = "The next map is " + Maps[server.NextMapFileName] + " on " + Modes[server.NextGamemode];
		string rnd_msg = "The current round is " + (server.CurrentRound+1) + " of " + server.TotalRounds;
		plugin.SendGlobalMessage( map_msg );
		plugin.SendGlobalMessage( rnd_msg );
		plugin.ServerCommand("admin.yell", map_msg, "8", "player", player.Name);
		plugin.ServerCommand("admin.yell", rnd_msg, "5", "player", player.Name);
	}
Game mode names were updated in R22 recently, not sure if any posted the updated code so here it is.

 

2012-08-03 Update: Updated code to include new modes and maps added by Close Quarters DLC.

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

Originally Posted by Nazra7*:

 

Hey Guys,

 

Would it be possible to create a custom plugin based on the !dump code generated from the InsaneLimit plugin?

If so what would the preliminary code look like to run it standalone?

 

heres what i got to work with

Code:

namespace PRoConEvents
{
    using System;
    using System.IO;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Collections.Generic;
    using System.Collections;
    using System.Net;
    using System.Net.Mail;
    using System.Web;
    using System.Data;
    using System.Threading;

    class LimitEvaluator2
    {
        public bool FirstCheck(PlayerInfoInterface player, PlayerInfoInterface killer, KillInfoInterface kill, PlayerInfoInterface victim, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4)
        {
            try
            {
            return ( (! Regex.Match(kill.Weapon, @"(Melee|Knife|Repair&Tool|M1911|M9|Taurus|MP412REX|MP443|Glock|M40A5|Model98B|SV98|L96)", RegexOptions.IgnoreCase).Success) == true);
            }
            catch(Exception e)
            {
                plugin.DumpException(e, this.GetType().Name);
            }
            return false;
        }

        public bool SecondCheck(PlayerInfoInterface player, PlayerInfoInterface killer, KillInfoInterface kill, PlayerInfoInterface victim, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4, LimitInfoInterface limit)
        {
            try
            {
            if (limit.Data.issetBool(player.Name))
              {
                 plugin.SendGlobalMessage(plugin.R("%p_n% has been banned for using %w_n%, after a kick!"));
                 plugin.PBBanPlayerWithMessage(PBBanDuration.Temporary, player.Name, 15, plugin.R("%p_n% you have been banned for 15 minutes for using %w_n%"));
                 limit.Data.unsetBool(player.Name);
              }
              
              int count = (int) limit.Activations(player.Name);
               
              String msg = plugin.R("%p_n%, this is a Knife, RT, Pistol, Bolt Action Sniper only server, until populated to 5v5!");
            String kPistols = "pistols";
            if (!plugin.Data.issetBool(kPistols)) {
              plugin.Data.setBool(kPistols, false);
             }
             bool isPistolsEnabled = plugin.Data.getBool(kPistols);
             if (server.PlayerCount<=9&&isPistolsEnabled) 
            {
              if (server.PlayerCount<=9&&count >= 1&&count <= 2)
              {
               plugin.KillPlayer(player.Name);
               plugin.ServerCommand("admin.yell", msg, "10", "player", player.Name);
              }
            } 
            else if (server.PlayerCount<=9&&count >= 3)
            {     
             plugin.KickPlayerWithMessage(player.Name, plugin.R("Kicked using %w_n% during Knife/RT/Pistol/BA Sniper Mode!"));
             if (!limit.Data.issetBool(player.Name))
                limit.Data.setBool(player.Name, true);
            }
            
            return false;
            return true;
            }
            catch(Exception e)
            {
               plugin.DumpException(e, this.GetType().Name);
            }
            return true;
        }
    }  
    class LimitEvaluator3
    {
        public bool FirstCheck(PlayerInfoInterface player, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4)
        {
            try
            {
            String kPistols = "pistols";
            if (!plugin.Data.issetBool(kPistols)) {
              plugin.Data.setBool(kPistols, false);
             }
             bool isPistolsEnabled = plugin.Data.getBool(kPistols);
             if (server.PlayerCount<=9&&isPistolsEnabled) {
              plugin.ServerCommand("admin.yell", "Server is Knife, RT, Pistols & Bolt Action Snipers, Until 5v5!!", "10", "player", player.Name );
             }
             
             return false;
            return false;
            }
            catch(Exception e)
            {
                plugin.DumpException(e, this.GetType().Name);
            }
            return false;
        }

        public bool SecondCheck(PlayerInfoInterface player, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4, LimitInfoInterface limit)
        {
            try
            {
            
            return true;
            }
            catch(Exception e)
            {
               plugin.DumpException(e, this.GetType().Name);
            }
            return true;
        }
    }  


    class LimitEvaluator4
    {
        public bool FirstCheck(PlayerInfoInterface player, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4)
        {
            try
            {
            return ( ((Regex.Match(player.LastChat, @"^\s*[!](_:pistols)", RegexOptions.IgnoreCase).Success)) == true);
            }
            catch(Exception e)
            {
                plugin.DumpException(e, this.GetType().Name);
            }
            return false;
        }

        public bool SecondCheck(PlayerInfoInterface player, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4, LimitInfoInterface limit)
        {
            try
            {
            /* Version: V0.8/R4
            !pistols (on|off)
            - With arguments, enable/disable the automatic server starter.
            - Without arguments, sends the current state to chat.
            */
            String admins = "admins"; // Define the name of your admins list here
            String kPistols = "pistols"; // plugin.Data
            String msg = "none";
            int level = 2;
            
            try {
                level = Convert.ToInt32(plugin.getPluginVarValue("debug_level"));
            } catch (Exception e) {}
            
            Match d0Match = Regex.Match(player.LastChat, @"pistols\s*$", RegexOptions.IgnoreCase);
            Match d1Match = Regex.Match(player.LastChat, @"pistols\s+(on|off|1|0|true|false)", RegexOptions.IgnoreCase);
            
            /* !pistols command with no arguments */
            
            if (d0Match.Success) {
             // Report enabled/disabled
             if (!plugin.Data.issetBool(kPistols)) {
              plugin.Data.setBool(kPistols, false);
             }
             bool isPistolsEnabled = plugin.Data.getBool(kPistols);
             if (isPistolsEnabled) {
              msg = "*** Insane Limits pistols mode is:\n*** ON!";
             } else {
              msg = "*** Insane Limits pistols mode is:\n*** OFF!";
             }
             plugin.SendGlobalMessage(msg);
             plugin.PRoConChat( "ADMIN > " + msg);
             return false;
            }
            
            /* !pistols command with arguments */
            
            if (d1Match.Success) {
             
             if (!plugin.isInList(player.Name, admins))
             {
              if (level >= 2) plugin.ConsoleWrite(player.Name + " not authorized to use !pistols command.");
              msg = "*** You are not authorized to change the pistols!";
              plugin.SendSquadMessage(player.TeamId, player.SquadId, msg);
              plugin.PRoConChat( "ADMIN > " + msg);
              return false;
             }
             // Enable/Disable
             String state = "OFF!";
             if (!plugin.Data.issetBool(kPistols)) {
              plugin.Data.setBool(kPistols, false);
             } else if (Regex.Match(d1Match.Groups[1].Value, "(on|1|true)", RegexOptions.IgnoreCase).Success) {
              plugin.Data.setBool(kPistols, true);
              state = "ON!";
             } else {
              plugin.Data.setBool(kPistols, false);
             }
             msg = "*** Insane Limits pistols mode is:\n***" + state;
             plugin.SendGlobalMessage(msg);
             plugin.PRoConChat( "ADMIN > " + msg);
             return false;
            }
            
            return false;
            return true;
            }
            catch(Exception e)
            {
               plugin.DumpException(e, this.GetType().Name);
            }
            return true;
        }
    }
}
what im shooting for is an easy to use interface w/ custom variables, servercount, how many warns b4 kicking, and predefined lists of accepted weapons that you can choose to enable.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hey Guys,

 

Would it be possible to create a custom plugin based on the !dump code generated from the InsaneLimit plugin?

If so what would the preliminary code look like to run it standalone?

 

heres what i got to work with

...

 

what im shooting for is an easy to use interface w/ custom variables, servercount, how many warns b4 kicking, and predefined lists of accepted weapons that you can choose to enable.

IMHO, starting with an Insane Limit dump doesn't really make it easier. If anything, it's more work to convert it to a direct PRoCon plugin. The only code that's directly portable are the Regex matches. Every usage of plugin or server or player in Insane Limits would have to be rewritten for PRoCon.

 

Try cloning the Basic In-Game Info (CBasicInGameInfo.inc) plugin that comes with PRoCon. It's a decent starting point for any in-game command based plugin. Read the procon.doc Word document that comes with the distribution for what commands your plugin can send and look at this API for the events that your plugin can handle:

 

http://www.phogue.net/forumvb/showth...ll=1#post28548*

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

Originally Posted by PapaCharlie9*:

 

I'm attempting to retire this thread.

 

Use this thread for requests for new limits or for help:

 

www.phogue.net/forumvb/showth...imits-Requests*

 

If you have a new limit example that you want to share, go ahead and post it here.

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

Originally Posted by funnysergio*:

 

Hello,

I would like to disable vehicles on Squad Deatmatch mode on my 16 slots server.

Here is what i do but that doesn't work :

 

Set a limit to evaluate : OnRoundStart

 

set fisrtcheck to this expression

Code:

(true)
set secondcheck

Code:

if(server.Gamemode == "SquadDeathMatch")
{
plugin.ServerCommand("Vars.VehicleSpawnAllowed", "false");
}
return false;
Action : none

 

Sorry for my english :ohmy:

 

Thanks in advance

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

Originally Posted by Singh400*:

 

Hello,

I would like to disable vehicles on Squad Deatmatch mode on my 16 slots server.

Here is what i do but that doesn't work :

 

Set a limit to evaluate : OnRoundStart

 

set fisrtcheck to this expression

Code:

(true)
set secondcheck

Code:

if(server.Gamemode == "SquadDeathMatch")
{
plugin.ServerCommand("Vars.VehicleSpawnAllowed", "false");
}
return false;
Action : none

 

Sorry for my english :ohmy:

 

Thanks in advance

OnRoundStart is too late. Try OnIntervalServer.

 

Also it's SquadDeathMatch0 :ohmy:

 

Code:

if (server.Gamemode == "SquadDeathMatch0")
	{
		plugin.ServerCommand("vars.vehicleSpawnAllowed", "false");
	}

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

Originally Posted by funnysergio*:

 

OnRoundStart is too late. Try OnIntervalServer.

 

Also it's SquadDeathMatch0 :ohmy:

 

Code:

if (server.Gamemode == "SquadDeathMatch0")
	{
		plugin.ServerCommand("vars.vehicleSpawnAllowed", "false");
	}

return false;
Hello Singh400,

 

Thanks for fast reply, i just changed the code and will try this tonight (i'm at work now.. lol)

 

Have a nice day :smile:

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

Originally Posted by PapaCharlie9*:

 

I'm attempting to retire this thread.

 

Use the thread linked below for requests for new limits or for help:

 

www.phogue.net/forumvb/showth...imits-Requests*

 

If you have a new limit example that you want to share, go ahead and post it here.

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

Originally Posted by CPx4*:

 

This limit will check the number of players in the server at specific intervals of time, and depending on how many players are there in the server, it will enable/disable vehicle spawn by changing the value of "vars.vehicleSpawnAllowed". This change is in effect immediately, no need to wait for next round. However, this only applies to attack vehicles. Transport vehicles will still spawn.

 

 

Set limit to evaluate OnInterval, and set action to None

 

Set first_check to use this Code snippet:

 

Code:

if (server.PlayerCount < 8 )
    plugin.ServerCommand("vars.vehicleSpawnAllowed", "false");
else
    plugin.ServerCommand("vars.vehicleSpawnAllowed", "true");
In this case, if number of players in the server falls below 8, vehicles are disabled. As soon as it goes to or over 8, vehicles are re-enabled. You may change this value as you see fit.

 

Also note that when you turn off vehicle spawn, your server may not be listed in Battlelog as Hard-core. Additionally, disabling vehicles can reportedly interfere with Battlelog's Quick Match option.

FYI: Please update Post #22*:

You should also set vars.3pCam to False/True. It will list your server as "Infantry Only". (Otherwise, if you do JUST the vehicleSpawnAllowed, it shows up as "Custom" game mode, and you lose some Quick Match players.)

 

 

(You may delete this post once edited.)

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

Originally Posted by Singh400*:

 

NOTE: You must use a modified version of Insane Limits to use this limit. Get it myrcon.net/...insane-limits-requests#entry25406.

 

Set limit to evaluate OnJoin, set action to None.

 

Set first_check to this Code:

Code:

double avg_per = 10 ;
double p_ka = ( ( player.killAssists / player.Kills ) * 100 ) ; 

if ( p_ka < avg_per )
	{	
		plugin.Log("Logs/InsaneLimits_KAP.csv", plugin.R("%date%,%time%,%p_n%,%l_n%,%p_pg%," + p_ka + ""));
		
	}

return false;
What this limit does is look at a incoming players kill assists vs total kills. The average is around 10% for all players. There might be some variance anywhere between 8%-12%. The reason for this limit is that most cheaters will have an extremely low number of kill assists usually somewhere in the 0%-5% range when compared to their total kills.

 

Hence it's a good limit for Server Admins to use. At the moment it's only a logging limit (what I call a passive limit), I'd be hesitant to use it as active limit (ie kick/ban based on the outcome of the limit). Perhaps it can be refined further.

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

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.




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