Stajs.Procon.TeamKillTracker
Description
Track team kill statistics and allow self-management of team killers.
Features
- Allows victims to forgive or punish (slay) their killers.
- Optional kick for team killers after reaching a punish limit.
- Configurable commands and messages.
- Optionally allow killers to apologize to avoid punishment.
- Optionally protect admins or whitelisted players from being punished.
- Shame the worst team killers at the end of the round or on demand.
- Integration with AdKats.
Install
- Download and extract the latest release: https://github.com/stajs/Stajs.Procon.TeamKillTracker/releases.
- Move the plugin file
TeamKillTracker.cs
to your Procon layer under Plugins\BF4
and restart your layer.
- Optionally, turn off the built-in team killing management (Warning: this will change your server to the Custom preset):
Compatibility
This plugin has only been tested against BF4. It is reported to work with BF3 and Hardline and may work for other games.
Settings
Commands
Commands are case-insensitive and can be issued in global, team, or squad chat. A command can be triggered by more than one matching player message.
Punish |
|
Description |
Punish a team killer. |
Default value |
- !p - !punish |
Forgive |
|
Description |
Forgive a team killer. |
Default value |
- !f - !forgive |
Allow killers to apologize to avoid punishment? |
|
Description |
If set to Yes , the Sorry command is enabled. |
Default value |
No |
Sorry |
|
Description |
Allows a killer to avoid punishment. |
Default value |
- !sorry - !mybad |
Shame |
|
Description |
List the worst team killers. |
Default value |
!shame |
Debug
Should suicide count as a team kill? |
|
Description |
Useful for testing other plugin settings and messages. Allows a player to trigger a "team kill" by suiciding. |
Default value |
No |
Output to Chat |
|
Description |
Determines what messages (if any) should appear in the Procon Chat tab. |
Default value |
SayAndYell |
Limits
Victim window before auto-action (seconds) |
|
Description |
How long (in seconds) to allow a victim to apply an action to their killer before an auto-action is applied. The method used to check for punish actions is updated every ~30 seconds so the actual window may be ~30 seconds longer than specified. Minimum: 20 Maximum: 120 |
Default value |
45 |
Auto-action |
|
Description |
What should happen to the killer after the victim action window expires. |
Default value |
Forgiven |
Kick after punish limit reached? |
|
Description |
Should a team killer be kicked after reaching the punish limit? If set to Yes , the following settings are enabled: - Player count threshold for kick - Punish limit |
Default value |
Yes |
Player count threshold for kick |
|
Description |
How many players are required before kicking is active. The method used to count the players is updated every ~30 seconds and includes players joining, but not yet visible in game. Minimum: 1 Maximum: 64 |
Default value |
1 |
Punish limit |
|
Description |
How many times a killer is allowed to be punished before being kicked. Minimum: 1 Maximum: 20 |
Default value |
5 |
Messages
For Killer
and Victim
messages, the following prefixes may be used.
>
to say the message if a threshold is required for kick and the threshold has been reached.
<
to say the message if a threshold is required for kick and the threshold has not been reached.
@
to yell the message.
>@
to yell the message if a threshold is required for kick and the threshold has been reached.
<@
to yell the message if a threshold is required for kick and the threshold has not been reached.
Killer |
|
Description |
Sent to the killer when a team kill is detected (one line per message). See note about prefixes above. |
Default value |
- You TEAM KILLED {victim}. Watch your fire! - @You TEAM KILLED {victim}. Watch your fire! - >Punishes left before kick: {punishesLeft}. |
{killer} |
Player name of killer. |
{victim} |
Player name of victim. |
{victimCount} |
The number of times the killer has team killed the victim. |
{teamCount} |
The number of times the killer has team killed the team. |
{punishedCount} |
The number of times the victim has previously punished the killer. |
{forgivenCount} |
The number of times the victim has previously forgiven the killer. |
{autoForgivenCount} |
The number of times the victim has previously auto-forgiven the killer. |
{sorryCount} |
The number of times the killer has apologized to the victim. |
{punishesLeft} |
The number of punishes left before the killer is kicked. |
Victim |
|
Description |
Sent to the victim when a team kill is detected (one line per message). See note about prefixes above. |
Default value |
- TEAM KILLED by {killer}. - @TEAM KILLED by {killer}. - Their TK's: you ({victimCount}) team ({teamCount}). - punished ({punishedCount}) forgiven ({forgivenCount}) auto-forgiven ({autoForgivenCount}) sorry ({sorryCount}) - >Punishes left before kick: {punishesLeft}. - <Waiting on more players to join before enabling kick. - !p to punish, !f to forgive. - @!p to punish, !f to forgive. |
{killer} |
Player name of killer. |
{victim} |
Player name of victim. |
{victimCount} |
The number of times the killer has team killed the victim. |
{teamCount} |
The number of times the killer has team killed the team. |
{punishedCount} |
The number of times the victim has previously punished the killer. |
{forgivenCount} |
The number of times the victim has previously forgiven the killer. |
{autoForgivenCount} |
The number of times the victim has previously auto-forgiven the killer. |
{sorryCount} |
The number of times the killer has apologized to the victim. |
{punishesLeft} |
The number of punishes left before the killer is kicked. |
Punished |
|
Description |
Sent to both the killer and victim when a punish command is successful. |
Default value |
{killer} punished by {victim}. |
{killer} |
Player name of killer. |
{victim} |
Player name of victim. |
Forgiven |
|
Description |
Sent to both the killer and victim when a forgive command is successful. |
Default value |
{killer} forgiven by {victim}. |
{killer} |
Player name of killer. |
{victim} |
Player name of victim. |
Apologized |
|
Description |
Sent to both the killer and victim when a sorry command is successful. |
Default value |
{killer} apologized to {victim}. |
{killer} |
Player name of killer. |
{victim} |
Player name of victim. |
Kick |
|
Description |
Sent to all players when a player is kicked for reaching the punish limit. |
Default value |
Too many team kills for {killer}. Boot incoming! |
{killer} |
Player name of killer. |
No one to punish |
|
Description |
Sent to the player who issued a punish command that was unsuccessful. |
Default value |
No one to punish ({window} second window). |
{window} |
Length (in seconds) of the punish window. |
No one to forgive |
|
Description |
Sent to the player who issued a forgive command that was unsuccessful. |
Default value |
No one to forgive ({window} second window). |
{window} |
Length (in seconds) of the punish window. |
No one to apologize to |
|
Description |
Sent to the player who issued a sorry command that was unsuccessful. |
Default value |
Apology rejected! No recent kills. |
Shame all on round end? |
|
Description |
Should a list of the worst team killers be displayed to all players at the end of the round? |
Default value |
Yes |
No one to shame on round end message |
|
Description |
Displayed to all players if Shame all on round end? is Yes , but no team kills are recorded. |
Default value |
Wow! We got through a round without a single teamkill! |
No one to shame message |
|
Description |
Sent to the player who issued a shame command. |
Default value |
No team kills so far... |
Protection
Who should be protected? |
|
Description |
Who, if any, should be protected from punishment. If set to Whitelist or AdminsAndWhitelist , Whitelist is enabled. |
Default value |
Admins |
Whitelist |
|
Description |
A list of players (one per line) that are protected from punishment. |
Use AdKats |
|
Description |
Should punishment be handed off to AdKats to handle. This (obviously) requires a working installation of AdKats and only hands off to AdKats once it is fully initialized and ready to receive commands. |
Default value |
No |