Jump to content

Insane Limits - Examples


Recommended Posts

Originally Posted by micovery*:

 

This limit sends a different welcome message to the players, depending on what country they are from.

 

Set limit to evaluate OnSpawn, and action to None,

 

Set first_check to this Expression:

 

Code:

(true)
Set second_check to this Code:

 

Code:

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

        if (count > 1)
           return false;
		   
        String CC = player.CountryCode;
		
        if (CC.Equals("us"))
           plugin.SendGlobalMessage(plugin.R("Welcome %p_n%"));
        else if (CC.Equals("at"))
           plugin.SendGlobalMessage(plugin.R("Willkommen %p_n%"));
        else if(CC.Equals("fr"))
           plugin.SendGlobalMessage(plugin.R("Bienvenue %p_n%"));
        else if (CC.Equals("it"))
           plugin.SendGlobalMessage(plugin.R("Benvenuto %p_n%"));
        else
           plugin.SendGlobalMessage(plugin.R("Everyone lets welcome %p_n% from %p_cn%!"));

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

Originally Posted by PapaCharlie9*:

 

Is it possible to make a welcome message for admins only?

It depends on how you define admins. So first:

 

WISH LIST REQUEST: Please add an admins list, similar to the player's whitelist, with similar access/test functions.

 

Until that is available, if you use the existing player's whitelist as your admins list, your second_check would look something like this:

 

Code:

( (limit.ActivationsTotal(player.Name) == 1) && plugin.isInPlayerWhitelist(player.Name) )
Note: I haven't tested this, so not absolutely sure it would work.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

Set use_custom_lists to True and create a new list with these parameters:

 

Code:

name = [b]admin_list[/b]
       data = player1, player2, player3, etc
Create a new limit to evaluate OnSpawn and set action to Say

 

Set first_check to this Expression:

 

Code:

plugin.isInList(player.Name, "[b]admin_list[/b]")
Set second_check to this Expression:

 

Code:

limit.ActivationsTotal(player.Name) == 1
Set these action specific parameters:

Code:

say_audience = All
             say_message = Admin %p_n% has logged in, everyone behave!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Inception*:

 

I've got this message in the console.

 

Code:

[12:23:26 11] [Insane Limits] ERROR: 1 error compiling Expression
[12:23:26 12] [Insane Limits] ERROR: (CS0117, line: 22, column: 29):  PRoConEvents.LimitInfoInterface bevat geen definitie voor ActivationsTotal
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

I've got this message in the console.

 

Code:

[12:23:26 11] [Insane Limits] ERROR: 1 error compiling Expression
[12:23:26 12] [Insane Limits] ERROR: (CS0117, line: 22, column: 29):  PRoConEvents.LimitInfoInterface bevat geen definitie voor ActivationsTotal
ActivationsTotal was added in 0.0.0.3, try updating, see if it works.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

Is it possible to first give someone a warning with suicide when they use M320 RPG-7 or SMAW and kick/ban after second kill?

It's possible, only limitation is that if the M320 is attached to the weapon (underslug), it won't register as M320.

 

This limit will warn the player on first Suicide, and Kick him on second. It will also send a global message to server saying that he was kicked.

 

Set limit to evaluate OnSuicide, and set action to None

 

Set first_check to this Expression:

 

Code:

Regex.Match(kill.Weapon, @"(RPG|SMAW|M320)", RegexOptions.IgnoreCase).Success
Set second_check to this Code:

 

Code:

double count = limit.Activations(player.Name);
	
	if (count == 1)
	    plugin.SendGlobalMessage(plugin.R("%p_n%, do not suicide with %w_n%, next time kick!"));
	else if (count == 2)
	{
            plugin.SendGlobalMessage(plugin.R("%p_n%, was kicked for suiciding with %w_n%!"));
            plugin.KickPlayerWithMessage(player.Name, plugin.R("Kicked for suiciding with %w_n%!"));
	}

	return false;
