Donations: none needed - ProconRulz is 100% free software. Please acknowledge any support by clicking the Rate this thread link just above this post, and sharing the rulz you come up with. Thank You.

MAJOR UPDATE TO V44. BF4 SUPPORT, PLUS SUPPORT FOR EXTERNAL PROCONRULZ SCRIPT FILES

Summary

ProconRulz is a general-purpose Procon plugin that allows admin actions to be taken based on events and triggers. The most common usage is for weapon limits, e.g. "On Kill;Weapon SMAW;Kill" (which will limit the SMAW rockets by killing any player that kills with that weapon). Or you can limit players NOT using certain weapons, e.g. for a pistols-only server "On Kill;Not Damage Handgun;Kill" (which will kill any player that kills with anything NOT a pistol).

Rulz for many example requirements are given at the end of this thread

If you are new to ProconRulz, and look at the documentation, the fact that ProconRulz is now capable of enabling you to write sets of rulz that behave as killstreak announcers or in-game admin or rude-word-responders will appear scary at first, so don't forget ProconRulz was designed from the beginning to allow simple rulz to implement weapon limits, so it's easy to start with a single rule e.g. limiting nades with On Kill;Weapon M67;PlayerCount 3;Say Too many nade kills for %p%;Kill.

Click the elements 1..5 as per the screenshot below.NEW feature in V44 is the 'Rulz .txt filenames' plugin setting (#4 in screenshot) which allows you to have additional files containing rulz in the same folder as the proconrulz.cs file and load them directly from those files. This is the BEST approach if you have easy access to the rulz files that are in the ProconRulz download zip which go alongside the proconrulz.cs in the Plugins/<gameid> folder.
Alternatively you can enter rulz directly into the plugin in the multi-line 'Rules' setting entry: When the [...] button is clicked on the 'Rules' plugin setting (Just above #4 in image) a pop-up edit window wll appear and you cut-and-paste your rulz into that window and save. This may be simpler if you have a 'layer server' and a hosting company that makes it difficult to manage server files.

See below in this thread for sample rulz and an explanation of BF3/BF4 limitations so you don't ask the same "how do I block mortars" question as everyone else...

ProconRulz has a very flexible range of conditions and actions that can be applied, so as your rulz get fancy you are in effect creating a custom plugin. But everyone begins thinking they "just" want a simple weapon limit.

NEWS 25-Dec-2013: version 44j1 uploaded. Rulz .txt files now reloaded on plugin enable (useful for layer-server users).NEWS 17-Dec-2013: version 44h6 uploaded. New On RoundOver trigger that fired on end-of-round (useful for BF4). !knife rulz added. NEWS 9-Dec-2013: version 44g3 uploaded. BUGFIX version for new "On Init" trigger with BF3/4. Users who downloaded 44g.2 should replace with this version if they want to use the new On Init trigger (also used in snipersquad rulz set).NEWS 6-Dec-2013: version 44g2 uploaded. Sniper Squad limiter rulz added. Added Linux support for %ini_..% vars file. New 'On Init' trigger that can be used for simple startup values for rules.NEWS 2-Dec-2013: version 44f1 uploaded. Support for Linux external .txt rulz files. Updated sniper limit with additional !setsniper command (e.g. !setsniper bam) for admin to guarantee sniper slot to a player.NEWS 26-Nov-2013: version 44e2 uploaded. Support for BF4 with four weeks of testing (thanks D1bble, Tarreltje). Now rulz can be held in an external file and loaded by the plugin making it easier to share rulz sets e.g. for weapon limits, teamkill limits, announcers, etc.

Older news click to expand:

NEWS 17-Sep-2012: version 43d1 uploaded. New %score% variable for in-game player score. '+' now allowed as first character in a rule to act as a 'join' character to the rule above for multi-line rulz. Docs updated.NEWS 07-Sep-2012: very minor bugfix version 43c.1 uploaded. No functional changes - just a catch for an error condition that can be logged in the TargetPlayer condition when given an empty target (e.g. an admin types !kick, without giving a player name.) ProconRulz would be unaffected by the error, but log an 'exception' in the plugin log and continue. With this v43c.1 ProconRulz detects this condition and handles it more gracefully.NEWS 21-Aug-2012: Download updated to version 43b.8. Major update: Arithmetic added, permanent 'ini' variables, rounding, new variables for date, time, teamsize of each team, new logging options (to choose where ProconRulz 'Log' actions write to). ONLINE DOCUMENTATION UPDATED.NEWS 29-Jun-2012: Download updated to version 41a.4. Minor update: Text and TargetPlayer conditions have been enhanced to enable more flexible rulz for in-game admin. It is now easy to define in-game commands such as !kick <player> <reason> (previously the 'reason' part was difficult with ProconRulz. ONLINE DOCUMENTATION UPDATED.NEWS 15-May-2012: Download updated to version 40d.2. Minor update: quoted strings can now be used in rulz, e.g. Set %x% "Hello world". Particularly useful for Exec actions e.g. Exec vars.serverName "Bambam's Server".NEWS 2-May-2012: Download updated to version 39d.1. Minor update: new substitution variable %team_score% which holds the number of tickets left for each team, updated about every 30 seconds. See ProconRulz online docs (link above) for details,NEWS 24-Apr-2012: Download updated to version 39b.2. Minor update: all yell actions now have an optional integer first parameter for the number of seconds it should remain on screen, e.g. "PlayerYell 10 Change your kit %p%!!! Sniper Limit". If the text immediately following the action name (e.g. "Yell") isn't a number, then the default yell time from your plugin settings is used. (And that is set to 5 seconds unless you change that...). Also I've updated the online docsNEWS 16-Apr-2012: Download updated to version 39a.4. Full set of Say/Yell actions provided for BF3 now that BF3 R20 supports those. I.e. Say, PlayerSay, SquadSay, TeamSay, Yell, PlayerYell, SquadYell, TeamYell. Also 'player country' substitution variables added %pcountry%, %pcountrykey%, %vcountry%, %vcountrykey% for player and victim country (e.g. Germany) and country 'key' (e.g. DE) respectively.NEWS 07-Apr-2012: Cambridge win the Boat Race. ProconRulz Sniper Limit (by tarreltje) added as Example 13.NEWS 02-Apr-2012: Minor update 38e.1 for BF3 R20 - Yell and PlayerSay actions now work.NEWS 26-Jan-2012:A new documentation PDF is availableNEWS 18-Jan-2012: ProconRulz update to version 38d2. It is recommended all users update to this version which significantly extends the flexibility with which rulz can be written and fixes an issue with executing punkBuster commands. ProconRulz remains upwards-compatible with rulz from prior versions. It is expected the core processing logic of ProconRulz will be stable now for a while (with bug fixes as needed), with development limited to new conditions, actions, or perhaps substitution variables if they're needed. Basically 38d2 is like a VERSION upgrade, while the next few upgrades can be considered incremental releases. With 38d2, conditions (e.g. "Weapon SMAW") and actions (e.g. "Kick") can now be freely intermixed in any rule in any order, with processing proceeding from left-to-right through the rule until a condition fails. This won't mean much to you unless you've tried it but it removes a constraint from prior versions that was unexpected to some users. Variable names can now be nested in a completely general way, e.g. a count of weapon use by each player could be stored in %server_weapon_use[%w%][%p%]%.NEWS 11-Jan-2012: New example added (Example 8) of simple kill-rate anti-hacker rulz.NEWS 09-Jan-2012: It's been noted the Procon Configs/BF3.def file does not have an entry for the Jackhammer MK3A1 shotgun. If you want to add the weapon without waiting for a Procon update, add the following line to the Configs\BF3.def file near the other similar entries:procon.protected.weapons.add None "jackhammer" Primary ShotgunNEWS 04-Jan-2012: Minor bugfix v37g3 (fixes minor PBBan message error). Also adds a new "If %var% word <value>" condition that matches words (e.g. say text) not just a string anywhere as 'Text' condition.NEWS 28-Dec-2011: Minor bugfix v37e3 upload, corrects the display of the %c% variable (now counts from 1, not 0), and the 'Text' condition for single-word player say values.NEWS 27-Dec-2011: ProconRulz major update to v37 - This has a significant update to the rules processing engine, plus a few useful things that have been asked for:
* NEW PBKick and PBBan actions added (kicking, banning via PunkBuster using PB GUID)
* NEW substitution variables %ea_guid%, %pb_guid%, %ip%
* A small change has been made to the way ProconRulz steps through the rulz: ProconRulz will CONTINUE rulz processing for a single event until a KILL/KICK/BAN event is fired.. This means multiple Log/Say actions can fire for a single event. A new action "End" can be placed after any Log/Say action to return the behaviour of the prior versions.
* NEW Continue and End actions that force rulz processing to continue or end respectively, overriding the default behaviour of continuing unless the action was Kill/Kick/Ban.
* NEW User-writeable Rulz %Variables%. Supported with new conditions Set, Incr, Decr, and If. This provides much greater flexibility in rulz writing, e.g. to keep track of kill streaks, or for a QuakeCounter-style plugin.NEWS 29-Nov-2011: ProconRulz minor update to v34 - 'Protection' of admins from kicks/bans now optional.NEWS 28-Nov-2011: An updated Procon 1.1.2.0 is available, so ProconRulz modified BF3.def is no longer needed or included in the zip.

ProconRulz has been extensively used on BFBC2 servers (for BFBC2 see this thread). That thread now has hundreds of entries so for BF3 I've started this new one.

ProconRulz has relatively comprehensive documentation on its 'Details' tab, so please refer to that. For info, if you haven't downloaded the plugin yet, you can check out an cached version of the details info online here. Of course for the most up-to-date version of the documentation, check the plugin 'Details'.

ProconRulz allows rulz of the format "Trigger;Conditions...;Actions..." with a wide choice of triggers, conditions and actions. The most trivial forms of weapon limits can be implemented with a single rule, e.g. to kill players using the M320 underslung rifle nade, use the single rule given as an example at the top of this post. However, with a bit of thought, it is possible to provide rulz with a more complex behaviour, e.g. warn on the first kill, kill on the third, kick on the fifth.

ProconRulz installs with half-a-dozen default simple rulz that provide a template for your rulz if that helps.

Currently included rulz sets

Sniper Limit (proconrulz_sniperlimit.txt) - limits the number of snipers on each team to a maximum set at the top of the rulz. A sniper slot is reserved when the player kills with a sniper rifle. The sniper slot is released when the round ends, the player leaves, or the player kills with some other weapon and an announcement is issued to team. All players have the !snipers command which tells them the current snipers on their team. Also included is proconrulz_sniperdmrlimit.txt which is the same but limits both sniper rifles and DMR's. CREDIT tarreltje and see thread here

Sniper Squad Limit (proconrulz_snipersquad.txt) - only permits sniper kills if you are in a particular squad (default Echo). Also supports a !snipers command that tells users what's going on. (As above, also with proconrulz_sniperdmrsquad.txt for snipers andDMR's). CREDIT staazvaind.

Announcer (proconrulz_announcer.txt) - gives a few kill messages (Fred knifed Barney) for you to modify.

Best 3 Players (proconrulz_best3players.txt) Particularly for TDM announces current highest kill player & each time that changes. CREDIT tarreltje.

************************************************** ************************************************
Plus, you can still edit additional rulz directly into the Plugin settings with these as examples for ideas below
************************************************** ************************************************

ProconRulz doesn't really care what keys you use - it's up to you to check your conditions match whatever your server is sending. This is collected documentation for BF3 that you can find on the internet.

Some current limitations of BF3/BF4 to be aware of

click to expand:

1) not all weapon keys are available. All kills by mortar, MAV, tanks, choppers, humvee are just weapon 'Death'. This means Damage VehicleXXX conditions cannot be used in BF3.
2) weapon keys are currently given on 'kill' events but not on 'spawn' events.
3) player kit (i.e. assault, recon etc) is not available
4) player specializations/accessories are not availabe
5) xxx whoopie xxx this limitation now removed - PlayerSay, TeamYell etc now supported in BF3
6) A rocket attack on a tank, killing the player inside, cannot be distinguished from a soldier that gets hit by an RPG7 in the face. Both show the killer killing the victim with a rocket. This means no plugin can detect RPG's used on infantry as opposed to tanks.
7) there are no events triggered when a player enters or leaves any vehicle
8) Nade launchers slung under assault rifles are reported by BF3 as a kill BY THE ASSAULT RIFLE. This is an absolute bug in BF3, IMHO. It means you CANNOT tell in any plugin whether the kill was by a bullet from an M416 rifle, or an M320 nade from a launcher that happened to be attached to the M416 rifle.
9) BF3 is not reporting the map coordinates of the killer or victim in a kill event (although BFBC2 does with a 10m random error). This means the ProconRulz 'Range' condition and %r% variable are non-functioning for BF3.
10) As of BF3 R21, admin kills in the server are being reported as "Suicides with weapon Death". I.e. they will now trigger the "On Suicide" rulz in ProconRulz. If you don't want your On Suicide rulz triggered by automatic 'Kill' actions in other rulz, the simplest method is to use rulz with "On Suicide;Not Weapon Death;...". I suspect this means a player that mortars himself (i.e. really does commit suicide with weapon 'Death') will then also not trigger the "On Suicide;Not Weapon Death.." rulz, but that is the best current compromise.

