SPM fix for negative/teamdamage

added localization as downloaded from the Master API
interupted network communication no longer treated as unknown exception
topstats prints the right message if no one qualifies
angle adjustments
move unflag to seperate command
This commit is contained in:
RaidMax 2018-05-07 23:58:46 -05:00
parent a54ea3913d
commit 9ff7f39e8d
36 changed files with 1313 additions and 1120 deletions

View File

@ -60,5 +60,8 @@ namespace IW4MAdmin.Application.API.Master
[Get("version")] [Get("version")]
Task<VersionInfo> GetVersion(); Task<VersionInfo> GetVersion();
[Get("localization")]
Task<List<SharedLibraryCore.Localization.Layout>> GetLocalization();
} }
} }

View File

@ -72,15 +72,6 @@
<None Update="Localization\IW4MAdmin.ru-RU.json"> <None Update="Localization\IW4MAdmin.ru-RU.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Localization\Webfront.ru-RU.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Localization\Webfront.es-EC.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Localization\Webfront.en-US.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -3,6 +3,7 @@
"AutoMessages": [ "AutoMessages": [
"This server uses ^5IW4M Admin v{{VERSION}} ^7get it at ^5raidmax.org/IW4MAdmin", "This server uses ^5IW4M Admin v{{VERSION}} ^7get it at ^5raidmax.org/IW4MAdmin",
"^5IW4M Admin ^7sees ^5YOU!", "^5IW4M Admin ^7sees ^5YOU!",
"{{TOPSTATS}}",
"This server has seen a total of ^5{{TOTALPLAYERS}} ^7players!", "This server has seen a total of ^5{{TOTALPLAYERS}} ^7players!",
"Cheaters are ^1unwelcome ^7 on this server", "Cheaters are ^1unwelcome ^7 on this server",
"Did you know 8/10 people agree with unverified statistics?" "Did you know 8/10 people agree with unverified statistics?"

View File

@ -54,6 +54,18 @@ namespace IW4MAdmin.Application.EventParsers
}; };
} }
if (cleanedEventLine.Contains("ScriptDamage"))
{
return new GameEvent()
{
Type = GameEvent.EventType.ScriptDamage,
Data = logLine,
Origin = server.GetPlayersAsList().First(c => c.NetworkId == lineSplit[1].ConvertLong()),
Target = server.GetPlayersAsList().First(c => c.NetworkId == lineSplit[2].ConvertLong()),
Owner = server
};
}
if (cleanedEventLine[0] == 'D') if (cleanedEventLine[0] == 'D')
{ {
return new GameEvent() return new GameEvent()

View File

@ -1,8 +1,10 @@
using SharedLibraryCore; using IW4MAdmin.Application.API.Master;
using SharedLibraryCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
using System.Text; using System.Text;
namespace IW4MAdmin.Application.Localization namespace IW4MAdmin.Application.Localization
@ -14,6 +16,24 @@ namespace IW4MAdmin.Application.Localization
string currentLocale = string.IsNullOrEmpty(customLocale) ? CultureInfo.CurrentCulture.Name : customLocale; string currentLocale = string.IsNullOrEmpty(customLocale) ? CultureInfo.CurrentCulture.Name : customLocale;
string[] localizationFiles = Directory.GetFiles("Localization", $"*.{currentLocale}.json"); string[] localizationFiles = Directory.GetFiles("Localization", $"*.{currentLocale}.json");
try
{
var api = Endpoint.Get();
var localizations = api.GetLocalization().Result;
var usingLocale = localizations.FirstOrDefault(l => l.LocalizationName == currentLocale
|| l.LocalizationName.Substring(0, 2) == currentLocale.Substring(0, 2)) ??
localizations.First();
Utilities.CurrentLocalization = usingLocale;
return;
}
catch (Exception)
{
// the online localization failed so will default to local files
}
// culture doesn't exist so we just want language // culture doesn't exist so we just want language
if (localizationFiles.Length == 0) if (localizationFiles.Length == 0)
{ {

View File

@ -1,204 +1,259 @@
{  {
"LocalizationName": "en-US", "LocalizationName": "en-US",
"LocalizationIndex": { "LocalizationIndex": {
"Set": { "Set": {
"MANAGER_VERSION_FAIL": "Could not get latest IW4MAdmin version", "BROADCAST_OFFLINE": "^5IW4MAdmin ^7is going ^1OFFLINE",
"MANAGER_VERSION_UPDATE": "has an update. Latest version is", "BROADCAST_ONLINE": "^5IW4MADMIN ^7is now ^2ONLINE",
"MANAGER_VERSION_CURRENT": "Your version is", "COMMAND_HELP_OPTIONAL": "optional",
"MANAGER_VERSION_SUCCESS": "IW4MAdmin is up to date", "COMMAND_HELP_SYNTAX": "syntax:",
"MANAGER_INIT_FAIL": "Fatal error during initialization", "COMMAND_MISSINGARGS": "Not enough arguments supplied",
"MANAGER_EXIT": "Press any key to exit...", "COMMAND_NOACCESS": "You do not have access to that command",
"MANAGER_SHUTDOWN_SUCCESS": "Shutdown complete", "COMMAND_NOTAUTHORIZED": "You are not authorized to execute that command",
"MANAGER_MONITORING_TEXT": "Now monitoring", "COMMAND_TARGET_MULTI": "Multiple players match that name",
"MANAGER_CONNECTION_REST": "Connection has been reestablished with", "COMMAND_TARGET_NOTFOUND": "Unable to find specified player",
"SETUP_ENABLE_WEBFRONT": "Enable webfront", "COMMAND_UNKNOWN": "You entered an unknown command",
"SETUP_ENABLE_MULTIOWN": "Enable multiple owners", "COMMANDS_ADMINS_DESC": "list currently connected privileged clients",
"SETUP_ENABLE_STEPPEDPRIV": "Enable stepped privilege hierarchy", "COMMANDS_ADMINS_NONE": "No visible administrators online",
"SETUP_ENABLE_CUSTOMSAY": "Enable custom say name", "COMMANDS_ALIAS_ALIASES": "Aliases",
"SETUP_SAY_NAME": "Enter custom say name", "COMMANDS_ALIAS_DESC": "get past aliases and ips of a client",
"SETUP_USE_CUSTOMENCODING": "Use custom encoding parser", "COMMANDS_ALIAS_IPS": "IPs",
"SETUP_ENCODING_STRING": "Enter encoding string", "COMMANDS_ARGS_CLEAR": "clear",
"SETUP_ENABLE_VPNS": "Enable client VPNs", "COMMANDS_ARGS_CLIENTID": "client id",
"SETUP_IPHUB_KEY": "Enter iphub.info api key", "COMMANDS_ARGS_COMMANDS": "commands",
"SETUP_DISPLAY_SOCIAL": "Display social media link on webfront (discord, website, VK, etc..)", "COMMANDS_ARGS_DURATION": "duration (m|h|d|w|y)",
"SETUP_SOCIAL_LINK": "Enter social media link", "COMMANDS_ARGS_INACTIVE": "inactive days",
"SETUP_SOCIAL_TITLE": "Enter social media name", "COMMANDS_ARGS_LEVEL": "level",
"SETUP_SERVER_USET6M": "Use Pluto T6 parser", "COMMANDS_ARGS_MAP": "map",
"SETUP_SERVER_USEIW5M": "Use Pluto IW5 Parser", "COMMANDS_ARGS_MESSAGE": "message",
"SETUP_SERVER_MANUALLOG": "Enter manual log file path", "COMMANDS_ARGS_PASSWORD": "password",
"SETUP_SERVER_IP": "Enter server IP Address", "COMMANDS_ARGS_PLAYER": "player",
"SETUP_SERVER_PORT": "Enter server port", "COMMANDS_ARGS_REASON": "reason",
"SETUP_SERVER_RCON": "Enter server RCon password", "COMMANDS_BAN_DESC": "permanently ban a client from the server",
"SETUP_SERVER_SAVE": "Configuration saved, add another", "COMMANDS_BAN_FAIL": "You cannot ban",
"SERVER_ERROR_DNE": "does not exist", "COMMANDS_BAN_SUCCESS": "has been permanently banned",
"SERVER_ERROR_LOG": "Invalid game log file", "COMMANDS_BANINFO_DESC": "get information about a ban for a client",
"SERVER_ERROR_COMMAND_INGAME": "An internal error occured while processing your command", "COMMANDS_BANINFO_NONE": "No active ban was found for that player",
"SERVER_ERROR_COMMAND_LOG": "command generated an error", "COMMANDS_BANINO_SUCCESS": "was banned by ^5{0} ^7for:",
"SERVER_ERROR_UNFIXABLE": "Not monitoring server due to uncorrectable errors", "COMMANDS_FASTRESTART_DESC": "fast restart current map",
"SERVER_ERROR_DVAR": "Could not get the dvar value for", "COMMANDS_FASTRESTART_MASKED": "The map has been fast restarted",
"SERVER_ERROR_DVAR_HELP": "ensure the server has a map loaded", "COMMANDS_FASTRESTART_UNMASKED": "fast restarted the map",
"SERVER_ERROR_PLUGIN": "An error occured loading plugin", "COMMANDS_FIND_DESC": "find client in database",
"SERVER_ERROR_ADDPLAYER": "Unable to add player", "COMMANDS_FIND_EMPTY": "No players found",
"SERVER_ERROR_POLLING": "reducing polling rate", "COMMANDS_FIND_MIN": "Please enter at least 3 characters",
"SERVER_ERROR_COMMUNICATION": "Could not communicate with", "COMMANDS_FLAG_DESC": "flag a suspicious client and announce to admins on join",
"SERVER_ERROR_EXCEPTION": "Unexpected exception on", "COMMANDS_FLAG_FAIL": "You cannot flag",
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs are not allowed on this server", "COMMANDS_FLAG_SUCCESS": "You have flagged",
"SERVER_KICK_TEXT": "You were kicked", "COMMANDS_FLAG_UNFLAG": "You have unflagged",
"SERVER_KICK_MINNAME": "Your name must contain at least 3 characters", "COMMANDS_HELP_DESC": "list all available commands",
"SERVER_KICK_NAME_INUSE": "Your name is being used by someone else", "COMMANDS_HELP_MOREINFO": "Type !help <command name> to get command usage syntax",
"SERVER_KICK_GENERICNAME": "Please change your name using /name", "COMMANDS_HELP_NOTFOUND": "Could not find that command",
"SERVER_KICK_CONTROLCHARS": "Your name cannot contain control characters", "COMMANDS_IP_DESC": "view your external IP address",
"SERVER_TB_TEXT": "You're temporarily banned", "COMMANDS_IP_SUCCESS": "Your external IP is",
"SERVER_TB_REMAIN": "You are temporarily banned", "COMMANDS_KICK_DESC": "kick a client by name",
"SERVER_BAN_TEXT": "You're banned", "COMMANDS_KICK_FAIL": "You do not have the required privileges to kick",
"SERVER_BAN_PREV": "Previously banned for", "COMMANDS_KICK_SUCCESS": "has been kicked",
"SERVER_BAN_APPEAL": "appeal at", "COMMANDS_LIST_DESC": "list active clients",
"SERVER_REPORT_COUNT": "There are ^5{0} ^7recent reports", "COMMANDS_MAP_DESC": "change to specified map",
"SERVER_WARNLIMT_REACHED": "Too many warnings", "COMMANDS_MAP_SUCCESS": "Changing to map",
"SERVER_WARNING": "WARNING", "COMMANDS_MAP_UKN": "Attempting to change to unknown map",
"SERVER_WEBSITE_GENERIC": "this server's website", "COMMANDS_MAPROTATE": "Map rotating in ^55 ^7seconds",
"BROADCAST_ONLINE": "^5IW4MADMIN ^7is now ^2ONLINE", "COMMANDS_MAPROTATE_DESC": "cycle to the next map in rotation",
"BROADCAST_OFFLINE": "IW4MAdmin is going offline", "COMMANDS_MASK_DESC": "hide your presence as a privileged client",
"COMMAND_HELP_SYNTAX": "syntax:", "COMMANDS_MASK_OFF": "You are now unmasked",
"COMMAND_HELP_OPTIONAL": "optional", "COMMANDS_MASK_ON": "You are now masked",
"COMMAND_UNKNOWN": "You entered an unknown command", "COMMANDS_OWNER_DESC": "claim ownership of the server",
"COMMAND_NOACCESS": "You do not have access to that command", "COMMANDS_OWNER_FAIL": "This server already has an owner",
"COMMAND_NOTAUTHORIZED": "You are not authorized to execute that command", "COMMANDS_OWNER_SUCCESS": "Congratulations, you have claimed ownership of this server!",
"COMMAND_MISSINGARGS": "Not enough arguments supplied", "COMMANDS_PASSWORD_FAIL": "Your password must be at least 5 characters long",
"COMMAND_TARGET_MULTI": "Multiple players match that name", "COMMANDS_PASSWORD_SUCCESS": "Your password has been set successfully",
"COMMAND_TARGET_NOTFOUND": "Unable to find specified player", "COMMANDS_PING_DESC": "get client's ping",
"PLUGIN_IMPORTER_NOTFOUND": "No plugins found to load", "COMMANDS_PING_SELF": "Your ping is",
"PLUGIN_IMPORTER_REGISTERCMD": "Registered command", "COMMANDS_PING_TARGET": "ping is",
"COMMANDS_OWNER_SUCCESS": "Congratulations, you have claimed ownership of this server!", "COMMANDS_PLUGINS_DESC": "view all loaded plugins",
"COMMANDS_OWNER_FAIL": "This server already has an owner", "COMMANDS_PLUGINS_LOADED": "Loaded Plugins",
"COMMANDS_WARN_FAIL": "You do not have the required privileges to warn", "COMMANDS_PM_DESC": "send message to other client",
"COMMANDS_WARNCLEAR_SUCCESS": "All warning cleared for", "COMMANDS_PRUNE_DESC": "demote any privileged clients that have not connected recently (defaults to 30 days)",
"COMMANDS_KICK_SUCCESS": "has been kicked", "COMMANDS_PRUNE_FAIL": "Invalid number of inactive days",
"COMMANDS_KICK_FAIL": "You do not have the required privileges to kick", "COMMANDS_PRUNE_SUCCESS": "inactive privileged users were pruned",
"COMMANDS_TEMPBAN_SUCCESS": "has been temporarily banned for", "COMMANDS_QUIT_DESC": "quit IW4MAdmin",
"COMMANDS_TEMPBAN_FAIL": "You cannot temporarily ban", "COMMANDS_RCON_DESC": "send rcon command to server",
"COMMANDS_BAN_SUCCESS": "has been permanently banned", "COMMANDS_RCON_SUCCESS": "Successfully sent RCon command",
"COMMANDS_BAN_FAIL": "You cannot ban", "COMMANDS_REPORT_DESC": "report a client for suspicious behavior",
"COMMANDS_UNBAN_SUCCESS": "Successfully unbanned", "COMMANDS_REPORT_FAIL": "You cannot report",
"COMMANDS_UNBAN_FAIL": "is not banned", "COMMANDS_REPORT_FAIL_CAMP": "You cannot report an player for camping",
"COMMANDS_HELP_NOTFOUND": "Could not find that command", "COMMANDS_REPORT_FAIL_DUPLICATE": "You have already reported this player",
"COMMANDS_HELP_MOREINFO": "Type !help <command name> to get command usage syntax", "COMMANDS_REPORT_FAIL_SELF": "You cannot report yourself",
"COMMANDS_FASTRESTART_UNMASKED": "fast restarted the map", "COMMANDS_REPORT_SUCCESS": "Thank you for your report, an administrator has been notified",
"COMMANDS_FASTRESTART_MASKED": "The map has been fast restarted", "COMMANDS_REPORTS_CLEAR_SUCCESS": "Reports successfully cleared",
"COMMANDS_MAPROTATE": "Map rotating in ^55 ^7seconds", "COMMANDS_REPORTS_DESC": "get or clear recent reports",
"COMMANDS_SETLEVEL_SELF": "You cannot change your own level", "COMMANDS_REPORTS_NONE": "No players reported yet",
"COMMANDS_SETLEVEL_OWNER": "There can only be 1 owner. Modify your settings if multiple owners are required", "COMMANDS_RULES_DESC": "list server rules",
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "This server does not allow you to promote", "COMMANDS_RULES_NONE": "The server owner has not set any rules",
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "You can only promote ^5{0} ^7to ^5{1} ^7or lower privilege", "COMMANDS_SAY_DESC": "broadcast message to all clients",
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Congratulations! You have been promoted to", "COMMANDS_SETLEVEL_DESC": "set client to specified privilege level",
"COMMANDS_SETLEVEL_SUCCESS": "was successfully promoted", "COMMANDS_SETLEVEL_FAIL": "Invalid group specified",
"COMMANDS_SETLEVEL_FAIL": "Invalid group specified", "COMMANDS_SETLEVEL_LEVELTOOHIGH": "You can only promote ^5{0} ^7to ^5{1} ^7or lower privilege",
"COMMANDS_ADMINS_NONE": "No visible administrators online", "COMMANDS_SETLEVEL_OWNER": "There can only be 1 owner. Modify your settings if multiple owners are required",
"COMMANDS_MAP_SUCCESS": "Changing to map", "COMMANDS_SETLEVEL_SELF": "You cannot change your own level",
"COMMANDS_MAP_UKN": "Attempting to change to unknown map", "COMMANDS_SETLEVEL_STEPPEDDISABLED": "This server does not allow you to promote",
"COMMANDS_FIND_MIN": "Please enter at least 3 characters", "COMMANDS_SETLEVEL_SUCCESS": "was successfully promoted",
"COMMANDS_FIND_EMPTY": "No players found", "COMMANDS_SETLEVEL_SUCCESS_TARGET": "Congratulations! You have been promoted to",
"COMMANDS_RULES_NONE": "The server owner has not set any rules", "COMMANDS_SETPASSWORD_DESC": "set your authentication password",
"COMMANDS_FLAG_SUCCESS": "You have flagged", "COMMANDS_TEMPBAN_DESC": "temporarily ban a client for specified time (defaults to 1 hour)",
"COMMANDS_FLAG_UNFLAG": "You have unflagged", "COMMANDS_TEMPBAN_FAIL": "You cannot temporarily ban",
"COMMANDS_FLAG_FAIL": "You cannot flag", "COMMANDS_TEMPBAN_SUCCESS": "has been temporarily banned for",
"COMMANDS_REPORT_FAIL_CAMP": "You cannot report an player for camping", "COMMANDS_UNBAN_DESC": "unban client by client id",
"COMMANDS_REPORT_FAIL_DUPLICATE": "You have already reported this player", "COMMANDS_UNBAN_FAIL": "is not banned",
"COMMANDS_REPORT_FAIL_SELF": "You cannot report yourself", "COMMANDS_UNBAN_SUCCESS": "Successfully unbanned",
"COMMANDS_REPORT_FAIL": "You cannot report", "COMMANDS_UPTIME_DESC": "get current application running time",
"COMMANDS_REPORT_SUCCESS": "Thank you for your report, an administrator has been notified", "COMMANDS_UPTIME_TEXT": "has been online for",
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reports successfully cleared", "COMMANDS_USAGE_DESC": "get application memory usage",
"COMMANDS_REPORTS_NONE": "No players reported yet", "COMMANDS_USAGE_TEXT": "is using",
"COMMANDS_MASK_ON": "You are now masked", "COMMANDS_WARN_DESC": "warn client for infringing rules",
"COMMANDS_MASK_OFF": "You are now unmasked", "COMMANDS_WARN_FAIL": "You do not have the required privileges to warn",
"COMMANDS_BANINFO_NONE": "No active ban was found for that player", "COMMANDS_WARNCLEAR_DESC": "remove all warnings for a client",
"COMMANDS_BANINO_SUCCESS": "was banned by ^5{0} ^7for:", "COMMANDS_WARNCLEAR_SUCCESS": "All warning cleared for",
"COMMANDS_ALIAS_ALIASES": "Aliases", "COMMANDS_WHO_DESC": "give information about yourself",
"COMMANDS_ALIAS_IPS": "IPs", "GLOBAL_DAYS": "days",
"COMMANDS_RCON_SUCCESS": "Successfully sent RCon command", "GLOBAL_ERROR": "Error",
"COMMANDS_PLUGINS_LOADED": "Loaded Plugins", "GLOBAL_DEBUG": "Debug",
"COMMANDS_IP_SUCCESS": "Your external IP is", "GLOBAL_HOURS": "hours",
"COMMANDS_PRUNE_FAIL": "Invalid number of inactive days", "GLOBAL_INFO": "Info",
"COMMANDS_PRUNE_SUCCESS": "inactive privileged users were pruned", "GLOBAL_MINUTES": "minutes",
"COMMANDS_PASSWORD_FAIL": "Your password must be at least 5 characters long", "GLOBAL_REPORT": "If you suspect someone of ^5CHEATING ^7use the ^5!report ^7command",
"COMMANDS_PASSWORD_SUCCESS": "Your password has been set successfully", "GLOBAL_VERBOSE": "Verbose",
"COMMANDS_PING_TARGET": "ping is", "GLOBAL_WARNING": "Warning",
"COMMANDS_PING_SELF": "Your ping is", "MANAGER_CONNECTION_REST": "Connection has been reestablished with",
"COMMANDS_QUIT_DESC": "quit IW4MAdmin", "MANAGER_CONSOLE_NOSERV": "No servers are currently being monitored",
"COMMANDS_OWNER_DESC": "claim ownership of the server", "MANAGER_EXIT": "Press any key to exit...",
"COMMANDS_WARN_DESC": "warn client for infringing rules", "MANAGER_INIT_FAIL": "Fatal error during initialization",
"COMMANDS_WARNCLEAR_DESC": "remove all warnings for a client", "MANAGER_MONITORING_TEXT": "Now monitoring",
"COMMANDS_KICK_DESC": "kick a client by name", "MANAGER_SHUTDOWN_SUCCESS": "Shutdown complete",
"COMMANDS_SAY_DESC": "broadcast message to all clients", "MANAGER_VERSION_CURRENT": "Your version is",
"COMMANDS_TEMPBAN_DESC": "temporarily ban a client for specified time (defaults to 1 hour)", "MANAGER_VERSION_FAIL": "Could not get latest IW4MAdmin version",
"COMMANDS_BAN_DESC": "permanently ban a client from the server", "MANAGER_VERSION_SUCCESS": "IW4MAdmin is up to date",
"COMMANDS_UNBAN_DESC": "unban client by client id", "MANAGER_VERSION_UPDATE": "has an update. Latest version is",
"COMMANDS_WHO_DESC": "give information about yourself", "PLUGIN_IMPORTER_NOTFOUND": "No plugins found to load",
"COMMANDS_LIST_DESC": "list active clients", "PLUGIN_IMPORTER_REGISTERCMD": "Registered command",
"COMMANDS_HELP_DESC": "list all available commands", "PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "login using password",
"COMMANDS_FASTRESTART_DESC": "fast restart current map", "PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Your password is incorrect",
"COMMANDS_MAPROTATE_DESC": "cycle to the next map in rotation", "PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "You are now logged in",
"COMMANDS_SETLEVEL_DESC": "set client to specified privilege level", "PLUGINS_STATS_COMMANDS_RESET_DESC": "reset your stats to factory-new",
"COMMANDS_USAGE_DESC": "get application memory usage", "PLUGINS_STATS_COMMANDS_RESET_FAIL": "You must be connected to a server to reset your stats",
"COMMANDS_USAGE_TEXT": "is using", "PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Your stats for this server have been reset",
"COMMANDS_UPTIME_DESC": "get current application running time", "PLUGINS_STATS_COMMANDS_TOP_DESC": "view the top 5 players in this server",
"COMMANDS_UPTIME_TEXT": "has been online for", "PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Players",
"COMMANDS_ADMINS_DESC": "list currently connected privileged clients", "PLUGINS_STATS_COMMANDS_VIEW_DESC": "view your stats",
"COMMANDS_MAP_DESC": "change to specified map", "PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Cannot find the player you specified",
"COMMANDS_FIND_DESC": "find client in database", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "The specified player must be ingame",
"COMMANDS_RULES_DESC": "list server rules", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "You must be ingame to view your stats",
"COMMANDS_PM_DESC": "send message to other client", "PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Stats for",
"COMMANDS_FLAG_DESC": "flag a suspicious client and announce to admins on join", "PLUGINS_STATS_TEXT_DEATHS": "DEATHS",
"COMMANDS_REPORT_DESC": "report a client for suspicious behavior", "PLUGINS_STATS_TEXT_KILLS": "KILLS",
"COMMANDS_REPORTS_DESC": "get or clear recent reports", "PLUGINS_STATS_TEXT_NOQUALIFY": "No players qualify for top stats yet",
"COMMANDS_MASK_DESC": "hide your presence as a privileged client", "PLUGINS_STATS_TEXT_SKILL": "SKILL",
"COMMANDS_BANINFO_DESC": "get information about a ban for a client", "SERVER_BAN_APPEAL": "appeal at",
"COMMANDS_ALIAS_DESC": "get past aliases and ips of a client", "SERVER_BAN_PREV": "Previously banned for",
"COMMANDS_RCON_DESC": "send rcon command to server", "SERVER_BAN_TEXT": "You're banned",
"COMMANDS_PLUGINS_DESC": "view all loaded plugins", "SERVER_ERROR_ADDPLAYER": "Unable to add player",
"COMMANDS_IP_DESC": "view your external IP address", "SERVER_ERROR_COMMAND_INGAME": "An internal error occured while processing your command",
"COMMANDS_PRUNE_DESC": "demote any privileged clients that have not connected recently (defaults to 30 days)", "SERVER_ERROR_COMMAND_LOG": "command generated an error",
"COMMANDS_SETPASSWORD_DESC": "set your authentication password", "SERVER_ERROR_COMMUNICATION": "Could not communicate with",
"COMMANDS_PING_DESC": "get client's ping", "SERVER_ERROR_DNE": "does not exist",
"COMMANDS_ARGS_PLAYER": "player", "SERVER_ERROR_DVAR": "Could not get the dvar value for",
"COMMANDS_ARGS_REASON": "reason", "SERVER_ERROR_DVAR_HELP": "ensure the server has a map loaded",
"COMMANDS_ARGS_MESSAGE": "message", "SERVER_ERROR_EXCEPTION": "Unexpected exception on",
"COMMANDS_ARGS_DURATION": "duration (m|h|d|w|y)", "SERVER_ERROR_LOG": "Invalid game log file",
"COMMANDS_ARGS_CLIENTID": "client id", "SERVER_ERROR_PLUGIN": "An error occured loading plugin",
"COMMANDS_ARGS_COMMANDS": "commands", "SERVER_ERROR_POLLING": "reducing polling rate",
"COMMANDS_ARGS_LEVEL": "level", "SERVER_ERROR_UNFIXABLE": "Not monitoring server due to uncorrectable errors",
"COMMANDS_ARGS_MAP": "map", "SERVER_KICK_CONTROLCHARS": "Your name cannot contain control characters",
"COMMANDS_ARGS_CLEAR": "clear", "SERVER_KICK_GENERICNAME": "Please change your name using /name",
"COMMANDS_ARGS_INACTIVE": "inactive days", "SERVER_KICK_MINNAME": "Your name must contain at least 3 characters",
"COMMANDS_ARGS_PASSWORD": "password", "SERVER_KICK_NAME_INUSE": "Your name is being used by someone else",
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "login using password", "SERVER_KICK_TEXT": "You were kicked",
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "You are now logged in", "SERVER_KICK_VPNS_NOTALLOWED": "VPNs are not allowed on this server",
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Your password is incorrect", "SERVER_PLUGIN_ERROR": "A plugin generated an error",
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reset your stats to factory-new", "SERVER_REPORT_COUNT": "There are ^5{0} ^7recent reports",
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Your stats for this server have been reset", "SERVER_TB_REMAIN": "You are temporarily banned",
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "You must be connected to a server to reset your stats", "SERVER_TB_TEXT": "You're temporarily banned",
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "view your stats", "SERVER_WARNING": "WARNING",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "The specified player must be ingame", "SERVER_WARNLIMT_REACHED": "Too many warnings",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "You must be ingame to view your stats", "SERVER_WEBSITE_GENERIC": "this server's website",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Cannot find the player you specified", "SETUP_DISPLAY_SOCIAL": "Display social media link on webfront (discord, website, VK, etc..)",
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Stats for", "SETUP_ENABLE_CUSTOMSAY": "Enable custom say name",
"PLUGINS_STATS_COMMANDS_TOP_DESC": "view the top 5 players in this server", "SETUP_ENABLE_MULTIOWN": "Enable multiple owners",
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Players", "SETUP_ENABLE_STEPPEDPRIV": "Enable stepped privilege hierarchy",
"PLUGINS_STATS_TEXT_KILLS": "KILLS", "SETUP_ENABLE_VPNS": "Enable client VPNs",
"PLUGINS_STATS_TEXT_DEATHS": "DEATHS", "SETUP_ENABLE_WEBFRONT": "Enable webfront",
"PLUGINS_STATS_TEXT_SKILL": "SKILL", "SETUP_ENCODING_STRING": "Enter encoding string",
"GLOBAL_DAYS": "days", "SETUP_IPHUB_KEY": "Enter iphub.info api key",
"GLOBAL_HOURS": "hours", "SETUP_SAY_NAME": "Enter custom say name",
"GLOBAL_MINUTES": "minutes", "SETUP_SERVER_IP": "Enter server IP Address",
"GLOBAL_REPORT": "If you suspect someone of ^5CHEATING ^7use the ^5!report ^7command", "SETUP_SERVER_MANUALLOG": "Enter manual log file path",
"GLOBAL_ERROR": "Error", "SETUP_SERVER_PORT": "Enter server port",
"GLOBAL_WARNING": "Warning", "SETUP_SERVER_RCON": "Enter server RCon password",
"GLOBAL_INFO": "Info", "SETUP_SERVER_SAVE": "Configuration saved, add another",
"GLOBAL_VERBOSE": "Verbose", "SETUP_SERVER_USEIW5M": "Use Pluto IW5 Parser",
"SETUP_SERVER_USET6M": "Use Pluto T6 parser",
"MANAGER_CONSOLE_NOSERV": "No servers are currently being monitored", "SETUP_SOCIAL_LINK": "Enter social media link",
"SERVER_PLUGIN_ERROR": "A plugin generated an error", "SETUP_SOCIAL_TITLE": "Enter social media name",
"PLUGINS_STATS_TEXT_NOQUALIFY": "No players qualify for top stats yet" "SETUP_USE_CUSTOMENCODING": "Use custom encoding parser",
} "WEBFRONT_ACTION_BAN_NAME": "Ban",
} "WEBFRONT_ACTION_LABEL_ID": "Client ID",
} "WEBFRONT_ACTION_LABEL_PASSWORD": "Password",
"WEBFRONT_ACTION_LABEL_REASON": "Reason",
"WEBFRONT_ACTION_LOGIN_NAME": "Login",
"WEBFRONT_ACTION_UNBAN_NAME": "Unban",
"WEBFRONT_CLIENT_META_FALSE": "Is not",
"WEBFRONT_CLIENT_META_JOINED": "Joined with alias",
"WEBFRONT_CLIENT_META_MASKED": "Masked",
"WEBFRONT_CLIENT_META_TRUE": "Is",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Privileged Clients",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Profile",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Clients Matching",
"WEBFRONT_CONSOLE_EXECUTE": "Execute",
"WEBFRONT_CONSOLE_TITLE": "Web Console",
"WEBFRONT_ERROR_DESC": "IW4MAdmin encountered an error",
"WEBFRONT_ERROR_GENERIC_DESC": "An error occurred while processing your request",
"WEBFRONT_ERROR_GENERIC_TITLE": "Sorry!",
"WEBFRONT_ERROR_TITLE": "Error!",
"WEBFRONT_HOME_TITLE": "Server Overview",
"WEBFRONT_NAV_CONSOLE": "Console",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_HOME": "Home",
"WEBFRONT_NAV_LOGOUT": "Logout",
"WEBFRONT_NAV_PENALTIES": "Penalties",
"WEBFRONT_NAV_PRIVILEGED": "Admins",
"WEBFRONT_NAV_PROFILE": "Client Profile",
"WEBFRONT_NAV_SEARCH": "Find Client",
"WEBFRONT_NAV_SOCIAL": "Social",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Admin",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "ago",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Name",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Offense",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "left",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Show",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Show only",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Time/Left",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Type",
"WEBFRONT_PENALTY_TITLE": "Client Penalties",
"WEBFRONT_PROFILE_FSEEN": "First seen",
"WEBFRONT_PROFILE_LEVEL": "Level",
"WEBFRONT_PROFILE_LSEEN": "Last seen",
"WEBFRONT_PROFILE_PLAYER": "Played",
"PLUGIN_STATS_SETUP_ENABLEAC ": "Enable server-side anti-cheat (IW4 only)",
"PLUGIN_STATS_ERROR_ADD": "Could not add server to server stats",
"PLUGIN_STATS_CHEAT_DETECTED": "You appear to be cheating",
"PLUGINS_STATS_TEXT_KDR": "KDR",
"PLUGINS_STATS_META_SPM": "Score per Minute",
"PLUGINS_WELCOME_USERANNOUNCE": "^5{{ClientName}} ^7hails from ^5{{ClientLocation}}",
"PLUGINS_WELCOME_USERWELCOME": "Welcome ^5{{ClientName}}^7, this is your ^5{{TimesConnected}} ^7time connecting!",
"PLUGINS_WELCOME_PRIVANNOUNCE": "{{ClientLevel}} {{ClientName}} has joined the server",
"PLUGINS_LOGIN_AUTH": "not logged in",
"PLUGINS_PROFANITY_SETUP_ENABLE": "Enable profanity deterring",
"PLUGINS_PROFANITY_WARNMSG": "Please do not use profanity on this server",
"PLUGINS_PROFANITY_KICKMSG": "Excessive use of profanity"
}
}
}

View File

@ -1,204 +1,258 @@
{  {
"LocalizationName": "es-ES", "LocalizationName": "es-EC",
"LocalizationIndex": { "LocalizationIndex": {
"Set": { "Set": {
"MANAGER_VERSION_FAIL": "No se ha podido conseguir la última versión de IW4MAdmin", "BROADCAST_OFFLINE": "^5IW4MAdmin ^7está ^1DESCONECTANDOSE",
"MANAGER_VERSION_UPDATE": "tiene una actualización. La última versión es", "BROADCAST_ONLINE": "^5IW4MADMIN ^7está ahora ^2en línea",
"MANAGER_VERSION_CURRENT": "Tu versión es", "COMMAND_HELP_OPTIONAL": "opcional",
"MANAGER_VERSION_SUCCESS": "IW4MAdmin está actualizado", "COMMAND_HELP_SYNTAX": "sintaxis:",
"MANAGER_INIT_FAIL": "Error fatal durante la inicialización", "COMMAND_MISSINGARGS": "No se han proporcionado suficientes argumentos",
"MANAGER_EXIT": "Presione cualquier tecla para salir...", "COMMAND_NOACCESS": "Tú no tienes acceso a ese comando",
"MANAGER_SHUTDOWN_SUCCESS": "Apagado completo", "COMMAND_NOTAUTHORIZED": "Tú no estás autorizado para ejecutar ese comando",
"MANAGER_MONITORING_TEXT": "Ahora monitoreando", "COMMAND_TARGET_MULTI": "Múltiples jugadores coinciden con ese nombre",
"MANAGER_CONNECTION_REST": "La conexión ha sido restablecida con", "COMMAND_TARGET_NOTFOUND": "No se puede encontrar el jugador especificado",
"SETUP_ENABLE_WEBFRONT": "Habilitar frente de la web", "COMMAND_UNKNOWN": "Has ingresado un comando desconocido",
"SETUP_ENABLE_MULTIOWN": "Habilitar múltiples propietarios", "COMMANDS_ADMINS_DESC": "enlistar clientes privilegiados actualmente conectados",
"SETUP_ENABLE_STEPPEDPRIV": "Habilitar jerarquía de privilegios por escalones", "COMMANDS_ADMINS_NONE": "No hay administradores visibles en línea",
"SETUP_ENABLE_CUSTOMSAY": "Habilitar nombre a decir personalizado", "COMMANDS_ALIAS_ALIASES": "Aliases",
"SETUP_SAY_NAME": "Ingresar nombre a decir personalizado", "COMMANDS_ALIAS_DESC": "obtener alias e ips anteriores de un cliente",
"SETUP_USE_CUSTOMENCODING": "Usar analizador de codificación personalizado", "COMMANDS_ALIAS_IPS": "IPs",
"SETUP_ENCODING_STRING": "Ingresar cadena de codificación", "COMMANDS_ARGS_CLEAR": "borrar",
"SETUP_ENABLE_VPNS": "Habilitar VPNs clientes", "COMMANDS_ARGS_CLIENTID": "id del cliente",
"SETUP_IPHUB_KEY": "Ingresar clave api de iphub.info", "COMMANDS_ARGS_COMMANDS": "comandos",
"SETUP_DISPLAY_SOCIAL": "Mostrar el link del medio de comunicación en la parte frontal de la web. (discord, website, VK, etc..)", "COMMANDS_ARGS_DURATION": "duración (m|h|d|w|y)",
"SETUP_SOCIAL_LINK": "Ingresar link del medio de comunicación", "COMMANDS_ARGS_INACTIVE": "días inactivo",
"SETUP_SOCIAL_TITLE": "Ingresa el nombre de la red de comunicación", "COMMANDS_ARGS_LEVEL": "nivel",
"SETUP_SERVER_USET6M": "Usar analizador Pluto T6", "COMMANDS_ARGS_MAP": "mapa",
"SETUP_SERVER_USEIW5M": "Usar analizador Pluto IW5", "COMMANDS_ARGS_MESSAGE": "mensaje",
"SETUP_SERVER_MANUALLOG": "Ingresar manualmente la ruta del archivo de registro", "COMMANDS_ARGS_PASSWORD": "contraseña",
"SETUP_SERVER_IP": "Ingresar Dirección IP del servidor", "COMMANDS_ARGS_PLAYER": "jugador",
"SETUP_SERVER_PORT": "Ingresar puerto del servidor", "COMMANDS_ARGS_REASON": "razón",
"SETUP_SERVER_RCON": "Ingresar contraseña RCon del servidor", "COMMANDS_BAN_DESC": "banear permanentemente un cliente del servidor",
"SETUP_SERVER_SAVE": "Configuración guardada, añadir otra", "COMMANDS_BAN_FAIL": "Tú no puedes banear",
"SERVER_ERROR_DNE": "No existe", "COMMANDS_BAN_SUCCESS": "ha sido baneado permanentemente",
"SERVER_ERROR_LOG": "Archivo de registro del juego invalido", "COMMANDS_BANINFO_DESC": "obtener información sobre el ban de un cliente",
"SERVER_ERROR_COMMAND_INGAME": "Un error interno ocurrió mientras se procesaba tu comando", "COMMANDS_BANINFO_NONE": "No se encontró ban activo para ese jugador",
"SERVER_ERROR_COMMAND_LOG": "Comando generó error", "COMMANDS_BANINO_SUCCESS": "fue baneado por ^5{0} ^7debido a:",
"SERVER_ERROR_UNFIXABLE": "No se está supervisando el servidor debido a errores incorregibles", "COMMANDS_FASTRESTART_DESC": "dar reinicio rápido al mapa actial",
"SERVER_ERROR_DVAR": "No se pudo obtener el valor dvar", "COMMANDS_FASTRESTART_MASKED": "Al mapa se le ha dado un reinicio rápido",
"SERVER_ERROR_DVAR_HELP": "asegúrate de que el servidor tenga un mapa cargado", "COMMANDS_FASTRESTART_UNMASKED": "ha dado rápido reinicio al mapa",
"SERVER_ERROR_PLUGIN": "Un error ocurrió mientras se cargaba el complemente", "COMMANDS_FIND_DESC": "encontrar cliente en la base de datos",
"SERVER_ERROR_ADDPLAYER": "Incapaz de añadir al jugador", "COMMANDS_FIND_EMPTY": "No se encontraron jugadores",
"SERVER_ERROR_POLLING": "reduciendo la tasa de sondeo", "COMMANDS_FIND_MIN": "Por Favor introduzca al menos 3 caracteres",
"SERVER_ERROR_COMMUNICATION": "No se ha podido comunicar con", "COMMANDS_FLAG_DESC": "marcar un cliente sospechoso y anunciar a los administradores al unirse",
"SERVER_ERROR_EXCEPTION": "Excepción inesperada en", "COMMANDS_FLAG_FAIL": "Tú no puedes marcar",
"SERVER_KICK_VPNS_NOTALLOWED": "Las VPNs no están permitidas en este servidor", "COMMANDS_FLAG_SUCCESS": "Has marcado a",
"SERVER_KICK_TEXT": "Fuiste expulsado", "COMMANDS_FLAG_UNFLAG": "Has desmarcado a",
"SERVER_KICK_MINNAME": "Tu nombre debe contener al menos 3 caracteres", "COMMANDS_HELP_DESC": "enlistar todos los comandos disponibles",
"SERVER_KICK_NAME_INUSE": "Tu nombre está siendo usado por alguien más", "COMMANDS_HELP_MOREINFO": "Escribe !help <nombre del comando> para obtener la sintaxis de uso del comando",
"SERVER_KICK_GENERICNAME": "Por favor cambia tu nombre usando /name", "COMMANDS_HELP_NOTFOUND": "No se ha podido encontrar ese comando",
"SERVER_KICK_CONTROLCHARS": "Tu nombre no puede contener caracteres de control", "COMMANDS_IP_DESC": "ver tu dirección IP externa",
"SERVER_TB_TEXT": "Estás temporalmente baneado", "COMMANDS_IP_SUCCESS": "Tu IP externa es",
"SERVER_TB_REMAIN": "Tú estás temporalmente baneado", "COMMANDS_KICK_DESC": "expulsar a un cliente por su nombre",
"SERVER_BAN_TEXT": "Estás baneado", "COMMANDS_KICK_FAIL": "No tienes los privilegios necesarios para expulsar a",
"SERVER_BAN_PREV": "Baneado anteriormente por", "COMMANDS_KICK_SUCCESS": "ha sido expulsado",
"SERVER_BAN_APPEAL": "apela en", "COMMANDS_LIST_DESC": "enlistar clientes activos",
"SERVER_REPORT_COUNT": "Hay ^5{0} ^7reportes recientes", "COMMANDS_MAP_DESC": "cambiar al mapa especificado",
"SERVER_WARNLIMT_REACHED": "Muchas advertencias", "COMMANDS_MAP_SUCCESS": "Cambiando al mapa",
"SERVER_WARNING": "ADVERTENCIA", "COMMANDS_MAP_UKN": "Intentando cambiar a un mapa desconocido",
"SERVER_WEBSITE_GENERIC": "el sitio web de este servidor", "COMMANDS_MAPROTATE": "Rotación de mapa en ^55 ^7segundos",
"BROADCAST_ONLINE": "^5IW4MADMIN ^7está ahora ^2en línea", "COMMANDS_MAPROTATE_DESC": "pasar al siguiente mapa en rotación",
"BROADCAST_OFFLINE": "IW4MAdmin está desconectado", "COMMANDS_MASK_DESC": "esconde tu presencia como un cliente privilegiado",
"COMMAND_HELP_SYNTAX": "sintaxis:", "COMMANDS_MASK_OFF": "Ahora estás desenmascarado",
"COMMAND_HELP_OPTIONAL": "opcional", "COMMANDS_MASK_ON": "Ahora estás enmascarado",
"COMMAND_UNKNOWN": "Has ingresado un comando desconocido", "COMMANDS_OWNER_DESC": "reclamar la propiedad del servidor",
"COMMAND_NOACCESS": "Tú no tienes acceso a ese comando", "COMMANDS_OWNER_FAIL": "Este servidor ya tiene un propietario",
"COMMAND_NOTAUTHORIZED": "Tú no estás autorizado para ejecutar ese comando", "COMMANDS_OWNER_SUCCESS": "¡Felicidades, has reclamado la propiedad de este servidor!",
"COMMAND_MISSINGARGS": "No se han proporcionado suficientes argumentos", "COMMANDS_PASSWORD_FAIL": "Tu contraseña debe tener al menos 5 caracteres de largo",
"COMMAND_TARGET_MULTI": "Múltiples jugadores coinciden con ese nombre", "COMMANDS_PASSWORD_SUCCESS": "Su contraseña ha sido establecida con éxito",
"COMMAND_TARGET_NOTFOUND": "No se puede encontrar el jugador especificado", "COMMANDS_PING_DESC": "obtener ping del cliente",
"PLUGIN_IMPORTER_NOTFOUND": "No se encontraron complementos para cargar", "COMMANDS_PING_SELF": "Tu ping es",
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado", "COMMANDS_PING_TARGET": "ping es",
"COMMANDS_OWNER_SUCCESS": "¡Felicidades, has reclamado la propiedad de este servidor!", "COMMANDS_PLUGINS_DESC": "ver todos los complementos cargados",
"COMMANDS_OWNER_FAIL": "Este servidor ya tiene un propietario", "COMMANDS_PLUGINS_LOADED": "Complementos cargados",
"COMMANDS_WARN_FAIL": "No tiene los privilegios necesarios para advertir a", "COMMANDS_PM_DESC": "enviar mensaje a otro cliente",
"COMMANDS_WARNCLEAR_SUCCESS": "Todas las advertencias borradas para", "COMMANDS_PRUNE_DESC": "degradar a los clientes con privilegios que no se hayan conectado recientemente (el valor predeterminado es 30 días)",
"COMMANDS_KICK_SUCCESS": "ha sido expulsado", "COMMANDS_PRUNE_FAIL": "Número inválido de días inactivos",
"COMMANDS_KICK_FAIL": "No tienes los privilegios necesarios para expulsar a", "COMMANDS_PRUNE_SUCCESS": "los usuarios privilegiados inactivos fueron podados",
"COMMANDS_TEMPBAN_SUCCESS": "ha sido baneado temporalmente por", "COMMANDS_QUIT_DESC": "salir de IW4MAdmin",
"COMMANDS_TEMPBAN_FAIL": "Tú no puedes banear temporalmente", "COMMANDS_RCON_DESC": "enviar el comando rcon al servidor",
"COMMANDS_BAN_SUCCESS": "ha sido baneado permanentemente", "COMMANDS_RCON_SUCCESS": "Exitosamente enviado el comando RCon",
"COMMANDS_BAN_FAIL": "Tú no puedes banear", "COMMANDS_REPORT_DESC": "reportar un cliente por comportamiento sospechoso",
"COMMANDS_UNBAN_SUCCESS": "Exitosamente desbaneado", "COMMANDS_REPORT_FAIL": "Tú no puedes reportar",
"COMMANDS_UNBAN_FAIL": "no está baneado", "COMMANDS_REPORT_FAIL_CAMP": "No puedes reportar a un jugador por campear",
"COMMANDS_HELP_NOTFOUND": "No se ha podido encontrar ese comando", "COMMANDS_REPORT_FAIL_DUPLICATE": "Ya has reportado a este jugador",
"COMMANDS_HELP_MOREINFO": "Escribe !help <nombre del comando> para obtener la sintaxis de uso del comando", "COMMANDS_REPORT_FAIL_SELF": "No puedes reportarte a ti mismo",
"COMMANDS_FASTRESTART_UNMASKED": "ha dado rápido reinicio al mapa", "COMMANDS_REPORT_SUCCESS": "Gracias por su reporte, un administrador ha sido notificado",
"COMMANDS_FASTRESTART_MASKED": "Al mapa se le ha dado un reinicio rápido", "COMMANDS_REPORTS_CLEAR_SUCCESS": "Reportes borrados con éxito",
"COMMANDS_MAPROTATE": "Rotación de mapa en ^55 ^7segundos", "COMMANDS_REPORTS_DESC": "obtener o borrar informes recientes",
"COMMANDS_SETLEVEL_SELF": "No puedes cambiar tu propio nivel", "COMMANDS_REPORTS_NONE": "No hay jugadores reportados aun",
"COMMANDS_SETLEVEL_OWNER": "Solo puede haber un propietario. Modifica tu configuración si múltiples propietarios son requeridos", "COMMANDS_RULES_DESC": "enlistar reglas del servidor",
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor no te permite promover", "COMMANDS_RULES_NONE": "El propietario del servidor no ha establecido ninguna regla",
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Tú solo puedes promover ^5{0} ^7a ^5{1} ^7o menor privilegio", "COMMANDS_SAY_DESC": "transmitir el mensaje a todos los clientes",
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "¡Felicitaciones! has ha sido promovido a", "COMMANDS_SETLEVEL_DESC": "establecer el cliente al nivel de privilegio especificado",
"COMMANDS_SETLEVEL_SUCCESS": "fue promovido con éxito", "COMMANDS_SETLEVEL_FAIL": "Grupo inválido especificado",
"COMMANDS_SETLEVEL_FAIL": "Grupo inválido especificado", "COMMANDS_SETLEVEL_LEVELTOOHIGH": "Tú solo puedes promover ^5{0} ^7a ^5{1} ^7o menor privilegio",
"COMMANDS_ADMINS_NONE": "No hay administradores visibles en línea", "COMMANDS_SETLEVEL_OWNER": "Solo puede haber un propietario. Modifica tu configuración si múltiples propietarios son requeridos",
"COMMANDS_MAP_SUCCESS": "Cambiando al mapa", "COMMANDS_SETLEVEL_SELF": "No puedes cambiar tu propio nivel",
"COMMANDS_MAP_UKN": "Intentando cambiar a un mapa desconocido", "COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor no te permite promover",
"COMMANDS_FIND_MIN": "Por Favor introduzca al menos 3 caracteres", "COMMANDS_SETLEVEL_SUCCESS": "fue promovido con éxito",
"COMMANDS_FIND_EMPTY": "No se encontraron jugadores", "COMMANDS_SETLEVEL_SUCCESS_TARGET": "¡Felicitaciones! has ha sido promovido a",
"COMMANDS_RULES_NONE": "El propietario del servidor no ha establecido ninguna regla", "COMMANDS_SETPASSWORD_DESC": "configura tu contraseña de autenticación",
"COMMANDS_FLAG_SUCCESS": "Has marcado a", "COMMANDS_TEMPBAN_DESC": "banear temporalmente a un cliente por el tiempo especificado (predeterminado en 1 hora)",
"COMMANDS_FLAG_UNFLAG": "Has desmarcado a", "COMMANDS_TEMPBAN_FAIL": "Tú no puedes banear temporalmente",
"COMMANDS_FLAG_FAIL": "Tú no puedes marcar", "COMMANDS_TEMPBAN_SUCCESS": "ha sido baneado temporalmente por",
"COMMANDS_REPORT_FAIL_CAMP": "No puedes reportar a un jugador por campear", "COMMANDS_UNBAN_DESC": "desbanear al cliente por ID",
"COMMANDS_REPORT_FAIL_DUPLICATE": "Ya has reportado a este jugador", "COMMANDS_UNBAN_FAIL": "no está baneado",
"COMMANDS_REPORT_FAIL_SELF": "No puedes reportarte a ti mismo", "COMMANDS_UNBAN_SUCCESS": "Exitosamente desbaneado",
"COMMANDS_REPORT_FAIL": "Tú no puedes reportar", "COMMANDS_UPTIME_DESC": "obtener el tiempo de ejecución de la aplicación actual",
"COMMANDS_REPORT_SUCCESS": "Gracias por su reporte, un administrador ha sido notificado", "COMMANDS_UPTIME_TEXT": "ha estado en línea por",
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reportes borrados con éxito", "COMMANDS_USAGE_DESC": "obtener uso de la memoria de la aplicación",
"COMMANDS_REPORTS_NONE": "No hay jugadores reportados aun", "COMMANDS_USAGE_TEXT": "está usando",
"COMMANDS_MASK_ON": "Ahora estás enmascarado", "COMMANDS_WARN_DESC": "advertir al cliente por infringir las reglas",
"COMMANDS_MASK_OFF": "Ahora estás desenmascarado", "COMMANDS_WARN_FAIL": "No tiene los privilegios necesarios para advertir a",
"COMMANDS_BANINFO_NONE": "No se encontró ban activo para ese jugador", "COMMANDS_WARNCLEAR_DESC": "eliminar todas las advertencias de un cliente",
"COMMANDS_BANINO_SUCCESS": "fue baneado por ^5{0} ^7debido a:", "COMMANDS_WARNCLEAR_SUCCESS": "Todas las advertencias borradas para",
"COMMANDS_ALIAS_ALIASES": "Aliases", "COMMANDS_WHO_DESC": "da información sobre ti",
"COMMANDS_ALIAS_IPS": "IPs", "GLOBAL_DAYS": "días",
"COMMANDS_RCON_SUCCESS": "Exitosamente enviado el comando RCon", "GLOBAL_ERROR": "Error",
"COMMANDS_PLUGINS_LOADED": "Complementos cargados", "GLOBAL_HOURS": "horas",
"COMMANDS_IP_SUCCESS": "Tu IP externa es", "GLOBAL_INFO": "Información",
"COMMANDS_PRUNE_FAIL": "Número inválido de días inactivos", "GLOBAL_MINUTES": "minutos",
"COMMANDS_PRUNE_SUCCESS": "los usuarios privilegiados inactivos fueron podados", "GLOBAL_REPORT": "Si sospechas que alguien ^5usa cheats ^7usa el comando ^5!report",
"COMMANDS_PASSWORD_FAIL": "Tu contraseña debe tener al menos 5 caracteres de largo", "GLOBAL_VERBOSE": "Detallado",
"COMMANDS_PASSWORD_SUCCESS": "Su contraseña ha sido establecida con éxito", "GLOBAL_WARNING": "Advertencia",
"COMMANDS_PING_TARGET": "ping es", "MANAGER_CONNECTION_REST": "La conexión ha sido restablecida con",
"COMMANDS_PING_SELF": "Tu ping es", "MANAGER_CONSOLE_NOSERV": "No hay servidores que estén siendo monitoreados en este momento",
"COMMANDS_QUIT_DESC": "salir de IW4MAdmin", "MANAGER_EXIT": "Presione cualquier tecla para salir...",
"COMMANDS_OWNER_DESC": "reclamar la propiedad del servidor", "MANAGER_INIT_FAIL": "Error fatal durante la inicialización",
"COMMANDS_WARN_DESC": "advertir al cliente por infringir las reglas", "MANAGER_MONITORING_TEXT": "Ahora monitoreando",
"COMMANDS_WARNCLEAR_DESC": "eliminar todas las advertencias de un cliente", "MANAGER_SHUTDOWN_SUCCESS": "Apagado completo",
"COMMANDS_KICK_DESC": "expulsar a un cliente por su nombre", "MANAGER_VERSION_CURRENT": "Tu versión es",
"COMMANDS_SAY_DESC": "transmitir el mensaje a todos los clientes", "MANAGER_VERSION_FAIL": "No se ha podido conseguir la última versión de IW4MAdmin",
"COMMANDS_TEMPBAN_DESC": "banear temporalmente a un cliente por el tiempo especificado (predeterminado en 1 hora)", "MANAGER_VERSION_SUCCESS": "IW4MAdmin está actualizado",
"COMMANDS_BAN_DESC": "banear permanentemente un cliente del servidor", "MANAGER_VERSION_UPDATE": "tiene una actualización. La última versión es",
"COMMANDS_UNBAN_DESC": "desbanear al cliente por ID", "PLUGIN_IMPORTER_NOTFOUND": "No se encontraron complementos para cargar",
"COMMANDS_WHO_DESC": "da información sobre ti", "PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
"COMMANDS_LIST_DESC": "enlistar clientes activos", "PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "iniciar sesión usando la contraseña",
"COMMANDS_HELP_DESC": "enlistar todos los comandos disponibles", "PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "tu contraseña es incorrecta",
"COMMANDS_FASTRESTART_DESC": "dar reinicio rápido al mapa actial", "PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Ahora está conectado",
"COMMANDS_MAPROTATE_DESC": "pasar al siguiente mapa en rotación", "PLUGINS_STATS_COMMANDS_RESET_DESC": "restablece tus estadísticas a las nuevas de fábrica",
"COMMANDS_SETLEVEL_DESC": "establecer el cliente al nivel de privilegio especificado", "PLUGINS_STATS_COMMANDS_RESET_FAIL": "Debes estar conectado a un servidor para restablecer tus estadísticas",
"COMMANDS_USAGE_DESC": "obtener uso de la memoria de la aplicación", "PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Tus estadísticas para este servidor se han restablecido",
"COMMANDS_USAGE_TEXT": "está usando", "PLUGINS_STATS_COMMANDS_TOP_DESC": "ver los 5 mejores jugadores en este servidor",
"COMMANDS_UPTIME_DESC": "obtener el tiempo de ejecución de la aplicación actual", "PLUGINS_STATS_COMMANDS_TOP_TEXT": "Mejores Jugadores",
"COMMANDS_UPTIME_TEXT": "ha estado en línea por", "PLUGINS_STATS_COMMANDS_VIEW_DESC": "ver tus estadísticas",
"COMMANDS_ADMINS_DESC": "enlistar clientes privilegiados actualmente conectados", "PLUGINS_STATS_COMMANDS_VIEW_FAIL": "No se puede encontrar el jugador que especificó",
"COMMANDS_MAP_DESC": "cambiar al mapa especificado", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "El jugador especificado debe estar dentro del juego",
"COMMANDS_FIND_DESC": "encontrar cliente en la base de datos", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Debes estar dentro del juego para ver tus estadísticas",
"COMMANDS_RULES_DESC": "enlistar reglas del servidor", "PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estadísticas para",
"COMMANDS_PM_DESC": "enviar mensaje a otro cliente", "PLUGINS_STATS_TEXT_DEATHS": "Muertes",
"COMMANDS_FLAG_DESC": "marcar un cliente sospechoso y anunciar a los administradores al unirse", "PLUGINS_STATS_TEXT_KILLS": "Asesinatos",
"COMMANDS_REPORT_DESC": "reportar un cliente por comportamiento sospechoso", "PLUGINS_STATS_TEXT_NOQUALIFY": "No hay jugadores que califiquen para los primeros lugares aun",
"COMMANDS_REPORTS_DESC": "obtener o borrar informes recientes", "PLUGINS_STATS_TEXT_SKILL": "Habilidad",
"COMMANDS_MASK_DESC": "esconde tu presencia como un cliente privilegiado", "SERVER_BAN_APPEAL": "apela en",
"COMMANDS_BANINFO_DESC": "obtener información sobre el ban de un cliente", "SERVER_BAN_PREV": "Baneado anteriormente por",
"COMMANDS_ALIAS_DESC": "obtener alias e ips anteriores de un cliente", "SERVER_BAN_TEXT": "Estás baneado",
"COMMANDS_RCON_DESC": "enviar el comando rcon al servidor", "SERVER_ERROR_ADDPLAYER": "Incapaz de añadir al jugador",
"COMMANDS_PLUGINS_DESC": "ver todos los complementos cargados", "SERVER_ERROR_COMMAND_INGAME": "Un error interno ocurrió mientras se procesaba tu comando",
"COMMANDS_IP_DESC": "ver tu dirección IP externa", "SERVER_ERROR_COMMAND_LOG": "Comando generó error",
"COMMANDS_PRUNE_DESC": "degradar a los clientes con privilegios que no se hayan conectado recientemente (el valor predeterminado es 30 días)", "SERVER_ERROR_COMMUNICATION": "No se ha podido comunicar con",
"COMMANDS_SETPASSWORD_DESC": "configura tu contraseña de autenticación", "SERVER_ERROR_DNE": "No existe",
"COMMANDS_PING_DESC": "obtener ping del cliente", "SERVER_ERROR_DVAR": "No se pudo obtener el valor dvar",
"COMMANDS_ARGS_PLAYER": "jugador", "SERVER_ERROR_DVAR_HELP": "asegúrate de que el servidor tenga un mapa cargado",
"COMMANDS_ARGS_REASON": "razón", "SERVER_ERROR_EXCEPTION": "Excepción inesperada en",
"COMMANDS_ARGS_MESSAGE": "mensaje", "SERVER_ERROR_LOG": "Archivo de registro del juego invalido",
"COMMANDS_ARGS_DURATION": "duración (m|h|d|w|y)", "SERVER_ERROR_PLUGIN": "Un error ocurrió mientras se cargaba el complemente",
"COMMANDS_ARGS_CLIENTID": "id del cliente", "SERVER_ERROR_POLLING": "reduciendo la tasa de sondeo",
"COMMANDS_ARGS_COMMANDS": "comandos", "SERVER_ERROR_UNFIXABLE": "No se está supervisando el servidor debido a errores incorregibles",
"COMMANDS_ARGS_LEVEL": "nivel", "SERVER_KICK_CONTROLCHARS": "Tu nombre no puede contener caracteres de control",
"COMMANDS_ARGS_MAP": "mapa", "SERVER_KICK_GENERICNAME": "Por favor cambia tu nombre usando /name",
"COMMANDS_ARGS_CLEAR": "borrar", "SERVER_KICK_MINNAME": "Tu nombre debe contener al menos 3 caracteres",
"COMMANDS_ARGS_INACTIVE": "días inactivo", "SERVER_KICK_NAME_INUSE": "Tu nombre está siendo usado por alguien más",
"COMMANDS_ARGS_PASSWORD": "contraseña", "SERVER_KICK_TEXT": "Fuiste expulsado",
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "iniciar sesión usando la contraseña", "SERVER_KICK_VPNS_NOTALLOWED": "Las VPNs no están permitidas en este servidor",
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Ahora está conectado", "SERVER_PLUGIN_ERROR": "Un complemento generó un error",
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "tu contraseña es incorrecta", "SERVER_REPORT_COUNT": "Hay ^5{0} ^7reportes recientes",
"PLUGINS_STATS_COMMANDS_RESET_DESC": "restablece tus estadísticas a las nuevas de fábrica", "SERVER_TB_REMAIN": "Tú estás temporalmente baneado",
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Tus estadísticas para este servidor se han restablecido", "SERVER_TB_TEXT": "Estás temporalmente baneado",
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Debes estar conectado a un servidor para restablecer tus estadísticas", "SERVER_WARNING": "ADVERTENCIA",
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "ver tus estadísticas", "SERVER_WARNLIMT_REACHED": "Muchas advertencias",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "El jugador especificado debe estar dentro del juego", "SERVER_WEBSITE_GENERIC": "el sitio web de este servidor",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Debes estar dentro del juego para ver tus estadísticas", "SETUP_DISPLAY_SOCIAL": "Mostrar el link del medio de comunicación en la parte frontal de la web. (discord, website, VK, etc..)",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "No se puede encontrar el jugador que especificó", "SETUP_ENABLE_CUSTOMSAY": "Habilitar nombre a decir personalizado",
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estadísticas para", "SETUP_ENABLE_MULTIOWN": "Habilitar múltiples propietarios",
"PLUGINS_STATS_COMMANDS_TOP_DESC": "ver los 5 mejores jugadores en este servidor", "SETUP_ENABLE_STEPPEDPRIV": "Habilitar jerarquía de privilegios por escalones",
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Mejores Jugadores", "SETUP_ENABLE_VPNS": "Habilitar VPNs clientes",
"PLUGINS_STATS_TEXT_KILLS": "Asesinatos", "SETUP_ENABLE_WEBFRONT": "Habilitar frente de la web",
"PLUGINS_STATS_TEXT_DEATHS": "Muertes", "SETUP_ENCODING_STRING": "Ingresar cadena de codificación",
"PLUGINS_STATS_TEXT_SKILL": "Habilidad", "SETUP_IPHUB_KEY": "Ingresar clave api de iphub.info",
"GLOBAL_DAYS": "días", "SETUP_SAY_NAME": "Ingresar nombre a decir personalizado",
"GLOBAL_HOURS": "horas", "SETUP_SERVER_IP": "Ingresar Dirección IP del servidor",
"GLOBAL_MINUTES": "minutos", "SETUP_SERVER_MANUALLOG": "Ingresar manualmente la ruta del archivo de registro",
"GLOBAL_REPORT": "Si sospechas que alguien ^5usa cheats ^7usa el comando ^5!report", "SETUP_SERVER_PORT": "Ingresar puerto del servidor",
"GLOBAL_ERROR": "Error", "SETUP_SERVER_RCON": "Ingresar contraseña RCon del servidor",
"GLOBAL_WARNING": "Advertencia", "SETUP_SERVER_SAVE": "Configuración guardada, añadir otra",
"GLOBAL_INFO": "Información", "SETUP_SERVER_USEIW5M": "Usar analizador Pluto IW5",
"GLOBAL_VERBOSE": "Detallado", "SETUP_SERVER_USET6M": "Usar analizador Pluto T6",
"SETUP_SOCIAL_LINK": "Ingresar link del medio de comunicación",
"MANAGER_CONSOLE_NOSERV": "No hay servidores que estén siendo monitoreados en este momento", "SETUP_SOCIAL_TITLE": "Ingresa el nombre de la red de comunicación",
"SERVER_PLUGIN_ERROR": "Un complemento generó un error", "SETUP_USE_CUSTOMENCODING": "Usar analizador de codificación personalizado",
"PLUGINS_STATS_TEXT_NOQUALIFY": "No hay jugadores que califiquen para los primeros lugares aun" "WEBFRONT_ACTION_BAN_NAME": "Ban",
} "WEBFRONT_ACTION_LABEL_ID": "ID del Cliente",
} "WEBFRONT_ACTION_LABEL_PASSWORD": "Contraseña",
} "WEBFRONT_ACTION_LABEL_REASON": "Razón",
"WEBFRONT_ACTION_LOGIN_NAME": "Inicio de sesión",
"WEBFRONT_ACTION_UNBAN_NAME": "Desban",
"WEBFRONT_CLIENT_META_FALSE": "No está",
"WEBFRONT_CLIENT_META_JOINED": "Se unió con el alias",
"WEBFRONT_CLIENT_META_MASKED": "Enmascarado",
"WEBFRONT_CLIENT_META_TRUE": "Está",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Clientes privilegiados",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Perfil",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Clientes que concuerdan",
"WEBFRONT_CONSOLE_EXECUTE": "Ejecutar",
"WEBFRONT_CONSOLE_TITLE": "Consola Web",
"WEBFRONT_ERROR_DESC": "IW4MAdmin encontró un error",
"WEBFRONT_ERROR_GENERIC_DESC": "Un error ha ocurrido mientras se procesaba tu solicitud",
"WEBFRONT_ERROR_GENERIC_TITLE": "¡Lo lamento!",
"WEBFRONT_ERROR_TITLE": "¡Error!",
"WEBFRONT_HOME_TITLE": "Vista general del servidor",
"WEBFRONT_NAV_CONSOLE": "Consola",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_HOME": "Inicio",
"WEBFRONT_NAV_LOGOUT": "Cerrar sesión",
"WEBFRONT_NAV_PENALTIES": "Sanciones",
"WEBFRONT_NAV_PRIVILEGED": "Administradores",
"WEBFRONT_NAV_PROFILE": "Perfil del cliente",
"WEBFRONT_NAV_SEARCH": "Encontrar cliente",
"WEBFRONT_NAV_SOCIAL": "Social",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Administrador",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "atrás",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Nombre",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Ofensa",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "restante",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Mostrar",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Mostrar solamente",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Tiempo/Restante",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Tipo",
"WEBFRONT_PENALTY_TITLE": "Faltas del cliente",
"WEBFRONT_PROFILE_FSEEN": "Primera vez visto hace",
"WEBFRONT_PROFILE_LEVEL": "Nivel",
"WEBFRONT_PROFILE_LSEEN": "Última vez visto hace",
"WEBFRONT_PROFILE_PLAYER": "Jugadas",
"PLUGIN_STATS_SETUP_ENABLEAC ": "Habilitar anti-trampas junto al servidor (solo IW4)",
"PLUGIN_STATS_ERROR_ADD": "No se puedo añadir servidor a los estados del servidor",
"PLUGIN_STATS_CHEAT_DETECTED": "Pareces estar haciendo trampa",
"PLUGINS_STATS_TEXT_KDR": "KDR",
"PLUGINS_STATS_META_SPM": "Puntaje por minuto",
"PLUGINS_WELCOME_USERANNOUNCE": "^5{{ClientName}} ^7llega desde ^5{{ClientLocation}}",
"PLUGINS_WELCOME_USERWELCOME": "¡Bienvenido ^5{{ClientName}}^7, esta es tu visita numero ^5{{TimesConnected}} ^7 en el servidor!",
"PLUGINS_WELCOME_PRIVANNOUNCE": "{{ClientLevel}} {{ClientName}} Se ha unido al servidor",
"PLUGINS_LOGIN_AUTH": "No registrado",
"PLUGINS_PROFANITY_SETUP_ENABLE": "Habilitar la disuasión de blasfemias",
"PLUGINS_PROFANITY_WARNMSG": "Por favor no uses blasfemias en este servidor",
"PLUGINS_PROFANITY_KICKMSG": "Excesivo uso de blasfemias"
}
}
}

View File

@ -1,203 +1,258 @@
{  {
"LocalizationName": "pt-BR", "LocalizationName": "pt-BR",
"LocalizationIndex": { "LocalizationIndex": {
"Set": { "Set": {
"MANAGER_VERSION_FAIL": "Não foi possível obter a versão mais recente do IW4MAdmin", "BROADCAST_OFFLINE": "IW4MAdmin ficou offline",
"MANAGER_VERSION_UPDATE": "Há uma atualização disponível. A versão mais recente é", "BROADCAST_ONLINE": "^5IW4MADMIN ^7agora está ^2ONLINE",
"MANAGER_VERSION_CURRENT": "Está é a sua versão", "COMMAND_HELP_OPTIONAL": "opcional",
"MANAGER_VERSION_SUCCESS": "O IW4MAdmin está atualizado", "COMMAND_HELP_SYNTAX": "sintaxe:",
"MANAGER_INIT_FAIL": "Erro fatal durante a inicialização", "COMMAND_MISSINGARGS": "Não foram oferecidos argumentos suficientes",
"MANAGER_EXIT": "Pressione qualquer tecla para sair...", "COMMAND_NOACCESS": "Você não tem acesso a este comando",
"MANAGER_SHUTDOWN_SUCCESS": "Desligamento concluído", "COMMAND_NOTAUTHORIZED": "Você não está autorizado a executar este comando",
"MANAGER_MONITORING_TEXT": "Agora monitorando", "COMMAND_TARGET_MULTI": "Vários jogadores correspondem a esse nome",
"MANAGER_CONNECTION_REST": "A conexão foi reestabelecida com", "COMMAND_TARGET_NOTFOUND": "Não é possível encontrar o jogador especificado",
"SETUP_ENABLE_WEBFRONT": "Habilitar o módulo da web do IW4MAdmin", "COMMAND_UNKNOWN": "Você digitou um comando desconhecido",
"SETUP_ENABLE_MULTIOWN": "Ativar vários proprietários", "COMMANDS_ADMINS_DESC": "lista os clientes privilegiados conectados no momento",
"SETUP_ENABLE_STEPPEDPRIV": "Ativar hierarquia de privilégios escalonada", "COMMANDS_ADMINS_NONE": "Não há administradores visíveis online",
"SETUP_ENABLE_CUSTOMSAY": "Habilitar a customização do nome do comando say", "COMMANDS_ALIAS_ALIASES": "Nomes registrados",
"SETUP_SAY_NAME": "Digite o nome customizado do comando say", "COMMANDS_ALIAS_DESC": "obtém a lista de histórico de nomes que o jogador usou no servidor",
"SETUP_USE_CUSTOMENCODING": "Usar o analisador de codificação customizado", "COMMANDS_ALIAS_IPS": "IPs",
"SETUP_ENCODING_STRING": "Digite a string de codificação", "COMMANDS_ARGS_CLEAR": "apagar",
"SETUP_ENABLE_VPNS": "Habilitar que os usuários usem VPN", "COMMANDS_ARGS_CLIENTID": "id do jogador",
"SETUP_IPHUB_KEY": "Digite iphub.info api key", "COMMANDS_ARGS_COMMANDS": "comandos",
"SETUP_DISPLAY_DISCORD": "Exibir link do Discord no módulo de web", "COMMANDS_ARGS_DURATION": "duração (m|h|d|w|y)",
"SETUP_DISCORD_INVITE": "Digitar link do convite do Discord", "COMMANDS_ARGS_INACTIVE": "dias inativos",
"SETUP_SERVER_USET6M": "Usar Pluto T6 parser", "COMMANDS_ARGS_LEVEL": "nível",
"SETUP_SERVER_USEIW5M": "Usar Pluto IW5 Parser", "COMMANDS_ARGS_MAP": "mapa",
"SETUP_SERVER_MANUALLOG": "Insira o caminho do arquivo de log manualmente", "COMMANDS_ARGS_MESSAGE": "mensagem",
"SETUP_SERVER_IP": "Digite o endereço IP do servidor", "COMMANDS_ARGS_PASSWORD": "senha",
"SETUP_SERVER_PORT": "Digite a porta do servidor", "COMMANDS_ARGS_PLAYER": "jogador",
"SETUP_SERVER_RCON": "Digite a senha do RCon do servidor", "COMMANDS_ARGS_REASON": "razão",
"SETUP_SERVER_SAVE": "Configuração salva, adicionar outra", "COMMANDS_BAN_DESC": "banir permanentemente um cliente do servidor",
"SERVER_ERROR_DNE": "não existe", "COMMANDS_BAN_FAIL": "Você não pode banir permanentemente",
"SERVER_ERROR_LOG": "Log do jogo inválido", "COMMANDS_BAN_SUCCESS": "foi banido permanentemente",
"SERVER_ERROR_COMMAND_INGAME": "Ocorreu um erro interno ao processar seu comando", "COMMANDS_BANINFO_DESC": "obtém informações sobre um banimento para um jogador",
"SERVER_ERROR_COMMAND_LOG": "o comando gerou um erro", "COMMANDS_BANINFO_NONE": "Nenhum banimento ativo foi encontrado para esse jogador",
"SERVER_ERROR_UNFIXABLE": "Não monitorando o servidor devido a erros incorrigíveis", "COMMANDS_BANINO_SUCCESS": "foi banido por ^5{0} ^7por:",
"SERVER_ERROR_DVAR": "Não foi possível obter o valor de dvar para", "COMMANDS_FASTRESTART_DESC": "reinicializa rapidamente o mapa atual, não recomendável o uso várias vezes seguidas",
"SERVER_ERROR_DVAR_HELP": "garanta que o servidor tenha um mapa carregado", "COMMANDS_FASTRESTART_MASKED": "O mapa foi reiniciado rapidamente",
"SERVER_ERROR_PLUGIN": "Ocorreu um erro ao carregar o plug-in", "COMMANDS_FASTRESTART_UNMASKED": "reiniciou rapidamente o mapa",
"SERVER_ERROR_ADDPLAYER": "Não foi possível adicionar o jogador", "COMMANDS_FIND_DESC": "acha o jogador na base de dados",
"SERVER_ERROR_POLLING": "reduzir a taxa de sondagem do server", "COMMANDS_FIND_EMPTY": "Nenhum jogador foi encontrado",
"SERVER_ERROR_COMMUNICATION": "Não foi possível fazer a comunicação com", "COMMANDS_FIND_MIN": "Por favor, insira pelo menos 3 caracteres",
"SERVER_ERROR_EXCEPTION": "Exceção inesperada em", "COMMANDS_FLAG_DESC": "sinaliza um cliente suspeito e anuncia aos administradores ao entrar no servidor",
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs não são permitidas neste servidor", "COMMANDS_FLAG_FAIL": "Você não pode sinalizar",
"SERVER_KICK_TEXT": "Você foi expulso", "COMMANDS_FLAG_SUCCESS": "Você sinalizou",
"SERVER_KICK_MINNAME": "Seu nome deve conter no mínimo três caracteres", "COMMANDS_FLAG_UNFLAG": "Você tirou a sinalização de",
"SERVER_KICK_NAME_INUSE": "Seu nome já está sendo usado por outra pessoa", "COMMANDS_HELP_DESC": "lista todos os comandos disponíveis",
"SERVER_KICK_GENERICNAME": "Por favor, mude o seu nome usando o comando /name no console", "COMMANDS_HELP_MOREINFO": "Digite !help <comando> para saber como usar o comando",
"SERVER_KICK_CONTROLCHARS": "Seu nome não pode conter caracteres de controle", "COMMANDS_HELP_NOTFOUND": "Não foi possível encontrar esse comando",
"SERVER_TB_TEXT": "Você está banido temporariamente", "COMMANDS_IP_DESC": "mostrar o seu endereço IP externo",
"SERVER_TB_REMAIN": "Você está banido temporariamente", "COMMANDS_IP_SUCCESS": "Seu endereço IP externo é",
"SERVER_BAN_TEXT": "Você está banido", "COMMANDS_KICK_DESC": "expulsa o jogador pelo nome",
"SERVER_BAN_PREV": "Banido preventivamente por", "COMMANDS_KICK_FAIL": "Você não tem os privilégios necessários para expulsar",
"SERVER_BAN_APPEAL": "apele em", "COMMANDS_KICK_SUCCESS": "foi expulso",
"SERVER_REPORT_COUNT": "Você tem ^5{0} ^7denúncias recentes", "COMMANDS_LIST_DESC": "lista os jogadores ativos na partida",
"SERVER_WARNLIMT_REACHED": "Avisos demais! Leia o chat da próxima vez", "COMMANDS_MAP_DESC": "muda para o mapa especificado",
"SERVER_WARNING": "AVISO", "COMMANDS_MAP_SUCCESS": "Mudando o mapa para",
"SERVER_WEBSITE_GENERIC": "este é o site do servidor", "COMMANDS_MAP_UKN": "Tentando mudar para o mapa desconhecido",
"BROADCAST_ONLINE": "^5IW4MADMIN ^7agora está ^2ONLINE", "COMMANDS_MAPROTATE": "Rotacionando o mapa em ^55 ^7segundos",
"BROADCAST_OFFLINE": "IW4MAdmin ficou offline", "COMMANDS_MAPROTATE_DESC": "avança para o próximo mapa da rotação",
"COMMAND_HELP_SYNTAX": "sintaxe:", "COMMANDS_MASK_DESC": "esconde a sua presença como um jogador privilegiado",
"COMMAND_HELP_OPTIONAL": "opcional", "COMMANDS_MASK_OFF": "Você foi desmascarado",
"COMMAND_UNKNOWN": "Você digitou um comando desconhecido", "COMMANDS_MASK_ON": "Você agora está mascarado",
"COMMAND_NOACCESS": "Você não tem acesso a este comando", "COMMANDS_OWNER_DESC": "reivindica a propriedade do servidor",
"COMMAND_NOTAUTHORIZED": "Você não está autorizado a executar este comando", "COMMANDS_OWNER_FAIL": "Este servidor já tem um dono",
"COMMAND_MISSINGARGS": "Não foram oferecidos argumentos suficientes", "COMMANDS_OWNER_SUCCESS": "Parabéns, você reivindicou a propriedade deste servidor!",
"COMMAND_TARGET_MULTI": "Vários jogadores correspondem a esse nome", "COMMANDS_PASSWORD_FAIL": "Sua senha deve ter pelo menos 5 caracteres",
"COMMAND_TARGET_NOTFOUND": "Não é possível encontrar o jogador especificado", "COMMANDS_PASSWORD_SUCCESS": "Sua senha foi configurada com sucesso",
"PLUGIN_IMPORTER_NOTFOUND": "Não foram encontrados plugins para carregar", "COMMANDS_PING_DESC": "mostra o quanto de latência tem o jogador",
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado", "COMMANDS_PING_SELF": "Sua latência é",
"COMMANDS_OWNER_SUCCESS": "Parabéns, você reivindicou a propriedade deste servidor!", "COMMANDS_PING_TARGET": "latência é",
"COMMANDS_OWNER_FAIL": "Este servidor já tem um dono", "COMMANDS_PLUGINS_DESC": "mostra todos os plugins que estão carregados",
"COMMANDS_WARN_FAIL": "Você não tem os privilégios necessários para fazer o Aviso", "COMMANDS_PLUGINS_LOADED": "Plugins carregados",
"COMMANDS_WARNCLEAR_SUCCESS": "Todos os avisos foram apagados para", "COMMANDS_PM_DESC": "envia a mensagem para o outro jogador de maneira privada, use /!pm para ter efeito, se possível",
"COMMANDS_KICK_SUCCESS": "foi expulso", "COMMANDS_PRUNE_DESC": "rebaixa qualquer jogador privilegiado que não tenha se conectado recentemente (o padrão é 30 dias)",
"COMMANDS_KICK_FAIL": "Você não tem os privilégios necessários para expulsar", "COMMANDS_PRUNE_FAIL": "Número inválido de dias ativo",
"COMMANDS_TEMPBAN_SUCCESS": "foi banido temporariamente por", "COMMANDS_PRUNE_SUCCESS": "usuários privilegiados inativos foram removidos",
"COMMANDS_TEMPBAN_FAIL": "Você não pode banir temporariamente", "COMMANDS_QUIT_DESC": "sair do IW4MAdmin",
"COMMANDS_BAN_SUCCESS": "foi banido permanentemente", "COMMANDS_RCON_DESC": "envia o comando Rcon para o servidor",
"COMMANDS_BAN_FAIL": "Você não pode banir de maneira permanente", "COMMANDS_RCON_SUCCESS": "O comando para o RCon foi enviado com sucesso!",
"COMMANDS_UNBAN_SUCCESS": "Foi retirado o banimento com sucesso", "COMMANDS_REPORT_DESC": "denuncia o jogador por comportamento suspeito",
"COMMANDS_UNBAN_FAIL": "não está banido", "COMMANDS_REPORT_FAIL": "Você não pode reportar",
"COMMANDS_HELP_NOTFOUND": "Não foi possível encontrar esse comando", "COMMANDS_REPORT_FAIL_CAMP": "Você não pode denunciar o jogador por camperar",
"COMMANDS_HELP_MOREINFO": "Digite !help <comando> para saber como usar o comando", "COMMANDS_REPORT_FAIL_DUPLICATE": "Você já denunciou o jogador",
"COMMANDS_FASTRESTART_UNMASKED": "reiniciou rapidamente o mapa", "COMMANDS_REPORT_FAIL_SELF": "Você não pode se reportar",
"COMMANDS_FASTRESTART_MASKED": "O mapa foi reiniciado rapidamente", "COMMANDS_REPORT_SUCCESS": "Obrigado pela sua denúncia, um administrador foi notificado",
"COMMANDS_MAPROTATE": "Rotacionando o mapa em ^55 ^7segundos", "COMMANDS_REPORTS_CLEAR_SUCCESS": "Lista de denúncias limpa com sucesso",
"COMMANDS_SETLEVEL_SELF": "Você não pode mudar seu próprio nível", "COMMANDS_REPORTS_DESC": "obtém ou limpa as denúncias recentes",
"COMMANDS_SETLEVEL_OWNER": "Só pode haver 1 dono. Modifique suas configurações se vários proprietários forem necessários", "COMMANDS_REPORTS_NONE": "Ninguém foi denunciado ainda",
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor não permite que você promova", "COMMANDS_RULES_DESC": "lista as regras do servidor",
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Você só pode promover do ^5{0} ^7para ^5{1} ^7ou um nível menor", "COMMANDS_RULES_NONE": "O proprietário do servidor não definiu nenhuma regra, sinta-se livre",
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Parabéns! Você foi promovido para", "COMMANDS_SAY_DESC": "transmite mensagem para todos os jogadores",
"COMMANDS_SETLEVEL_SUCCESS": "foi promovido com sucesso", "COMMANDS_SETLEVEL_DESC": "define o jogador para o nível de privilégio especificado",
"COMMANDS_SETLEVEL_FAIL": "grupo especificado inválido", "COMMANDS_SETLEVEL_FAIL": "grupo especificado inválido",
"COMMANDS_ADMINS_NONE": "Sem administradores visíveis online", "COMMANDS_SETLEVEL_LEVELTOOHIGH": "Você só pode promover do ^5{0} ^7para ^5{1} ^7ou um nível menor",
"COMMANDS_MAP_SUCCESS": "Mudando o mapa para", "COMMANDS_SETLEVEL_OWNER": "Só pode haver 1 dono. Modifique suas configurações se vários proprietários forem necessários",
"COMMANDS_MAP_UKN": "Tentando mudar para o mapa desconhecido", "COMMANDS_SETLEVEL_SELF": "Você não pode mudar seu próprio nível",
"COMMANDS_FIND_MIN": "Por favor, insira pelo menos 3 caracteres", "COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor não permite que você promova",
"COMMANDS_FIND_EMPTY": "Nenhum jogador foi encontrado", "COMMANDS_SETLEVEL_SUCCESS": "foi promovido com sucesso",
"COMMANDS_RULES_NONE": "O proprietário do servidor não definiu nenhuma regra, sinta-se livre", "COMMANDS_SETLEVEL_SUCCESS_TARGET": "Parabéns! Você foi promovido para",
"COMMANDS_FLAG_SUCCESS": "Você sinalizou", "COMMANDS_SETPASSWORD_DESC": "define sua senha de autenticação",
"COMMANDS_FLAG_UNFLAG": "Você tirou a sinalização de", "COMMANDS_TEMPBAN_DESC": "bane temporariamente um jogador por tempo especificado (o padrão é 1 hora)",
"COMMANDS_FLAG_FAIL": "Você não pode sinalizar", "COMMANDS_TEMPBAN_FAIL": "Você não pode banir temporariamente",
"COMMANDS_REPORT_FAIL_CAMP": "Você não pode denunciar o jogador por camperar", "COMMANDS_TEMPBAN_SUCCESS": "foi banido temporariamente por",
"COMMANDS_REPORT_FAIL_DUPLICATE": "Você já denunciou o jogador", "COMMANDS_UNBAN_DESC": "retira o banimento de um jogador pelo seu ID",
"COMMANDS_REPORT_FAIL_SELF": "Você não pode se reportar", "COMMANDS_UNBAN_FAIL": "não está banido",
"COMMANDS_REPORT_FAIL": "Você não pode reportar", "COMMANDS_UNBAN_SUCCESS": "Foi retirado o banimento com sucesso",
"COMMANDS_REPORT_SUCCESS": "Obrigado pela sua denúncia, um administrador foi notificado", "COMMANDS_UPTIME_DESC": "obtém o tempo de execução do aplicativo a quando aberto",
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Lista de denúncias limpa com sucesso", "COMMANDS_UPTIME_TEXT": "está online por",
"COMMANDS_REPORTS_NONE": "Ninguém foi denunciado ainda", "COMMANDS_USAGE_DESC": "vê quanto o aplicativo está usando de memória RAM do seu computador",
"COMMANDS_MASK_ON": "Você foi mascarado", "COMMANDS_USAGE_TEXT": "está usando",
"COMMANDS_MASK_OFF": "Você foi desmascarado", "COMMANDS_WARN_DESC": "adverte o cliente por infringir regras",
"COMMANDS_BANINFO_NONE": "Nenhum banimento ativo foi encontrado para esse jogador", "COMMANDS_WARN_FAIL": "Você não tem os privilégios necessários para advertir",
"COMMANDS_BANINO_SUCCESS": "foi banido por ^5{0} ^7por:", "COMMANDS_WARNCLEAR_DESC": "remove todos os avisos para um cliente",
"COMMANDS_ALIAS_ALIASES": "Nomes registrados", "COMMANDS_WARNCLEAR_SUCCESS": "Todos as advertências foram apagados para",
"COMMANDS_ALIAS_IPS": "IPs", "COMMANDS_WHO_DESC": "dá informações sobre você",
"COMMANDS_RCON_SUCCESS": "O comando para o RCon foi enviado com sucesso", "GLOBAL_DAYS": "dias",
"COMMANDS_PLUGINS_LOADED": "Plugins carregados", "GLOBAL_ERROR": "Erro",
"COMMANDS_IP_SUCCESS": "Seu endereço IP externo é", "GLOBAL_HOURS": "horas",
"COMMANDS_PRUNE_FAIL": "Número inválido de dias ativo", "GLOBAL_INFO": "Informação",
"COMMANDS_PRUNE_SUCCESS": "usuários privilegiados inativos foram removidos", "GLOBAL_MINUTES": "minutos",
"COMMANDS_PASSWORD_FAIL": "Sua senha deve ter pelo menos 5 caracteres", "GLOBAL_REPORT": "Se você está suspeitando alguém de alguma ^5TRAPAÇA ^7use o comando ^5!report",
"COMMANDS_PASSWORD_SUCCESS": "Sua senha foi configurada com sucesso", "GLOBAL_VERBOSE": "Detalhe",
"COMMANDS_PING_TARGET": "latência é", "GLOBAL_WARNING": "AVISO",
"COMMANDS_PING_SELF": "Sua latência é", "MANAGER_CONNECTION_REST": "A conexão foi reestabelecida com",
"COMMANDS_QUIT_DESC": "sair do IW4MAdmin", "MANAGER_CONSOLE_NOSERV": "Não há servidores sendo monitorados neste momento",
"COMMANDS_OWNER_DESC": "reivindicar a propriedade do servidor", "MANAGER_EXIT": "Pressione qualquer tecla para sair...",
"COMMANDS_WARN_DESC": "avisa o cliente por infringir regras", "MANAGER_INIT_FAIL": "Erro fatal durante a inicialização",
"COMMANDS_WARNCLEAR_DESC": "remove todos os avisos para um cliente", "MANAGER_MONITORING_TEXT": "Agora monitorando",
"COMMANDS_KICK_DESC": "expulsa o cliente pelo nome", "MANAGER_SHUTDOWN_SUCCESS": "Desligamento concluído",
"COMMANDS_SAY_DESC": "transmite mensagem para todos os clientes", "MANAGER_VERSION_CURRENT": "Está é a sua versão",
"COMMANDS_TEMPBAN_DESC": "bane temporariamente um cliente por tempo especificado (o padrão é 1 hora)", "MANAGER_VERSION_FAIL": "Não foi possível obter a versão mais recente do IW4MAdmin",
"COMMANDS_BAN_DESC": "banir permanentemente um cliente do servidor", "MANAGER_VERSION_SUCCESS": "O IW4MAdmin está atualizado",
"COMMANDS_UNBAN_DESC": "retira o ban de um jogador pelo seu ID", "MANAGER_VERSION_UPDATE": "Há uma atualização disponível. A versão mais recente é",
"COMMANDS_WHO_DESC": "dá informações sobre você", "PLUGIN_IMPORTER_NOTFOUND": "Não foram encontrados plugins para carregar",
"COMMANDS_LIST_DESC": "lista os jogadores ativos na partida", "PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
"COMMANDS_HELP_DESC": "lista todos os comandos disponíveis", "PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "Inicie a sua sessão usando a senha",
"COMMANDS_FASTRESTART_DESC": "reinicializa rapidamente o mapa, não recomendável o uso várias vezes seguidas", "PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Sua senha está errada",
"COMMANDS_MAPROTATE_DESC": "avança para o próximo mapa da rotação", "PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Você agora está conectado",
"COMMANDS_SETLEVEL_DESC": "define o jogador para o nível de privilégio especificado", "PLUGINS_STATS_COMMANDS_RESET_DESC": "reinicia suas estatísticas para uma nova",
"COMMANDS_USAGE_DESC": "vê quanto o aplicativo está usando de memória ram do seu computador", "PLUGINS_STATS_COMMANDS_RESET_FAIL": "Você deve estar conectado a um servidor para reiniciar as suas estatísticas",
"COMMANDS_USAGE_TEXT": "está usando", "PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Suas estatísticas nesse servidor foram reiniciadas",
"COMMANDS_UPTIME_DESC": "obtém o tempo de execução do aplicativo a quando aberto", "PLUGINS_STATS_COMMANDS_TOP_DESC": "visualiza os 5 melhores jogadores do servidor",
"COMMANDS_UPTIME_TEXT": "está online por", "PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Jogadores",
"COMMANDS_ADMINS_DESC": "lista os clientes privilegiados conectados no momento", "PLUGINS_STATS_COMMANDS_VIEW_DESC": "mostra suas estatísticas",
"COMMANDS_MAP_DESC": "muda para o mapa especificado", "PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Não foi encontrado o jogador que você especificou",
"COMMANDS_FIND_DESC": "acha o jogador na base de dados", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "o jogador especificado deve estar dentro do jogo",
"COMMANDS_RULES_DESC": "lista as regras do servidor", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Você deve estar no jogo para ver suas estatísticas",
"COMMANDS_PM_DESC": "envia a mensagem para o outro jogador de maneira privada, use /!pm para ter efeito, se possível", "PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estatísticas para",
"COMMANDS_FLAG_DESC": "sinaliza um cliente suspeito e anuncia aos administradores ao entrar no servidor", "PLUGINS_STATS_TEXT_DEATHS": "MORTES",
"COMMANDS_REPORT_DESC": "denuncia o jogador por comportamento suspeito", "PLUGINS_STATS_TEXT_KILLS": "BAIXAS",
"COMMANDS_REPORTS_DESC": "obtém ou limpa as denúncias recentes", "PLUGINS_STATS_TEXT_NOQUALIFY": "Não há ainda jogadores qualificados para os primeiros lugares",
"COMMANDS_MASK_DESC": "esconda sua presença como um cliente privilegiado", "PLUGINS_STATS_TEXT_SKILL": "HABILIDADE",
"COMMANDS_BANINFO_DESC": "obtém informações sobre um banimento para um jogador", "SERVER_BAN_APPEAL": "apele em",
"COMMANDS_ALIAS_DESC": "obtém a lista de histórico de nomes que o jogador usou no servidor", "SERVER_BAN_PREV": "Banido preventivamente por",
"COMMANDS_RCON_DESC": "envia o comando Rcon para o servidor", "SERVER_BAN_TEXT": "Você está banido",
"COMMANDS_PLUGINS_DESC": "mostra todos os plugins que estão carregados", "SERVER_ERROR_ADDPLAYER": "Não foi possível adicionar o jogador",
"COMMANDS_IP_DESC": "mostra o seu endereço IP externo", "SERVER_ERROR_COMMAND_INGAME": "Ocorreu um erro interno ao processar seu comando",
"COMMANDS_PRUNE_DESC": "rebaixa qualquer cliente privilegiado que não tenha se conectado recentemente (o padrão é 30 dias)", "SERVER_ERROR_COMMAND_LOG": "o comando gerou um erro",
"COMMANDS_SETPASSWORD_DESC": "define sua senha de autenticação", "SERVER_ERROR_COMMUNICATION": "Não foi possível fazer a comunicação com",
"COMMANDS_PING_DESC": "mostra o quanto de latência tem o jogador", "SERVER_ERROR_DNE": "não existe",
"COMMANDS_ARGS_PLAYER": "jogador", "SERVER_ERROR_DVAR": "Não foi possível obter o valor de dvar para",
"COMMANDS_ARGS_REASON": "razão", "SERVER_ERROR_DVAR_HELP": "garanta que o servidor tenha um mapa carregado",
"COMMANDS_ARGS_MESSAGE": "mensagem", "SERVER_ERROR_EXCEPTION": "Exceção inesperada em",
"COMMANDS_ARGS_DURATION": "duração (minutos|horas|dias|semanas|anos)", "SERVER_ERROR_LOG": "Log do jogo inválido",
"COMMANDS_ARGS_CLIENTID": "id do jogador", "SERVER_ERROR_PLUGIN": "Ocorreu um erro ao carregar o plug-in",
"COMMANDS_ARGS_COMMANDS": "comandos", "SERVER_ERROR_POLLING": "reduzir a taxa de sondagem do server",
"COMMANDS_ARGS_LEVEL": "nível", "SERVER_ERROR_UNFIXABLE": "Não monitorando o servidor devido a erros incorrigíveis",
"COMMANDS_ARGS_MAP": "mapa", "SERVER_KICK_CONTROLCHARS": "Seu nome não pode conter caracteres de controle",
"COMMANDS_ARGS_CLEAR": "limpar", "SERVER_KICK_GENERICNAME": "Por favor, mude o seu nome usando o comando /name no console",
"COMMANDS_ARGS_INACTIVE": "dias inativos", "SERVER_KICK_MINNAME": "Seu nome deve conter no mínimo três caracteres",
"COMMANDS_ARGS_PASSWORD": "senha", "SERVER_KICK_NAME_INUSE": "Seu nome já está sendo usado por outra pessoa",
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "Logar-se usando a senha", "SERVER_KICK_TEXT": "Você foi expulso",
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Você agora está logado", "SERVER_KICK_VPNS_NOTALLOWED": "VPNs não são permitidas neste servidor",
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Sua senha está errada", "SERVER_PLUGIN_ERROR": "Um plugin gerou erro",
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reinicia suas estatísticas para uma nova", "SERVER_REPORT_COUNT": "Você tem ^5{0} ^7denúncias recentes",
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Suas estatísticas nesse servidor foram reiniciadas", "SERVER_TB_REMAIN": "Você está banido temporariamente",
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Você deve estar conectado a um servidor para reiniciar as suas estatísticas", "SERVER_TB_TEXT": "Você está banido temporariamente",
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "mostra suas estatísticas", "SERVER_WARNING": "AVISO",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "o jogador especificado deve estar jogando", "SERVER_WARNLIMT_REACHED": "Avisos demais! Leia o chat da próxima vez",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Você deve estar no jogo para ver suas estatísticas", "SERVER_WEBSITE_GENERIC": "este é o site do servidor",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Não foi encontrado o jogador que você especificou", "SETUP_DISPLAY_SOCIAL": "Digitar link do convite do seu site no módulo da web (Discord, YouTube, etc.)",
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estatísticas para", "SETUP_ENABLE_CUSTOMSAY": "Habilitar a customização do nome do comando say",
"PLUGINS_STATS_COMMANDS_TOP_DESC": "visualiza os 5 melhores jogadores do servidor", "SETUP_ENABLE_MULTIOWN": "Habilitar vários proprietários",
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Jogadores", "SETUP_ENABLE_STEPPEDPRIV": "Ativar hierarquia de privilégios escalonada",
"PLUGINS_STATS_TEXT_KILLS": "BAIXAS", "SETUP_ENABLE_VPNS": "Habilitar que os usuários usem VPN",
"PLUGINS_STATS_TEXT_DEATHS": "MORTES", "SETUP_ENABLE_WEBFRONT": "Habilitar o módulo da web do IW4MAdmin",
"PLUGINS_STATS_TEXT_SKILL": "HABILIDADE", "SETUP_ENCODING_STRING": "Digite sequência de codificação",
"GLOBAL_DAYS": "dias", "SETUP_IPHUB_KEY": "Digite iphub.info api key",
"GLOBAL_HOURS": "horas", "SETUP_SAY_NAME": "Habilitar a customização do nome do comando say",
"GLOBAL_MINUTES": "minutos", "SETUP_SERVER_IP": "Digite o endereço IP do servidor",
"GLOBAL_REPORT": "Se você está suspeitando alguém de alguma ^5TRAPAÇA ^7use o comando ^5!report", "SETUP_SERVER_MANUALLOG": "Insira o caminho do arquivo de log manualmente",
"GLOBAL_ERROR": "Erro", "SETUP_SERVER_PORT": "Digite a porta do servidor",
"GLOBAL_WARNING": "AVISO", "SETUP_SERVER_RCON": "Digite a senha do RCon do servidor",
"GLOBAL_INFO": "Informação", "SETUP_SERVER_SAVE": "Configuração salva, adicionar outra",
"GLOBAL_VERBOSE": "Verbose", "SETUP_SERVER_USEIW5M": "Usar analisador Pluto IW5 ",
"SETUP_SERVER_USET6M": "Usar analisador Pluto T6 ",
"MANAGER_CONSOLE_NOSERV": "Nenhum servidor está sendo monitorado no momento", "SETUP_SOCIAL_LINK": "Digite o link da Rede Social",
"SERVER_PLUGIN_ERROR": "Um plugin gerou um erro", "SETUP_SOCIAL_TITLE": "Digite o nome da rede social",
"PLUGINS_STATS_TEXT_NOQUALIFY": "Não há ainda jogadores qualificados para as melhores estatísticas" "SETUP_USE_CUSTOMENCODING": "Usar o analisador de codificação customizado",
} "WEBFRONT_ACTION_BAN_NAME": "Banir",
} "WEBFRONT_ACTION_LABEL_ID": "ID do cliente",
} "WEBFRONT_ACTION_LABEL_PASSWORD": "Senha",
"WEBFRONT_ACTION_LABEL_REASON": "Razão",
"WEBFRONT_ACTION_LOGIN_NAME": "Iniciar a sessão",
"WEBFRONT_ACTION_UNBAN_NAME": "Retirar o banimento",
"WEBFRONT_CLIENT_META_FALSE": "Não está",
"WEBFRONT_CLIENT_META_JOINED": "Entrou com o nome",
"WEBFRONT_CLIENT_META_MASKED": "Mascarado",
"WEBFRONT_CLIENT_META_TRUE": "Está",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Jogadores Privilegiados",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Pefil",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Jogadores correspondidos",
"WEBFRONT_CONSOLE_EXECUTE": "Executar",
"WEBFRONT_CONSOLE_TITLE": "Console da Web",
"WEBFRONT_ERROR_DESC": "O IW4MAdmin encontrou um erro",
"WEBFRONT_ERROR_GENERIC_DESC": "Ocorreu um erro ao processar seu pedido",
"WEBFRONT_ERROR_GENERIC_TITLE": "Desculpe!",
"WEBFRONT_ERROR_TITLE": "Erro!",
"WEBFRONT_HOME_TITLE": "Visão geral do servidor",
"WEBFRONT_NAV_CONSOLE": "Console",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_HOME": "Início",
"WEBFRONT_NAV_LOGOUT": "Encerrar a sessão",
"WEBFRONT_NAV_PENALTIES": "Penalidades",
"WEBFRONT_NAV_PRIVILEGED": "Administradores",
"WEBFRONT_NAV_PROFILE": "Perfil do Jogador",
"WEBFRONT_NAV_SEARCH": "Achar jogador",
"WEBFRONT_NAV_SOCIAL": "Rede Social",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Administrador",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "atrás",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Nome",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Ofensa",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "restantes",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Mostrar",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Mostrar somente",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Tempo/Restante",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Tipo",
"WEBFRONT_PENALTY_TITLE": "Penalidades dos jogadores",
"WEBFRONT_PROFILE_FSEEN": "Visto primeiro em",
"WEBFRONT_PROFILE_LEVEL": "Nível",
"WEBFRONT_PROFILE_LSEEN": "Visto por último em",
"WEBFRONT_PROFILE_PLAYER": "Jogou",
"PLUGIN_STATS_SETUP_ENABLEAC ": "Habilitar a anti-trapaça no servidor (Somente IW4/MW2)",
"PLUGIN_STATS_ERROR_ADD": "Não foi possível adicionar o servidor para as estatísticas do servidor",
"PLUGIN_STATS_CHEAT_DETECTED": "Aparentemente você está trapaceando",
"PLUGINS_STATS_TEXT_KDR": "KDR",
"PLUGINS_STATS_META_SPM": "Pontuação por minuto",
"PLUGINS_WELCOME_USERANNOUNCE": "^5{{ClientName}} ^7 vem de ^5{{ClientLocation}}",
"PLUGINS_WELCOME_USERWELCOME": "Bem-vindo ^5{{ClientName}}^7, esta é a sua visita de número ^5{{TimesConnected}} ^7 no servidor!",
"PLUGINS_WELCOME_PRIVANNOUNCE": "{{ClientLevel}} {{ClientName}} entrou no servidor",
"PLUGINS_LOGIN_AUTH": "não está registrado",
"PLUGINS_PROFANITY_SETUP_ENABLE": "Habilitar o plugin de anti-palavrão",
"PLUGINS_PROFANITY_WARNMSG": "Por favor, não use palavras ofensivas neste servidor",
"PLUGINS_PROFANITY_KICKMSG": "Uso excessivo de palavrão, lave a boca da próxima vez"
}
}
}

View File

@ -1,204 +1,258 @@
{ {
"LocalizationName": "ru-RU", "LocalizationName": "ru-RU",
"LocalizationIndex": { "LocalizationIndex": {
"Set": { "Set": {
"MANAGER_VERSION_FAIL": "Не удалось получить последнюю версию IW4MAdmin", "BROADCAST_OFFLINE": "^5IW4MAdmin ^1ВЫКЛЮЧАЕТСЯ",
"MANAGER_VERSION_UPDATE": "- есть обновление. Последняя версия:", "BROADCAST_ONLINE": "^5IW4MADMIN ^7сейчас В СЕТИ",
"MANAGER_VERSION_CURRENT": "Ваша версия:", "COMMAND_HELP_OPTIONAL": "опционально",
"MANAGER_VERSION_SUCCESS": "IW4MAdmin обновлен", "COMMAND_HELP_SYNTAX": "синтаксис:",
"MANAGER_INIT_FAIL": "Критическая ошибка во время инициализации", "COMMAND_MISSINGARGS": "Приведено недостаточно аргументов",
"MANAGER_EXIT": "Нажмите любую клавишу, чтобы выйти...", "COMMAND_NOACCESS": "У вас нет доступа к этой команде",
"SETUP_ENABLE_WEBFRONT": "Включить веб-интерфейс", "COMMAND_NOTAUTHORIZED": "Вы не авторизованы для исполнения этой команды",
"SETUP_ENABLE_MULTIOWN": "Включить поддержку нескольких владельцев", "COMMAND_TARGET_MULTI": "Несколько игроков соответствуют этому имени",
"SETUP_ENABLE_STEPPEDPRIV": "Включить последовательную иерархию прав", "COMMAND_TARGET_NOTFOUND": "Невозможно найти указанного игрока",
"SETUP_ENABLE_CUSTOMSAY": "Включить кастомное имя для чата", "COMMAND_UNKNOWN": "Вы ввели неизвестную команду",
"SETUP_SAY_NAME": "Введите кастомное имя для чата", "COMMANDS_ADMINS_DESC": "перечислить присоединенных на данный момент игроков с правами",
"SETUP_USE_CUSTOMENCODING": "Использовать кастомную кодировку парсера", "COMMANDS_ADMINS_NONE": "Нет видимых администраторов в сети",
"SETUP_ENCODING_STRING": "Введите кодировку", "COMMANDS_ALIAS_ALIASES": "Имена",
"SETUP_ENABLE_VPNS": "Включить поддержку VPN у игроков", "COMMANDS_ALIAS_DESC": "получить прошлые имена и IP игрока",
"SETUP_IPHUB_KEY": "Введите iphub.info api-ключ", "COMMANDS_ALIAS_IPS": "IP",
"SETUP_DISPLAY_SOCIAL": "Отображать ссылку на социальную сеть в веб-интерфейсе (Discord, веб-сайт, ВК, и т.д.)", "COMMANDS_ARGS_CLEAR": "очистить",
"SETUP_SOCIAL_LINK": "Ввести ссылку на социальную сеть", "COMMANDS_ARGS_CLIENTID": "ID игрока",
"SETUP_SOCIAL_TITLE": "Ввести имя социальной сети", "COMMANDS_ARGS_COMMANDS": "команды",
"SETUP_SERVER_USET6M": "Использовать Pluto T6 парсер", "COMMANDS_ARGS_DURATION": "длительность (m|h|d|w|y)",
"SETUP_SERVER_USEIW5M": "Использовать парсер Pluto IW5", "COMMANDS_ARGS_INACTIVE": "дни бездействия",
"SETUP_SERVER_MANUALLOG": "Введите путь для лог-файла", "COMMANDS_ARGS_LEVEL": "уровень",
"SETUP_SERVER_IP": "Введите IP-адрес сервера", "COMMANDS_ARGS_MAP": "карта",
"SETUP_SERVER_PORT": "Введите порт сервера", "COMMANDS_ARGS_MESSAGE": "сообщение",
"SETUP_SERVER_RCON": "Введите RCon пароль сервера", "COMMANDS_ARGS_PASSWORD": "пароль",
"SETUP_SERVER_SAVE": "Настройки сохранены, добавить", "COMMANDS_ARGS_PLAYER": "игрок",
"SERVER_KICK_VPNS_NOTALLOWED": "Использование VPN не разрешено на этом сервере", "COMMANDS_ARGS_REASON": "причина",
"SERVER_KICK_TEXT": "Вы были исключены", "COMMANDS_BAN_DESC": "навсегда забанить игрока на сервере",
"SERVER_KICK_MINNAME": "Ваше имя должно содержать хотя бы 3 символа", "COMMANDS_BAN_FAIL": "Вы не можете выдавать бан",
"SERVER_KICK_NAME_INUSE": "Ваше имя используется кем-то другим", "COMMANDS_BAN_SUCCESS": "был забанен навсегда",
"SERVER_KICK_GENERICNAME": "Пожалуйста, смените ваше имя, используя /name", "COMMANDS_BANINFO_DESC": "получить информацию о бане игрока",
"SERVER_KICK_CONTROLCHARS": "Ваше имя не должно содержать спецсимволы", "COMMANDS_BANINFO_NONE": "Не найдено действующего бана для этого игрока",
"SERVER_TB_TEXT": "Вы временно забанены", "COMMANDS_BANINO_SUCCESS": "был забанен игроком ^5{0} ^7на:",
"SERVER_TB_REMAIN": "Вы временно забанены", "COMMANDS_FASTRESTART_DESC": "перезапустить нынешнюю карту",
"SERVER_BAN_TEXT": "Вы забанены", "COMMANDS_FASTRESTART_MASKED": "Карта была перезапущена",
"SERVER_BAN_PREV": "Ранее забанены за", "COMMANDS_FASTRESTART_UNMASKED": "перезапустил карту",
"SERVER_BAN_APPEAL": "оспорить:", "COMMANDS_FIND_DESC": "найти игрока в базе данных",
"SERVER_REPORT_COUNT": "Имеется ^5{0} ^7жалоб за последнее время", "COMMANDS_FIND_EMPTY": "Не найдено игроков",
"SERVER_WARNLIMT_REACHED": "Слишком много предупреждений", "COMMANDS_FIND_MIN": "Пожалуйста, введите хотя бы 3 символа",
"SERVER_WARNING": "Предупреждение", "COMMANDS_FLAG_DESC": "отметить подозрительного игрока и сообщить администраторам, чтобы присоединились",
"SERVER_WEBSITE_GENERIC": "веб-сайт этого сервера", "COMMANDS_FLAG_FAIL": "Вы не можете ставить отметки",
"BROADCAST_ONLINE": "^5IW4MADMIN ^7сейчас СЕТИ", "COMMANDS_FLAG_SUCCESS": "Вы были отмечены",
"BROADCAST_OFFLINE": "IW4MAdmin отключается", "COMMANDS_FLAG_UNFLAG": "С вас сняли отметку",
"COMMAND_HELP_SYNTAX": "синтаксис:", "COMMANDS_HELP_DESC": "перечислить все доступные команды",
"COMMAND_HELP_OPTIONAL": "опционально", "COMMANDS_HELP_MOREINFO": "Введите !help <имя команды>, чтобы узнать синтаксис для использования команды",
"COMMAND_UNKNOWN": "Вы ввели неизвестную команду", "COMMANDS_HELP_NOTFOUND": "Не удалось найти эту команду",
"COMMAND_NOACCESS": "У вас нет доступа к этой команде", "COMMANDS_IP_DESC": "просмотреть ваш внешний IP-адрес",
"COMMAND_NOTAUTHORIZED": "Вы не авторизованы для исполнения этой команды", "COMMANDS_IP_SUCCESS": "Ваш внешний IP:",
"COMMAND_MISSINGARGS": "Недостаточно аргументов приведено", "COMMANDS_KICK_DESC": "исключить игрока по имени",
"COMMAND_TARGET_MULTI": "Несколько игроков соответствуют этому имени", "COMMANDS_KICK_FAIL": "У вас нет достаточных прав, чтобы исключать",
"COMMAND_TARGET_NOTFOUND": "Невозможно найти указанного игрока", "COMMANDS_KICK_SUCCESS": "был исключен",
"PLUGIN_IMPORTER_NOTFOUND": "Не найдено плагинов для загрузки", "COMMANDS_LIST_DESC": "перечислить действующих игроков",
"PLUGIN_IMPORTER_REGISTERCMD": "Зарегистрированная команда", "COMMANDS_MAP_DESC": "сменить на определенную карту",
"COMMANDS_OWNER_SUCCESS": "Поздравления, вы утвердили владение этим сервером!", "COMMANDS_MAP_SUCCESS": "Смена карты на",
"COMMANDS_OWNER_FAIL": "Этот сервер уже имеет владельца", "COMMANDS_MAP_UKN": "Попытка сменить на неизвестную карту",
"COMMANDS_WARN_FAIL": "У вас недостаточно прав, чтобы выносить предупреждения", "COMMANDS_MAPROTATE": "Смена карты через ^55 ^7секунд",
"COMMANDS_WARNCLEAR_SUCCESS": "Все предупреждения очищены за", "COMMANDS_MAPROTATE_DESC": "переключиться на следующую карту в ротации",
"COMMANDS_KICK_SUCCESS": "был исключен", "COMMANDS_MASK_DESC": "скрыть свое присутствие как игрока с правами",
"COMMANDS_KICK_FAIL": "У вас нет достаточных прав, чтобы исключать", "COMMANDS_MASK_OFF": "Вы теперь демаскированы",
"COMMANDS_TEMPBAN_SUCCESS": "был временно забанен за", "COMMANDS_MASK_ON": "Вы теперь замаскированы",
"COMMANDS_TEMPBAN_FAIL": "Вы не можете выдавать временный бан", "COMMANDS_OWNER_DESC": "утверить владение сервером",
"COMMANDS_BAN_SUCCESS": "был забанен навсегда", "COMMANDS_OWNER_FAIL": "Этот сервер уже имеет владельца",
"COMMANDS_BAN_FAIL": "Вы не можете выдавать бан", "COMMANDS_OWNER_SUCCESS": "Поздравляю, вы утвердили владение этим сервером!",
"COMMANDS_UNBAN_SUCCESS": "Успешно разбанен", "COMMANDS_PASSWORD_FAIL": "Ваш пароль должен быть хотя бы 5 символов в длину",
"COMMANDS_UNBAN_FAIL": "не забанен", "COMMANDS_PASSWORD_SUCCESS": "Ваш пароль был успешно установлен",
"COMMANDS_HELP_NOTFOUND": "Не удалось найти эту команду", "COMMANDS_PING_DESC": "получить пинг игрока",
"COMMANDS_HELP_MOREINFO": "Введите !help <имя команды>, чтобы узнать синтаксис для использования команды", "COMMANDS_PING_SELF": "Ваш пинг:",
"COMMANDS_FASTRESTART_UNMASKED": "перезапустил карту", "COMMANDS_PING_TARGET": "пинг:",
"COMMANDS_FASTRESTART_MASKED": "Карта была перезапущена", "COMMANDS_PLUGINS_DESC": "просмотреть все загруженные плагины",
"COMMANDS_MAPROTATE": "Смена карты через ^55 ^7секунд", "COMMANDS_PLUGINS_LOADED": "Загруженные плагины",
"COMMANDS_SETLEVEL_SELF": "Вы не можете изменить свой уровень", "COMMANDS_PM_DESC": "отправить сообщение другому игроку",
"COMMANDS_SETLEVEL_OWNER": "Может быть только 1 владелец. Измените настройки, если требуется несколько владельцов", "COMMANDS_PRUNE_DESC": "понизить любых игроков с правами, которые не подключались за последнее время (по умолчанию: 30 дней)",
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Этот сервер не разрешает вам повыситься", "COMMANDS_PRUNE_FAIL": "Неверное количество дней бездействия",
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Вы только можете повысить ^5{0} ^7до ^5{1} ^7или понизиться в правах", "COMMANDS_PRUNE_SUCCESS": "бездействующих пользователей с правами было сокращено",
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Поздравления! Вы были повышены до", "COMMANDS_QUIT_DESC": "покинуть IW4MAdmin",
"COMMANDS_SETLEVEL_SUCCESS": "был успешно повышен", "COMMANDS_RCON_DESC": "отправить RCon команду на сервер",
"COMMANDS_SETLEVEL_FAIL": "Указана неверная группа", "COMMANDS_RCON_SUCCESS": "Успешно отправлена команда RCon",
"COMMANDS_ADMINS_NONE": "Нет администраторов в сети", "COMMANDS_REPORT_DESC": "пожаловаться на игрока за подозрительное поведение",
"COMMANDS_MAP_SUCCESS": "Смена карты на", "COMMANDS_REPORT_FAIL": "Вы не можете пожаловаться",
"COMMANDS_MAP_UKN": "Попытка сменить на неизвестную карту", "COMMANDS_REPORT_FAIL_CAMP": "Вы не можете пожаловаться на игрока за кемперство",
"COMMANDS_FIND_MIN": "Пожалуйста, введите хотя бы 3 символа", "COMMANDS_REPORT_FAIL_DUPLICATE": "Вы уже пожаловались на этого игрока",
"COMMANDS_FIND_EMPTY": "Не найдено игроков", "COMMANDS_REPORT_FAIL_SELF": "Вы не можете пожаловаться на самого себя",
"COMMANDS_RULES_NONE": "Владелец сервера не установил никаких правил", "COMMANDS_REPORT_SUCCESS": "Спасибо за вашу жалобу, администратор оповещен",
"COMMANDS_FLAG_SUCCESS": "Вы были отмечены", "COMMANDS_REPORTS_CLEAR_SUCCESS": "Жалобы успешно очищены",
"COMMANDS_FLAG_UNFLAG": "С вас сняли отметку", "COMMANDS_REPORTS_DESC": "получить или очистить последние жалобы",
"COMMANDS_FLAG_FAIL": "Вы не можете ставить отметки", "COMMANDS_REPORTS_NONE": "Пока нет жалоб на игроков",
"COMMANDS_REPORT_FAIL_CAMP": "Вы не можете пожаловаться на игрока за кемперство", "COMMANDS_RULES_DESC": "перечислить правила сервера",
"COMMANDS_REPORT_FAIL_DUPLICATE": "Вы уже пожаловались на этого игрока", "COMMANDS_RULES_NONE": "Владелец сервера не установил никаких правил",
"COMMANDS_REPORT_FAIL_SELF": "Вы не можете пожаловаться на самого себя", "COMMANDS_SAY_DESC": "транслировать сообщения всем игрокам",
"COMMANDS_REPORT_FAIL": "Вы не можете пожаловаться", "COMMANDS_SETLEVEL_DESC": "установить особый уровень прав игроку",
"COMMANDS_REPORT_SUCCESS": "Спасибо за вашу жалобу, администратор оповещен", "COMMANDS_SETLEVEL_FAIL": "Указана неверная группа",
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Жалобы успешно очищены", "COMMANDS_SETLEVEL_LEVELTOOHIGH": "Вы только можете повысить ^5{0} ^7до ^5{1} ^7или понизить в правах",
"COMMANDS_REPORTS_NONE": "Пока нет жалоб на игроков", "COMMANDS_SETLEVEL_OWNER": "Может быть только 1 владелец. Измените настройки, если требуется несколько владельцов",
"COMMANDS_MASK_ON": "Вы теперь замаскированы", "COMMANDS_SETLEVEL_SELF": "Вы не можете изменить свой уровень",
"COMMANDS_MASK_OFF": "Вы теперь демаскированы", "COMMANDS_SETLEVEL_STEPPEDDISABLED": "Этот сервер не разрешает вам повыситься",
"COMMANDS_BANINFO_NONE": "Не найдено действующего бана для этого игрока", "COMMANDS_SETLEVEL_SUCCESS": "был успешно повышен",
"COMMANDS_BANINO_SUCCESS": "был забанен игроком ^5{0} ^7на:", "COMMANDS_SETLEVEL_SUCCESS_TARGET": "Поздравляю! Вы были повышены до",
"COMMANDS_ALIAS_ALIASES": "Имена", "COMMANDS_SETPASSWORD_DESC": "установить свой пароль аутентификации",
"COMMANDS_ALIAS_IPS": "IP", "COMMANDS_TEMPBAN_DESC": "временно забанить игрока на определенное время (по умолчанию: 1 час)",
"COMMANDS_RCON_SUCCESS": "Успешно отправлена команда RCon", "COMMANDS_TEMPBAN_FAIL": "Вы не можете выдавать временный бан",
"COMMANDS_PLUGINS_LOADED": "Загруженные плагины", "COMMANDS_TEMPBAN_SUCCESS": "был временно забанен за",
"COMMANDS_IP_SUCCESS": "Ваш внешний IP:", "COMMANDS_UNBAN_DESC": "разбанить игрока по ID игрока",
"COMMANDS_PRUNE_FAIL": "Неверное количество дней бездействия", "COMMANDS_UNBAN_FAIL": "не забанен",
"COMMANDS_PRUNE_SUCCESS": "бездействующих пользователей с правами было сокращено", "COMMANDS_UNBAN_SUCCESS": "Успешно разбанен",
"COMMANDS_PASSWORD_FAIL": "Ваш пароль должен быть хотя бы 5 символов в длину", "COMMANDS_UPTIME_DESC": "получить время с начала запуска текущего приложения",
"COMMANDS_PASSWORD_SUCCESS": "Ваш пароль был успешно установлен", "COMMANDS_UPTIME_TEXT": "был в сети",
"COMMANDS_PING_TARGET": "пинг:", "COMMANDS_USAGE_DESC": "узнать о потреблении памяти приложением",
"COMMANDS_PING_SELF": "Ваш пинг:", "COMMANDS_USAGE_TEXT": "используется",
"MANAGER_SHUTDOWN_SUCCESS": "Выключение завершено", "COMMANDS_WARN_DESC": "предупредить игрока за нарушение правил",
"MANAGER_MONITORING_TEXT": "Идет мониторинг", "COMMANDS_WARN_FAIL": "У вас недостаточно прав, чтобы выносить предупреждения",
"MANAGER_CONNECTION_REST": "Соединение было восстановлено с помощью", "COMMANDS_WARNCLEAR_DESC": "удалить все предупреждения у игрока",
"SERVER_ERROR_DNE": "не существует", "COMMANDS_WARNCLEAR_SUCCESS": "Все предупреждения очищены у",
"SERVER_ERROR_LOG": "Неверный файл игрового лога", "COMMANDS_WHO_DESC": "предоставить информацию о себе",
"SERVER_ERROR_COMMAND_INGAME": "Произошла внутренняя ошибка при обработке вашей команды", "GLOBAL_DAYS": "дней",
"SERVER_ERROR_COMMAND_LOG": "команда сгенерировала ошибку", "GLOBAL_ERROR": "Ошибка",
"SERVER_ERROR_UNFIXABLE": "Мониторинг сервера выключен из-за неисправимых ошибок", "GLOBAL_HOURS": "часов",
"SERVER_ERROR_DVAR": "Не удалось получить значение dvar:", "GLOBAL_INFO": "Информация",
"SERVER_ERROR_DVAR_HELP": "убедитесь, что на сервере загружена карта", "GLOBAL_MINUTES": "минут",
"SERVER_ERROR_PLUGIN": "Произошла ошибка загрузки плагина", "GLOBAL_REPORT": "Если вы подозреваете кого-то в ^5ЧИТЕРСТВЕ^7, используйте команду ^5!report",
"SERVER_ERROR_ADDPLAYER": "Не удалось добавить игрока", "GLOBAL_VERBOSE": "Подробно",
"SERVER_ERROR_POLLING": "снижение частоты обновления данных", "GLOBAL_WARNING": "Предупреждение",
"SERVER_ERROR_COMMUNICATION": "Не удалось связаться с", "MANAGER_CONNECTION_REST": "Соединение было восстановлено с помощью",
"SERVER_ERROR_EXCEPTION": "Неожиданное исключение на", "MANAGER_CONSOLE_NOSERV": "На данный момент нет серверов под мониторингом",
"COMMANDS_QUIT_DESC": "покинуть IW4MAdmin", "MANAGER_EXIT": "Нажмите любую клавишу, чтобы выйти...",
"COMMANDS_OWNER_DESC": "утверить владение сервером", "MANAGER_INIT_FAIL": "Критическая ошибка во время инициализации",
"COMMANDS_WARN_DESC": "предупредить игрока за нарушение правил", "MANAGER_MONITORING_TEXT": "Идет мониторинг",
"COMMANDS_WARNCLEAR_DESC": "удалить все предупреждения у игрока", "MANAGER_SHUTDOWN_SUCCESS": "Выключение завершено",
"COMMANDS_KICK_DESC": "исключить игрока по имени", "MANAGER_VERSION_CURRENT": "Ваша версия:",
"COMMANDS_SAY_DESC": "транслировать сообщения всем игрокам", "MANAGER_VERSION_FAIL": "Не удалось получить последнюю версию IW4MAdmin",
"COMMANDS_TEMPBAN_DESC": "временно забанить игрока на определенное время (по умолчанию: 1 час)", "MANAGER_VERSION_SUCCESS": "IW4MAdmin обновлен",
"COMMANDS_BAN_DESC": "навсегда забанить игрока на сервере", "MANAGER_VERSION_UPDATE": "- есть обновление. Последняя версия:",
"COMMANDS_UNBAN_DESC": "разбанить игрока по ID игрока", "PLUGIN_IMPORTER_NOTFOUND": "Не найдено плагинов для загрузки",
"COMMANDS_WHO_DESC": "предоставить информацию о себе", "PLUGIN_IMPORTER_REGISTERCMD": "Зарегистрированная команда",
"COMMANDS_LIST_DESC": "перечислить действующих игроков", "PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "войти, используя пароль",
"COMMANDS_HELP_DESC": "перечислить все доступные команды", "PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Ваш пароль неверный",
"COMMANDS_FASTRESTART_DESC": "перезапустить нынешнюю карту", "PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Вы теперь вошли",
"COMMANDS_MAPROTATE_DESC": "переключиться на следующую карту в ротации", "PLUGINS_STATS_COMMANDS_RESET_DESC": "сбросить вашу статистику под ноль",
"COMMANDS_SETLEVEL_DESC": "установить особый уровень прав игроку", "PLUGINS_STATS_COMMANDS_RESET_FAIL": "Вы должны быть подключены к серверу, чтобы сбросить свою статистику",
"COMMANDS_USAGE_DESC": "узнать о потреблении памяти приложением", "PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Ваша статистика на этом сервере была сброшена",
"COMMANDS_USAGE_TEXT": "используется", "PLUGINS_STATS_COMMANDS_TOP_DESC": "показать топ-5 лучших игроков на этом сервере",
"COMMANDS_UPTIME_DESC": "получить время с начала запуска текущего приложения", "PLUGINS_STATS_COMMANDS_TOP_TEXT": "Лучшие игроки",
"COMMANDS_UPTIME_TEXT": "был в сети", "PLUGINS_STATS_COMMANDS_VIEW_DESC": "просмотреть свою статистику",
"COMMANDS_ADMINS_DESC": "перечислить присоединенных на данный момент игроков с правами", "PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Не удается найти игрока, которого вы указали.",
"COMMANDS_MAP_DESC": "сменить на определенную карту", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "Указанный игрок должен быть в игре",
"COMMANDS_FIND_DESC": "найти игрока в базе данных", "PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Вы должны быть в игре, чтобы просмотреть свою статистику",
"COMMANDS_RULES_DESC": "перечислить правила сервера", "PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Статистика",
"COMMANDS_PM_DESC": "отправить сообщение другому игроку", "PLUGINS_STATS_TEXT_DEATHS": "СМЕРТЕЙ",
"COMMANDS_FLAG_DESC": "отметить подозрительного игрока и сообщить администраторам, чтобы присоединились", "PLUGINS_STATS_TEXT_KILLS": "УБИЙСТВ",
"COMMANDS_REPORT_DESC": "пожаловаться на игрока за подозрительное поведение", "PLUGINS_STATS_TEXT_NOQUALIFY": "Ещё нет совернующихся игроков за лучшую статистику",
"COMMANDS_REPORTS_DESC": "получить или очистить последние жалобы", "PLUGINS_STATS_TEXT_SKILL": "МАСТЕРСТВО",
"COMMANDS_MASK_DESC": "скрыть свое присутствие как игрока с правами", "SERVER_BAN_APPEAL": "оспорить:",
"COMMANDS_BANINFO_DESC": "получить информацию о бане игрока", "SERVER_BAN_PREV": "Ранее забанены за",
"COMMANDS_ALIAS_DESC": "получить прошлые имена и IP игрока", "SERVER_BAN_TEXT": "Вы забанены",
"COMMANDS_RCON_DESC": "отправить RCon команду на сервер", "SERVER_ERROR_ADDPLAYER": "Не удалось добавить игрока",
"COMMANDS_PLUGINS_DESC": "просмотреть все загруженные плагины", "SERVER_ERROR_COMMAND_INGAME": "Произошла внутренняя ошибка при обработке вашей команды",
"COMMANDS_IP_DESC": "просмотреть ваш внешний IP-адрес", "SERVER_ERROR_COMMAND_LOG": "команда сгенерировала ошибку",
"COMMANDS_PRUNE_DESC": "понизить любых игроков с правами, которые не подключались за последнее время (по умолчанию: 30 дней)", "SERVER_ERROR_COMMUNICATION": "Не удалось связаться с",
"COMMANDS_SETPASSWORD_DESC": "установить свой пароль аутентификации", "SERVER_ERROR_DNE": "не существует",
"COMMANDS_PING_DESC": "получить пинг игрока", "SERVER_ERROR_DVAR": "Не удалось получить значение dvar:",
"COMMANDS_ARGS_PLAYER": "игрок", "SERVER_ERROR_DVAR_HELP": "убедитесь, что на сервере загружена карта",
"COMMANDS_ARGS_REASON": "причина", "SERVER_ERROR_EXCEPTION": "Неожиданное исключение на",
"COMMANDS_ARGS_MESSAGE": "сообщение", "SERVER_ERROR_LOG": "Неверный игровой лог-файл",
"COMMANDS_ARGS_DURATION": "длительность (m|h|d|w|y)", "SERVER_ERROR_PLUGIN": "Произошла ошибка загрузки плагина",
"COMMANDS_ARGS_CLIENTID": "ID игрока", "SERVER_ERROR_POLLING": "снижение частоты обновления данных",
"COMMANDS_ARGS_COMMANDS": "команды", "SERVER_ERROR_UNFIXABLE": "Мониторинг сервера выключен из-за неисправимых ошибок",
"COMMANDS_ARGS_LEVEL": "уровень", "SERVER_KICK_CONTROLCHARS": "Ваше имя не должно содержать спецсимволы",
"COMMANDS_ARGS_MAP": "карта", "SERVER_KICK_GENERICNAME": "Пожалуйста, смените ваше имя, используя /name",
"COMMANDS_ARGS_CLEAR": "очистить", "SERVER_KICK_MINNAME": "Ваше имя должно содержать хотя бы 3 символа",
"COMMANDS_ARGS_INACTIVE": "дни бездействия", "SERVER_KICK_NAME_INUSE": "Ваше имя используется кем-то другим",
"COMMANDS_ARGS_PASSWORD": "пароль", "SERVER_KICK_TEXT": "Вы были исключены",
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "войти, используя пароль", "SERVER_KICK_VPNS_NOTALLOWED": "Использование VPN не разрешено на этом сервере",
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Вы теперь вошли", "SERVER_PLUGIN_ERROR": "Плагин образовал ошибку",
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Ваш пароль неверный", "SERVER_REPORT_COUNT": "Имеется ^5{0} ^7жалоб за последнее время",
"PLUGINS_STATS_COMMANDS_RESET_DESC": "сбросить вашу статистику под ноль", "SERVER_TB_REMAIN": "Вы временно забанены",
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Ваша статистика на этом сервере была сброшена", "SERVER_TB_TEXT": "Вы временно забанены",
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Вы должны быть подключены к серверу, чтобы сбросить свою статистику", "SERVER_WARNING": "ПРЕДУПРЕЖДЕНИЕ",
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "просмотреть свою статистику", "SERVER_WARNLIMT_REACHED": "Слишком много предупреждений",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "Указанный игрок должен быть в игре", "SERVER_WEBSITE_GENERIC": "веб-сайт этого сервера",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Вы должны быть в игре, чтобы просмотреть свою статистику", "SETUP_DISPLAY_SOCIAL": "Отображать ссылку на социальную сеть в веб-интерфейсе (Discord, веб-сайт, ВК, и т.д.)",
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Не удается найти игрока, которого вы указали.", "SETUP_ENABLE_CUSTOMSAY": "Включить кастомное имя для чата",
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Статистика", "SETUP_ENABLE_MULTIOWN": "Включить поддержку нескольких владельцев",
"PLUGINS_STATS_COMMANDS_TOP_DESC": "показать топ-5 лучших игроков на этом сервере", "SETUP_ENABLE_STEPPEDPRIV": "Включить последовательную иерархию прав",
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Лучшие игроки", "SETUP_ENABLE_VPNS": "Включить поддержку VPN у игроков",
"PLUGINS_STATS_TEXT_KILLS": "УБИЙСТВ", "SETUP_ENABLE_WEBFRONT": "Включить веб-интерфейс",
"PLUGINS_STATS_TEXT_DEATHS": "СМЕРТЕЙ", "SETUP_ENCODING_STRING": "Введите кодировку",
"PLUGINS_STATS_TEXT_SKILL": "МАСТЕРСТВО", "SETUP_IPHUB_KEY": "Введите iphub.info api-ключ",
"GLOBAL_DAYS": "дней", "SETUP_SAY_NAME": "Введите кастомное имя для чата",
"GLOBAL_HOURS": "часов", "SETUP_SERVER_IP": "Введите IP-адрес сервера",
"GLOBAL_MINUTES": "минут", "SETUP_SERVER_MANUALLOG": "Введите путь для лог-файла",
"GLOBAL_REPORT": "Если вы подозреваете кого-то в ^5ЧИТЕРСТВЕ^7, используйте команду ^5!report", "SETUP_SERVER_PORT": "Введите порт сервера",
"GLOBAL_ERROR": "Ошибка", "SETUP_SERVER_RCON": "Введите RCon пароль сервера",
"GLOBAL_WARNING": "Предупреждение", "SETUP_SERVER_SAVE": "Настройки сохранены, добавить",
"GLOBAL_INFO": "Информация", "SETUP_SERVER_USEIW5M": "Использовать парсер Pluto IW5",
"GLOBAL_VERBOSE": "Подробно", "SETUP_SERVER_USET6M": "Использовать парсер Pluto T6",
"SETUP_SOCIAL_LINK": "Ввести ссылку на социальную сеть",
"MANAGER_CONSOLE_NOSERV": "На данный момент нет серверов под мониторингом", "SETUP_SOCIAL_TITLE": "Ввести имя социальной сети",
"SERVER_PLUGIN_ERROR": "Плагин произвел ошибку", "SETUP_USE_CUSTOMENCODING": "Использовать кастомную кодировку парсера",
"PLUGINS_STATS_TEXT_NOQUALIFY": "Ещё нет совернующихся игроков за лучшую статистику" "WEBFRONT_ACTION_BAN_NAME": "Забанить",
} "WEBFRONT_ACTION_LABEL_ID": "ID игрока",
} "WEBFRONT_ACTION_LABEL_PASSWORD": "Пароль",
} "WEBFRONT_ACTION_LABEL_REASON": "Причина",
"WEBFRONT_ACTION_LOGIN_NAME": "Войти",
"WEBFRONT_ACTION_UNBAN_NAME": "Разбанить",
"WEBFRONT_CLIENT_META_FALSE": "не",
"WEBFRONT_CLIENT_META_JOINED": "Присоединился с именем",
"WEBFRONT_CLIENT_META_MASKED": "Замаскирован",
"WEBFRONT_CLIENT_META_TRUE": "",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Игроки с правами",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Профиль",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Подходящие игроки",
"WEBFRONT_CONSOLE_EXECUTE": "Выполнить",
"WEBFRONT_CONSOLE_TITLE": "Веб-консоль",
"WEBFRONT_ERROR_DESC": "IW4MAdmin столкнулся с ошибкой",
"WEBFRONT_ERROR_GENERIC_DESC": "Произошла ошибка во время обработки вашего запроса",
"WEBFRONT_ERROR_GENERIC_TITLE": "Извините!",
"WEBFRONT_ERROR_TITLE": "Ошибка!",
"WEBFRONT_HOME_TITLE": "Обзор сервера",
"WEBFRONT_NAV_CONSOLE": "Консоль",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_HOME": "Домой",
"WEBFRONT_NAV_LOGOUT": "Выйти",
"WEBFRONT_NAV_PENALTIES": "Наказания",
"WEBFRONT_NAV_PRIVILEGED": "Админы",
"WEBFRONT_NAV_PROFILE": "Профиль игрока",
"WEBFRONT_NAV_SEARCH": "Найти игрока",
"WEBFRONT_NAV_SOCIAL": "Соц. сети",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Админ",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "назад",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Имя",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Нарушение",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "осталось",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Показывать",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Показывать только",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Время/Осталось",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Тип",
"WEBFRONT_PENALTY_TITLE": "Наказания игроков",
"WEBFRONT_PROFILE_FSEEN": "Впервые заходил",
"WEBFRONT_PROFILE_LEVEL": "Уровень",
"WEBFRONT_PROFILE_LSEEN": "Последний раз заходил",
"WEBFRONT_PROFILE_PLAYER": "Наиграл",
"PLUGIN_STATS_SETUP_ENABLEAC ": "Включить серверный античит (только IW4)",
"PLUGIN_STATS_ERROR_ADD": "Не удалось добавить сервер в статистику серверов",
"PLUGIN_STATS_CHEAT_DETECTED": "Кажется, вы читерите",
"PLUGINS_STATS_TEXT_KDR": "Соотношение У/C",
"PLUGINS_STATS_META_SPM": "Счёт за минуту",
"PLUGINS_WELCOME_USERANNOUNCE": "^5{{ClientName}} ^7из ^5{{ClientLocation}}",
"PLUGINS_WELCOME_USERWELCOME": "Добро пожаловать, ^5{{ClientName}}^7. Это ваше ^5{{TimesConnected}} ^7подключение по счёту!",
"PLUGINS_WELCOME_PRIVANNOUNCE": "{{ClientLevel}} {{ClientName}} присоединился к серверу",
"PLUGINS_LOGIN_AUTH": "не вошёл",
"PLUGINS_PROFANITY_SETUP_ENABLE": "Включить сдерживание ненормативной лексики",
"PLUGINS_PROFANITY_WARNMSG": "Пожалуйта, не ругайтесь на этом сервере",
"PLUGINS_PROFANITY_KICKMSG": "Чрезмерное употребление ненормативной лексики"
}
}
}

View File

@ -1,50 +0,0 @@
{
"LocalizationName": "en-US",
"LocalizationIndex": {
"Set": {
"WEBFRONT_ACTION_BAN_NAME": "Ban",
"WEBFRONT_ACTION_LABEL_REASON": "Reason",
"WEBFRONT_ACTION_UNBAN_NAME": "Unban",
"WEBFRONT_ACTION_LOGIN_NAME": "Login",
"WEBFRONT_ACTION_LABEL_ID": "Client ID",
"WEBFRONT_ACTION_LABEL_PASSWORD": "Password",
"WEBFRONT_CLIENT_META_MASKED": "Masked",
"WEBFRONT_CLIENT_META_TRUE": "Is",
"WEBFRONT_CLIENT_META_FALSE": "Is not",
"WEBFRONT_CLIENT_META_JOINED": "Joined with alias",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Profile",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Privileged Clients",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Clients Matching",
"WEBFRONT_CONSOLE_TITLE": "Web Console",
"WEBFRONT_HOME_TITLE": "Server Overview",
"WEBFRONT_ERROR_DESC": "IW4MAdmin encountered an error",
"WEBFRONT_ERROR_TITLE": "Error!",
"WEBFRONT_PENALTY_TITLE": "Client Penalties",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Name",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Type",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Offense",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Admin",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Time/Left",
"WEBFRONT_PROFILE_PLAYER": "Played",
"WEBFRONT_PROFILE_FSEEN": "First seen",
"WEBFRONT_PROFILE_LSEEN": "Last seen",
"WEBFRONT_PROFILE_LEVEL": "Level",
"WEBFRONT_CONSOLE_EXECUTE": "Execute",
"WEBFRONT_ERROR_GENERIC_TITLE": "Sorry!",
"WEBFRONT_ERROR_GENERIC_DESC": "An error occurred while processing your request",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "ago",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "left",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Show",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Show only",
"WEBFRONT_NAV_HOME": "Home",
"WEBFRONT_NAV_PENALTIES": "Penalties",
"WEBFRONT_NAV_PRIVILEGED": "Admins",
"WEBFRONT_NAV_SOCIAL": "Social",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_CONSOLE": "Console",
"WEBFRONT_NAV_PROFILE": "Client Profile",
"WEBFRONT_NAV_LOGOUT": "Logout",
"WEBFRONT_NAV_SEARCH": "Find Client"
}
}
}

View File

@ -1,50 +0,0 @@
{
"LocalizationName": "es-BR",
"LocalizationIndex": {
"Set": {
"WEBFRONT_ACTION_BAN_NAME": "Ban",
"WEBFRONT_ACTION_LABEL_REASON": "Razón",
"WEBFRONT_ACTION_UNBAN_NAME": "Desban",
"WEBFRONT_ACTION_LOGIN_NAME": "Inicio de sesión",
"WEBFRONT_ACTION_LABEL_ID": "ID del Cliente",
"WEBFRONT_ACTION_LABEL_PASSWORD": "Contraseña",
"WEBFRONT_CLIENT_META_MASKED": "Enmascarado",
"WEBFRONT_CLIENT_META_TRUE": "Está",
"WEBFRONT_CLIENT_META_FALSE": "No está",
"WEBFRONT_CLIENT_META_JOINED": "Se unió con el alias",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Perfil",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Clientes privilegiados",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Clientes que concuerdan",
"WEBFRONT_CONSOLE_TITLE": "Consola Web",
"WEBFRONT_HOME_TITLE": "Vista general del servidor",
"WEBFRONT_ERROR_DESC": "IW4MAdmin encontró",
"WEBFRONT_ERROR_TITLE": "¡Error!",
"WEBFRONT_PENALTY_TITLE": "Faltas del cliente",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Nombre",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Tipo",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Ofensa",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Administrador",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Tiempo/Restante",
"WEBFRONT_PROFILE_PLAYER": "Jugadas",
"WEBFRONT_PROFILE_FSEEN": "Primera vez visto hace",
"WEBFRONT_PROFILE_LSEEN": "Última vez visto hace",
"WEBFRONT_PROFILE_LEVEL": "Nivel",
"WEBFRONT_CONSOLE_EXECUTE": "Ejecutar",
"WEBFRONT_ERROR_GENERIC_TITLE": "¡Lo lamento!",
"WEBFRONT_ERROR_GENERIC_DESC": "Un error ha ocurrido mientras se procesaba tu solicitud",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "atrás",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "restante",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Mostrar",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Mostrar solamente",
"WEBFRONT_NAV_HOME": "Inicio",
"WEBFRONT_NAV_PENALTIES": "Sanciones",
"WEBFRONT_NAV_PRIVILEGED": "Administradores",
"WEBFRONT_NAV_SOCIAL": "Social",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_CONSOLE": "Consola",
"WEBFRONT_NAV_PROFILE": "Perfil del cliente",
"WEBFRONT_NAV_LOGOUT": "Cerrar sesión",
"WEBFRONT_NAV_SEARCH": "Encontrar cliente"
}
}
}

View File

@ -1,50 +0,0 @@
{
"LocalizationName": "en-US",
"LocalizationIndex": {
"Set": {
"WEBFRONT_ACTION_BAN_NAME": "Забанить",
"WEBFRONT_ACTION_LABEL_REASON": "Причина",
"WEBFRONT_ACTION_UNBAN_NAME": "Разбанить",
"WEBFRONT_ACTION_LOGIN_NAME": "Войти",
"WEBFRONT_ACTION_LABEL_ID": "ID клиента",
"WEBFRONT_ACTION_LABEL_PASSWORD": "Пароль",
"WEBFRONT_CLIENT_META_MASKED": "Замаскирован",
"WEBFRONT_CLIENT_META_TRUE": "",
"WEBFRONT_CLIENT_META_FALSE": "не",
"WEBFRONT_CLIENT_META_JOINED": "Присоединился с именем",
"WEBFRONT_CLIENT_PROFILE_TITLE": "Профиль",
"WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Клиенты с правами",
"WEBFRONT_CLIENT_SEARCH_MATCHING": "Подходящие клиенты",
"WEBFRONT_CONSOLE_TITLE": "Веб-консоль",
"WEBFRONT_HOME_TITLE": "Обзор сервера",
"WEBFRONT_ERROR_DESC": "IW4MAdmin столкнулся с ошибкой",
"WEBFRONT_ERROR_TITLE": "Ошибка!",
"WEBFRONT_PENALTY_TITLE": "Наказания клиентов",
"WEBFRONT_PENALTY_TEMPLATE_NAME": "Имя",
"WEBFRONT_PENALTY_TEMPLATE_TYPE": "Тип",
"WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Нарушение",
"WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Админ",
"WEBFRONT_PENALTY_TEMPLATE_TIME": "Время/Осталось",
"WEBFRONT_PROFILE_PLAYER": "Наиграл",
"WEBFRONT_PROFILE_FSEEN": "Впервые заходил",
"WEBFRONT_PROFILE_LSEEN": "Последний раз заходил",
"WEBFRONT_PROFILE_LEVEL": "Уровень",
"WEBFRONT_CONSOLE_EXECUTE": "Выполнить",
"WEBFRONT_ERROR_GENERIC_TITLE": "Извините!",
"WEBFRONT_ERROR_GENERIC_DESC": "Произошла ошибка во время обработки вашего запроса",
"WEBFRONT_PENALTY_TEMPLATE_AGO": "назад",
"WEBFRONT_PENALTY_TEMPLATE_REMAINING": "осталось",
"WEBFRONT_PENALTY_TEMPLATE_SHOW": "Показывать",
"WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Показывать только",
"WEBFRONT_NAV_HOME": "Домой",
"WEBFRONT_NAV_PENALTIES": "Наказания",
"WEBFRONT_NAV_PRIVILEGED": "Админы",
"WEBFRONT_NAV_SOCIAL": "Соц. сети",
"WEBFRONT_NAV_DISCORD": "Discord",
"WEBFRONT_NAV_CONSOLE": "Консоль",
"WEBFRONT_NAV_PROFILE": "Профиль клиента",
"WEBFRONT_NAV_LOGOUT": "Выйти",
"WEBFRONT_NAV_SEARCH": "Найти клиента"
}
}
}

View File

@ -50,6 +50,7 @@ namespace IW4MAdmin.Application
new ContextSeed(db).Seed().Wait(); new ContextSeed(db).Seed().Wait();
var api = API.Master.Endpoint.Get(); var api = API.Master.Endpoint.Get();
var version = new API.Master.VersionInfo() var version = new API.Master.VersionInfo()
{ {
CurrentVersionStable = 99.99f CurrentVersionStable = 99.99f

View File

@ -130,6 +130,12 @@ namespace IW4MAdmin.Application
#endif #endif
} }
catch (NetworkException e)
{
Logger.WriteError(Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_COMMUNICATION"]);
Logger.WriteDebug(e.Message);
}
catch (Exception E) catch (Exception E)
{ {
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_EXCEPTION"]} {sensitiveEvent.Owner}"); Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_EXCEPTION"]} {sensitiveEvent.Owner}");
@ -277,6 +283,7 @@ namespace IW4MAdmin.Application
Commands.Add(new CListRules()); Commands.Add(new CListRules());
Commands.Add(new CPrivateMessage()); Commands.Add(new CPrivateMessage());
Commands.Add(new CFlag()); Commands.Add(new CFlag());
Commands.Add(new CUnflag());
Commands.Add(new CReport()); Commands.Add(new CReport());
Commands.Add(new CListReports()); Commands.Add(new CListReports());
Commands.Add(new CListBanInfo()); Commands.Add(new CListBanInfo());
@ -396,9 +403,39 @@ namespace IW4MAdmin.Application
HeartbeatTimer = new Timer(SendHeartbeat, new HeartbeatState(), 0, 30000); HeartbeatTimer = new Timer(SendHeartbeat, new HeartbeatState(), 0, 30000);
#endif #endif
// this needs to be run seperately from the main thread // this needs to be run seperately from the main thread
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
Task.Run(() => UpdateStatus(null)); Task.Run(() => UpdateStatus(null));
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
GameEvent newEvent; var eventList = new List<Task>();
async Task processEvent(GameEvent newEvent)
{
try
{
await newEvent.Owner.ExecuteEvent(newEvent);
#if DEBUG
Logger.WriteDebug("Processed Event");
#endif
}
catch (NetworkException e)
{
Logger.WriteError(Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_COMMUNICATION"]);
Logger.WriteDebug(e.Message);
}
catch (Exception E)
{
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_EXCEPTION"]} {newEvent.Owner}");
Logger.WriteDebug("Error Message: " + E.Message);
Logger.WriteDebug("Error Trace: " + E.StackTrace);
}
// tell anyone waiting for the output that we're done
newEvent.OnProcessed.Set();
};
GameEvent queuedEvent = null;
while (Running) while (Running)
{ {
@ -406,28 +443,16 @@ namespace IW4MAdmin.Application
OnEvent.Wait(); OnEvent.Wait();
// todo: sequencially or parallelize? // todo: sequencially or parallelize?
while ((newEvent = Handler.GetNextEvent()) != null) while ((queuedEvent = Handler.GetNextEvent()) != null)
{ {
try eventList.Add(processEvent(queuedEvent));
{
await newEvent.Owner.ExecuteEvent(newEvent);
#if DEBUG
Logger.WriteDebug("Processed Event");
#endif
}
catch (Exception E)
{
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_EXCEPTION"]} {newEvent.Owner}");
Logger.WriteDebug("Error Message: " + E.Message);
Logger.WriteDebug("Error Trace: " + E.StackTrace);
newEvent.OnProcessed.Set();
continue;
}
// tell anyone waiting for the output that we're done
newEvent.OnProcessed.Set();
} }
// this should allow parallel processing of events
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
Task.WhenAll(eventList);
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
// signal that all events have been processed // signal that all events have been processed
OnEvent.Reset(); OnEvent.Reset();
} }

View File

@ -499,8 +499,6 @@ namespace IW4MAdmin
E.Extra = C; E.Extra = C;
// reprocess event as a command // reprocess event as a command
Manager.GetEventHandler().AddEvent(GameEvent.TransferWaiter(GameEvent.EventType.Command, E)); Manager.GetEventHandler().AddEvent(GameEvent.TransferWaiter(GameEvent.EventType.Command, E));
} }
@ -826,7 +824,7 @@ namespace IW4MAdmin
CustomCallback = await ScriptLoaded(); CustomCallback = await ScriptLoaded();
string mainPath = EventParser.GetGameDir(); string mainPath = EventParser.GetGameDir();
#if DEBUG #if DEBUG
basepath.Value = @"\\192.168.88.253\Call of Duty Black Ops II"; basepath.Value = @"\\192.168.88.253\mw2";
#endif #endif
string logPath; string logPath;
if (GameName == Game.IW5) if (GameName == Game.IW5)
@ -860,7 +858,7 @@ namespace IW4MAdmin
} }
Logger.WriteInfo($"Log file is {logPath}"); Logger.WriteInfo($"Log file is {logPath}");
#if DEBUG #if !DEBUG
await Broadcast(loc["BROADCAST_ONLINE"]); await Broadcast(loc["BROADCAST_ONLINE"]);
#endif #endif
} }