When you paste the Code part into the second_check field, make sure to click on the down-arrow, on the field, so that it expands and allows you to paste multi-line.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit will send a a Good Morning message to all players, between 7AM, and 8 AM ... after the first kill each round. The reason I did it, for OnKill is so that it guarantees that everyone has already loaded the map, and will see the message.

 

Set limit to evaluate OnKill, set action to Say

 

Set first_check to this Expression:

 

Code:

DateTime.Now.TimeOfDay.CompareTo(TimeSpan.FromHours(7)) > 0 && DateTime.Now.TimeOfDay.CompareTo(TimeSpan.FromHours(8)) < 0
Set second_check to this Expression:

 

Code:

limit.Activations() == 1
Set these action specific parameters:

 

Code:

say_audience = All
        say_message = Good morning everyone, the time is %time%!
This example depends, on the Time-Zone of the computer (layer) where the plugin is running. If that turns to be a problem, you should adjust the 7 AM, and 8 AM values to account for Time-Zones.

 

Also, the hours should be put in military time. 1 PM = 13, 2 PM = 14, etc ...

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

Originally Posted by micovery*:

 

This limit will activate on January 1st, of any year. Test this locally by changing your computer clock. Also note that since limit activations are reset every 10 rounds. It will say the same again after 10 rounds. Or, if the server empties out, (the stats are cleared) ... it will say it again.

 

Set limit to evaluate OnKill, set action to Say:

 

Set first_check to this Expression:

 

Code:

DateTime.Now.DayOfYear == 1
Set first_check to this Expression:

 

Code:

limit.ActivationsTotal() == 1
Set these action specific parameters:

 

Code:

say_audience = All
          say_message = Congratulations to %p_n% for the first kill of the year!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PhaxeNor*:

 

As an admin you might have seen cheaters that kills with knife or nothing but "Death".

 

This should help catch those.

 

 

Set limit to evaluate OnKill, set action to PBBan

 

Set first_check to this Expression:

Code:

Regex.Match(kill.Weapon, @"(Death|Knife|Melee)", RegexOptions.IgnoreCase).Success
Set second_check to this Expression:

Code:
( limit.Activations(player.Name, TimeSpan.FromSeconds(30)) >  13 )
Set these action specific parameters:

Code:
ban_duration = Permanent
ban_message = Knife\Nuke hack %w_n%

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

Originally Posted by Inception*:

 

It's possible, only limitation is that if the M320 is attached to the weapon (underslug), it won't register as M320.

 

This limit will warn the player on first Suicide, and Kick him on second. It will also send a global message to server saying that he was kicked.

 

Set limit to evaluate OnSuicide, and set action to None

 

Set first_check to this Expression:

 

Code:

Regex.Match(kill.Weapon, @"(RPG|SMAW|M320)", RegexOptions.IgnoreCase).Success
Set second_check to this Code:

 

Code:

double count = limit.Activations(player.Name);
	
	if (count == 1)
	    plugin.SendGlobalMessage(plugin.R("%p_n%, do not suicide with %w_n%, next time kick!"));
	else if (count == 2)
	{
            plugin.SendGlobalMessage(plugin.R("%p_n%, was kicked for suiciding with %w_n%!"));
            plugin.KickPlayerWithMessage(player.Name, plugin.R("Kicked for suiciding with %w_n%!"));
	}

	return false;
When you paste the Code part into the second_check field, make sure to click on the down-arrow, on the field, so that it expands and allows you to paste multi-line.
I don't think he meant it that way. I think he meant that the first time you've got a kill with it, you're gonna be killed (like !kill) and the second time you'll get a kick or ban. :ohmy:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

I don't think he meant it that way. I think he meant that the first time you've got a kill with it, you're gonna be killed (like !kill) and the second time you'll get a kick or ban. :ohmy:

hehe ok, well, it was a bit strange to me ... but I did not want to over-analyze it. I thought he may have wanted to discourage people using projectile explosives at very close range (hence the suicide) ... just have to change the event to be OnKill instead.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by WaxMyCarrot*:

 