Specifically, these kinds of limits are not possible, even though many people ask:
* no mortar limits (see 1. Mortars are one of the weapons with key DEATH, as well as all vehicles). On an infantry-only server, you can use a Weapon Death condition to block mortars because you are not worried about vehicle kills being affected by the same rule.
* no server limit for numbers of players spawned with a particular kit/spec/weapon (see 2). See also Example 13 (by tarreltje), with a workaround by checking for snipers a kill time.
* no 'max 2 snipers per team' type rule at spawn time (I just explained that in the line above ^^)
* no 'max 2 mortars per team' type rule (ditto)
* no kill or spawn limit for players with MAV (aka Weapon Roadkill - similar issues to mortar comment above) except on non-vehicle maps like Metro where blocking all roadkill works
* no rule to kill m26 users (Dart/Mass) BF3 not reporting underslung weapons

For all this, you can still prevent the use of the 55 weapons that *do* have a weapon key (and hence also a damage-type), by having a rule that kills any player that kills with one. E.g. my favorite rule:
On Kill;Map Subway;Damage ProjectileExplosive;Kill

This makes RPG kills on Operation Metro suicidal. Right now you probably have no idea what this rule does or how it works, but when you've installed ProconRulz and tried a few simple rulz you'll get the idea, so congratulations...