View File

@ -19,10 +19,12 @@
<RootNamespace>Master</RootNamespace> <RootNamespace>Master</RootNamespace>
<InterpreterId>MSBuild|dev_env|$(MSBuildProjectFullPath)</InterpreterId> <InterpreterId>MSBuild|dev_env|$(MSBuildProjectFullPath)</InterpreterId>
<IsWindowsApplication>False</IsWindowsApplication> <IsWindowsApplication>False</IsWindowsApplication>
<PythonRunWebServerCommand>master\runserver</PythonRunWebServerCommand> <PythonRunWebServerCommand>
<PythonDebugWebServerCommand>master\runserver</PythonDebugWebServerCommand> </PythonRunWebServerCommand>
<PythonRunWebServerCommandType>module</PythonRunWebServerCommandType> <PythonDebugWebServerCommand>
<PythonDebugWebServerCommandType>module</PythonDebugWebServerCommandType> </PythonDebugWebServerCommand>
<PythonRunWebServerCommandType>script</PythonRunWebServerCommandType>
<PythonDebugWebServerCommandType>script</PythonDebugWebServerCommandType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -65,6 +67,9 @@
<Compile Include="Master\resources\instance.py"> <Compile Include="Master\resources\instance.py">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Master\resources\localization.py">
<SubType>Code</SubType>
</Compile>
<Compile Include="Master\resources\null.py"> <Compile Include="Master\resources\null.py">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>