This limit works as a simple chat filtering system. After each player sends a chat message, it scans the text of the chat, and looks for bad words in it. If it finds that one of the words matches the words in the bad words list, it kicks the player. It also sends a global message to let players know who was kicked for profanity.

 

Set limit to evaluate OnAnyChat, and action to None,

 

Set first_check to this Code:

 

Code:

	List<String> bad_words = new List<String>();
	
	bad_words.Add("word1");
	bad_words.Add("word2");
	bad_words.Add("word3");
	bad_words.Add("word4");
	
	String[] chat_words = Regex.Split(player.LastChat, @"\s+");
	
	foreach(String chat_word in chat_words)
	    foreach(String bad_word in bad_words)
		    if (Regex.Match(chat_word, "^"+bad_word+"$", RegexOptions.IgnoreCase).Success)
			{
                            plugin.ConsoleWarn(plugin.R("Kicked %p_n% for saying "+bad_word));
                            plugin.SendGlobalMessage(plugin.R("Kicking %p_n% for profanity!"));
			    plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n%, kicked for saying "+bad_word+"!"));
			}	
			
	return false;
You may add as many words as you want to the bad-words list, or even use Regular Expressions to match multiple spellings of the same word.
How can I set this to "KILL with warning" on first time player uses a bad word and then Kick if said player repeats offense?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

It's possible to have a multi-action bad-word filter. This limit will warn on first violation, kill on second, and kick on third. The words in the bad_words list can also be regular epxressions if you want.

 

Set limit to evaluate OnAnyChat, set action to None

 

Set first_check to this Code:

 

Code:

List<String> bad_words = new List<String>();
    
    bad_words.Add("word1");
    bad_words.Add("word2");
    bad_words.Add(@"f[eua]+c*k(i+n_g_)_");
    bad_words.Add(@"a+ss+");
    bad_words.Add(@"n[o0]{2,}b");
    
    String[] chat_words = Regex.Split(player.LastChat, @"\s+");
    
    foreach(String chat_word in chat_words)
        foreach(String bad_word in bad_words)
            if (Regex.Match(chat_word, "^"+bad_word+"$", RegexOptions.IgnoreCase).Success)
                return true;
            
    return false;
Set second_check to this Code:

 

Code:

double count = limit.Activations(player.Name);
    
    if (count == 1)
        plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("%p_n%, please avoid using profanity"));
    else if (count == 2)
    {
        plugin.KillPlayer(player.Name);
        plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("%p_n%, this is your %p_x_th% profanity warning, next time you are out!"));
    }
    else if (count == 3)
    {
       plugin.KickPlayerWithMessage(player.Name, plugin.R("%p_n%, kicked you for excessive profanity!"));
       plugin.SendGlobalMessage(plugin.R("%p_n% was kicked for excessive profanity"));
    }
    
    return false;
You can modify this example to perform different actions depending on the count. But, once the player is kicked, and leaves the server, the count values are reset back to 0. It will not remember the player after he has left.

 

There is a plugin called Watchdog that works with BF3, which is able to remember a player if he comes back after being kicked.

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

Originally Posted by Idanue*:

 

hehe ok, well, it was a bit strange to me ... but I did not want to over-analyze it. I thought he may have wanted to discourage people using projectile explosives at very close range (hence the suicide) ... just have to change the event to be OnKill instead.

That was it indeed but figured out the Onkill myself. :P

 

Thx for the great support btw. :smile:

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

Originally Posted by WaxMyCarrot*:

 

Thanks for the reply Micovery.. I get the idea of the RegEx but do not understand how to create my own words.. I googled it but failed. We don't care too much about words like fuck and noob cause we are playing a war game.. but would like to filter out racist and hate words like Nigger and faggot.. how would i write it to filter those and all variants like fag and negro?

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

Originally Posted by micovery*:

 

Thanks for the reply Micovery.. I get the idea of the RegEx but do not understand how to create my own words.. I googled it but failed. We don't care too much about words like fuck and noob cause we are playing a war game.. but would like to filter out racist and hate words like Nigger and faggot.. how would i write it to filter those and all variants like fag and negro?

