В связи с закрытием форума по прокону копирую инфу дабы не утерялась. На языке оригинала.
ProconRulz V44j1 - weapon limits and other event-triggered admin actions
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 simplerulz 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.
ONLINE DOCUMENTATION HERE
How to enter your rulz
click here to expand this section:
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.
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.
Multi-kills (proconrulz_multikill.txt) - keeps track of short-term multi-kill streaks and makes Quake-like announcements. Credit Bl1ndy and Panther.
Rules (proconrulz_rules.txt) - simple rulz that display messages when any player types !rules - for you to modify for your server.
Punish (proconrulz_punish.txt) Support of !punish / !p and !forgive / !f for teamkills. CREDIT ty_ger07 and russel5
Killstreak (proconrulz_killstreak.txt) Announces kill streaks at 5/10/15 kills etc, and when ended. Credit ty_ger07
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
************************************************** ************************************************
BF3 Map names and modes
In case you need them in Map or MapMode conditions, BF3/BF4 names and modes are collected into this post.
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
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.
Example 1. Limit a single weapon (usage suicidal, kick on 4th kill, ban on 6th kill):
Example 2. Limit a weapon category via Damage condition (usage suicidal, kick on 4th kill, ban on 6th kill):
Example 3. For a sniper/pistol server (usage of other weapons is suicidal, kick on 4th kill, ban on 6th kill):
Example 4. Make teamkills suicidal
Example 5. Stop use of rockets on map Operation Metro:
Example 6. If you want to reduce the frequency of a weapon use
e.g. limit players to max 2 nade kills per minute:
Example 7. Kill Streak Announcer
by ty_ger07.
Please see this dedicated thread
Example 8. Basic Cheater Detector
Example 9. Limit vehicle use when teams are small
Example 10. Easy in-game admin
Example 11. No MAV's on Metro
Example 12. Unreal Tournament Multi Kills Announcer by Bl1ndy
Example 13. Sniper Limit V2!!! (credit tarreltje)
Example 14. Multi-language 'join' welcome messages (credit Angry_AGAIN)
Example 15. Knife/Defib/Repair Tool Kill YELL Announcer
This plugin will put a Yell message on the screen each knife or other melee weaon kill
Example 16. End of Round Stats Announcer by tarreltje
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 notabout 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.
Example 18. BEST 3 PLAYERS Announcer by tarreltje
Every 100 tickets, these rulz announce the top 3 players based on kills, e.g.:
BEST 3 PLAYERS :
1st Tarreltje 1000 kills
2nd Gaga 580 kills
3rd Noob 30 kills
Example 19. SERVER STATS by tarreltje
On the first kill of each round, server will announce the player names with the highest kill counts, e.g.
DUTCH COWBOYS SERVER STATS
1st RINUSS 1000 kills
2nd BAMBAM 500 kills
3th GAGA 200 kills
Most Knives: RINUSS 3000 knives
Example 20. !punish and other TeamKill protection rulz by ty_ger
The !punish, !forgive commands you've probably seen on a variety of servers, plus optional rulz so you can automatically punish teamkillers if you prefer that for your server.
Example 21. !votekick - ingame command for players to vote to kick another player
Example 22. Adaptive SPAMBOT by tarreltje
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...)
Example 23. Simple Aimbot headshot detector
credit russel5
These rulz count headshots and if it's more than 60% after 30 kills (these params in line 5) and it's not a sniper rifle, player is banned.
ProconRulz V44j1 - weapon limits and other event-triggered admin actions
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 simplerulz 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.
ONLINE DOCUMENTATION HERE
How to enter your rulz
click here to expand this section:
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.
2773
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.
2773
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.
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 docs
NEWS 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 available
NEWS 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 Shotgun
NEWS 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.
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 docs
NEWS 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 available
NEWS 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 Shotgun
NEWS 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.
Multi-kills (proconrulz_multikill.txt) - keeps track of short-term multi-kill streaks and makes Quake-like announcements. Credit Bl1ndy and Panther.
Rules (proconrulz_rules.txt) - simple rulz that display messages when any player types !rules - for you to modify for your server.
Punish (proconrulz_punish.txt) Support of !punish / !p and !forgive / !f for teamkills. CREDIT ty_ger07 and russel5
Killstreak (proconrulz_killstreak.txt) Announces kill streaks at 5/10/15 kills etc, and when ended. Credit ty_ger07
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
************************************************** ************************************************
BF3 Map names and modes
In case you need them in Map or MapMode conditions, BF3/BF4 names and modes are collected into this post.
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
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).
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.
Example 1. Limit a single weapon (usage suicidal, kick on 4th kill, ban on 6th kill):
On Kill;Weapon Siaga20k;PlayerCount 5;Log %p% banned for Saiga;Ban %p% Saiga shotgun use
On Kill;Weapon Siaga20k;PlayerCount 3;Log %p% kicked for Saiga;Kick %p% Saiga shotgun use
On Kill;Weapon Siaga20k;PlayerSay %p% no Saiga shotgun;Kill 100
On Kill;Weapon Siaga20k;PlayerCount 3;Log %p% kicked for Saiga;Kick %p% Saiga shotgun use
On Kill;Weapon Siaga20k;PlayerSay %p% no Saiga shotgun;Kill 100
Example 2. Limit a weapon category via Damage condition (usage suicidal, kick on 4th kill, ban on 6th kill):
On Kill;Damage Shotgun;PlayerCount 5;Log %p% banned for Shotgun;Ban %p% shotgun use
On Kill;Damage Shotgun;PlayerCount 3;Log %p% kicked for Shotgun;Kick %p% shotgun use
On Kill;Damage Shotgun;PlayerSay %p% no Shotgun;Kill 100
Above rule can be used with Damage ProjectileExplosive, or Damage SniperRifle (instead of Damage Shotgun) to block rockets or snipers respectively.
On Kill;Damage Shotgun;PlayerCount 3;Log %p% kicked for Shotgun;Kick %p% shotgun use
On Kill;Damage Shotgun;PlayerSay %p% no Shotgun;Kill 100
Above rule can be used with Damage ProjectileExplosive, or Damage SniperRifle (instead of Damage Shotgun) to block rockets or snipers respectively.
Example 3. For a sniper/pistol server (usage of other weapons is suicidal, kick on 4th kill, ban on 6th kill):
On Kill;Not Damage SniperRifle;Not Damage Handgun;PlayerCount 5;Log %p%banned (snipers / pistols only);Ban %p% snipers only
On Kill;Not Damage SniperRifle;Not Damage Handgun;PlayerCount 3;Log %p% kicked (snipers / pistols only);Kick %p% snipers only
On Kill;Not Damage SniperRifle;Not Damage Handgun;PlayerSay %p% snipers/pistols only;Kill 100
On Kill;Not Damage SniperRifle;Not Damage Handgun;PlayerCount 3;Log %p% kicked (snipers / pistols only);Kick %p% snipers only
On Kill;Not Damage SniperRifle;Not Damage Handgun;PlayerSay %p% snipers/pistols only;Kill 100
Example 4. Make teamkills suicidal
The simplest idea is just have a rule:
On TeamKill;Say %p% teamkilled %v%;Kill 100;
If you want !forgive/!punish
See this dedicated thread
On TeamKill;Say %p% teamkilled %v%;Kill 100;
If you want !forgive/!punish
See this dedicated thread
Example 5. Stop use of rockets on map Operation Metro:
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 5;Log %p% banned for rockets on Metro;Ban %p% Metro rockets
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 3;Log %p% kicked for rockets on Metro;Kick %p% Metro rockets
On Kill;Map Subway;Damage ProjectileExplosive;PlayerSay %p% no rockets on Metro;Kill 100
For reference, the other BF3 map filenames / map names (use substring of either in Map condition) are:
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 (Noshashar Canals)
MP_018 (Kharg Island)
MP_Subway (Operation Metro)
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 Metro" 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"
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 3;Log %p% kicked for rockets on Metro;Kick %p% Metro rockets
On Kill;Map Subway;Damage ProjectileExplosive;PlayerSay %p% no rockets on Metro;Kill 100
For reference, the other BF3 map filenames / map names (use substring of either in Map condition) are:
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 (Noshashar Canals)
MP_018 (Kharg Island)
MP_Subway (Operation Metro)
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 Metro" 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:
On Kill;Damage Explosive;Rate 2 60;Say %p% excessive nade spam;Kill
Example 7. Kill Streak Announcer
by ty_ger07.
Please see this dedicated thread
Example 8. Basic Cheater Detector
by ty_ger07.
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.
# Cheater Detector by ty_ger07
On Kill;Damage Melee;Rate 8 30;Say %p%: banned - kill rate;Ban %p% Auto-banned - hacking status 5
On Kill;Weapon Death;Rate 10 30;Say %p%: banned - nuke;Ban %p% Auto-banned - hacking status 6
On Kill;Not Damage Explosive;Not Damage ProjectileExplosive;Rate 20 50;Say %p%: banned - kill rate 1;Ban %p% Auto-banned - hacking status 1
On Kill;Not Damage Explosive;Not Damage ProjectileExplosive;Rate 40 200;Say %p%: banned - kill rate;Ban %p% Auto-banned - hacking status 2
On Kill;Headshot;Rate 6 15;Say %p%: banned - aimbot;Ban %p% Auto-banned - hacking status 3
On Kill;Headshot;Rate 8 25;Say %p%: banned - aimbot;Ban %p% Auto-banned - hacking status 4
Example 9. Limit vehicle use when teams are small
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...
The PlayerCount conditions control the kill count thresholds for warn (vehicle kill 1,2,3), kill (vehicle kill 4,5), kick (vehicle kills >5)
On Kill;Weapon Death;Teamsize 4;
PlayerCount 5;Say %p% kicked for vehicle kills;Kick kicked for vehicle kills with small teams
PlayerCount 3;Say %p% slayed for vehicle kill %c%/5;Kill 100
Say %p% - no vehicle kills with small teams (#%c%/5)
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...
The PlayerCount conditions control the kill count thresholds for warn (vehicle kill 1,2,3), kill (vehicle kill 4,5), kick (vehicle kills >5)
On Kill;Weapon Death;Teamsize 4;
PlayerCount 5;Say %p% kicked for vehicle kills;Kick kicked for vehicle kills with small teams
PlayerCount 3;Say %p% slayed for vehicle kill %c%/5;Kill 100
Say %p% - no vehicle kills with small teams (#%c%/5)
Example 10. Easy in-game admin
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).
On Say;Admin;Text !kill;TargetPlayer;Say Player %t% killed;TargetAction Kill 100
On Say;Admin;Text !kick;TargetPlayer;Say Player %t% kicked;TargetAction Kick Kicked by Admin
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).
On Say;Admin;Text !kill;TargetPlayer;Say Player %t% killed;TargetAction Kill 100
On Say;Admin;Text !kick;TargetPlayer;Say Player %t% kicked;TargetAction Kick Kicked by Admin
Example 11. No MAV's on Metro
Credit: Rouven
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
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
Example 12. Unreal Tournament Multi Kills Announcer by Bl1ndy
ProconRulz Unreal Tournament Multi Kills Announcer by Bl1ndy
Unreal Tournament Multi Kills Announcer
We all know Unreal Tournament right? I've been thinking of bringing a multi kills announcer the minute i saw the kill streak announcer for BF3. After some headaches and puzzling i pulled it off.
Here is the Rulz:
Code:
# Unreal Tournament Multi Kills Announcer
On Spawn;Set %multi% 0
On Kill;Not Rate 2 3;Set %multi% 0
On Kill;Rate 2 3;Set %multi% 1
On Kill;Rate 3 6;Set %multi% 2
On Kill;Rate 4 9;Set %multi% 3
On Kill;Rate 5 12;Set %multi% 4
On Kill;Rate 6 15;Set %multi% 5
On Kill;Rate 7 18;Set %multi% 5
On Kill;Rate 8 21;Set %multi% 5
On Kill;Rate 9 24;Set %multi% 5
On Kill;Rate 10 27;Set %multi% 5
On Kill;Rate 11 30;Set %multi% 5
On Kill;if %multi% == 5;PlayerSay %p%: "MONSTER KILL!!!"
On Kill;if %multi% == 4;PlayerSay %p%: "ULTRA KILL!!"
On Kill;if %multi% == 3;PlayerSay %p%: "Mega Kill!!"
On Kill;if %multi% == 2;PlayerSay %p%: "Multi Kill!"
On Kill;if %multi% == 1;PlayerSay %p%: "Double Kill!"
# .
Here is what it does:
Player A kills 2 players withing 3 seconds > stage 1 = Double Kill.
Player A keeps killing players within 3 seconds > stage 2/3/4/5.
Player A reached stage 5 aka Monster Kill and it keeps repeating Monster Kill for every kill made within 3 seconds.
Player A makes a kill after 4 seconds > stage 0.
Player A dies > stage 0.
Unreal Tournament Multi Kills Announcer
We all know Unreal Tournament right? I've been thinking of bringing a multi kills announcer the minute i saw the kill streak announcer for BF3. After some headaches and puzzling i pulled it off.
Here is the Rulz:
Code:
# Unreal Tournament Multi Kills Announcer
On Spawn;Set %multi% 0
On Kill;Not Rate 2 3;Set %multi% 0
On Kill;Rate 2 3;Set %multi% 1
On Kill;Rate 3 6;Set %multi% 2
On Kill;Rate 4 9;Set %multi% 3
On Kill;Rate 5 12;Set %multi% 4
On Kill;Rate 6 15;Set %multi% 5
On Kill;Rate 7 18;Set %multi% 5
On Kill;Rate 8 21;Set %multi% 5
On Kill;Rate 9 24;Set %multi% 5
On Kill;Rate 10 27;Set %multi% 5
On Kill;Rate 11 30;Set %multi% 5
On Kill;if %multi% == 5;PlayerSay %p%: "MONSTER KILL!!!"
On Kill;if %multi% == 4;PlayerSay %p%: "ULTRA KILL!!"
On Kill;if %multi% == 3;PlayerSay %p%: "Mega Kill!!"
On Kill;if %multi% == 2;PlayerSay %p%: "Multi Kill!"
On Kill;if %multi% == 1;PlayerSay %p%: "Double Kill!"
# .
Here is what it does:
Player A kills 2 players withing 3 seconds > stage 1 = Double Kill.
Player A keeps killing players within 3 seconds > stage 2/3/4/5.
Player A reached stage 5 aka Monster Kill and it keeps repeating Monster Kill for every kill made within 3 seconds.
Player A makes a kill after 4 seconds > stage 0.
Player A dies > stage 0.
Example 13. Sniper Limit V2!!! (credit tarreltje)
ProconRulz Unreal Tournament Multi Kills Announcer by Bl1ndy
Unreal Tournament Multi Kills Announcer
We all know Unreal Tournament right? I've been thinking of bringing a multi kills announcer the minute i saw the kill streak announcer for BF3. After some headaches and puzzling i pulled it off.
Here is the Rulz:
Code:
# Unreal Tournament Multi Kills Announcer
On Spawn;Set %multi% 0
On Kill;Not Rate 2 3;Set %multi% 0
On Kill;Rate 2 3;Set %multi% 1
On Kill;Rate 3 6;Set %multi% 2
On Kill;Rate 4 9;Set %multi% 3
On Kill;Rate 5 12;Set %multi% 4
On Kill;Rate 6 15;Set %multi% 5
On Kill;Rate 7 18;Set %multi% 5
On Kill;Rate 8 21;Set %multi% 5
On Kill;Rate 9 24;Set %multi% 5
On Kill;Rate 10 27;Set %multi% 5
On Kill;Rate 11 30;Set %multi% 5
On Kill;if %multi% == 5;PlayerSay %p%: "MONSTER KILL!!!"
On Kill;if %multi% == 4;PlayerSay %p%: "ULTRA KILL!!"
On Kill;if %multi% == 3;PlayerSay %p%: "Mega Kill!!"
On Kill;if %multi% == 2;PlayerSay %p%: "Multi Kill!"
On Kill;if %multi% == 1;PlayerSay %p%: "Double Kill!"
# .
Here is what it does:
Player A kills 2 players withing 3 seconds > stage 1 = Double Kill.
Player A keeps killing players within 3 seconds > stage 2/3/4/5.
Player A reached stage 5 aka Monster Kill and it keeps repeating Monster Kill for every kill made within 3 seconds.
Player A makes a kill after 4 seconds > stage 0.
Player A dies > stage 0.
Unreal Tournament Multi Kills Announcer
We all know Unreal Tournament right? I've been thinking of bringing a multi kills announcer the minute i saw the kill streak announcer for BF3. After some headaches and puzzling i pulled it off.
Here is the Rulz:
Code:
# Unreal Tournament Multi Kills Announcer
On Spawn;Set %multi% 0
On Kill;Not Rate 2 3;Set %multi% 0
On Kill;Rate 2 3;Set %multi% 1
On Kill;Rate 3 6;Set %multi% 2
On Kill;Rate 4 9;Set %multi% 3
On Kill;Rate 5 12;Set %multi% 4
On Kill;Rate 6 15;Set %multi% 5
On Kill;Rate 7 18;Set %multi% 5
On Kill;Rate 8 21;Set %multi% 5
On Kill;Rate 9 24;Set %multi% 5
On Kill;Rate 10 27;Set %multi% 5
On Kill;Rate 11 30;Set %multi% 5
On Kill;if %multi% == 5;PlayerSay %p%: "MONSTER KILL!!!"
On Kill;if %multi% == 4;PlayerSay %p%: "ULTRA KILL!!"
On Kill;if %multi% == 3;PlayerSay %p%: "Mega Kill!!"
On Kill;if %multi% == 2;PlayerSay %p%: "Multi Kill!"
On Kill;if %multi% == 1;PlayerSay %p%: "Double Kill!"
# .
Here is what it does:
Player A kills 2 players withing 3 seconds > stage 1 = Double Kill.
Player A keeps killing players within 3 seconds > stage 2/3/4/5.
Player A reached stage 5 aka Monster Kill and it keeps repeating Monster Kill for every kill made within 3 seconds.
Player A makes a kill after 4 seconds > stage 0.
Player A dies > stage 0.
Example 14. Multi-language 'join' welcome messages (credit Angry_AGAIN)
Here is our first version for country based welcome.
Hope its usefull for somebody
PS: DEACTIVATE vars.serverMessage if you use this welcome.
#Country Base Welcome
#BASETEXT: Welcome - YOUR TEXT - Please follow our rules
#Countrykeys only in small letters based on ISO3166
# Only latin letters works propper
On Spawn;PlayerOnce;If %pcountrykey% == de;Yell 10 WILLKOMMEN %p% - RED EYES ONLY @ AMSTERDAM 420 SERVER - BITTE BEACHTE UNSERE REGELN
On Spawn;PlayerOnce;If %pcountrykey% == nl;Yell 10 Welkom %p% - RED EYES ONLY @ AMSTERDAM 420 SERVERS - check ff onze huisregels,enjoy
On Spawn;PlayerOnce;If %pcountrykey% == fr;Yell 10 BONJOUR %p% -YOUR SERVER TEXT HERE - VEUILLEZ SUIVRE NOS REGLES
On Spawn;PlayerOnce;If %pcountrykey% == uk;Yell 10 WELCOME %p% -YOUR SERVER TEXT HERE - PLEASE FOLLOW OUR RULES
On Spawn;PlayerOnce;If %pcountrykey% == us;Yell 10 WELCOME %p% -YOUR SERVER TEXT HERE - PLEASE FOLLOW OUR RULES
On Spawn;PlayerOnce;If %pcountrykey% == ru;Yell 10 Dobro pozhalovat %p% -YOUR SERVER TEXT HERE - pozhaluysta sleduy nashim pravilam
On Spawn;PlayerOnce;If %pcountrykey% == pt;Yell 10 Sangrado %p% -YOUR SERVER TEXT HERE - Por favor anote nosso Regimento
On Spawn;PlayerOnce;If %pcountrykey% == dk;Yell 10 Velkommen %p% -YOUR SERVER TEXT HERE - folg vores regler
On Spawn;PlayerOnce;If %pcountrykey% == it;Yell 10 Benvenuti %p% -YOUR SERVER TEXT HERE - SI PREGA DI SEGUIRE LE NOSTRE REGOLE
On Spawn;PlayerOnce;If %pcountrykey% == no;Yell 10 Velkommen %p% -YOUR SERVER TEXT HERE - KAN DU FOLGE VARE REGLER
On Spawn;PlayerOnce;If %pcountrykey% == se;Yell 10 Valkommen %p% -YOUR SERVER TEXT HERE - folj VARA REGLER
On Spawn;PlayerOnce;If %pcountrykey% == es;Yell 10 Bienvenido %p% -YOUR SERVER TEXT HERE - por favor siga nuestro reglamento
On Spawn;PlayerOnce;If %pcountrykey% == fi;Yell 10 Suhtaudun myonteisesti %p% -YOUR SERVER TEXT HERE - huomaa tyojarjestyksemme
On Spawn;PlayerOnce;If %pcountrykey% == pl;Yell 10 Mile widziane %p% -YOUR SERVER TEXT HERE - PROSIMY O PRZESTRZEGANIE NASZYCH ZASAD
Hope its usefull for somebody
PS: DEACTIVATE vars.serverMessage if you use this welcome.
#Country Base Welcome
#BASETEXT: Welcome - YOUR TEXT - Please follow our rules
#Countrykeys only in small letters based on ISO3166
# Only latin letters works propper
On Spawn;PlayerOnce;If %pcountrykey% == de;Yell 10 WILLKOMMEN %p% - RED EYES ONLY @ AMSTERDAM 420 SERVER - BITTE BEACHTE UNSERE REGELN
On Spawn;PlayerOnce;If %pcountrykey% == nl;Yell 10 Welkom %p% - RED EYES ONLY @ AMSTERDAM 420 SERVERS - check ff onze huisregels,enjoy
On Spawn;PlayerOnce;If %pcountrykey% == fr;Yell 10 BONJOUR %p% -YOUR SERVER TEXT HERE - VEUILLEZ SUIVRE NOS REGLES
On Spawn;PlayerOnce;If %pcountrykey% == uk;Yell 10 WELCOME %p% -YOUR SERVER TEXT HERE - PLEASE FOLLOW OUR RULES
On Spawn;PlayerOnce;If %pcountrykey% == us;Yell 10 WELCOME %p% -YOUR SERVER TEXT HERE - PLEASE FOLLOW OUR RULES
On Spawn;PlayerOnce;If %pcountrykey% == ru;Yell 10 Dobro pozhalovat %p% -YOUR SERVER TEXT HERE - pozhaluysta sleduy nashim pravilam
On Spawn;PlayerOnce;If %pcountrykey% == pt;Yell 10 Sangrado %p% -YOUR SERVER TEXT HERE - Por favor anote nosso Regimento
On Spawn;PlayerOnce;If %pcountrykey% == dk;Yell 10 Velkommen %p% -YOUR SERVER TEXT HERE - folg vores regler
On Spawn;PlayerOnce;If %pcountrykey% == it;Yell 10 Benvenuti %p% -YOUR SERVER TEXT HERE - SI PREGA DI SEGUIRE LE NOSTRE REGOLE
On Spawn;PlayerOnce;If %pcountrykey% == no;Yell 10 Velkommen %p% -YOUR SERVER TEXT HERE - KAN DU FOLGE VARE REGLER
On Spawn;PlayerOnce;If %pcountrykey% == se;Yell 10 Valkommen %p% -YOUR SERVER TEXT HERE - folj VARA REGLER
On Spawn;PlayerOnce;If %pcountrykey% == es;Yell 10 Bienvenido %p% -YOUR SERVER TEXT HERE - por favor siga nuestro reglamento
On Spawn;PlayerOnce;If %pcountrykey% == fi;Yell 10 Suhtaudun myonteisesti %p% -YOUR SERVER TEXT HERE - huomaa tyojarjestyksemme
On Spawn;PlayerOnce;If %pcountrykey% == pl;Yell 10 Mile widziane %p% -YOUR SERVER TEXT HERE - PROSIMY O PRZESTRZEGANIE NASZYCH ZASAD
Example 15. Knife/Defib/Repair Tool Kill YELL Announcer
This plugin will put a Yell message on the screen each knife or other melee weaon kill
On Kill;Weapon Weapons/Knife/Knife;Yell %p% slit the throat of %v% !!!
On Kill;Weapon Melee;Yell %p% grabbed and stabbed %v% !!!
On Kill;Weapon Defib;Yell %p% zapped %v% with the Defib !!!
On Kill;Weapon Repair&Tool;Yell %p% killed %v% with the Repair Tool !!!
On Kill;Weapon Melee;Yell %p% grabbed and stabbed %v% !!!
On Kill;Weapon Defib;Yell %p% zapped %v% with the Defib !!!
On Kill;Weapon Repair&Tool;Yell %p% killed %v% with the Repair Tool !!!
Example 16. End of Round Stats Announcer by tarreltje
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.
Hello guys,
With this Spambot, you can set messages for each mapmode you prefer. So you can have some spam for TDM, but you can set different ones for CONQUEST. The messages are triggers on a set count of kills
The example below contains 2 messages for TDM and two different ones for CONQUEST and trigger is set on 11 kills:
##### SPAM BOT #####
On Kill;ServerFirst;Set %server_tdm_msg_number% 1;Set %server_conq_msg_number% 1
# TRIGGER SETTING FOR MESSAGE
On Kill;Incr %server_spam%;If %server_spam% > 11;Set %server_spam% 0;Set %server_msg% 1;
# TDM MESSAGE ONE
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 1;
Say .
Say .
Say . No Shotguns - No Claymore
say . Excessive camping is not allowed
Say .
Set %server_tdm_msg_number% 2;Set %server_msg% 0
# TDM MESSAGE TWO
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 2;
Say .
Say .
Say . Only Canals - Karkand - Wake - Oman
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
# CONQUEST MESSAGE ONE
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 1;
Say .
Say .
Say . Max 2 Snipers allowed
say . No Baserape
Say .
Set %server_conq_msg_number% 2;Set %server_msg% 0
# CONQUEST MESSAGE TWO
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 2;
Say .
Say .
Say . Baserape is not allowed
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
With this Spambot, you can set messages for each mapmode you prefer. So you can have some spam for TDM, but you can set different ones for CONQUEST. The messages are triggers on a set count of kills
The example below contains 2 messages for TDM and two different ones for CONQUEST and trigger is set on 11 kills:
##### SPAM BOT #####
On Kill;ServerFirst;Set %server_tdm_msg_number% 1;Set %server_conq_msg_number% 1
# TRIGGER SETTING FOR MESSAGE
On Kill;Incr %server_spam%;If %server_spam% > 11;Set %server_spam% 0;Set %server_msg% 1;
# TDM MESSAGE ONE
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 1;
Say .
Say .
Say . No Shotguns - No Claymore
say . Excessive camping is not allowed
Say .
Set %server_tdm_msg_number% 2;Set %server_msg% 0
# TDM MESSAGE TWO
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 2;
Say .
Say .
Say . Only Canals - Karkand - Wake - Oman
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
# CONQUEST MESSAGE ONE
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 1;
Say .
Say .
Say . Max 2 Snipers allowed
say . No Baserape
Say .
Set %server_conq_msg_number% 2;Set %server_msg% 0
# CONQUEST MESSAGE TWO
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 2;
Say .
Say .
Say . Baserape is not allowed
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
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 notabout 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.
#Count and limit chinaman to 16. To disable, set %server_chinamax% to 32(if it's a 32 player server)
On Spawn;ServerFirst;Set %server_chinamax% 16; Set %server_chinac% 0
On Spawn;PlayerFirst;If %pcountrykey% == cn
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst;If %pcountrykey% == hk
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst; If %pcountrykey% == tw
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst;If %pcountrykey% == mo
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Leave;
If %pcountrykey% == cn;Decr %server_chinac%
If %pcountrykey% == hk;Decr %server_chinac%
if %pcountrykey% == tw;Decr %server_chinac%
if %pcountrykey% == mo;Decr %server_chinac%
On Spawn;ServerFirst;Set %server_chinamax% 16; Set %server_chinac% 0
On Spawn;PlayerFirst;If %pcountrykey% == cn
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst;If %pcountrykey% == hk
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst; If %pcountrykey% == tw
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Spawn;PlayerFirst;If %pcountrykey% == mo
Incr %server_chinac%
If %server_chinac% > %server_chinamax%;Kick Country Limit (China/16) Reached;Log %p% %pcountrykey% has been kicked for country limit %server_chinac% %server_chinamax%
On Leave;
If %pcountrykey% == cn;Decr %server_chinac%
If %pcountrykey% == hk;Decr %server_chinac%
if %pcountrykey% == tw;Decr %server_chinac%
if %pcountrykey% == mo;Decr %server_chinac%
Example 18. BEST 3 PLAYERS Announcer by tarreltje
Every 100 tickets, these rulz announce the top 3 players based on kills, e.g.:
BEST 3 PLAYERS :
1st Tarreltje 1000 kills
2nd Gaga 580 kills
3rd Noob 30 kills
##### BEST 3 PLAYERS #####
On Spawn;ServerFirst;Set %server_message_now% 0
On Kill;
Incr %m_kills%
On Kill;
If %m_kills% > %server_first%;Set %server_first% %m_kills%;Set %server_first_player% %p%;
If %m_kills% < %server_first%;if %m_kills% > %server_second%;Set %server_second% %m_kills%;Set %server_second_player% %p%
If %m_kills% < %server_second%;if %m_kills% > %server_third%;Set %server_third% %m_kills%;Set %server_third_player% %p%
If %m_kills% < %server_third%;if %m_kills% > %server_fourth%;Set %server_fourth% %m_kills%;Set %server_fourth_player% %p%
if %server_second_player% == %server_first_player%;Set %server_second_player% %server_third_player%;Set %server_second% %server_third%
if %server_third_player% == %server_second_player%;Set %server_third_player% %server_fourth_player%;Set %server_third% %server_fourth%
# TRIGGER FOR SHOWING BEST 3 PLAYERS
On Kill;Incr %server_stats_counter%;If %server_stats_counter% > 95;Set %server_stats_counter% 0;Set %server_msg_now% 1
On Kill;If %server_msg_now% == 1
Say - BEST 3 PLAYERS:
Say -
Say - 1st %server_first_player% -- %server_first% kills
Say - 2nd %server_second_player% -- %server_second% kills
Say - 3rd %server_third_player% -- %server_third% kills
Set %server_msg_now% 0
On Spawn;ServerFirst;Set %server_message_now% 0
On Kill;
Incr %m_kills%
On Kill;
If %m_kills% > %server_first%;Set %server_first% %m_kills%;Set %server_first_player% %p%;
If %m_kills% < %server_first%;if %m_kills% > %server_second%;Set %server_second% %m_kills%;Set %server_second_player% %p%
If %m_kills% < %server_second%;if %m_kills% > %server_third%;Set %server_third% %m_kills%;Set %server_third_player% %p%
If %m_kills% < %server_third%;if %m_kills% > %server_fourth%;Set %server_fourth% %m_kills%;Set %server_fourth_player% %p%
if %server_second_player% == %server_first_player%;Set %server_second_player% %server_third_player%;Set %server_second% %server_third%
if %server_third_player% == %server_second_player%;Set %server_third_player% %server_fourth_player%;Set %server_third% %server_fourth%
# TRIGGER FOR SHOWING BEST 3 PLAYERS
On Kill;Incr %server_stats_counter%;If %server_stats_counter% > 95;Set %server_stats_counter% 0;Set %server_msg_now% 1
On Kill;If %server_msg_now% == 1
Say - BEST 3 PLAYERS:
Say -
Say - 1st %server_first_player% -- %server_first% kills
Say - 2nd %server_second_player% -- %server_second% kills
Say - 3rd %server_third_player% -- %server_third% kills
Set %server_msg_now% 0
Example 19. SERVER STATS by tarreltje
On the first kill of each round, server will announce the player names with the highest kill counts, e.g.
DUTCH COWBOYS SERVER STATS
1st RINUSS 1000 kills
2nd BAMBAM 500 kills
3th GAGA 200 kills
Most Knives: RINUSS 3000 knives
After my end of round stats and best 3 player of the round, i have made the rulz for server stats. Since ProconRulz now can store variables, we are able to store kills, deaths ect ect!!
Example how it will look like:
DUTCH COWBOYS SERVER STATS
1st RINUSS 1000 kills
2nd BAMBAM 500 kills
3th GAGA 200 kills
Most Knives: RINUSS 3000 knives
In my rules, the server stats are triggered at the first kill of a round.
##### SERVER STATS by Tarreltje #####
On Kill;Incr %ini_kills_kills[%p%]%
On Kill;Weapon Weapons/Knife/Knife,Melee;Incr %ini_knives_knives[%p%]%
On Kill;
If %ini_kills_kills[%p%]% > %ini_server_killsfirst%;Set %ini_server_killsfirst% %ini_kills_kills[%p%]%;Set %ini_server_playerfirst% %p%
If %ini_kills_kills[%p%]% < %ini_server_killsfirst%;if %ini_kills_kills[%p%]% > %ini_server_killssecond%;Set %ini_server_killssecond% %ini_kills_kills[%p%]%;Set %ini_server_playersecond% %p%
If %ini_kills_kills[%p%]% < %ini_server_killssecond%;if %ini_kills_kills[%p%]% > %ini_server_killsthird%;Set %ini_server_killsthird% %ini_kills_kills[%p%]%;Set %ini_server_playerthird% %p%
If %ini_kills_kills[%p%]% < %ini_server_killsthird%;If %ini_kills_kills[%p%]% > %ini_server_killsfourth%;Set %ini_server_killsfourth% %ini_kills_kills[%p%]%;Set %ini_server_playerfourth% %p%
If %ini_knives_knives[%p%]% > %ini_server_mostknives%;Set %ini_server_mostknives% %ini_knives_knives[%p%]%;Set %ini_server_mostknivesplayer% %p%
if %ini_server_playersecond% == %ini_server_playerfirst%;Set %ini_server_playersecond% %ini_server_playerthird%;Set %ini_server_killssecond% %ini_server_killsthird%
if %ini_server_playerthird% == %ini_server_playersecond%;Set %ini_server_playerthird% %ini_server_playerfourth%;Set %ini_server_killsthird% %ini_server_killsfourth%
# TRIGGER FOR SHOWING SERVERS BEST 3 PLAYERS
On Kill;ServerFirst;
Say - DUTCH COWBOYS SERVER STATS:
Say - 1st %ini_server_playerfirst% %ini_server_killsfirst% kills
Say - 2nd %ini_server_playersecond% %ini_server_killssecond% kills
Say - 3th %ini_server_playerthird% %ini_server_killsthird% kills
Say - Most Knives: %ini_server_mostknivesplayer% %ini_server_mostknives% knives
FOR THIS RULZ YOU NEED VERSION 43b.8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!
22-8-2012 fixed problem that a player is shown 2 or 3 times in the list!
Example how it will look like:
DUTCH COWBOYS SERVER STATS
1st RINUSS 1000 kills
2nd BAMBAM 500 kills
3th GAGA 200 kills
Most Knives: RINUSS 3000 knives
In my rules, the server stats are triggered at the first kill of a round.
##### SERVER STATS by Tarreltje #####
On Kill;Incr %ini_kills_kills[%p%]%
On Kill;Weapon Weapons/Knife/Knife,Melee;Incr %ini_knives_knives[%p%]%
On Kill;
If %ini_kills_kills[%p%]% > %ini_server_killsfirst%;Set %ini_server_killsfirst% %ini_kills_kills[%p%]%;Set %ini_server_playerfirst% %p%
If %ini_kills_kills[%p%]% < %ini_server_killsfirst%;if %ini_kills_kills[%p%]% > %ini_server_killssecond%;Set %ini_server_killssecond% %ini_kills_kills[%p%]%;Set %ini_server_playersecond% %p%
If %ini_kills_kills[%p%]% < %ini_server_killssecond%;if %ini_kills_kills[%p%]% > %ini_server_killsthird%;Set %ini_server_killsthird% %ini_kills_kills[%p%]%;Set %ini_server_playerthird% %p%
If %ini_kills_kills[%p%]% < %ini_server_killsthird%;If %ini_kills_kills[%p%]% > %ini_server_killsfourth%;Set %ini_server_killsfourth% %ini_kills_kills[%p%]%;Set %ini_server_playerfourth% %p%
If %ini_knives_knives[%p%]% > %ini_server_mostknives%;Set %ini_server_mostknives% %ini_knives_knives[%p%]%;Set %ini_server_mostknivesplayer% %p%
if %ini_server_playersecond% == %ini_server_playerfirst%;Set %ini_server_playersecond% %ini_server_playerthird%;Set %ini_server_killssecond% %ini_server_killsthird%
if %ini_server_playerthird% == %ini_server_playersecond%;Set %ini_server_playerthird% %ini_server_playerfourth%;Set %ini_server_killsthird% %ini_server_killsfourth%
# TRIGGER FOR SHOWING SERVERS BEST 3 PLAYERS
On Kill;ServerFirst;
Say - DUTCH COWBOYS SERVER STATS:
Say - 1st %ini_server_playerfirst% %ini_server_killsfirst% kills
Say - 2nd %ini_server_playersecond% %ini_server_killssecond% kills
Say - 3th %ini_server_playerthird% %ini_server_killsthird% kills
Say - Most Knives: %ini_server_mostknivesplayer% %ini_server_mostknives% knives
FOR THIS RULZ YOU NEED VERSION 43b.8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!
22-8-2012 fixed problem that a player is shown 2 or 3 times in the list!
Example 20. !punish and other TeamKill protection rulz by ty_ger
The !punish, !forgive commands you've probably seen on a variety of servers, plus optional rulz so you can automatically punish teamkillers if you prefer that for your server.
These are some rules for creating a !punish/!forgive system for the PRoConRulz plugin. You will need to utilize the PRoConRulz plugin first in order to use these rules.
Here is the PRoConRulz plugin:
http://www.phogue.net/forumvb/showth...-admin-actions
Please refer to that for general support in how to use PRoConRulz. This thread should be reserved for discussing these rules and modifications of these rules.
No auto punishing:
Code:
# Team Kill Notification Rules
On TeamKill;PlayerSay %p%: watch your fire! #%c%
On TeamKill;Say %v%: !forgive or !punish
# Tracking Notification
On TeamKill;If %server_lastteamkill[%v%]% == %p%;Say %p%: payback team kill against %v%.
On TeamKill;If %server_lastteamkill[%p%]% == %v%;Say %p%: team killed %v% twice in a row.
# Team Kill Tracking Rules
On TeamKill;Set %server_lastteamkill[%p%]% %v%
On TeamKill;Set %server_lastteamkiller[%v%]% %p%
# Automatic Forget
On Kill;Set %server_lastteamkiller[%v%]% 0;Set %server_lastteamkill[%p%]% 0;Set %server_lastteamkiller[%p%]% 0
# Team Kill Punish Rule
On Say;Text !punish;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to punish.
On Say;Text !punish;If %server_lastteamkiller[%p%]% != 0;TargetPlayer %server_lastteamkiller[%p%]%;Say %server_lastteamkiller[%p%]% killed for team killing.;TargetAction Kill;TargetConfirm;Set %server_lastteamkiller[%p%]% 0
On Say;Text !forgive;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to forgive.
On Say;Text !forgive;If %server_lastteamkiller[%p%]% != 0;Set %server_lastteamkill[%server_lastteamkiller[%p%]%]% 0;Say %server_lastteamkiller[%p%]% was forgiven by %p%.;Set %server_lastteamkiller[%p%]% 0
How it works:
If someone is team killed, it informs the killer that they should watch their fire. It also informs the victim that they may !forgive or !punish the team kill.
If a player team kills someone twice in a row, it reminds the victim that they were team killed by the killer twice in a row.
If player A team kills player B and then player B team kills player A, it reminds the victim that player B 'payback' team killed player A.
If player A team kills player B, as soon as player B kills any enemy, it forgets that player B was team killed by player A and forgets who player B last team killed. Also, the enemy player B kills will have their last team killer forgotten.
If player A team kills player B, and player B types !punish, it kills player A.
If player A team kills player B, and player B types !forgive, it forgets that player A team killed player B.
With auto punishing:
Code:
# Team Kill Notification Rules
On TeamKill;PlayerSay %p%: watch your fire! #%c%
On TeamKill;Say %v%: !forgive or !punish
# Tracking Notification
On TeamKill;If %server_lastteamkill[%v%]% == %p%;Say %p%: killed for payback team kill against %v%.;Kill
On TeamKill;If %server_lastteamkill[%p%]% == %v%;Say %p%: killed for team killed %v% twice in a row.;Kill
# Team Kill Tracking Rules
On TeamKill;Set %server_lastteamkill[%p%]% %v%
On TeamKill;Set %server_lastteamkiller[%v%]% %p%
# Automatic Forget
On Kill;Set %server_lastteamkiller[%v%]% 0;Set %server_lastteamkill[%p%]% 0;Set %server_lastteamkiller[%p%]% 0
# Team Kill Punish Rule
On Say;Text !punish;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to punish.
On Say;Text !punish;If %server_lastteamkiller[%p%]% != 0;TargetPlayer %server_lastteamkiller[%p%]%;Say %server_lastteamkiller[%p%]% killed for team killing.;TargetAction Kill;TargetConfirm;Set %server_lastteamkiller[%p%]% 0
On Say;Text !forgive;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to forgive.
On Say;Text !forgive;If %server_lastteamkiller[%p%]% != 0;Set %server_lastteamkill[%server_lastteamkiller[%p%]%]% 0;Say %server_lastteamkiller[%p%]% was forgiven by %p%.;Set %server_lastteamkiller[%p%]% 0
How it works:
If someone is team killed, it informs the killer that they should watch their fire. It also informs the victim that they may !forgive or !punish the team kill.
If a player A team kills player B twice in a row, it automatically kills player A.
If player A team kills player B and then player B team kills player A, if automatically kills player B for 'payback' team kill agains player A.
If player A team kills player B, as soon as player B kills any enemy, it forgets that player B was team killed by player A and forgets who player B last team killed. Also, the enemy player B kills will have their last team killer forgotten.
If player A team kills player B, and player B types !punish, it kills player A.
If player A team kills player B, and player B types !forgive, it forgets that player A team killed player B.
Here is the PRoConRulz plugin:
http://www.phogue.net/forumvb/showth...-admin-actions
Please refer to that for general support in how to use PRoConRulz. This thread should be reserved for discussing these rules and modifications of these rules.
No auto punishing:
Code:
# Team Kill Notification Rules
On TeamKill;PlayerSay %p%: watch your fire! #%c%
On TeamKill;Say %v%: !forgive or !punish
# Tracking Notification
On TeamKill;If %server_lastteamkill[%v%]% == %p%;Say %p%: payback team kill against %v%.
On TeamKill;If %server_lastteamkill[%p%]% == %v%;Say %p%: team killed %v% twice in a row.
# Team Kill Tracking Rules
On TeamKill;Set %server_lastteamkill[%p%]% %v%
On TeamKill;Set %server_lastteamkiller[%v%]% %p%
# Automatic Forget
On Kill;Set %server_lastteamkiller[%v%]% 0;Set %server_lastteamkill[%p%]% 0;Set %server_lastteamkiller[%p%]% 0
# Team Kill Punish Rule
On Say;Text !punish;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to punish.
On Say;Text !punish;If %server_lastteamkiller[%p%]% != 0;TargetPlayer %server_lastteamkiller[%p%]%;Say %server_lastteamkiller[%p%]% killed for team killing.;TargetAction Kill;TargetConfirm;Set %server_lastteamkiller[%p%]% 0
On Say;Text !forgive;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to forgive.
On Say;Text !forgive;If %server_lastteamkiller[%p%]% != 0;Set %server_lastteamkill[%server_lastteamkiller[%p%]%]% 0;Say %server_lastteamkiller[%p%]% was forgiven by %p%.;Set %server_lastteamkiller[%p%]% 0
How it works:
If someone is team killed, it informs the killer that they should watch their fire. It also informs the victim that they may !forgive or !punish the team kill.
If a player team kills someone twice in a row, it reminds the victim that they were team killed by the killer twice in a row.
If player A team kills player B and then player B team kills player A, it reminds the victim that player B 'payback' team killed player A.
If player A team kills player B, as soon as player B kills any enemy, it forgets that player B was team killed by player A and forgets who player B last team killed. Also, the enemy player B kills will have their last team killer forgotten.
If player A team kills player B, and player B types !punish, it kills player A.
If player A team kills player B, and player B types !forgive, it forgets that player A team killed player B.
With auto punishing:
Code:
# Team Kill Notification Rules
On TeamKill;PlayerSay %p%: watch your fire! #%c%
On TeamKill;Say %v%: !forgive or !punish
# Tracking Notification
On TeamKill;If %server_lastteamkill[%v%]% == %p%;Say %p%: killed for payback team kill against %v%.;Kill
On TeamKill;If %server_lastteamkill[%p%]% == %v%;Say %p%: killed for team killed %v% twice in a row.;Kill
# Team Kill Tracking Rules
On TeamKill;Set %server_lastteamkill[%p%]% %v%
On TeamKill;Set %server_lastteamkiller[%v%]% %p%
# Automatic Forget
On Kill;Set %server_lastteamkiller[%v%]% 0;Set %server_lastteamkill[%p%]% 0;Set %server_lastteamkiller[%p%]% 0
# Team Kill Punish Rule
On Say;Text !punish;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to punish.
On Say;Text !punish;If %server_lastteamkiller[%p%]% != 0;TargetPlayer %server_lastteamkiller[%p%]%;Say %server_lastteamkiller[%p%]% killed for team killing.;TargetAction Kill;TargetConfirm;Set %server_lastteamkiller[%p%]% 0
On Say;Text !forgive;If %server_lastteamkiller[%p%]% == 0;PlayerSay %p%: could not find a recent team kill to forgive.
On Say;Text !forgive;If %server_lastteamkiller[%p%]% != 0;Set %server_lastteamkill[%server_lastteamkiller[%p%]%]% 0;Say %server_lastteamkiller[%p%]% was forgiven by %p%.;Set %server_lastteamkiller[%p%]% 0
How it works:
If someone is team killed, it informs the killer that they should watch their fire. It also informs the victim that they may !forgive or !punish the team kill.
If a player A team kills player B twice in a row, it automatically kills player A.
If player A team kills player B and then player B team kills player A, if automatically kills player B for 'payback' team kill agains player A.
If player A team kills player B, as soon as player B kills any enemy, it forgets that player B was team killed by player A and forgets who player B last team killed. Also, the enemy player B kills will have their last team killer forgotten.
If player A team kills player B, and player B types !punish, it kills player A.
If player A team kills player B, and player B types !forgive, it forgets that player A team killed player B.
Example 21. !votekick - ingame command for players to vote to kick another player
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.
E.g. !votekick bam could give the message "Pebbles voted to kick bambam (2 more votes needed)".
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...
Code:
On Say;Text !votekick;
Set %server_votesneeded% 3
Set %server_votetarget% none;TargetPlayer;Set %server_votetarget% %t%;If %voting[%server_votetarget%]% == 0;Set %server_voteflag% 1
If %server_votetarget% != none;If %voting[%server_votetarget%]% == 1;PlayerSay Your vote to kick %server_votetarget% is already registered (%server_votekicks[%server_votetarget%]%/%server_votesneeded%)
If %server_votetarget% == none;PlayerSay Votekick playername not found. Just type ANY UNIQUE part of the name
On Say;If %server_voteflag% == 1
Log server_voteflag is 1 (%p% said %text%). Target is %server_votetarget%
Set %voting[%server_votetarget%]% 1
Incr %server_votekicks[%server_votetarget%]%
If %server_votekicks[%server_votetarget%]% < %server_votesneeded%;Set %server_votesmore% %server_votesneeded%-%server_votekicks[%server_votetarget%]%;Say %p% voted to kick %server_votetarget% (%server_votesmore% more votes needed)
If %server_votekicks[%server_votetarget%]% >= %server_votesneeded%;TargetPlayer %server_votetarget%;Kick kicked by vote;Yell %t% kicked by vote
Set %server_voteflag% 0
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.
E.g. !votekick bam could give the message "Pebbles voted to kick bambam (2 more votes needed)".
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...
Code:
On Say;Text !votekick;
Set %server_votesneeded% 3
Set %server_votetarget% none;TargetPlayer;Set %server_votetarget% %t%;If %voting[%server_votetarget%]% == 0;Set %server_voteflag% 1
If %server_votetarget% != none;If %voting[%server_votetarget%]% == 1;PlayerSay Your vote to kick %server_votetarget% is already registered (%server_votekicks[%server_votetarget%]%/%server_votesneeded%)
If %server_votetarget% == none;PlayerSay Votekick playername not found. Just type ANY UNIQUE part of the name
On Say;If %server_voteflag% == 1
Log server_voteflag is 1 (%p% said %text%). Target is %server_votetarget%
Set %voting[%server_votetarget%]% 1
Incr %server_votekicks[%server_votetarget%]%
If %server_votekicks[%server_votetarget%]% < %server_votesneeded%;Set %server_votesmore% %server_votesneeded%-%server_votekicks[%server_votetarget%]%;Say %p% voted to kick %server_votetarget% (%server_votesmore% more votes needed)
If %server_votekicks[%server_votetarget%]% >= %server_votesneeded%;TargetPlayer %server_votetarget%;Kick kicked by vote;Yell %t% kicked by vote
Set %server_voteflag% 0
Example 22. Adaptive SPAMBOT by tarreltje
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...)
Hello guys,
With this Spambot, you can set messages for each mapmode you prefer. So you can have some spam for TDM, but you can set different ones for CONQUEST. The messages are triggers on a set count of kills
The example below contains 2 messages for TDM and two different ones for CONQUEST and trigger is set on 11 kills:
##### SPAM BOT #####
On Kill;ServerFirst;Set %server_tdm_msg_number% 1;Set %server_conq_msg_number% 1
# TRIGGER SETTING FOR MESSAGE
On Kill;Incr %server_spam%;If %server_spam% > 11;Set %server_spam% 0;Set %server_msg% 1;
# TDM MESSAGE ONE
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 1;
Say .
Say .
Say . No Shotguns - No Claymore
say . Excessive camping is not allowed
Say .
Set %server_tdm_msg_number% 2;Set %server_msg% 0
# TDM MESSAGE TWO
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 2;
Say .
Say .
Say . Only Canals - Karkand - Wake - Oman
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
# CONQUEST MESSAGE ONE
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 1;
Say .
Say .
Say . Max 2 Snipers allowed
say . No Baserape
Say .
Set %server_conq_msg_number% 2;Set %server_msg% 0
# CONQUEST MESSAGE TWO
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 2;
Say .
Say .
Say . Baserape is not allowed
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
With this Spambot, you can set messages for each mapmode you prefer. So you can have some spam for TDM, but you can set different ones for CONQUEST. The messages are triggers on a set count of kills
The example below contains 2 messages for TDM and two different ones for CONQUEST and trigger is set on 11 kills:
##### SPAM BOT #####
On Kill;ServerFirst;Set %server_tdm_msg_number% 1;Set %server_conq_msg_number% 1
# TRIGGER SETTING FOR MESSAGE
On Kill;Incr %server_spam%;If %server_spam% > 11;Set %server_spam% 0;Set %server_msg% 1;
# TDM MESSAGE ONE
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 1;
Say .
Say .
Say . No Shotguns - No Claymore
say . Excessive camping is not allowed
Say .
Set %server_tdm_msg_number% 2;Set %server_msg% 0
# TDM MESSAGE TWO
On Kill;Not Map MP_018;If %server_msg% == 1;If %server_tdm_msg_number% == 2;
Say .
Say .
Say . Only Canals - Karkand - Wake - Oman
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
# CONQUEST MESSAGE ONE
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 1;
Say .
Say .
Say . Max 2 Snipers allowed
say . No Baserape
Say .
Set %server_conq_msg_number% 2;Set %server_msg% 0
# CONQUEST MESSAGE TWO
On Kill;Map MP_018;If %server_msg% == 1;If %server_conq_msg_number% == 2;
Say .
Say .
Say . Baserape is not allowed
Say . !Votekick to kick a player
Say .
Set %server_msg% 0;Set %server_tdm_msg_number% 1
Example 23. Simple Aimbot headshot detector
credit russel5
These rulz count headshots and if it's more than 60% after 30 kills (these params in line 5) and it's not a sniper rifle, player is banned.
#AimDetect
on spawn;serverfirst;set %kills% 0;set %hs% 0
on kill;Not Damage SniperRifle;incr %kills%
on kill;Not Damage SniperRifle;Headshot;incr %hs%
on kill;Set %proc.1% %hs% / %kills% * 100
on kill;If %proc.1% >= 60;If %kills% > 30;Log %p%;Ban %p% Impossible stats Hs/K %proc.1% %
on say;Admin;Text @kills;TargetPlayer;TargetAction Say kills %kills% HS %hs% and %proc.1% %
on spawn;serverfirst;set %kills% 0;set %hs% 0
on kill;Not Damage SniperRifle;incr %kills%
on kill;Not Damage SniperRifle;Headshot;incr %hs%
on kill;Set %proc.1% %hs% / %kills% * 100
on kill;If %proc.1% >= 60;If %kills% > 30;Log %p%;Ban %p% Impossible stats Hs/K %proc.1% %
on say;Admin;Text @kills;TargetPlayer;TargetAction Say kills %kills% HS %hs% and %proc.1% %