View File

@ -0,0 +1,35 @@
from flask_restful import Resource
from flask import request, jsonify
from flask_jwt_extended import create_access_token
from master import app, ctx
import datetime
import urllib.request
import csv
from io import StringIO
class Localization(Resource):
def get(self):
response = urllib.request.urlopen('https://docs.google.com/spreadsheets/d/e/2PACX-1vRQjCqPvd0Xqcn86WqpFqp_lx4KKpel9O4OV13NycmV8rmqycorgJQm-8qXMfw37QJHun3pqVZFUKG-/pub?gid=0&single=true&output=csv')
data = response.read().decode('utf-8')
localization = []
csv_data = csv.DictReader(StringIO(data))
for language in csv_data.fieldnames[1:]:
localization.append(
{
'LocalizationName' : language,
'LocalizationIndex' : {
'Set' : {}
}
}
)
for row in csv_data:
localization_string = row['STRING']
count = 0
for language in csv_data.fieldnames[1:]:
localization[count]['LocalizationIndex']['Set'][localization_string] = row[language]
count += 1
return localization, 200

View File

@ -5,9 +5,11 @@ from master.resources.instance import Instance
from master.resources.authenticate import Authenticate from master.resources.authenticate import Authenticate
from master.resources.version import Version from master.resources.version import Version
from master.resources.history_graph import HistoryGraph from master.resources.history_graph import HistoryGraph
from master.resources.localization import Localization
api.add_resource(Null, '/null') api.add_resource(Null, '/null')
api.add_resource(Instance, '/instance/', '/instance/<string:id>') api.add_resource(Instance, '/instance/', '/instance/<string:id>')
api.add_resource(Version, '/version') api.add_resource(Version, '/version')
api.add_resource(Authenticate, '/authenticate') api.add_resource(Authenticate, '/authenticate')
api.add_resource(HistoryGraph, '/history/', '/history/<int:history_count>') api.add_resource(HistoryGraph, '/history/', '/history/<int:history_count>')
api.add_resource(Localization, '/localization')