Yeah, Regular Expressions are not very easy to understand at first. Once you get the hang of the core concepts, it becomes at bit easier. I will explain a few things:

 

 

1. Operators + * ?

 

 

+ Plus(+) applies to whatever letter is behind it. It means, whatever letter is behind, can be repeated one or more times.

 

* Asterisk(*) applies to whatever letter is behind it. I means, whatever letter is behind, can be repeated zero or more times

 

? Interrogation(_) applies to whatever letter is behind it. It means, whatever letter is behind is optional, appear zero or one time.

 

 

2. Character classes

 

A character class is a group or range of letters. You specify a character class using square brackets like this.

 

[a-z] This means letters A to Z are allowed

[0-9] This means numbers 0-9 are allowed

[ab12] This means only letters A, B and numbers 1,2 are allowed.

 

You can also negate a character class like this:

 

[^a-z] This means none of the A to Z letters are allowed

 

You can also apply operators to character classes like this

 

[0-9]+ This means one or more digits (between 0-9) are allowed

[o0]+ This means one or more of these "o", "0" is allowed

 

3. Groups

 

 

A group is specified inside parenthesis. You can use group to specify multiple options like this:

 

(word1|word2|word3) This would allow any of the 3 words to appear

 

You can also apply operators to groups like this

 

fag(ot)? This would allow the ending "ot" to be optional, so "fag", and "fagot" would both match.

 

 

Having given you this explanation, let me know give you some examples for "nigger", "faggot", and "negro".

 

Code:

// this matches nigger, n1g3r, nig3, etc

bad_words.Add(@"n+[1i]+g+[3ea]+r*");   

// this matches faggot, f4g0t, fagat, etc

bad_words.Add(@"f+[a4]+g+[ao0]+t*");

// this matches fag, f4g, fagggg, fa4g, etc.

bad_words.Add(@"f+[a4]+g+");
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PhaxeNor*:

 

This will allow you to change tickets based on next map gamemode. It will check on first kill of each round just to make sure the round have started.

 

Change XXX to the Ticket % you want on your server (100% default)

Code:

plugin.ServerCommand("vars.gameModeCounter", "XXX");
To add other map modes use the following code:

Code:

else if(server.NextGamemode == "GAME MODE HERE")
    {
        plugin.ServerCommand("vars.gameModeCounter", "XXX");
    }
For multiple modes with same ticket ratio you can use this. Make sure to use | to separate each game mode.

Code:

if(Regex.Match(server.NextGamemode, "(GAME MODE 1|GAME MODE 2|GAME MODE 3)", RegexOptions.IgnoreCase).Success)
    {
        plugin.ServerCommand("vars.gameModeCounter", "XXX");
    }

Next Gamemode Ticket Changer

 

Set Evaluation to OnKill

 

first_check to Expression

Code:

(true)
second_check to Code

Code:
if(limit.Activations() == 1)
{
    if(Regex.Match(server.NextGamemode, "(ConquestLarge0|ConquestSmall0|ConquestSmall1)", RegexOptions.IgnoreCase).Success)
    {
        plugin.ServerCommand("vars.gameModeCounter", "150");
    }
    else if(server.NextGamemode == "RushLarge0")
    {
        plugin.ServerCommand("vars.gameModeCounter", "100");
    }
    else if(server.NextGamemode == "TeamDeathMatch0")
    {
        plugin.ServerCommand("vars.gameModeCounter", "100");
    }
    
    plugin.ConsoleWrite("Next map mode is "+server.NextGamemode+". Tickets set for next map");
}
return false;

 

 

 

 

 

 

You can also set ticket % based on map and gamemode by adding before the first gamemode check (Change MP_001 and RushLarge0 to what map and gamemode you want)

Code:

if(server.NextMapFileName == "MP_001" && server.NextGamemode == "RushLarge0")
{
    plugin.ServerCommand("vars.gameModeCounter", "XXX");
    plugin.ConsoleWrite("Next map is "+server.NextMapFileName+" with game mode "+server.NextGamemode+". Tickets set for next map");
    return false;
}
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Phogue*:

 

Yeah, Regular Expressions are not very easy to understand at first. Once you get the hang of the core concepts, it becomes at bit easier. I will explain a few things:

On top of micovery's example there is a good quick reference at http://www.regular-expressions.info/reference.html

 

You can also test out expressions online at http://www.myregextester.com/index.php. Make sure you tick the "USE .NET" if you're testing it for use in a plugin.

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

Originally Posted by micovery*:

 

This limit will wait until there are less than 20 tickets remaining in either team. It will announce three times the name of the top scoring clan.

 

Set limit to evaluate OnSpawn, set action to None

 

Set first_check to this Expression:

 

Code:

(team1.RemainTicketsPercent < 20 || team2.RemainTicketsPercent < 20)
Set second_check to this Code:

 

Code:

double count = limit.Activations();
    
    if (count > 3)
        return false;

    List<PlayerInfoInterface> players = new List<PlayerInfoInterface>();
    players.AddRange(team1.players);
    players.AddRange(team2.players);
    Dictionary<String, double> clan_stats = new Dictionary<String, double>();
    
    /* Collect clan statistics */
    foreach(PlayerInfoInterface player_info in players)
    {
        if(player_info.Tag.Length == 0)
            continue;
        
        if (!clan_stats.ContainsKey(player_info.Tag))
            clan_stats.Add(player_info.Tag, 0);
        
        clan_stats[player_info.Tag] += player_info.ScoreRound;
    }

    /* Find the best scoring clan */
    String best_clan = String.Empty;
    double best_score = 0;
    
    foreach(KeyValuePair<String, double> pair in clan_stats)
        if (pair.Value > best_score)
        {
             best_clan = pair.Key;
             best_score = pair.Value;
        }
    
    if (best_clan.Length > 0)
	{
		String message = "Top scoring clan this round is "+ best_clan + " with " + best_score + " points!";
                plugin.SendGlobalMessage(message); 
		plugin.ConsoleWrite(message);
        }   
    return false;
This limit should work for TDM, CQ, and Rush. It will not work properly for SQDM because it assumes there are only two teams.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Inception*:

 

A few errors about that last limit.

 

Code:

[14:05:29 10] [Insane Limits] ERROR: 4 errors compiling Expression
[14:05:29 21] [Insane Limits] ERROR: (CS0103, line: 17, column: 23):  De naam team1 bestaat niet in de huidige context
[14:05:29 22] [Insane Limits] ERROR: (CS0103, line: 17, column: 50):  De naam team2 bestaat niet in de huidige context
[14:05:29 23] [Insane Limits] ERROR: (CS0103, line: 28, column: 31):  De naam team1 bestaat niet in de huidige context
[14:05:29 24] [Insane Limits] ERROR: (CS0103, line: 29, column: 31):  De naam team2 bestaat niet in de huidige context
okay what the .., why is it in Dutch?

 

"De naam team1 bestaat niet in de huidige context" means "Name teams1 doesn't exist in current context"

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

Originally Posted by micovery*:

 

A few errors about that last limit.

 

Code:

[14:05:29 10] [Insane Limits] ERROR: 4 errors compiling Expression
[14:05:29 21] [Insane Limits] ERROR: (CS0103, line: 17, column: 23):  De naam team1 bestaat niet in de huidige context
[14:05:29 22] [Insane Limits] ERROR: (CS0103, line: 17, column: 50):  De naam team2 bestaat niet in de huidige context
[14:05:29 23] [Insane Limits] ERROR: (CS0103, line: 28, column: 31):  De naam team1 bestaat niet in de huidige context
[14:05:29 24] [Insane Limits] ERROR: (CS0103, line: 29, column: 31):  De naam team2 bestaat niet in de huidige context
okay what the .., why is it in Dutch?

 

