Jump to content

Insane Limits - Examples


Recommended Posts

Originally Posted by micovery*:

 

ARCHIVED

 

If you need help with writing or using an Insane Limit, or you are looking for a limit, please post your request in the Insane Limits Requests* thread.

 

Most of these limits are outdated and may not work with the current 0.9 versions of Insane Limits. Most will not work with BF4.

 

Rationale


I have created this thread solely for the purpose of showcasing uses of the Insane Limits plugin. The first post will always contain the index of examples with links to each example. You may contribute your own examples by replying to this thread. As more examples are added, the index will grow.

 

If you want to ask questions, or discuss on how to expand, or point out a problem with an example, please do so in the ...* for the Insane Limits plugin. Replies in this thread that do not conform to Limit examples might get removed.

 

For full documentation, and download link, see the original post here*

 

Video Demo


type="application/x-shockwave-flash" wmode="transparent"

width="425" height="355">

 

How to submit or use the examples


Each example is a description of the structure of a limit definition. Examples should be in the following format:

 

Set limit evaluation to EventName, Set action to ActionName

 

Set first_check to Expression/Code:

 

Code:

( sample expression #1)
Set second_check to Expression/Code:

 

Code:

( sample expression #2)
And that's it. Not all limits require two expressions, some may require you to set only first_check.

 

Examples Index


  • Simple Rank Limit*
  • Smart Rank Limit*
  • Simple Country Kicker*
  • Battlelog KDR Kicker*
  • Battlelog Excessive Recon/Sniper Kicker*
  • Admin Request Notification*
  • Excessive Kill Rate Kicker*
  • Simple Weapon Kill Spree*
  • Weapon Multi-Kill achievement*
  • Melee/Knife death shame*
  • Team First Blood*
  • Server First Blood*
  • Round Kpm Kicker*
  • Multi-Message Kill Spree*
  • Multi-Message Death Spree*
  • Knife Only Server*
  • Pistol Only Server*
  • Battlelog Spm Kicker*
  • Bad Words Kicker (Regular Expressions Optional)*
  • Suicide Jumper Shame*
  • No RPG/M320 Kicker*
  • Disable Vehicles Based on Player Count*
  • Disable Vehicles Based on Current Map*
  • Simple Welcome Message*
  • Welcome Message Based on Country*
  • Warning/Kick for RPG/M320/SMAW Suicides*
  • Admin Welcome Messages *
  • Good Morning Message (Time Dependent)*
  • First Kill of the Year*
  • Nuke/Knife Cheat Catcher*
  • Multi-Action Bad Word Filter*
  • Next Gamemode Ticket Changer*
  • Announce Top Scoring Clan*
  • Take PunkBuster Screenshot at Specified K/D Ratio*
  • Warning for Excessive Use of Uppercase in Chat*
  • Multi-Warning/Kick for Excessive Use of Uppercase in Chat*
  • Basic @nextmap Say In-Game Command*
  • In-Game Per-Weapon Headshots Percentage Kicker *
  • Rules On Request*
  • Clan-Tag Kicker (Using Custom List)*
  • Unreal Tournament Style Kill-Spree Messages (with End-Spree Messages) *
  • Multi-Action 1st Kill, 2nd Kick, 3rd Ban for RPG/SMAW/M320*
  • Vote-Kick*
  • Vote-Ban*
  • Anti-Stack Winning Team (Ticket Dependent)*
  • Kick Players Without Battlelog Account*
  • Custom Admin Announcer & In-Game Admin List*
  • Player-Specific Welcome Messages*
  • Switch Hardcore/Softcore Mode Based on Player Count*
  • Basic Next-Map Say Command*
  • Killers & Victims Tracker*
  • In-Game Top Killers & Victims Command *
  • In-Game Player versus Player Command*
  • Announce Next mode (works fine with Ultimate Map Manager)*
  • ...*
  • Player Count Tracker*
  • Bad Player Name Kicker*
  • Melee/Knife Death Shame From Message List (Round-Robin or Random) *
  • Chat Message Spambot *

Coding Patterns/Templates for Examples


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

Originally Posted by micovery*:

 

Set limit to evaluate OnJoin, set action to Kick or ban, or any other action you wish

 

Set first_check to this Expression:

 

Code:

( player.Rank > 45 )
You may change the rank value from 45 to whatever value you want.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

Suppose that you want to be tolerant and allow the server to fill up and only kick the high ranking players after a certain point. You can achieve this by combining the Simple Rank Limit with another Expression using the server's player count.

 

Set limit to evaluate OnJoin, and set action to Kick ...

 

Set first_check to this Expression:

 

Code:

(  player.Rank > 45   &&  server.PlayerCount > 30  )
This will allow the server to fill up to 30 players, and start kicking high ranking players only after the 31st player joins.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

Suppose you wanted to kick players who join your server from Russia, India, or Iran.

 

Set limit to evaluate OnJoin, and set action to Kick

 

Set first_check to this Expression:

 

Code:

Regex.Match(player.CountryCode, "(RU|IR|IN)", RegexOptions.IgnoreCase).Success
Any player that joins the server, whose country code matches "RU", "IR", or "IN" will be kicked.

 

What if you want to setup a negative check ... like kick anyone that joins who is not from "US". In that case, you can do this:

 

Set limit to evaluate OnJoin, and set action to Kick

 

Set first_check to this Expression:

 

Code:

! Regex.Match(player.CountryCode, "(US)", RegexOptions.IgnoreCase).Success
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit combines both Kdr, and Accuracy measurements from Battlelog to kick suspicious players.

 

Set limit to evaluate OnSpawn, and action to Kick

 

Set first_check to this Expression:

 

Code:

(  player.Kdr > 4.0   ||  player.Accuracy > 50  )
You may adjust the values of Kdr, and Accuracy as you see fit.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit will kick any player on the server who uses recon kit more than 90% of the time, and has good Kdr.

 

Set limit to evaluate OnJoin, Set action to Kick

 

Set first_check to this Expressio:

 

Code:

( player.ReconPercent > 90 && player.Kdr > 2.0 )
You may adjust the values in the check expression as you see fit.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit creates a Windows Taskbar notification when someone in-game types something like:

 

"@admin Please kick micovery for hacking!"

 

 

Set the limit to evaluate OnAnyChat, and make the action be TaskbarNotify.

 

Set first_check to this Expression:

 

Code:

player.LastChat.StartsWith("@admin")
And set these action specific parameters:

 

Code:

taskbar_notify_title =  Admin Request from %p_n%
       taskbar_notify_message = %p_n% says, %p_lc%
A few users have tested it and reported that the task-bar notification won't show if plugin is running on layer.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit will check for how fast a player makes kills, and perform whatever action you want, if the player exceeds the rate you specify.

 

 

Set the limit to evaluate for OnKill, and set the action to Kick

 

Set first_check to this Expression:

 

Code:

(true)
Set the second_check to this Expression:

 

Code:

( limit.Activations(player.Name, TimeSpan.FromSeconds(30)) >  10 )
In this example, the rate is +10 kills, in 30 seconds. You may want to adjust this rate as you wish.

 

 

What if you wanted to check for the Headshot rate ? Well you can do that as well. In that case, just modify the first_check Expression to activate only for Headshots like this:

 

Code:

( kill.Headshot == true)
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

For this example, I will use pistols, but you may do it for any weapon you wish, as long as you know the name of the weapon. This kill-spree limit will send a message to the server whenever a player reaches or exceeds a certain amount of kills with the weapon. Each time the message says the number of kills.

 

Set limit to evaluate OnKill, Set action to Say

 

Set first_check to this Expression:

 

Code:

Regex.Match(kill.Weapon, @"(M1911|M9|M93R|Taurus|MP412REX|MP443|Glock)", RegexOptions.IgnoreCase).Success
Set second_check to this Expression:

 

Code:

( limit.Spree(player.Name) > 5 )
Set these action specific parameters:

 

Code:

say_audience = All
              say_message = %p_n% is on a killing spree with his %w_n%, he has %r_x% kills with it!
So in this example, more than 5 pistol kills (without dying) with a pistol is considered a spree. You may change the spree condition to start sending messages at different value.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

In this example, the limit tracks when a player dies by "SoldierCollision" which is usually from a big fall.

 

 

Set a limit to evaluate OnSuicide, and action to Say

 

Set first_check to this Expression:

 

Code:

kill.Weapon.Equals("SoldierCollision")
Set these action specific parameters:

 

Code:

say_audience = All
           say_message = %p_n% just jumped to his death, for the %p_x_th% time this round!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

For this limit, you can set it to any weapon you wish, as long as you know the name of the weapon. I will show it here for "C4". The way it works is that it tracks multiple kills in a very short amount of time with the same weapon. When this happens, you are either hacking or you just got a multi-kill.

 

 

Set limit to evaluate OnKill, and set action to Say

 

Set first_check to this Expression:

 

Code:

( kill.Weapon.Equals("C4") )
Set second_check to this Expression::

 

Code:

( limit.Activations(player.Name, TimeSpan.FromSeconds(10)) > 1 )
And set these action specific parameters:

 

Code:

say_audience = All
              say_message = %p_n% multi-kill achievement with %w_n%!
The rate for this limit is +1 kill in 10 seconds, you may adjust this as you see fit.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit sends a shame message to the server when a player is meleed, or knifed.

 

Set the limit evaluation to OnKill, and set the action to Say

 

Set the fist_check to this Expression:

 

Code:

Regex.Match(kill.Weapon, "(Melee|Knife)").Success
And set these action specific parameters:

 

Code:

say_audience = All
                say_message = %k_n% just sliced %v_n%'s throat, what a shame!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit sends a global message for the first kill of the round, in each team

 

Set the limit evaluation to OnKill, and set the action to Say

 

Set the fist_check to this Expression:

 

Code:

(true)
Set the second_check to this Expression:

 

Code:

limit.Activations(player.TeamId) == 1
And set these action specific parameters:

 

Code:

say_message = %p_n% got the first kill on his team this round with %w_n%!
                say_audience = All
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit sends a global message for the first kill of the round, in the entire server. This is very similar to the Team First Blood, example. The only thing that changes is that instead of counting first kill for each team, it counts first kill for entire server.

 

Set the limit evaluation to OnKill, and set the action to Say

 

Set the fist_check to this Expression:

 

Code:

(true)
Set the second_check to this Expression:

 

Code:

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

 

Code:

say_audience = All
                say_message = %p_n% got the first kill of this round with %w_n%!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit will activate for players that exceed a certain Kpm value during the round. In this example the action being taken is Kick, but you may set it to any action you want.

 

 

Set limit to evaluate OnInterval, and set action to Kick

 

Set first_check to this Expression:

 

Code:

( player.KpmRound > 30 && (player.TimeRound/60) > 5 )
Note that for sanity reasons, I have put an extra check to make sure that the player has been playing in the current round for at least 5 minutes. That way the Kpm measure has some time to stabilize itself, before a kick based on Kpm can be considered.

 

You may change the values being checked in the Expression as you see fit.

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

Originally Posted by micovery*:

 

This limit will check for how many times a player made non-kife kills. On the first kill, it will send a warning on chat, on the second kill, it will kick the player.

 

 

Set limit to evaluate OnKill, set action to None

 

 

Set first_check to this Expression:

 

Code:

! Regex.Match(kill.Weapon, @"(Melee|Knife)", 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%, this is a 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 knife only server"));
     
     return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit is for tracking player's kill sprees. The example only tracks kills (not team-kills). This is a base example, you can modify it to track kills with specific weapons, etc. You can do that by modifying the first_check Expression. If not sure, as for help in this thread.

 

Set the limit evaluation to OnKill, and set the action to None

 

Set the first_check to this Expression:

 

Code:

( true )
Set the second_check to this Code:

 

Code:

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

        if (count == 4)
	        plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree!"));
        else if (count == 5)
            plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! He's on fire!")); 
        else if (count == 6)
            plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! Getting ridiculous!"));
        else if ( count > 6)
            plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! He's unstoppable!"));
	
        return false;
The kill spree messages start at 4, and go all the way to 6 kills. After 6 kills, it's always the same message being sent, just with a different kill count. You can modify these values as you see fit, or even add more messages to extend it.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by chuvachok*:

 

Set limit to evaluate OnKill, set action to Kick_Say, or any other action you wish

 

Set first_check to this Expression:

 

Code:

( kill.Weapon.Equals("M320") ) || ( kill.Weapon.Equals("RPG-7") ) || ( kill.Weapon.Equals("SMAW") )
Set these action specific parameters:

 

Code:

kick_message = No M320\RPG\SMAW! connect again and dont use this weapon!
     say_message = %p_n% killed with %w_n%, he kill %v_n%! KICKED!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit is very similar to the Multi-Message Kill Spree the only parts that change are the event, and the messages. Basically, it counts how many times the player has died. (suicides not counted). The spree count is reset as soon as player makes a kill.

 

Set the limit evaluation to OnDeath, and set the action to None

 

Set the fist_check to this Expression:

 

Code:

( true )
Set the second_check to this Code:

 

Code:

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

        if (count == 4)
	        plugin.SendGlobalMessage(plugin.R("%p_n% has died for the %r_x_th% time!"));
        else if (count == 5)
            plugin.SendGlobalMessage(plugin.R("%p_n% has died for the %r_x_th% time, Waahmbulance!")); 
        else if (count == 6)
            plugin.SendGlobalMessage(plugin.R("%p_n% has died for the %r_x_th% time, Maybe take a break_"));
        else if ( count > 6)
            plugin.SendGlobalMessage(plugin.R("%p_n% has died for the %r_x_th% time, Alt-F4 now please!"));
        	
        return false;
The messages start at the 4th death, and go up to 6. After the 6th death, all messages are the same, but with different count. You may adjust the checks to start at different count values, or extend it to add more messages.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

This limit will check for how many times a player made non-pistol kills. On the first kill, it will send a warning on chat, on the second kill, it will kick the player.

 

 

Set limit to evaluate OnKill, set action to None

 

 

Set first_check to this Expression:

 

Code:

! Regex.Match(kill.Weapon, @"(M1911|M9|M93R|Taurus|MP412REX|MP443|Glock)", 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%, this is a pistol 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 only server"));
     
     return false;
You can use this limit as a template for restricting any weapon you want. Just change the Expression in the first_check depending on what weapon you want to restrict. The way it is right now, it will activate for any Non-Pistol ... that is because of the Negation symbol "!" at the begining of the expression. If you remove, the Negation symbol "!", it becomes a positive check. So you could make it activate for certain weapons, and restrict those only, while allowing the rest.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

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.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

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.

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

Originally Posted by Inception*:

 

Is it possible to disable Vehicles on specific maps only (seine crossing, teheran highway)?

There is a special plug-in for this.

www.phogue.net/forumvb/showth...21-2011%29-BF3*

 

Or just do that what Micovery say down here. :')

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

Originally Posted by micovery*:

 

Is it possible to disable Vehicles on specific maps only (seine crossing, teheran highway)?

Yes you can. In that case, instead of checking for player count, you just check for what is the current map.

 

Set limit to evaluate OnInterval, and set action to None

 

Set first_check to use this Code snippet:

 

Code:

List<String> map_names = new List<String>();

map_names.Add("MP_003");
map_names.Add("MP_011");

if (map_names.Contains(server.MapFileName))
   plugin.ServerCommand("vars.vehicleSpawnAllowed", "false");
else
  plugin.ServerCommand("vars.vehicleSpawnAllowed", "true");

return false;
For this example, vehicles will be disabled when map is "MP_003", or "MP_011", which are the files names for Tehran Highway, and Seine Crossing. For all other maps, the vehicles will be allowed.

 

This is the full list of map files names for BF3, (including Back to Karkand expansion)

 

  • MP_001 - Grand Bazaar
  • MP_003 - Teheran Highway
  • MP_007 - Caspian Border
  • MP_011 - Seine Crossing
  • MP_012 - Operation Firestorm
  • MP_013 - Damavand Peak
  • MP_017 -Noshahr Canals
  • MP_018 - Kharg Island
  • MP_Subway - Operation Metro
  • XP1_001 - Strike At Karkand
  • Xp1_002 - Gulf of Oman
  • XP1_003 - Sharqi Peninsula
  • XP1_004 - Wake Island

Note that since this only disables the vehicles after the map has loaded, the first set of vehicles might spawn. But, after that, they should not spawn anymore. I haven't tested it to verify, but I suspect that's what would happen.

 

Finally, this is just a very crude way of doing Per-Map settings. Sure it will work, but if there is already a plugin that specializes on that area, and already does the job well, you should use that.

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

Originally Posted by sp37zn4z*:

 

Hi micovery,

 

currently i'm using the Excessive Headshot kicker limit with the rule 60 > 5. And using the PBBan_say as an action. Is it possible to include the player name who got kicked/banned by the limiter via ALL? Currently PBBAN_say can just do a normal message kick with no player.name on it.

 

second is the "Multi-Message Kill Spree:" code.

 

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

 

if (count == 4)

plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree!"));

else if (count == 5)

plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! He's on fire!"));

else if (count == 6)

plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! Getting ridiculous!"));

else if ( count > 6)

plugin.SendGlobalMessage(plugin.R("%p_n% has a %r_x% kill spree! He's unstoppable!"));

 

return false;

Is it possible to put a "KILLING SPREE ENDED BY Player CODE" into this lines? If so can you make me one? Please, i don't know nothing how to code that. :sad:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

Is it possible to put a "KILLING SPREE ENDED BY Player CODE" into this lines? If so can you make me one? Please, i don't know nothing how to code that. :sad:

At the moment plugin does not support it, but I'll put it in wish-list for 0.0.0.4.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

New version on first post of Original Thread, 0.0.0.3.* It has a few critical bug-fixes, and a few new features. Update, and post back if there are any problems. On a side note, I think I figured why some bans were not taking effect. Even though the plugin was banning the players, it was not sending the commands to save the list. So when ProCon reloaded the ban's list, it would clear the bans made by the plugin. I know, sucks ... should be fixed now.

 

 

Change Log

  • 0.0.0.3 (beta, BF3)

     

    - Fixed debug_level framework to reduce the plugin's chattiness ( Thanks to PapaCharlie9)

  • 0 - Absolutely no chat, other than Enable/Disable, and Critical Errors
  • 1 - A bit more chatty, will tell you when limits get activated
  • 2 - Even more chatty , will tell you when players are queued for stats fetching
  • 3 - Overly chatty, will print the player's stats as they are fetched
  • >3 - Flow control, and extra debug messages
- Fixed defect with EABan, where "banList.save" command was not being called

- Fixed defect with PBBan, where "pb_sv_updbanfile", was not being called to update PBbans.dat

- Added redundancy to PBBan, and EABan, (Kicking player after Banning)

- Fixed defect where limit round activations were not being reset after player leaves server

- Added Log action, (log to File, log to Plugin, or Both), Also added combination actions

  • Kick_Log
  • Kill_Log
  • PBBan_Log
  • EABan_Log
  • Kick_Say_Log
  • Kill_Say_Log
  • PBBan_Say_Log
  • EABan_Say_Log
- Limit evaluation is now synchronized between threads, only 1 limit may be evaluated at a time

- Added option to have per-limit "Virtual" mode (in state)

- Added new methods to the limit object, to keep global count (all rounds) of activations

  • ActivationsTotal(int TeamId, int SquadId)
  • ActivationsTotal(int TeamId)
  • ActivationsTotal(String PlayerName)
  • ActivationsTotal()
- Fixed examples that used Country Codes to use lower-case

- Added new examples:

  • Simple Welcome Message
  • Country Based Welcome Message
- Added new replacements for the new Limit activation counts

  • %s_xa% and %s_xa_th% for ActivationsTotal(int TeamId, int SquadId)
  • %t_xa% and %t_xa_th% for ActivationsTotal(int TeamId)
  • %p_xa% and %p_xa_th% for ActivationsTotal(String PlayerName)
  • %a_xa% and %a_xa_th% for ActivationsTotal()
- Fixed replacement tag for Country Name, %p_cn% which was not working

- Fixed Stack Overflow crash when using Say action with Squad audience

- Fixed round Score tracker to start at 0 value when plugin is enabled

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

Originally Posted by micovery*:

 

This limit will send a message (global) for the player when he spawns in the server for the first time.

 

Set limit to evaluate OnSpawn, and action to Say

 

Set first_check to this Expression:

 

Code:

(true)
Set second_check to this Expression:

 

Code:

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

 

Code:

say_audience = All
           say_message = Everyone, lets welcome %p_n%, from %p_cn%!
If player leaves, and re-joins, welcome message should be displayed again.
* 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.