View File

@ -36,7 +36,7 @@
$.get('/history/' + zoomLevel) $.get('/history/' + zoomLevel)
.done(function (content) { .done(function (content) {
$('#history_graph').html(content.message); $('#history_graph').html(content.message);
maxPoints = Math.min(maxPoints, dataPoints); //maxPoints = Math.min(maxPoints, dataPoints);
perfomingZoom = false; perfomingZoom = false;
}); });
} }

View File

@ -12,7 +12,7 @@ namespace IW4MAdmin.Plugins.Login.Commands
{ {
new CommandArgument() new CommandArgument()
{ {
Name = "password", Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PASSWORD"],
Required = true Required = true
} }
}){ } }){ }

View File

@ -51,7 +51,7 @@ namespace IW4MAdmin.Plugins.Login
return Task.CompletedTask; return Task.CompletedTask;
if (!AuthorizedClients[E.Origin.ClientId]) if (!AuthorizedClients[E.Origin.ClientId])
throw new AuthorizationException("not logged in"); throw new AuthorizationException(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_AUTH"]);
} }
return Task.CompletedTask; return Task.CompletedTask;

View File

@ -21,9 +21,11 @@ namespace IW4MAdmin.Plugins.ProfanityDeterment
"fuck" "fuck"
}; };
EnableProfanityDeterment = Utilities.PromptBool("Enable profanity deterring"); var loc = Utilities.CurrentLocalization.LocalizationIndex;
ProfanityWarningMessage = "Please do not use profanity on this server";
ProfanityKickMessage = "Excessive use of profanity"; EnableProfanityDeterment = Utilities.PromptBool(loc["PLUGINS_PROFANITY_SETUP_ENABLE"]);
ProfanityWarningMessage = loc["PLUGINS_PROFANITY_WARNMSG"];
ProfanityKickMessage = loc["PLUGINS_PROFANITY_KICKMSG"];
KickAfterInfringementCount = 2; KickAfterInfringementCount = 2;
return this; return this;