"De naam team1 bestaat niet in de huidige context" means "Name teams1 doesn't exist in current context"

You are getting ahead of me :-), this is for 0.0.0.4, about to release it in a few minutes.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

Hi,

 

Note, for this example to work in Team Deathmatch, or Squad Deathmath, ticket conditions would need to be modified.

grrrr.....:ohmy:

Again my mixed-server Problem. :/

Can I add to the first_check Expression something like

&& Gamemode Rush | Conq

?

So I can give a second limit for TDM?

 

Thx!

Rucki

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

Originally Posted by PhaxeNor*:

 

Hi,

 

 

 

grrrr.....:ohmy:

Again my mixed-server Problem. :/

Can I add to the first_check Expression something like

&& Gamemode Rush | Conq

?

So I can give a second limit for TDM?

 

Thx!

Rucki

set first_check to Code

 

Code:

if(Regex.Match(server.Gamemode, "(RushLarge0|ConquestLarge0)", RegexOptions.IgnoreCase).Success)
{
    if( team1.TicketsRound < 50 || team2.TicketsRound < 50 )
        return true;
}
else if(server.Gamemode == "TeamDeathMatch0")
{
    if( team1.TicketsRound < 10 || team2.TicketsRound < 10 )
        return true;
}


return false;
Something like that at least :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

Hi!

Something like that at least :smile:

THANK YOU!

Not sure at this time, but I think it ist working.

For TDM I think it should be inverted.

>90 (at 100% tickets/kills)

 

Another wish. :ohmy:

Is it possible, if a limit is reached, I can also see a message in the chat-tab of procon?

Console is fine, but chat-tab would be better for me.

 

Thx!

Rucki

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

Originally Posted by micovery*:

 

For some strange reason the 'Advanced Bad Words Kicker' and the 'Announce Top Scoring Clan' don't work (anymore).. No errors at all.

I just tried the Multi Action Bad Word Filter, it seems to work with 0.0.0.4. Maybe your limit is not getting re-compiled. Try forcing the limit to recompile by changing something in the code. (add some spaces) ... and see if there are any errors. Then, check if it works saying some profanity in-game.

 

set first_check to Code

 

Code:

if(Regex.Match(server.Gamemode, "(RushLarge0|ConquestLarge0)", RegexOptions.IgnoreCase).Success)
{
    if( team1.TicketsRound < 50 || team2.TicketsRound < 50 )
        return true;
}
else if(server.Gamemode == "TeamDeathMatch0")
{
    if( team1.TicketsRound < 10 || team2.TicketsRound < 10 )
        return true;
}


return false;
Something like that at least :smile:
For TDM, and SQDM, the tickets increase instead of decreasing. The first team to reach server.TargetTickets wins the round.

 

Something like this should work:

 

Code:

double remaining = server.TargetTickets - Math.Max(team1.TicketsRound, team2.TicketsRound);
Note, there is a bug in PRoCon, where TargetTickets is not correct. This was fixed in ProCon 1.1.3.0 ... so if you are using an older version, you have to hard-code the actual value of "TargetTickets" for your server.

 

Code:

double remaining = 100 - Math.Max(team1.TicketsRound, team2.TicketsRound);
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

What are the best methods to inhibit cheaters?

Limits based on Battlelog stats seems to do the best job at keeping cheaters out before they even spawn in the game. Take a look at the discussion going on in the GameServers.com forum. Several admins have been using the plugin with good catch rate.

 

http://forums.gameservers.com/viewtopic.php_f=9&t=47693

 

Some things to note are:

  • Typical (blatant) cheaters will have a really high KDR and SPM/KPM but really low Accuracy
  • Sneaky (careful) cheaters will have a high KDR, but low KPM/SPM as they try to avoid detection.
  • Players that spend a lot of the time in vehicles may trigger false posivites because of high KDR

We definitely need a youtube video explaining how to set up limits ... for the first time users. After you learn the basic concepts of the plugin, everything else becomes a breeze (copy and paste).

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