[FREE] Advanced In-Game Admin and Ban Enforcer - AdKats [7.5.0.0]

Admin Toolset with a plethora of features, over 100 available in-game commands, and many customization options. AdKats focuses on making in-game admins more efficient and accurate at their jobs, with flexibility for almost any setup. Includes a cross-server ban enforcer with advanced enforcement features, global admin management, cross-server player messaging, and the BFAdminCP 2.0+ for web-based control has been released. Designed for groups with high-traffic servers and many admins, but will function just as well for small servers.

REQUIREMENTS:
This plugin requires a MySQL database, and XpKiller's Stat logger plugin to operate. If you do not have an existing database and/or a Procon layer we suggest using Branzone's hosting services. Our group has been with them for years across BF3, BF4, and Hardline; the most performant and reliable host we've found.Web/Database Hosting:Branzone Web Hosting (Used for MySQL Databases)Procon Layer Hosting:Branzone Procon Layers

Customizable User Roles. Custom user roles can be created for admins and players, with each role given access to only the commands you want them to use. Default guest role is given to all players and can be edited to your desired specs. Roles and powers are automatically synced between servers so you only need to change user information once. Soldiers assigned to users will also keep their powers even if they change their in-game names.

Setting sync between servers. All changes to plugin settings are stored in the database and can be automatically synced between your Procon layers. Setting up new layers or switching layers is a breeze as the settings for existing servers are automatically imported on startup.

Infraction Tracking System. Punish/forgive players for breaking rules on your servers. Everything is tracked so the more infractions they commit, the worse their punishment automatically gets. Created so all players can be treated equally based on their history, regardless of who is issuing punishments against them. Heavily customizable.

Player Reputation System. Based on issued commands from and against players they can form a numeric reputation on the server. Documentation below. A local leaderboard for reputation is provided in the BFAdminCP.

Quick Player Report and Admin Call Handling, with Email Support. Notification system and quick handling features for all admin calls and player reports. Reports can be referenced by number for instant action. Automatic PBSS are triggered on reported players.

AdKats Ban Enforcer. AdKats can enforce bans across all of your servers and can enforce on all identity metrics at the same time. System will automatically import bans from your servers, consolidating them in one place, and can import existing bans from the BF3 Ban Manager plugin's tables. Full documentation below.

Automated Challenge System with Rewards. The challenge system in AdKats is designed to be a multi-server stats-driven way to give players new goals with rewards. You can set up almost any combination of damage types or weapons to be used by players, in multiple tiers.

BF3/BF4 "Hacker-Checker" with Whitelist. Battlelog stats can be polled for players in the server, issuing automatic bans for damage mods, aimbots, magic bullet, and several others. The LIVE system can detect damage mods and magic bullet from a single round of play. DPS checks are enabled by default, with others available after a few clicks.

Surrender Vote System. When enabled, if players are stuck in their base with no options, they can vote to end the round with the current winning team as winner.

Auto-Surrender/Auto-Nuke System. This uses ticket loss rates to detect where teams are on the map, specifically with how many flags are captured. If a team is being base-camped, it can either automatically end the round with current winner, or nuke the team who is causing the base-camp. Optimal values for Metro 2014 and Operation Locker are available, for both surrender and nuke options.

Automatic Updates. AdKats automatically updates itself when stable releases are made, only requiring a Procon instance reboot to run updated versions. This can be disabled if desired, but is required if running TEST versions.

Ping Enforcer. Automated kick system based on ping, with moving average calculation, modifiers based on time of day and server population, customizable messages, logged kicks, and manual ping options.

AFK Manager. Automated kick system based on player AFK time, with manual kick command. Customizable durations, and option to ignore chat messages counting toward active time.

Internal SpamBot with Whitelist. SpamBot with options for simultaneous say, yell, and tell. Customizable intervals between each type of message, and ability to whitelist players/admins from seeing spambot messages.

Commander Manager. Commanders can cause team imbalance when servers are in low population. This manager can forbid commanders before a certain player count is active.

Cross-Server Player Messaging. Private conversations between players can operate not only within the same server, but will work between any online server in the database, and even between any AdKats supported game.

Admin Assistants. When fully used this can turn your regular playerbase into a human autoadmin. Trusted players fill the gaps normal autoadmins don't see by utilizing the report system and keeping your server under control even when normal admins are offline.

Email Notification System. Email addresses can be added to every user, and once enabled they will receive emails for player reports and admin calls.