View File

@ -16,6 +16,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
int AboveThresholdCount; int AboveThresholdCount;
double AverageKillTime; double AverageKillTime;
Dictionary<IW4Info.HitLocation, int> HitLocationCount; Dictionary<IW4Info.HitLocation, int> HitLocationCount;
double AngleDifferenceAverage;
EFClientStatistics ClientStats; EFClientStatistics ClientStats;
DateTime LastKill; DateTime LastKill;
long LastOffset; long LastOffset;
@ -32,6 +33,11 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
Strain = new Strain(); Strain = new Strain();
} }
public void ProcessScriptDamage(string damageLine)
{
}
public void ProcessDamage(string damageLine) public void ProcessDamage(string damageLine)
{ {
string regex = @"^(D);((?:bot[0-9]+)|(?:[A-Z]|[0-9])+);([0-9]+);(axis|allies);(.+);((?:[A-Z]|[0-9])+);([0-9]+);(axis|allies);(.+);((?:[0-9]+|[a-z]+|_)+);([0-9]+);((?:[A-Z]|_)+);((?:[a-z]|_)+)$"; string regex = @"^(D);((?:bot[0-9]+)|(?:[A-Z]|[0-9])+);([0-9]+);(axis|allies);(.+);((?:[A-Z]|[0-9])+);([0-9]+);(axis|allies);(.+);((?:[0-9]+|[a-z]+|_)+);([0-9]+);((?:[A-Z]|_)+);((?:[a-z]|_)+)$";
@ -57,7 +63,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
/// </summary> /// </summary>
/// <param name="kill">kill performed by the player</param> /// <param name="kill">kill performed by the player</param>
/// <returns>true if detection reached thresholds, false otherwise</returns> /// <returns>true if detection reached thresholds, false otherwise</returns>
public DetectionPenaltyResult ProcessKill(EFClientKill kill) public DetectionPenaltyResult ProcessKill(EFClientKill kill, bool isDamage)
{ {
if ((kill.DeathType != IW4Info.MeansOfDeath.MOD_PISTOL_BULLET && if ((kill.DeathType != IW4Info.MeansOfDeath.MOD_PISTOL_BULLET &&
kill.DeathType != IW4Info.MeansOfDeath.MOD_RIFLE_BULLET && kill.DeathType != IW4Info.MeansOfDeath.MOD_RIFLE_BULLET &&
@ -72,59 +78,49 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
LastKill = DateTime.UtcNow; LastKill = DateTime.UtcNow;
HitLocationCount[kill.HitLoc]++; HitLocationCount[kill.HitLoc]++;
Kills++; if (!isDamage)
AverageKillTime = (AverageKillTime + (DateTime.UtcNow - LastKill).TotalSeconds) / Kills; {
Kills++;
AverageKillTime = (AverageKillTime + (DateTime.UtcNow - LastKill).TotalSeconds) / Kills;
}
#region VIEWANGLES #region VIEWANGLES
// make sure it's divisible by 2 if (kill.AnglesList.Count >= 2)
if (kill.AnglesList.Count % 2 == 0)
{ {
/* double realAgainstPredict = Math.Abs(Vector3.AbsoluteDistance(kill.AnglesList[0], kill.AnglesList[1]) -
double maxDistance = 0; (Vector3.AbsoluteDistance(kill.AnglesList[0], kill.ViewAngles) +
for (int i = 0; i < kill.AnglesList.Count - 1; i += 1) Vector3.AbsoluteDistance(kill.AnglesList[1], kill.ViewAngles)));
{
// Log.WriteDebug($"Fixed 1 {kill.AnglesList[i]}");
// Log.WriteDebug($"Fixed 2 {kill.AnglesList[i + 1]}");
// fix max distance
double currDistance = Vector3.AbsoluteDistance(kill.AnglesList[i], kill.AnglesList[i + 1]);
//Log.WriteDebug($"Distance {currDistance}");
if (currDistance > maxDistance)
{
maxDistance = currDistance;
}
if (maxDistance > hitLoc.MaxAngleDistance)
hitLoc.MaxAngleDistance = (float)maxDistance;
}*/
double realAgainstPredict = Vector3.AbsoluteDistance(kill.ViewAngles, kill.AnglesList[10]);
// LIFETIME
var hitLoc = ClientStats.HitLocations var hitLoc = ClientStats.HitLocations
.First(hl => hl.Location == kill.HitLoc); .First(hl => hl.Location == kill.HitLoc);
float previousAverage = hitLoc.HitOffsetAverage; float previousAverage = hitLoc.HitOffsetAverage;
double newAverage = (previousAverage * (hitLoc.HitCount - 1) + realAgainstPredict) / hitLoc.HitCount; double newAverage = (previousAverage * (hitLoc.HitCount - 1) + realAgainstPredict) / hitLoc.HitCount;
hitLoc.HitOffsetAverage = (float)newAverage; hitLoc.HitOffsetAverage = (float)newAverage;
if (double.IsNaN(hitLoc.HitOffsetAverage))
{
Log.WriteWarning("[Detection::ProcessKill] HitOffsetAvgerage NaN");
Log.WriteDebug($"{previousAverage}-{hitLoc.HitCount}-{hitLoc}-{newAverage}");
hitLoc.HitOffsetAverage = 0f;
}
var hitlocations = ClientStats.HitLocations if (hitLoc.HitOffsetAverage > Thresholds.MaxOffset)
.Where(hl => new List<int>() { 4, 5, 2, 3, }.Contains((int)hl.Location))
.Where(hl => ClientStats.SessionKills > Thresholds.MediumSampleMinKills + 30);
var validOffsets = ClientStats.HitLocations.Where(hl => hl.HitCount > 0);
double hitOffsetAverage = validOffsets.Sum(o => o.HitCount * o.HitOffsetAverage) / (double)validOffsets.Sum(o => o.HitCount);
if (hitOffsetAverage > Thresholds.MaxOffset)
{ {
return new DetectionPenaltyResult() return new DetectionPenaltyResult()
{ {
ClientPenalty = Penalty.PenaltyType.Ban, ClientPenalty = Penalty.PenaltyType.Ban,
RatioAmount = hitOffsetAverage, RatioAmount = hitLoc.HitOffsetAverage,
KillCount = ClientStats.SessionKills,
};
}
// SESSION
int sessHitLocCount = HitLocationCount[kill.HitLoc];
double sessAverage = (AngleDifferenceAverage * (sessHitLocCount - 1)) + realAgainstPredict / sessHitLocCount;
AngleDifferenceAverage = sessAverage;
if (sessAverage > Thresholds.MaxOffset)
{
return new DetectionPenaltyResult()
{
ClientPenalty = Penalty.PenaltyType.Ban,
RatioAmount = sessHitLocCount,
KillCount = ClientStats.SessionKills, KillCount = ClientStats.SessionKills,
}; };
} }

View File

@ -40,14 +40,14 @@ namespace IW4MAdmin.Plugins.Stats.Commands
where client.Level != Player.Permission.Banned where client.Level != Player.Permission.Banned
where client.LastConnection >= thirtyDaysAgo where client.LastConnection >= thirtyDaysAgo
orderby stats.Skill descending orderby stats.Skill descending
select $"^3{client.Name}^7 - ^5{stats.KDR} ^7KDR | ^5{stats.Skill} ^7{Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_SKILL"]}") select $"^3{alias.Name}^7 - ^5{stats.KDR} ^7KDR | ^5{stats.Skill} ^7{Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_SKILL"]}")
.Take(5); .Take(5);
topStatsText.AddRange(await iqStats.ToListAsync()); topStatsText.AddRange(await iqStats.ToListAsync());
} }
// no one qualified // no one qualified
if (topStatsText.Count == 0) if (topStatsText.Count == 1)
{ {
topStatsText = new List<string>() topStatsText = new List<string>()
{ {

View File

@ -1,10 +1,6 @@
using SharedLibraryCore.Configuration; using SharedLibraryCore;
using SharedLibraryCore.Interfaces; using SharedLibraryCore.Interfaces;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IW4MAdmin.Plugins.Stats.Config namespace IW4MAdmin.Plugins.Stats.Config
{ {
@ -16,12 +12,8 @@ namespace IW4MAdmin.Plugins.Stats.Config
public string Name() => "Stats"; public string Name() => "Stats";
public IBaseConfiguration Generate() public IBaseConfiguration Generate()
{ {
var config = new StatsConfiguration(); EnableAntiCheat = Utilities.PromptBool(Utilities.CurrentLocalization.LocalizationIndex["PLUGIN_STATS_SETUP_ENABLEAC"]);
KillstreakMessages = new List<StreakMessageConfiguration>()
Console.Write("Enable server-side anti-cheat? [y/n]: ");
config.EnableAntiCheat = (Console.ReadLine().ToLower().FirstOrDefault() as char?) == 'y';
config.KillstreakMessages = new List<StreakMessageConfiguration>()
{ {
new StreakMessageConfiguration(){ new StreakMessageConfiguration(){
Count = -1, Count = -1,
@ -42,7 +34,7 @@ namespace IW4MAdmin.Plugins.Stats.Config
} }
}; };
config.DeathstreakMessages = new List<StreakMessageConfiguration>() DeathstreakMessages = new List<StreakMessageConfiguration>()
{ {
new StreakMessageConfiguration() new StreakMessageConfiguration()
{ {
@ -55,7 +47,7 @@ namespace IW4MAdmin.Plugins.Stats.Config
}, },
}; };
return config; return this;
} }
} }
} }

View File

@ -73,7 +73,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
catch (Exception e) catch (Exception e)
{ {
Log.WriteError($"Could not add server to ServerStats - {e.Message}"); Log.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["PLUGIN_STATS_ERROR_ADD"]} - {e.Message}");
} }
} }
@ -217,7 +217,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
if (Plugin.Config.Configuration().EnableAntiCheat) if (Plugin.Config.Configuration().EnableAntiCheat)
{ {
var clientDetection = Servers[serverId].PlayerDetections[clientId]; var clientDetection = Servers[serverId].PlayerDetections[clientId];
clientDetection.ProcessDamage(eventLine); clientDetection.ProcessScriptDamage(eventLine);
} }
} }
@ -225,7 +225,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
/// Process stats for kill event /// Process stats for kill event
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task AddScriptKill(DateTime time, Player attacker, Player victim, int serverId, string map, string hitLoc, string type, public async Task AddScriptKill(bool isDamage, DateTime time, Player attacker, Player victim, int serverId, string map, string hitLoc, string type,
string damage, string weapon, string killOrigin, string deathOrigin, string viewAngles, string offset, string isKillstreakKill, string Ads, string snapAngles) string damage, string weapon, string killOrigin, string deathOrigin, string viewAngles, string offset, string isKillstreakKill, string Ads, string snapAngles)
{ {
var statsSvc = ContextThreads[serverId]; var statsSvc = ContextThreads[serverId];
@ -252,18 +252,18 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
try try
{ {
foreach(string angle in snapAngles.Split(':', StringSplitOptions.RemoveEmptyEntries)) foreach (string angle in snapAngles.Split(':', StringSplitOptions.RemoveEmptyEntries))
{ {
snapshotAngles.Add(Vector3.Parse(angle).FixIW4Angles()); snapshotAngles.Add(Vector3.Parse(angle).FixIW4Angles());
} }
} }
catch (FormatException) catch (FormatException)
{ {
Log.WriteWarning("Could not parse snapshot angles"); Log.WriteWarning("Could not parse snapshot angles");
return; return;
} }
var kill = new EFClientKill() var kill = new EFClientKill()
{ {
Active = true, Active = true,
@ -292,7 +292,10 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
return; return;
} }
await AddStandardKill(attacker, victim); if (!isDamage)
{
await AddStandardKill(attacker, victim);
}
if (kill.IsKillstreakKill) if (kill.IsKillstreakKill)
{ {
@ -310,7 +313,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
clientStats.HitLocations.Single(hl => hl.Location == kill.HitLoc).HitCount += 1; clientStats.HitLocations.Single(hl => hl.Location == kill.HitLoc).HitCount += 1;
statsSvc.ClientStatSvc.Update(clientStats); statsSvc.ClientStatSvc.Update(clientStats);
// await statsSvc.ClientStatSvc.SaveChangesAsync(); // await statsSvc.ClientStatSvc.SaveChangesAsync();
} }
//statsSvc.KillStatsSvc.Insert(kill); //statsSvc.KillStatsSvc.Insert(kill);
@ -320,10 +323,6 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
{ {
async Task executePenalty(Cheat.DetectionPenaltyResult penalty) async Task executePenalty(Cheat.DetectionPenaltyResult penalty)
{ {
#if DEBUG
Log.WriteVerbose("Player Banned");
return;
#endif
// prevent multiple bans from occuring // prevent multiple bans from occuring
if (attacker.Level == Player.Permission.Banned) if (attacker.Level == Player.Permission.Banned)
{ {
@ -333,7 +332,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
switch (penalty.ClientPenalty) switch (penalty.ClientPenalty)
{ {
case Penalty.PenaltyType.Ban: case Penalty.PenaltyType.Ban:
await attacker.Ban("You appear to be cheating", new Player() { ClientId = 1 }); await attacker.Ban(Utilities.CurrentLocalization.LocalizationIndex["PLUGIN_STATS_CHEAT_DETECTED"], new Player() { ClientId = 1 });
break; break;
case Penalty.PenaltyType.Flag: case Penalty.PenaltyType.Flag:
if (attacker.Level != Player.Permission.User) if (attacker.Level != Player.Permission.User)
@ -350,7 +349,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
} }
} }
await executePenalty(clientDetection.ProcessKill(kill)); await executePenalty(clientDetection.ProcessKill(kill, isDamage));
await executePenalty(clientDetection.ProcessTotalRatio(clientStats)); await executePenalty(clientDetection.ProcessTotalRatio(clientStats));
#if DEBUG #if DEBUG
@ -495,12 +494,16 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
double timeSinceLastCalc = (DateTime.UtcNow - clientStats.LastStatCalculation).TotalSeconds / 60.0; double timeSinceLastCalc = (DateTime.UtcNow - clientStats.LastStatCalculation).TotalSeconds / 60.0;
double timeSinceLastActive = (DateTime.UtcNow - clientStats.LastActive).TotalSeconds / 60.0; double timeSinceLastActive = (DateTime.UtcNow - clientStats.LastActive).TotalSeconds / 60.0;
// calculate the players Score Per Minute for the current session int scoreDifference = 0;
int scoreDifference = clientStats.RoundScore - clientStats.LastScore; // this means they've been tking or suicide and is the only time they can have a negative SPM
if (clientStats.RoundScore < 0)
// todo: fix the SPM for TEAMDAMAGE {
if (scoreDifference < 0) scoreDifference = clientStats.RoundScore + clientStats.LastScore;
scoreDifference = clientStats.RoundScore; }
else
{
scoreDifference = clientStats.RoundScore - clientStats.LastScore;
}
double killSPM = scoreDifference / timeSinceLastCalc; double killSPM = scoreDifference / timeSinceLastCalc;
@ -564,7 +567,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
var ieClientStats = statsSvc.ClientStatSvc.Find(cs => cs.ServerId == serverId); var ieClientStats = statsSvc.ClientStatSvc.Find(cs => cs.ServerId == serverId);
// set these incase they've we've imported settings // set these incase we've imported settings
serverStats.TotalKills = ieClientStats.Sum(cs => cs.Kills); serverStats.TotalKills = ieClientStats.Sum(cs => cs.Kills);
serverStats.TotalPlayTime = Manager.GetClientService().GetTotalPlayTime().Result; serverStats.TotalPlayTime = Manager.GetClientService().GetTotalPlayTime().Result;
@ -612,16 +615,10 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
int serverId = sv.GetHashCode(); int serverId = sv.GetHashCode();
var statsSvc = ContextThreads[serverId]; var statsSvc = ContextThreads[serverId];
Log.WriteDebug("Syncing server stats"); Log.WriteDebug("Syncing stats contexts");
await statsSvc.ServerStatsSvc.SaveChangesAsync(); await statsSvc.ServerStatsSvc.SaveChangesAsync();
Log.WriteDebug("Syncing client stats");
await statsSvc.ClientStatSvc.SaveChangesAsync(); await statsSvc.ClientStatSvc.SaveChangesAsync();
Log.WriteDebug("Syncing kill stats");
await statsSvc.KillStatsSvc.SaveChangesAsync(); await statsSvc.KillStatsSvc.SaveChangesAsync();
Log.WriteDebug("Syncing servers");
await statsSvc.ServerSvc.SaveChangesAsync(); await statsSvc.ServerSvc.SaveChangesAsync();
statsSvc = null; statsSvc = null;

View File

@ -74,15 +74,19 @@ namespace IW4MAdmin.Plugins.Stats
case GameEvent.EventType.Kill: case GameEvent.EventType.Kill:
string[] killInfo = (E.Data != null) ? E.Data.Split(';') : new string[0]; string[] killInfo = (E.Data != null) ? E.Data.Split(';') : new string[0];
if (killInfo.Length >= 9 && killInfo[0].Contains("ScriptKill") && E.Owner.CustomCallback) if (killInfo.Length >= 9 && killInfo[0].Contains("ScriptKill") && E.Owner.CustomCallback)
await Manager.AddScriptKill(E.Time, E.Origin, E.Target, S.GetHashCode(), S.CurrentMap.Name, killInfo[7], killInfo[8], await Manager.AddScriptKill(false, E.Time, E.Origin, E.Target, S.GetHashCode(), S.CurrentMap.Name, killInfo[7], killInfo[8],
killInfo[5], killInfo[6], killInfo[3], killInfo[4], killInfo[9], killInfo[10], killInfo[11], killInfo[12], killInfo[13]); killInfo[5], killInfo[6], killInfo[3], killInfo[4], killInfo[9], killInfo[10], killInfo[11], killInfo[12], killInfo[13]);
else if (!E.Owner.CustomCallback) else if (!E.Owner.CustomCallback)
await Manager.AddStandardKill(E.Origin, E.Target); await Manager.AddStandardKill(E.Origin, E.Target);
break; break;
case GameEvent.EventType.Death: case GameEvent.EventType.Death:
break; break;
case GameEvent.EventType.Damage: //case GameEvent.EventType.Damage:
Manager.AddDamageEvent(E.Data, E.Origin.ClientId, E.Owner.GetHashCode()); case GameEvent.EventType.ScriptDamage:
killInfo = (E.Data != null) ? E.Data.Split(';') : new string[0];
if (killInfo.Length >= 9 && E.Owner.CustomCallback)
await Manager.AddScriptKill(true, E.Time, E.Origin, E.Target, S.GetHashCode(), S.CurrentMap.Name, killInfo[7], killInfo[8],
killInfo[5], killInfo[6], killInfo[3], killInfo[4], killInfo[9], killInfo[10], killInfo[11], killInfo[12], killInfo[13]);
break; break;
} }
} }
@ -113,27 +117,27 @@ namespace IW4MAdmin.Plugins.Stats
{ {
new ProfileMeta() new ProfileMeta()
{ {
Key = "Kills", Key = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_KILLS"],
Value = kills Value = kills
}, },
new ProfileMeta() new ProfileMeta()
{ {
Key = "Deaths", Key = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_DEATHS"],
Value = deaths Value = deaths
}, },
new ProfileMeta() new ProfileMeta()
{ {
Key = "KDR", Key = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_KDR"],
Value = kdr Value = kdr
}, },
new ProfileMeta() new ProfileMeta()
{ {
Key = "Skill", Key = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_SKILL"],
Value = skill Value = skill
}, },
new ProfileMeta() new ProfileMeta()
{ {
Key = "Score Per Minute", Key = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_META_SPM"],
Value = spm Value = spm
} }
}; };

View File

@ -1,4 +1,5 @@
using SharedLibraryCore.Interfaces; using SharedLibraryCore;
using SharedLibraryCore.Interfaces;
namespace IW4MAdmin.Plugins.Welcome namespace IW4MAdmin.Plugins.Welcome
{ {
@ -10,9 +11,9 @@ namespace IW4MAdmin.Plugins.Welcome
public IBaseConfiguration Generate() public IBaseConfiguration Generate()
{ {
UserAnnouncementMessage = "^5{{ClientName}} ^7hails from ^5{{ClientLocation}}"; UserAnnouncementMessage = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_WELCOME_USERANNOUNCE"];
UserWelcomeMessage = "Welcome ^5{{ClientName}}^7, this is your ^5{{TimesConnected}} ^7time connecting!"; UserWelcomeMessage = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_WELCOME_USERWELCOME"];
PrivilegedAnnouncementMessage = "{{ClientLevel}} {{ClientName}} has joined the server"; PrivilegedAnnouncementMessage = Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_WELCOME_PRIVANNOUNCE"];
return this; return this;
} }

View File

@ -668,6 +668,7 @@ namespace SharedLibraryCore.Commands
} }
} }
public class CFlag : Command public class CFlag : Command
{ {
public CFlag() : public CFlag() :
@ -697,9 +698,7 @@ namespace SharedLibraryCore.Commands
if (E.Target.Level == Player.Permission.Flagged) if (E.Target.Level == Player.Permission.Flagged)
{ {
E.Target.Level = Player.Permission.User; await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_ALREADYFLAGGED"]}");
await E.Owner.Manager.GetClientService().Update(E.Target);
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_UNFLAG"]} ^5{E.Target.Name}");
} }
else else
@ -726,6 +725,42 @@ namespace SharedLibraryCore.Commands
} }
} }
public class CUnflag : Command
{
public CUnflag() :
base("unflag", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNFLAG_DESC"], "uf", Player.Permission.Moderator, true, new CommandArgument[]
{
new CommandArgument()
{
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
Required = true
}
})
{ }
public override async Task ExecuteAsync(GameEvent E)
{
if (E.Target.Level >= E.Origin.Level)
{
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNFLAG_FAIL"]} ^5{E.Target.Name}");
return;
}
if (E.Target.Level == Player.Permission.Flagged)
{
E.Target.Level = Player.Permission.User;
await E.Owner.Manager.GetClientService().Update(E.Target);
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_UNFLAG"]} ^5{E.Target.Name}");
}
else
{
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNFLAG_NOTFLAGGED"]);
}
}
}
public class CReport : Command public class CReport : Command
{ {
public CReport() : public CReport() :
@ -860,7 +895,7 @@ namespace SharedLibraryCore.Commands
} }
string timeRemaining = penalty.Type == Penalty.PenaltyType.TempBan ? $"({(penalty.Expires - DateTime.UtcNow).TimeSpanText()} remaining)" : ""; string timeRemaining = penalty.Type == Penalty.PenaltyType.TempBan ? $"({(penalty.Expires - DateTime.UtcNow).TimeSpanText()} remaining)" : "";
string success = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BANINO_SUCCESS"]; string success = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BANINFO_SUCCESS"];
await E.Origin.Tell($"^1{E.Target.Name} ^7{string.Format(success, penalty.Punisher.Name)} {penalty.Punisher.Name} {timeRemaining}"); await E.Origin.Tell($"^1{E.Target.Name} ^7{string.Format(success, penalty.Punisher.Name)} {penalty.Punisher.Name} {timeRemaining}");
} }