So I've tried to explain the BF3 limitations, but still get questions like this:

does anyone know how to limit the snipers to 5 a side please

Answer:No BF3 admin tool can do this at spawn time. Read the BF3 limitations above, especially #2. Instead all you can do is limit the number of kills by sniper weapons, or with rulz you can track the counts of players with sniper rifles at kill time (see Example 13).

Some sample rulz

KEEP the default logging On Kill rule at the end of all your rulz. This has a 'Log' action which is very helpful when your rulz don't pick up the condition you expected... (e.g. Log %pt% %k% %p% killed %v% with %w% (%wk%), damage %d%). You don't need to understand this now, just leave it in.

there are more filesnames for more maps (e.g. Karkand), but go find them on the interweb. If you post the new mapnames here I'll update this list.

Be careful !! These are not the definitive spellings of the full map names. It is possible a map name could include non-english characters, e.g. "Operation Métro" or something like that. If in doubt use a safe subset of the map name, or map filename e.g. "Map 011" or "Map Canal"

Example 6. If you want to reduce the frequency of a weapon use
e.g. limit players to max 2 nade kills per minute:

These rulz use the 'Rate' condition to QUICKLY ban likely hackers, i.e. the kiddies that appear on the server and don't even pretend to play the game.

You can adjust the thresholds and messages (in fact it's a good idea if you do). Note that you do NOT have to tell the player you banned WHY you banned them (why tell the hacker you specifically detected their knife hack?) but it is helpful to have unique info in the ban message so YOU know which rule banned them. You cannot have these kinds of rulz without risking false positives, in particular BF3 players can get long-term high kill rates in vehicles (Weapon Death...) and short-term high kills rates with explosives/rockets.

Micovery's Insane Limiter plugin provides more comprehensive support for this capability (by also checking BattleLog stats) and can be used in addition to ProconRulz.

All BF3 vehicle kills are currently reported as "Weapon Death", and FYI Mortars are reported as "Weapon Death" also, so you cannot tell those kills apart. But if you want to limit all vehicles AND mortars when teams are small, then you can use these rulz for BF3 (For BFBC2 there is full support for vehicle kills, e.g. with Damage VehicleHeavy, VehicleAir etc. so you can use similar rulz but be more specific).

The Teamsize condition in these rulz makes vehicle kills suicidal if the smallest team is 4 or smaller. On a balanced server this means vehicle kills will be suicidal until 10 players total are in-game...

Using the TargetPlayer condition simplifies matching player names - any string subset of the name will do, and ProconRulz will only match the name if ONLY ONE match is found so you're unlikely to kick the wrong player and no "confirm..." step is needed.

You can type ANY SUBSTRING of the player name and the command will be applied if that is found in a SINGLE player name (upper/lower case still match). If there is no match, or the string is found in multiple names, the command does nothing.

E.g. to kick player "l33t_h4x0r_^^_" just say "!kick h4x" (or "!kick 33", or any other substring of the player name that gives a unique match).

MAV's kill with weapon 'Roadkill', so you can only trap this if there are no vehicles on your server that could do this as well. E.g. you can use these rulz on Metro or on an infantry-only server.
On Kill;Map Subway;Weapon Roadkill;PlayerCount 5;Log %p% banned for MAV;Ban %p% MAV use
On Kill;Map Subway;Weapon Roadkill;PlayerCount 3;Log %p% kicked for MAV;Kick %p% MAV use
On Kill;Map Subway;Weapon Roadkill;PlayerSay %p% no MAV;Kill 100

Click to expand for a bit of explanation of how these rulz work in BF3:

Congrats to tarreltje for finding a way of limiting snipers (or the rulz could be modified for any weapon) even though BF3 makes this tricky to do.

Most BF3 admins know by now that the game server doesn't inform the plugins what weapons a player has chosen at spawn time, so limiting snipers is tricky. What these rulz do is keep track of the list players that have sniper rifles when they make a kill using one, so the plugin can detect when more than two players are trying to kill with sniper rifles (get it?). So where with BFBC2 you could say "max two players can spawn with sniper rifles" (i.e. the third spawning sniper gets admin-slayed), these rulz do the same thing at kill-time. The first two players to kill with sniper rifles are ok, the third player to kill with a sniper rifle will get admin-slayed.

These rules give the 'most kills', 'most knife kills', 'most headshots' playernames and kill counts during and near the end of the round. As with all ProconRulz rulz you can tweak the rulz for different stats or timings as you want.

Example 17. Country filter by L2Devlier
Here's an interesting concept, illustrating the global villiage we live (game) in. It's possible you live in a small country, adjacent to a large country (e.g. China), and you're trying to build a local community, but end up with the server being dominated by large numbers of gamers texting in the foreign language from the large-country-next-door, what can you do. L2Devlier came up with this solution in in a long PM to me emphasized this is not about being racist, just trying to compensate for limitations in the EA queueing system if you're trying to build a local community. For other-country-applicability you'll need to read the rulz, understand what they do, and tweak the country-codes as appropriate.

Click to expand the rulz:

#Count and limit chinaman to 16. To disable, set %server_chinamax% to 32(if it's a 32 player server)

Example 21. !votekick - ingame command for players to vote to kick another player

Click to expand:

The second line sets the number of votes needed to kick another player (currently 3).

Any player can say !votekick <partial player name> and these rulz will accumulate a count against that player. Players cannot vote twice against the same player. When the vote count reaches the limit, the player is kicked. <partial player name> is any unique (case insensitive) part of the player name. I.e. !votekick 4x will vote against a player called 7337H4X0r. This is much better than trying to guess a good approximation of the name, trust me on this.

Votes expire at the end of the round. If the kicked player rejoins during the same round, a single !votekick will kick them again.

Simple tweaks are possible to these rulz (in addition to adjusting the votesneeded limit). E.g. you can change any of the Say or PlayerSay messages, and can swap Say for Yell (or PlayerYell), without affecting the way the rulz work. You can run the rulz in test mode by deleting the "Kick kicked by vote;" action in the second-to-last line - then there will be no actual kick, only the "bambam kicked by vote" Yell message...

Easy to modify, these rulz 'chat' different messages according to the map 'Mode' that is currently running, i.e. you can have message for TeamDeathMatch, and different messages for Conquest. The same rulz could be tweaked if you want messages based on Map, rather than MapMode (i.e. some messages for Caspian, different messages for Seine Crossing...)

Now do we backup the BF3.def and just copy this one in or wait for the next update as referenced above? BTW I sent you a PM.

For rule writing help, if anyone knows how to write a rule for banning use of M320, though I do allow for smoke but don't think that is currently an option, and controlling spamming of RPG/SMAW I'd be grateful for your assistance, thank you.

the BF3.def I included is a superset of the one shipped with Procon 1.1.1.1 so you can copy it over that one. Basically it includes a list of all the BF3 R8 weapon definitions - the key work was done by Phil (and me) and will be included in the next 'prod' release of Procon.

So install this BF3.def in your Config folder, and when the next Procon update comes along (soon) it'll get updated again and that's fine. The BF3.def is needed if you want to use 'Damage' conditions (e.g. Damage ProjectileExplosive, or Damage SniperRifle, or Damage Handgun) as opposed to single weapon conditions, and also will give weapon display names in the subst variable %w%.

If you *don't* install this BF3.def, ProconRulz will still work, but all the weapon damages will be "None" and all the weapon display names will be the same as the weapon key, as per the BF3.def shipped with Procon 1.1.1.1.

ProconRulz can do lots of stuff, and will become more powerful as soon as EA ship a version of BF3 that enables more weapon keys and more admin events as were in BFBC2, particularly when a player spawns. But the most common usage is for weapon limits and here's a rulz template, using SniperRifle as an example (say you want to reduce sniper use to 5 sniper kills / player):

The plugin will display say-text warnings above 3 sniper kills, player will get auto-killed above 5 sniper kills, and will get auto-kicked above 7 sniper kills.

If you didn't know - weapon limits in BFx are traditionally applied at SPAWN time (i.e. if you limit snipers, you kill players that SPAWN with a sniper rifle if a certain number have already spawned with one on that team). ProconRulz is designed to support this as well as the On Kill rulz, but BF3 R8 is limiting the functionality to Kill-only at the moment, hence the limited example above.