Moderation System
Full featured moderation system plugin. MySQL is optional !
Features
- Full async ban checks (No game thread blocks aka server is not responding for x seconds)
- Validate steam players account age, account level and if account is limited (spent less than $5 USD in steam store)
- Steam Id, IP and HwId bans support
- Both investigate and checkowner commands supports getting the steam player profile link
- Command that clears all bans that are irrelevant
- Detection of alt accounts
- Works with any other plugin that ban players
- All webhooks can be translated and modified
- MySQL is optional ! We provide LiteDB provider in case you don't want to set up MySQL
- All messages & translations support Rich Text and Smart Format
Configuration Explained
- DatabaseType
- Select LiteDB to use LiteDB or MySql to use MySql. If you choose MySql make sure you filled MySqlConfiguration
- AllowAlternativeAccounts
- If alt accounts are allowed to join or not the server
- ValidateSteamAccountAge
- If the plugin should validate the steam account age of the player
- SteamWebAPIKey
- The staem web api key that the plugin will use to check the steam account age of a player. You can get one for free here
- SteamAccounMinimumAgeInDays
- How many days must pass from the moment the account was created
Permissions
Bypass the alt account check
moderation.alt.bypass
Bypass the steam account age check
moderation.steam.age.bypass
Commands
Command | Syntax | Explanation | Example |
---|---|---|---|
/ban | player id or name | Bans a player permanently | /ban feli |
/ban | <player id or name> [reason] | Bans a player permanently with a reason | /ban feli "test reason" |
/ban | <player id or name> [reason] [time] | Bans a player for x time with a reason | /ban feli "test reason" 1m 1d 1m 1s |
/ban | <player id or name> [reason] permanently | Bans a player permanently with a reason | /ban feli "test reason" permanently |
/ban | <player id or name> [reason] [time] -g | Bans a player and group members for x time with a reason | /ban feli "bad group" 30m -g |
/bans | player id or name | Displays all bans of a player | /bans feli |
/bans | <player id or name> [amount] | Displays the last x amount of bans of a player | /bans feli 5 |
/checkowner | Checks information of a buildable or vehicle | /checkowner | |
/checkowner | <player id or name> [profile|p] | Opens the steam profile of the buildable or vehicle owner | /checkowner p |
/clearbans | Clears all the bans that expired | /clearbans | |
/investigate | player id or name | Displays information of a player | /investigate feli |
/investigate | <player id or name> [profile|p] | Opens the steam profile of a player | /investigate feli profile |
/unban | player id | Deactivates all the non expired bans of a player | /unban 76561198829616065 |
/findalts | player id | Displays all the alts of a player | /findalts 76561198829616065 |
/findalts | <player id> [index] | Opens the steam profile of the specified alt | /findalts 76561198829616065 0 |
Configuration
<?xml version="1.0" encoding="utf-8"?>
<ModerationSystemPluginConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DatabaseType>LiteDB</DatabaseType>
<MySqlConfiguration>
<ServerAddress>127.0.0.1</ServerAddress>
<ServerPort>3306</ServerPort>
<Username>root</Username>
<Password>password</Password>
<DatabaseName>unturned</DatabaseName>
<ConnectionString />
</MySqlConfiguration>
<DiscordWebhooks>
<DiscordWebhook type="Ban" url="https://discord.com/api/webhooks/xxxx/xxxx" />
<DiscordWebhook type="Block" url="https://discord.com/api/webhooks/xxxx/xxxx" />
<DiscordWebhook type="Evading" url="https://discord.com/api/webhooks/xxxx/xxxx" />
</DiscordWebhooks>
<AllowInvalidHardwareIds>false</AllowInvalidHardwareIds>
<AllowAlternativeAccounts>true</AllowAlternativeAccounts>
<AllowSteamLimitedAccount>true</AllowSteamLimitedAccount>
<ValidateSteamAccountAge>false</ValidateSteamAccountAge>
<ValidateSteamAccountLevel>false</ValidateSteamAccountLevel>
<SteamWebAPIKey>xxxx</SteamWebAPIKey>
<SteamAccountMinimumAgeInDays>30</SteamAccountMinimumAgeInDays>
<SteamAccountMinimumLevel>1</SteamAccountMinimumLevel>
</ModerationSystemPluginConfiguration>
Translatation
<?xml version="1.0" encoding="utf-8"?>
<Translations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Translation Id="DatabasePlayerNotFound" Value="The player was not found in the database" />
<Translation Id="ObjectNotFound" Value="You are not lookin at any vehicle, barricade or structure" />
<Translation Id="ObjectInformation" Value="[{Object.Type}] {Object.Name} ({Object.Id}) is owned by {PlayerName}. Check steam profile with /checkowner profile" />
<Translation Id="BanSyntax" Value="Correct Usage: /ban <player | id> [reason] [time] [-g]" />
<Translation Id="PlayerNotFound" Value="Player {0} was not found" />
<Translation Id="PlayerBan" Value="Successfully banned {Player.CharacterName}" />
<Translation Id="PlayerBanGroup" Value="Successfully banned {Player.CharacterName} and group members {GroupMembers}" />
<Translation Id="BanReason" Value="{Ban.Reason} | Appeal on our discord discord.gg/4FF2548" />
<Translation Id="BanDefaultReason" Value="No reason specified" />
<Translation Id="BanEvadingReason" Value="Alt account detected. Original ban reason: {Ban.Reason}" />
<Translation Id="UnbanSyntax" Value="Correct Usage: /unban <playerId>" />
<Translation Id="PlayerUnban" Value="Successfully deactivated {Bans} bans of {Player.CharacterName}" />
<Translation Id="BansSyntax" Value="Correct Usage: /bans <player | id>" />
<Translation Id="BansInfo" Value="{Player.CharacterName} has been banned {Bans} times" />
<Translation Id="BansRow" Value="- Reason: {Ban.Reason} | Date {Ban.BanDate} | Moderator: {Moderator.CharacterName} | For: {BanTime}" />
<Translation Id="YoungAccount" Value="Your account is too young to play on this server" />
<Translation Id="AlternativeAccount" Value="Using muliple accounts is not allowed on this server" />
<Translation Id="InvestigateSyntax" Value="Correct Usage: /investigate <player | id> [profile|p]" />
<Translation Id="InvestigateResult" Value="Name: {Player.CharacterName} | Last Login: {Player.LastLogin} | TotalPlaytime: {TotalPlaytime} | IPAddress: {Player.IPAddress}" />
<Translation Id="ClearBansResult" Value="Successfully removed a total of {Total} junk bans" />
<Translation Id="FindAltsSyntax" Value="Correct Usage: /findalts <playerId> [index]" />
<Translation Id="NoAltsFound" Value="No alts were found for {Player.CharacterName}" />
<Translation Id="AltsInfo" Value="{Player.CharacterName} has {Alts} alts" />
<Translation Id="AltsRow" Value="- {Index} {Player.CharacterName} ({Player.Id})" />
<Translation Id="InvalidHardwareIds" Value="This server does not allow the use of external programs that modify the game behavior" />
<Translation Id="AccountLevel" Value="Your account is too low to play on this server" />
<Translation Id="AccountLimited" Value="Limited steam accounts are not allowed on this server. To access this server you will need to spend at least $5.00 USD within the Steam store" />
</Translations>