View File

@ -11,10 +11,10 @@ namespace SharedLibraryCore.Configuration
public bool EnableMultipleOwners { get; set; } public bool EnableMultipleOwners { get; set; }
public bool EnableSteppedHierarchy { get; set; } public bool EnableSteppedHierarchy { get; set; }
public bool EnableClientVPNs { get; set; } public bool EnableClientVPNs { get; set; }
public bool EnableDiscordLink { get; set; } public bool EnableSocialLink { get; set; }
public bool EnableCustomSayName { get; set; } public bool EnableCustomSayName { get; set; }
public string CustomSayName { get; set; } public string CustomSayName { get; set; }
public string DiscordInviteCode { get; set; } public string SocialLinkAddress { get; set; }
public string SocialLinkTitle { get; set; } public string SocialLinkTitle { get; set; }
public string IPHubAPIKey { get; set; } public string IPHubAPIKey { get; set; }
public string WebfrontBindUrl { get; set; } public string WebfrontBindUrl { get; set; }
@ -41,7 +41,6 @@ namespace SharedLibraryCore.Configuration
bool useCustomParserEncoding = Utilities.PromptBool(loc["SETUP_USE_CUSTOMENCODING"]); bool useCustomParserEncoding = Utilities.PromptBool(loc["SETUP_USE_CUSTOMENCODING"]);
CustomParserEncoding = useCustomParserEncoding ? Utilities.PromptString(loc["SETUP_ENCODING_STRING"]) : "windows-1252"; CustomParserEncoding = useCustomParserEncoding ? Utilities.PromptString(loc["SETUP_ENCODING_STRING"]) : "windows-1252";
WebfrontBindUrl = "http://127.0.0.1:1624"; WebfrontBindUrl = "http://127.0.0.1:1624";
if (EnableCustomSayName) if (EnableCustomSayName)
@ -52,12 +51,12 @@ namespace SharedLibraryCore.Configuration
if (!EnableClientVPNs) if (!EnableClientVPNs)
IPHubAPIKey = Utilities.PromptString(loc["SETUP_IPHUB_KEY"]); IPHubAPIKey = Utilities.PromptString(loc["SETUP_IPHUB_KEY"]);
EnableDiscordLink = Utilities.PromptBool(loc["SETUP_DISPLAY_SOCIAL"]); EnableSocialLink = Utilities.PromptBool(loc["SETUP_DISPLAY_SOCIAL"]);
if (EnableDiscordLink) if (EnableSocialLink)
{ {
SocialLinkTitle = Utilities.PromptString(loc["SETUP_SOCIAL_TITLE"]); SocialLinkTitle = Utilities.PromptString(loc["SETUP_SOCIAL_TITLE"]);
DiscordInviteCode = Utilities.PromptString(loc["SETUP_SOCIAL_LINK"]); SocialLinkAddress = Utilities.PromptString(loc["SETUP_SOCIAL_LINK"]);
} }
return this; return this;