Fuzzy Player Name Completion. Fully completes partial or misspelled player names. I've been consistently able to find almost any player only a few characters from their name. Can also fetch players who have left the server, are in another server of yours on the same database, or have been in your servers at any point in time.

Player Muting. Players can be muted if necessary, giving warnings and kicks if they talk. Automatic mute in specific cases like lanuage can be orchestrated by other plugins like Insane limits.

Player Joining. Player's squads can be joined via command, and locked squads can be unlocked for admin entry.

Player Locking. Players can be locked from admin commands for a specific timeout, the main purpose is if a certain admin is handling them (checking stats for cheat detection, records, etc.) they shouldn't be interrupted by another admin acting on the player.

Player Assist. Player's want to play with their friends, but you don't want to imbalance the teams? The assist command lets any player join the weak team to help them out and squad up with friends without hurting server balance.

Server Rule Management. Server rules can be listed, requests for rules logged, rules targeted at other players, and rules can be distributed between servers automatically.

External Controller API. AdKats can be controlled from outside the game through systems like the BFAdminCP and through other plugins like Insane Limits. For example, you can issue AdKats punish commands from Insane Limits or ProconRulz and have them logged against the player's profile like any other admin command.

Internal Implementation of TeamSwap. Queued move system for servers that are consistently full, players can be queued to move to full teams once a slot opens.

Metabans Support. When using ban enforcer all bans can be submitted to metabans and removed if the player is unbanned.

Full Logging. All admin activity is tracked via the database per your custom settings for every command, so holding your admins accountable for their actions is quick and painless. If you are using the BFAdminCP nobody but your highest admins will need manual Procon access.

Setting Lock. The settings page in AdKats can be locked with a password. This means even admins with access to plugin settings can be blocked from changes using the password.

Performance. All actions, messaging, database communications, and command parsing take place on their own threads, minimizing performance impacts.

Tons of features to this plugin! Very nice job writing up what everything does and how to use it. This is actually one item I'm been looking to do: implement an admin punish type system for some time now. This should hopefully reduce the number of bans our admins issue and also create a type of tracking for who has been warned and who hasn't. The idea of using a DB so punishments can be carried across servers is pretty slick and am looking forward to testing it out in the coming week. Will let you know what develops!

Tons of features to this plugin! Very nice job writing up what everything does and how to use it. This is actually one item I'm been looking to do: implement an admin punish type system for some time now. This should hopefully reduce the number of bans our admins issue and also create a type of tracking for who has been warned and who hasn't. The idea of using a DB so punishments can be carried across servers is pretty slick and am looking forward to testing it out in the coming week. Will let you know what develops!

Thanks!

Glad there is some interest in this! I have already made many updates to the plugin (making things run better and adding more features), the update will be released this coming week.

Couple of things you might consider adding:
1. clan tag based admin list; just add the clan tag and all with that tag now have "admin" powers. Save from having to add/edit/delete a separate list every time you add/edit/delete an admin. OR, possibly have it pull admin accounts from procon itself......winnerwinner, chicken dinner!