View File

@ -34,6 +34,7 @@ namespace SharedLibraryCore
// FROM GAME // FROM GAME
Script, Script,
ScriptDamage,
Kill, Kill,
Damage, Damage,
Death, Death,

View File

@ -48,13 +48,14 @@ namespace SharedLibraryCore.Helpers
{ {
double deltaX = Math.Abs(b.X -a.X); double deltaX = Math.Abs(b.X -a.X);
double deltaY = Math.Abs(b.Y - a.Y); double deltaY = Math.Abs(b.Y - a.Y);
double deltaZ = Math.Abs(b.Z - a.Z); // double deltaZ = Math.Abs(b.Z - a.Z);
// this 'fixes' the roll-over angles
double dx = deltaX < 360.0 / 2 ? deltaX : 360.0 - deltaX; double dx = deltaX < 360.0 / 2 ? deltaX : 360.0 - deltaX;
double dy = deltaY < 360.0 / 2 ? deltaY : 360.0 - deltaY; double dy = deltaY < 360.0 / 2 ? deltaY : 360.0 - deltaY;
double dz = deltaZ < 360.0 / 2 ? deltaZ : 360.0 - deltaZ; // double dz = deltaZ < 360.0 / 2 ? deltaZ : 360.0 - deltaZ;
return Math.Sqrt((dx * dx) + (dy * dy) + (dz * dx)); return Math.Sqrt((dx * dx) + (dy * dy) /*+ (dz * dz)*/);
} }
public static Vector3 Subtract(Vector3 a, Vector3 b) => new Vector3(b.X - a.X, b.Y - a.Y, b.Z - a.Z); public static Vector3 Subtract(Vector3 a, Vector3 b) => new Vector3(b.X - a.X, b.Y - a.Y, b.Z - a.Z);
@ -64,6 +65,5 @@ namespace SharedLibraryCore.Helpers
public double Magnitude() => Math.Sqrt((X * X) + (Y * Y) + (Z * Z)); public double Magnitude() => Math.Sqrt((X * X) + (Y * Y) + (Z * Z));
public double AngleBetween(Vector3 a) => Math.Acos(this.DotProduct(a) / (a.Magnitude() * this.Magnitude())); public double AngleBetween(Vector3 a) => Math.Acos(this.DotProduct(a) / (a.Magnitude() * this.Magnitude()));
} }
} }

View File

@ -40,6 +40,8 @@ namespace SharedLibraryCore.Objects
public async Task Tell(String Message) public async Task Tell(String Message)
{ {
// await CurrentServer.Tell(Message, this);
var e = new GameEvent() var e = new GameEvent()
{ {
Message = Message, Message = Message,
@ -50,6 +52,8 @@ namespace SharedLibraryCore.Objects
}; };
CurrentServer.Manager.GetEventHandler().AddEvent(e); CurrentServer.Manager.GetEventHandler().AddEvent(e);
// this ensures the output it sent before returning
await Task.Run(() => e.OnProcessed.Wait());
} }
public async Task Kick(String Message, Player Sender) public async Task Kick(String Message, Player Sender)

View File

@ -165,6 +165,7 @@ namespace SharedLibraryCore
Console.WriteLine(Utilities.StripColors(Message)); Console.WriteLine(Utilities.StripColors(Message));
Console.ForegroundColor = ConsoleColor.Gray; Console.ForegroundColor = ConsoleColor.Gray;
} }
if (CommandResult.Count > 15) if (CommandResult.Count > 15)
CommandResult.RemoveAt(0); CommandResult.RemoveAt(0);

View File

@ -31,9 +31,9 @@ namespace WebfrontCore.Controllers
if (Localization == null) if (Localization == null)
Localization = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; Localization = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex;
if (Manager.GetApplicationSettings().Configuration().EnableDiscordLink && SocialLink == null) if (Manager.GetApplicationSettings().Configuration().EnableSocialLink && SocialLink == null)
{ {
SocialLink = Manager.GetApplicationSettings().Configuration().DiscordInviteCode; SocialLink = Manager.GetApplicationSettings().Configuration().SocialLinkAddress;
SocialTitle = Manager.GetApplicationSettings().Configuration().SocialLinkTitle; SocialTitle = Manager.GetApplicationSettings().Configuration().SocialLinkTitle;
} }
} }

View File

@ -49,7 +49,7 @@ namespace WebfrontCore.Controllers
Manager.GetEventHandler().AddEvent(remoteEvent); Manager.GetEventHandler().AddEvent(remoteEvent);
// wait for the event to process // wait for the event to process
await Task.Run(() => remoteEvent.OnProcessed.WaitHandle.WaitOne(5000)); await Task.Run(() => remoteEvent.OnProcessed.Wait());
var response = server.CommandResult.Where(c => c.ClientId == client.ClientId).ToList(); var response = server.CommandResult.Where(c => c.ClientId == client.ClientId).ToList();
// remove the added command response // remove the added command response