2. Allow the use of the pre-defined "messages" as reasons for the punishment: @punish (reportID or playername)(# of predefined message), so it would look like "@punish 697 2" would punish that the player defined in the reportID (or the playername) for the predefined message #2 of baserape is not allowed on this server. We try to keep a consistent admin protocol on our servers, and only allow pre-determined reasons for any actions against other players. This would work in tandem with the plugin "ServerRulesonRequest" perfectly.

3. Looks like @report and @admin currently sends a chat to every "admin" on the list. Any way to just send to admins currently in game? How about a "tweet" for those of us who monitor that type of thing? Would be handy to keep track of stuff going on if you weren't actually in the server.

Thanks for the effort, looks like a winner to me. Are you planning on building a webpage to sort through/search the database? That would be especially helpful to weed out heavy handed or overzealous admins.

Couple of things you might consider adding:
1. clan tag based admin list; just add the clan tag and all with that tag now have "admin" powers. Save from having to add/edit/delete a separate list every time you add/edit/delete an admin. OR, possibly have it pull admin accounts from procon itself......winnerwinner, chicken dinner!This might already be fixed in version 2.5, i've made an admin editor in adkats settings so you can add, remove, or change the access level of any player without ever touching the database. I cannot pull clan tags , the server does not send us that information, unfortunate. Pulling admin accounts from procon would be convenient, but it kinda ruins the purpose, with this system if you add an admin on one server they are automatically an admin on all servers running on that database.

Also just FYI, you are gonna lose your admin list when installing on the new version, i optimized it a lot and relying on someone else's pre-made access list just wasn't gonna cut it, SORRY lol. On the plus side you can add them back quickly.

2. Allow the use of the pre-defined "messages" as reasons for the punishment: @punish (reportID or playername)(# of predefined message), so it would look like "@punish 697 2" would punish that the player defined in the reportID (or the playername) for the predefined message #2 of baserape is not allowed on this server. We try to keep a consistent admin protocol on our servers, and only allow pre-determined reasons for any actions against other players. This would work in tandem with the plugin "ServerRulesonRequest" perfectly.What i do when using report IDs is use the same reason the player reported them for as the reason in the action. So @report fluffy baseraping --> Report [542] --> @kill 542 --> fluffy killed for baseraping. So you might not want to use the report ID system just yet until i work in an update for you.

3. Looks like @report and @admin currently sends a chat to every "admin" on the list. Any way to just send to admins currently in game? How about a "tweet" for those of us who monitor that type of thing? Would be handy to keep track of stuff going on if you weren't actually in the server.I just looped through everyone in the admin list because the say to admins not in-game will just fail, but not break anything. Every in-game admin will get the message. I am working on importing both the email system from notifyme and the tweet system from insanelimits, but that will take a little while as i want to test things completely before releasing code. My clan's servers are the test dummies for my code, wanna make sure things work properly before releasing them.

Thanks for the effort, looks like a winner to me. Are you planning on building a webpage to sort through/search the database? That would be especially helpful to weed out heavy handed or overzealous admins.It would take a while but i could do something like this. The HTTP server procon has is very very basic, im talking sending single strings back on requests basic. Essentially i would need to generate a single string of html code manually and send it back to you, so...yeah...might take a little while to get that working. My clan has an external game control panel running on a webserver which already had access to the database, so making a display for this was was simple for us, not so much in your case but i'll do what i can.

Regarding your last point about the webpage: why wouldn't you simply write a webpage/script that connects to the database instead of going script->procon->database->procon->script?

What is needed for accessing a database is more than just a webpage, it cant be done client side. It requires a server-side component, and that's a good thing for security purposes. What i mentioned to him, even though it would take some time to generate html code manually, is still less work than making a webserver around this thing. I'll be doing it eventually, will just take a while.

If i was to write an adkats web-interface i would need it to be a fully functional GUI for the in-game instance, interacting through the database for actions (or the procon http server if we can get it secured, at least to the point of not using GET all the time), and operational across all servers the person is running. The problem is it would need access to all current server info, and players, which would require either responses from the procon http server, or a direct RCON connection to the bf3 server.

What is needed for accessing a database is more than just a webpage, it cant be done client side. It requires a server-side component, and that's a good thing for security purposes. What i mentioned to him, even though it would take some time to generate html code manually, is still less work than making a webserver around this thing. I'll be doing it eventually, will just take a while.

If i was to write an adkats web-interface i would need it to be a fully functional GUI for the in-game instance, interacting through the database for actions (or the procon http server if we can get it secured, at least to the point of not using GET all the time), and operational across all servers the person is running. The problem is it would need access to all current server info, and players, which would require either responses from the procon http server, or a direct RCON connection to the bf3 server.

Please correct me if i'm wrong on any points

If i understand the serverside part correctly, you're trying to avoid e.g. having to run a php script on a webserver, but having a browser query the plugin directly (e.g. via Procon's HTTP Server), which then establishes the connections and runs the commands? If yes: that is WAY more complicated and definitely more error-prune. What's bad about having to run it on a server? Most MySQL databases for gameservers come with webspace, or you can rent it for a dollar (or even free).

What you are describing is (on a less detailed level) done by the remote banlist plugin by bambam and me, although that just included banlist/kick and chat functionality.
Regarding the information needed: you could either get some of that via the Procon HTTP server if it works for these cases or simply have the plugin update a table in the database every X seconds. The information you mentioned is usually updated every 15-30 seconds by Procon, so you could write it at those intervals or even slower, depending on your needs. Not optimal, but better than writing additional code basically implementing parts of a webserver.

Before posting: Have you read the MANUAL?Before posting: Have you used the SEARCH?

I will not provide support through PMs or TeamSpeak. Please post your questions in our forums.