re-added the kill server command (can only be used if run as admin)
less warns when using a disposed socket topstats added to tokens as {{TOPSTATS}} fixed topstats reporting for only a single server added fix to iw4 regex for negative score tokens now support multiple lines (using Environment.NewLine to separate) localization includes culture again
This commit is contained in:
parent
3092a529e9
commit
e8dff01c41
@ -46,7 +46,7 @@ namespace IW4MAdmin.Application.API
|
||||
|
||||
FlaggedMessageCount = 0;
|
||||
|
||||
E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationSet["GLOBAL_REPORT"]).Wait();
|
||||
E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationIndex["GLOBAL_REPORT"]).Wait();
|
||||
Events.Enqueue(new EventInfo(
|
||||
EventInfo.EventType.ALERT,
|
||||
EventInfo.EventVersion.IW4MAdmin,
|
||||
|
@ -60,13 +60,13 @@
|
||||
<None Update="DefaultSettings.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.en-EN.json">
|
||||
<None Update="Localization\IW4MAdmin.en-US.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.es-ES.json">
|
||||
<None Update="Localization\IW4MAdmin.es-EC.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.pt-PT.json">
|
||||
<None Update="Localization\IW4MAdmin.pt-BR.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.ru-RU.json">
|
||||
|
@ -9,33 +9,51 @@ namespace IW4MAdmin.Application.Localization
|
||||
{
|
||||
public class Configure
|
||||
{
|
||||
public static void Initialize()
|
||||
public static void Initialize(string customLocale)
|
||||
{
|
||||
string currentLocale = Program.ServerManager.GetApplicationSettings().Configuration()?.CustomLocale ??
|
||||
CultureInfo.CurrentCulture?.Name?.Substring(0, 2);
|
||||
string currentLocale = string.IsNullOrEmpty(customLocale) ? CultureInfo.CurrentCulture.Name : customLocale;
|
||||
string[] localizationFiles = Directory.GetFiles("Localization", $"*.{currentLocale}.json");
|
||||
|
||||
// culture doesn't exist so we just want language
|
||||
if (localizationFiles.Length == 0)
|
||||
{
|
||||
localizationFiles = Directory.GetFiles("Localization", $"*.{currentLocale.Substring(0, 2)}*.json");
|
||||
}
|
||||
|
||||
// language doesn't exist either so defaulting to english
|
||||
if (localizationFiles.Length == 0)
|
||||
{
|
||||
localizationFiles = Directory.GetFiles("Localization", "*.en-US.json");
|
||||
}
|
||||
|
||||
// this should never happen unless the localization folder is empty
|
||||
if (localizationFiles.Length == 0)
|
||||
{
|
||||
throw new Exception("No localization files were found");
|
||||
}
|
||||
|
||||
var localizationDict = new Dictionary<string, string>();
|
||||
|
||||
foreach (string filePath in localizationFiles)
|
||||
{
|
||||
var localizationContents = File.ReadAllText(filePath, Encoding.UTF8);
|
||||
var eachLocalizationFile = Newtonsoft.Json.JsonConvert.DeserializeObject<SharedLibraryCore.Localization.Layout>(localizationContents);
|
||||
|
||||
foreach (var item in eachLocalizationFile.LocalizationIndex.Set)
|
||||
{
|
||||
if (!localizationDict.TryAdd(item.Key, item.Value))
|
||||
{
|
||||
Program.ServerManager.GetLogger().WriteError($"Could not add locale string {item.Key} to localization");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (currentLocale == null)
|
||||
throw new Exception("Computer CurrentCulture does not exist");
|
||||
#if DEBUG
|
||||
// currentLocal = "ru-RU";
|
||||
#endif
|
||||
string localizationFile = $"Localization{Path.DirectorySeparatorChar}IW4MAdmin.{currentLocale}-{currentLocale.ToUpper()}.json";
|
||||
string localizationContents;
|
||||
|
||||
if (File.Exists(localizationFile))
|
||||
Utilities.CurrentLocalization = new SharedLibraryCore.Localization.Layout(localizationDict)
|
||||
{
|
||||
localizationContents = File.ReadAllText(localizationFile, Encoding.UTF8);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
localizationFile = $"Localization{Path.DirectorySeparatorChar}IW4MAdmin.en-EN.json";
|
||||
localizationContents = File.ReadAllText(localizationFile, Encoding.UTF8);
|
||||
}
|
||||
|
||||
if (localizationContents.Length < 1)
|
||||
throw new Exception($"Localization file {localizationFile} does not exist");
|
||||
Utilities.CurrentLocalization = Newtonsoft.Json.JsonConvert.DeserializeObject<SharedLibraryCore.Localization.Layout>(localizationContents);
|
||||
LocalizationName = currentLocale,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,200 +0,0 @@
|
||||
{
|
||||
"LocalizationName": "en-US",
|
||||
"LocalizationSet": {
|
||||
"MANAGER_VERSION_FAIL": "Could not get latest IW4MAdmin version",
|
||||
"MANAGER_VERSION_UPDATE": "has an update. Latest version is",
|
||||
"MANAGER_VERSION_CURRENT": "Your version is",
|
||||
"MANAGER_VERSION_SUCCESS": "IW4MAdmin is up to date",
|
||||
"MANAGER_INIT_FAIL": "Fatal error during initialization",
|
||||
"MANAGER_EXIT": "Press any key to exit...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Shutdown complete",
|
||||
"MANAGER_MONITORING_TEXT": "Now monitoring",
|
||||
"MANAGER_CONNECTION_REST": "Connection has been reestablished with",
|
||||
"SETUP_ENABLE_WEBFRONT": "Enable webfront",
|
||||
"SETUP_ENABLE_MULTIOWN": "Enable multiple owners",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Enable stepped privilege hierarchy",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Enable custom say name",
|
||||
"SETUP_SAY_NAME": "Enter custom say name",
|
||||
"SETUP_USE_CUSTOMENCODING": "Use custom encoding parser",
|
||||
"SETUP_ENCODING_STRING": "Enter encoding string",
|
||||
"SETUP_ENABLE_VPNS": "Enable client VPNs",
|
||||
"SETUP_IPHUB_KEY": "Enter iphub.info api key",
|
||||
"SETUP_DISPLAY_DISCORD": "Display discord link on webfront",
|
||||
"SETUP_DISCORD_INVITE": "Enter discord invite link",
|
||||
"SETUP_SERVER_USET6M": "Use Pluto T6 parser",
|
||||
"SETUP_SERVER_USEIW5M": "Use Pluto IW5 Parser",
|
||||
"SETUP_SERVER_MANUALLOG": "Enter manual log file path",
|
||||
"SETUP_SERVER_IP": "Enter server IP Address",
|
||||
"SETUP_SERVER_PORT": "Enter server port",
|
||||
"SETUP_SERVER_RCON": "Enter server RCon password",
|
||||
"SETUP_SERVER_SAVE": "Configuration saved, add another",
|
||||
"SERVER_ERROR_DNE": "does not exist",
|
||||
"SERVER_ERROR_LOG": "Invalid game log file",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "An internal error occured while processing your command",
|
||||
"SERVER_ERROR_COMMAND_LOG": "command generated an error",
|
||||
"SERVER_ERROR_UNFIXABLE": "Not monitoring server due to uncorrectable errors",
|
||||
"SERVER_ERROR_DVAR": "Could not get the dvar value for",
|
||||
"SERVER_ERROR_DVAR_HELP": "ensure the server has a map loaded",
|
||||
"SERVER_ERROR_PLUGIN": "An error occured loading plugin",
|
||||
"SERVER_ERROR_ADDPLAYER": "Unable to add player",
|
||||
"SERVER_ERROR_POLLING": "reducing polling rate",
|
||||
"SERVER_ERROR_COMMUNICATION": "Could not communicate with",
|
||||
"SERVER_ERROR_EXCEPTION": "Unexpected exception on",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs are not allowed on this server",
|
||||
"SERVER_KICK_TEXT": "You were kicked",
|
||||
"SERVER_KICK_MINNAME": "Your name must contain at least 3 characters",
|
||||
"SERVER_KICK_NAME_INUSE": "Your name is being used by someone else",
|
||||
"SERVER_KICK_GENERICNAME": "Please change your name using /name",
|
||||
"SERVER_KICK_CONTROLCHARS": "Your name cannot contain control characters",
|
||||
"SERVER_TB_TEXT": "You're temporarily banned",
|
||||
"SERVER_TB_REMAIN": "You are temporarily banned",
|
||||
"SERVER_BAN_TEXT": "You're banned",
|
||||
"SERVER_BAN_PREV": "Previously banned for",
|
||||
"SERVER_BAN_APPEAL": "appeal at",
|
||||
"SERVER_REPORT_COUNT": "There are ^5{0} ^7recent reports",
|
||||
"SERVER_WARNLIMT_REACHED": "Too many warnings",
|
||||
"SERVER_WARNING": "WARNING",
|
||||
"SERVER_WEBSITE_GENERIC": "this server's website",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7is now ^2ONLINE",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin is going offline",
|
||||
"COMMAND_HELP_SYNTAX": "syntax:",
|
||||
"COMMAND_HELP_OPTIONAL": "optional",
|
||||
"COMMAND_UNKNOWN": "You entered an unknown command",
|
||||
"COMMAND_NOACCESS": "You do not have access to that command",
|
||||
"COMMAND_NOTAUTHORIZED": "You are not authorized to execute that command",
|
||||
"COMMAND_MISSINGARGS": "Not enough arguments supplied",
|
||||
"COMMAND_TARGET_MULTI": "Multiple players match that name",
|
||||
"COMMAND_TARGET_NOTFOUND": "Unable to find specified player",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "No plugins found to load",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Registered command",
|
||||
"COMMANDS_OWNER_SUCCESS": "Congratulations, you have claimed ownership of this server!",
|
||||
"COMMANDS_OWNER_FAIL": "This server already has an owner",
|
||||
"COMMANDS_WARN_FAIL": "You do not have the required privileges to warn",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "All warning cleared for",
|
||||
"COMMANDS_KICK_SUCCESS": "has been kicked",
|
||||
"COMMANDS_KICK_FAIL": "You do not have the required privileges to kick",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "has been temporarily banned for",
|
||||
"COMMANDS_TEMPBAN_FAIL": "You cannot temporarily ban",
|
||||
"COMMANDS_BAN_SUCCESS": "has been permanently banned",
|
||||
"COMMANDS_BAN_FAIL": "You cannot ban",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Successfully unbanned",
|
||||
"COMMANDS_UNBAN_FAIL": "is not banned",
|
||||
"COMMANDS_HELP_NOTFOUND": "Could not find that command",
|
||||
"COMMANDS_HELP_MOREINFO": "Type !help <command name> to get command usage syntax",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "fast restarted the map",
|
||||
"COMMANDS_FASTRESTART_MASKED": "The map has been fast restarted",
|
||||
"COMMANDS_MAPROTATE": "Map rotating in ^55 ^7seconds",
|
||||
"COMMANDS_SETLEVEL_SELF": "You cannot change your own level",
|
||||
"COMMANDS_SETLEVEL_OWNER": "There can only be 1 owner. Modify your settings if multiple owners are required",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "This server does not allow you to promote",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "You can only promote ^5{0} ^7to ^5{1} ^7or lower privilege",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Congratulations! You have been promoted to",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "was successfully promoted",
|
||||
"COMMANDS_SETLEVEL_FAIL": "Invalid group specified",
|
||||
"COMMANDS_ADMINS_NONE": "No visible administrators online",
|
||||
"COMMANDS_MAP_SUCCESS": "Changing to map",
|
||||
"COMMANDS_MAP_UKN": "Attempting to change to unknown map",
|
||||
"COMMANDS_FIND_MIN": "Please enter at least 3 characters",
|
||||
"COMMANDS_FIND_EMPTY": "No players found",
|
||||
"COMMANDS_RULES_NONE": "The server owner has not set any rules",
|
||||
"COMMANDS_FLAG_SUCCESS": "You have flagged",
|
||||
"COMMANDS_FLAG_UNFLAG": "You have unflagged",
|
||||
"COMMANDS_FLAG_FAIL": "You cannot flag",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "You cannot report an player for camping",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "You have already reported this player",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "You cannot report yourself",
|
||||
"COMMANDS_REPORT_FAIL": "You cannot report",
|
||||
"COMMANDS_REPORT_SUCCESS": "Thank you for your report, an administrator has been notified",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reports successfully cleared",
|
||||
"COMMANDS_REPORTS_NONE": "No players reported yet",
|
||||
"COMMANDS_MASK_ON": "You are now masked",
|
||||
"COMMANDS_MASK_OFF": "You are now unmasked",
|
||||
"COMMANDS_BANINFO_NONE": "No active ban was found for that player",
|
||||
"COMMANDS_BANINO_SUCCESS": "was banned by ^5{0} ^7for:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Aliases",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "Successfully sent RCon command",
|
||||
"COMMANDS_PLUGINS_LOADED": "Loaded Plugins",
|
||||
"COMMANDS_IP_SUCCESS": "Your external IP is",
|
||||
"COMMANDS_PRUNE_FAIL": "Invalid number of inactive days",
|
||||
"COMMANDS_PRUNE_SUCCESS": "inactive privileged users were pruned",
|
||||
"COMMANDS_PASSWORD_FAIL": "Your password must be at least 5 characters long",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Your password has been set successfully",
|
||||
"COMMANDS_PING_TARGET": "ping is",
|
||||
"COMMANDS_PING_SELF": "Your ping is",
|
||||
"COMMANDS_QUIT_DESC": "quit IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "claim ownership of the server",
|
||||
"COMMANDS_WARN_DESC": "warn client for infringing rules",
|
||||
"COMMANDS_WARNCLEAR_DESC": "remove all warnings for a client",
|
||||
"COMMANDS_KICK_DESC": "kick a client by name",
|
||||
"COMMANDS_SAY_DESC": "broadcast message to all clients",
|
||||
"COMMANDS_TEMPBAN_DESC": "temporarily ban a client for specified time (defaults to 1 hour)",
|
||||
"COMMANDS_BAN_DESC": "permanently ban a client from the server",
|
||||
"COMMANDS_UNBAN_DESC": "unban client by client id",
|
||||
"COMMANDS_WHO_DESC": "give information about yourself",
|
||||
"COMMANDS_LIST_DESC": "list active clients",
|
||||
"COMMANDS_HELP_DESC": "list all available commands",
|
||||
"COMMANDS_FASTRESTART_DESC": "fast restart current map",
|
||||
"COMMANDS_MAPROTATE_DESC": "cycle to the next map in rotation",
|
||||
"COMMANDS_SETLEVEL_DESC": "set client to specified privilege level",
|
||||
"COMMANDS_USAGE_DESC": "get application memory usage",
|
||||
"COMMANDS_USAGE_TEXT": "is using",
|
||||
"COMMANDS_UPTIME_DESC": "get current application running time",
|
||||
"COMMANDS_UPTIME_TEXT": "has been online for",
|
||||
"COMMANDS_ADMINS_DESC": "list currently connected privileged clients",
|
||||
"COMMANDS_MAP_DESC": "change to specified map",
|
||||
"COMMANDS_FIND_DESC": "find client in database",
|
||||
"COMMANDS_RULES_DESC": "list server rules",
|
||||
"COMMANDS_PM_DESC": "send message to other client",
|
||||
"COMMANDS_FLAG_DESC": "flag a suspicious client and announce to admins on join",
|
||||
"COMMANDS_REPORT_DESC": "report a client for suspicious behavior",
|
||||
"COMMANDS_REPORTS_DESC": "get or clear recent reports",
|
||||
"COMMANDS_MASK_DESC": "hide your presence as a privileged client",
|
||||
"COMMANDS_BANINFO_DESC": "get information about a ban for a client",
|
||||
"COMMANDS_ALIAS_DESC": "get past aliases and ips of a client",
|
||||
"COMMANDS_RCON_DESC": "send rcon command to server",
|
||||
"COMMANDS_PLUGINS_DESC": "view all loaded plugins",
|
||||
"COMMANDS_IP_DESC": "view your external IP address",
|
||||
"COMMANDS_PRUNE_DESC": "demote any privileged clients that have not connected recently (defaults to 30 days)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "set your authentication password",
|
||||
"COMMANDS_PING_DESC": "get client's ping",
|
||||
"COMMANDS_ARGS_PLAYER": "player",
|
||||
"COMMANDS_ARGS_REASON": "reason",
|
||||
"COMMANDS_ARGS_MESSAGE": "message",
|
||||
"COMMANDS_ARGS_DURATION": "duration (m|h|d|w|y)",
|
||||
"COMMANDS_ARGS_CLIENTID": "client id",
|
||||
"COMMANDS_ARGS_COMMANDS": "commands",
|
||||
"COMMANDS_ARGS_LEVEL": "level",
|
||||
"COMMANDS_ARGS_MAP": "map",
|
||||
"COMMANDS_ARGS_CLEAR": "clear",
|
||||
"COMMANDS_ARGS_INACTIVE": "inactive days",
|
||||
"COMMANDS_ARGS_PASSWORD": "password",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "login using password",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "You are now logged in",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Your password is incorrect",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reset your stats to factory-new",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Your stats for this server have been reset",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "You must be connected to a server to reset your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "view your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "The specified player must be ingame",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "You must be ingame to view your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Cannot find the player you specified",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Stats for",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "view the top 5 players in this server",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Players",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "KILLS",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "DEATHS",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "SKILL",
|
||||
"GLOBAL_DAYS": "days",
|
||||
"GLOBAL_HOURS": "hours",
|
||||
"GLOBAL_MINUTES": "minutes",
|
||||
"GLOBAL_REPORT": "If you suspect someone of ^5CHEATING ^7use the ^5!report ^7command",
|
||||
"GLOBAL_ERROR": "Error",
|
||||
"GLOBAL_WARNING": "Warning",
|
||||
"GLOBAL_INFO": "Info",
|
||||
"GLOBAL_VERBOSE": "Verbose",
|
||||
|
||||
"MANAGER_CONSOLE_NOSERV": "No servers are currently being monitored",
|
||||
"SERVER_PLUGIN_ERROR": "A plugin generated an error"
|
||||
}
|
||||
}
|
203
Application/Localization/IW4MAdmin.en-US.json
Normal file
203
Application/Localization/IW4MAdmin.en-US.json
Normal file
@ -0,0 +1,203 @@
|
||||
{
|
||||
"LocalizationName": "en-US",
|
||||
"LocalizationIndex": {
|
||||
"Set": {
|
||||
"MANAGER_VERSION_FAIL": "Could not get latest IW4MAdmin version",
|
||||
"MANAGER_VERSION_UPDATE": "has an update. Latest version is",
|
||||
"MANAGER_VERSION_CURRENT": "Your version is",
|
||||
"MANAGER_VERSION_SUCCESS": "IW4MAdmin is up to date",
|
||||
"MANAGER_INIT_FAIL": "Fatal error during initialization",
|
||||
"MANAGER_EXIT": "Press any key to exit...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Shutdown complete",
|
||||
"MANAGER_MONITORING_TEXT": "Now monitoring",
|
||||
"MANAGER_CONNECTION_REST": "Connection has been reestablished with",
|
||||
"SETUP_ENABLE_WEBFRONT": "Enable webfront",
|
||||
"SETUP_ENABLE_MULTIOWN": "Enable multiple owners",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Enable stepped privilege hierarchy",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Enable custom say name",
|
||||
"SETUP_SAY_NAME": "Enter custom say name",
|
||||
"SETUP_USE_CUSTOMENCODING": "Use custom encoding parser",
|
||||
"SETUP_ENCODING_STRING": "Enter encoding string",
|
||||
"SETUP_ENABLE_VPNS": "Enable client VPNs",
|
||||
"SETUP_IPHUB_KEY": "Enter iphub.info api key",
|
||||
"SETUP_DISPLAY_DISCORD": "Display discord link on webfront",
|
||||
"SETUP_DISCORD_INVITE": "Enter discord invite link",
|
||||
"SETUP_SERVER_USET6M": "Use Pluto T6 parser",
|
||||
"SETUP_SERVER_USEIW5M": "Use Pluto IW5 Parser",
|
||||
"SETUP_SERVER_MANUALLOG": "Enter manual log file path",
|
||||
"SETUP_SERVER_IP": "Enter server IP Address",
|
||||
"SETUP_SERVER_PORT": "Enter server port",
|
||||
"SETUP_SERVER_RCON": "Enter server RCon password",
|
||||
"SETUP_SERVER_SAVE": "Configuration saved, add another",
|
||||
"SERVER_ERROR_DNE": "does not exist",
|
||||
"SERVER_ERROR_LOG": "Invalid game log file",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "An internal error occured while processing your command",
|
||||
"SERVER_ERROR_COMMAND_LOG": "command generated an error",
|
||||
"SERVER_ERROR_UNFIXABLE": "Not monitoring server due to uncorrectable errors",
|
||||
"SERVER_ERROR_DVAR": "Could not get the dvar value for",
|
||||
"SERVER_ERROR_DVAR_HELP": "ensure the server has a map loaded",
|
||||
"SERVER_ERROR_PLUGIN": "An error occured loading plugin",
|
||||
"SERVER_ERROR_ADDPLAYER": "Unable to add player",
|
||||
"SERVER_ERROR_POLLING": "reducing polling rate",
|
||||
"SERVER_ERROR_COMMUNICATION": "Could not communicate with",
|
||||
"SERVER_ERROR_EXCEPTION": "Unexpected exception on",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs are not allowed on this server",
|
||||
"SERVER_KICK_TEXT": "You were kicked",
|
||||
"SERVER_KICK_MINNAME": "Your name must contain at least 3 characters",
|
||||
"SERVER_KICK_NAME_INUSE": "Your name is being used by someone else",
|
||||
"SERVER_KICK_GENERICNAME": "Please change your name using /name",
|
||||
"SERVER_KICK_CONTROLCHARS": "Your name cannot contain control characters",
|
||||
"SERVER_TB_TEXT": "You're temporarily banned",
|
||||
"SERVER_TB_REMAIN": "You are temporarily banned",
|
||||
"SERVER_BAN_TEXT": "You're banned",
|
||||
"SERVER_BAN_PREV": "Previously banned for",
|
||||
"SERVER_BAN_APPEAL": "appeal at",
|
||||
"SERVER_REPORT_COUNT": "There are ^5{0} ^7recent reports",
|
||||
"SERVER_WARNLIMT_REACHED": "Too many warnings",
|
||||
"SERVER_WARNING": "WARNING",
|
||||
"SERVER_WEBSITE_GENERIC": "this server's website",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7is now ^2ONLINE",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin is going offline",
|
||||
"COMMAND_HELP_SYNTAX": "syntax:",
|
||||
"COMMAND_HELP_OPTIONAL": "optional",
|
||||
"COMMAND_UNKNOWN": "You entered an unknown command",
|
||||
"COMMAND_NOACCESS": "You do not have access to that command",
|
||||
"COMMAND_NOTAUTHORIZED": "You are not authorized to execute that command",
|
||||
"COMMAND_MISSINGARGS": "Not enough arguments supplied",
|
||||
"COMMAND_TARGET_MULTI": "Multiple players match that name",
|
||||
"COMMAND_TARGET_NOTFOUND": "Unable to find specified player",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "No plugins found to load",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Registered command",
|
||||
"COMMANDS_OWNER_SUCCESS": "Congratulations, you have claimed ownership of this server!",
|
||||
"COMMANDS_OWNER_FAIL": "This server already has an owner",
|
||||
"COMMANDS_WARN_FAIL": "You do not have the required privileges to warn",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "All warning cleared for",
|
||||
"COMMANDS_KICK_SUCCESS": "has been kicked",
|
||||
"COMMANDS_KICK_FAIL": "You do not have the required privileges to kick",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "has been temporarily banned for",
|
||||
"COMMANDS_TEMPBAN_FAIL": "You cannot temporarily ban",
|
||||
"COMMANDS_BAN_SUCCESS": "has been permanently banned",
|
||||
"COMMANDS_BAN_FAIL": "You cannot ban",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Successfully unbanned",
|
||||
"COMMANDS_UNBAN_FAIL": "is not banned",
|
||||
"COMMANDS_HELP_NOTFOUND": "Could not find that command",
|
||||
"COMMANDS_HELP_MOREINFO": "Type !help <command name> to get command usage syntax",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "fast restarted the map",
|
||||
"COMMANDS_FASTRESTART_MASKED": "The map has been fast restarted",
|
||||
"COMMANDS_MAPROTATE": "Map rotating in ^55 ^7seconds",
|
||||
"COMMANDS_SETLEVEL_SELF": "You cannot change your own level",
|
||||
"COMMANDS_SETLEVEL_OWNER": "There can only be 1 owner. Modify your settings if multiple owners are required",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "This server does not allow you to promote",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "You can only promote ^5{0} ^7to ^5{1} ^7or lower privilege",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Congratulations! You have been promoted to",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "was successfully promoted",
|
||||
"COMMANDS_SETLEVEL_FAIL": "Invalid group specified",
|
||||
"COMMANDS_ADMINS_NONE": "No visible administrators online",
|
||||
"COMMANDS_MAP_SUCCESS": "Changing to map",
|
||||
"COMMANDS_MAP_UKN": "Attempting to change to unknown map",
|
||||
"COMMANDS_FIND_MIN": "Please enter at least 3 characters",
|
||||
"COMMANDS_FIND_EMPTY": "No players found",
|
||||
"COMMANDS_RULES_NONE": "The server owner has not set any rules",
|
||||
"COMMANDS_FLAG_SUCCESS": "You have flagged",
|
||||
"COMMANDS_FLAG_UNFLAG": "You have unflagged",
|
||||
"COMMANDS_FLAG_FAIL": "You cannot flag",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "You cannot report an player for camping",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "You have already reported this player",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "You cannot report yourself",
|
||||
"COMMANDS_REPORT_FAIL": "You cannot report",
|
||||
"COMMANDS_REPORT_SUCCESS": "Thank you for your report, an administrator has been notified",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reports successfully cleared",
|
||||
"COMMANDS_REPORTS_NONE": "No players reported yet",
|
||||
"COMMANDS_MASK_ON": "You are now masked",
|
||||
"COMMANDS_MASK_OFF": "You are now unmasked",
|
||||
"COMMANDS_BANINFO_NONE": "No active ban was found for that player",
|
||||
"COMMANDS_BANINO_SUCCESS": "was banned by ^5{0} ^7for:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Aliases",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "Successfully sent RCon command",
|
||||
"COMMANDS_PLUGINS_LOADED": "Loaded Plugins",
|
||||
"COMMANDS_IP_SUCCESS": "Your external IP is",
|
||||
"COMMANDS_PRUNE_FAIL": "Invalid number of inactive days",
|
||||
"COMMANDS_PRUNE_SUCCESS": "inactive privileged users were pruned",
|
||||
"COMMANDS_PASSWORD_FAIL": "Your password must be at least 5 characters long",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Your password has been set successfully",
|
||||
"COMMANDS_PING_TARGET": "ping is",
|
||||
"COMMANDS_PING_SELF": "Your ping is",
|
||||
"COMMANDS_QUIT_DESC": "quit IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "claim ownership of the server",
|
||||
"COMMANDS_WARN_DESC": "warn client for infringing rules",
|
||||
"COMMANDS_WARNCLEAR_DESC": "remove all warnings for a client",
|
||||
"COMMANDS_KICK_DESC": "kick a client by name",
|
||||
"COMMANDS_SAY_DESC": "broadcast message to all clients",
|
||||
"COMMANDS_TEMPBAN_DESC": "temporarily ban a client for specified time (defaults to 1 hour)",
|
||||
"COMMANDS_BAN_DESC": "permanently ban a client from the server",
|
||||
"COMMANDS_UNBAN_DESC": "unban client by client id",
|
||||
"COMMANDS_WHO_DESC": "give information about yourself",
|
||||
"COMMANDS_LIST_DESC": "list active clients",
|
||||
"COMMANDS_HELP_DESC": "list all available commands",
|
||||
"COMMANDS_FASTRESTART_DESC": "fast restart current map",
|
||||
"COMMANDS_MAPROTATE_DESC": "cycle to the next map in rotation",
|
||||
"COMMANDS_SETLEVEL_DESC": "set client to specified privilege level",
|
||||
"COMMANDS_USAGE_DESC": "get application memory usage",
|
||||
"COMMANDS_USAGE_TEXT": "is using",
|
||||
"COMMANDS_UPTIME_DESC": "get current application running time",
|
||||
"COMMANDS_UPTIME_TEXT": "has been online for",
|
||||
"COMMANDS_ADMINS_DESC": "list currently connected privileged clients",
|
||||
"COMMANDS_MAP_DESC": "change to specified map",
|
||||
"COMMANDS_FIND_DESC": "find client in database",
|
||||
"COMMANDS_RULES_DESC": "list server rules",
|
||||
"COMMANDS_PM_DESC": "send message to other client",
|
||||
"COMMANDS_FLAG_DESC": "flag a suspicious client and announce to admins on join",
|
||||
"COMMANDS_REPORT_DESC": "report a client for suspicious behavior",
|
||||
"COMMANDS_REPORTS_DESC": "get or clear recent reports",
|
||||
"COMMANDS_MASK_DESC": "hide your presence as a privileged client",
|
||||
"COMMANDS_BANINFO_DESC": "get information about a ban for a client",
|
||||
"COMMANDS_ALIAS_DESC": "get past aliases and ips of a client",
|
||||
"COMMANDS_RCON_DESC": "send rcon command to server",
|
||||
"COMMANDS_PLUGINS_DESC": "view all loaded plugins",
|
||||
"COMMANDS_IP_DESC": "view your external IP address",
|
||||
"COMMANDS_PRUNE_DESC": "demote any privileged clients that have not connected recently (defaults to 30 days)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "set your authentication password",
|
||||
"COMMANDS_PING_DESC": "get client's ping",
|
||||
"COMMANDS_ARGS_PLAYER": "player",
|
||||
"COMMANDS_ARGS_REASON": "reason",
|
||||
"COMMANDS_ARGS_MESSAGE": "message",
|
||||
"COMMANDS_ARGS_DURATION": "duration (m|h|d|w|y)",
|
||||
"COMMANDS_ARGS_CLIENTID": "client id",
|
||||
"COMMANDS_ARGS_COMMANDS": "commands",
|
||||
"COMMANDS_ARGS_LEVEL": "level",
|
||||
"COMMANDS_ARGS_MAP": "map",
|
||||
"COMMANDS_ARGS_CLEAR": "clear",
|
||||
"COMMANDS_ARGS_INACTIVE": "inactive days",
|
||||
"COMMANDS_ARGS_PASSWORD": "password",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "login using password",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "You are now logged in",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Your password is incorrect",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reset your stats to factory-new",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Your stats for this server have been reset",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "You must be connected to a server to reset your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "view your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "The specified player must be ingame",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "You must be ingame to view your stats",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Cannot find the player you specified",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Stats for",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "view the top 5 players in this server",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Players",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "KILLS",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "DEATHS",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "SKILL",
|
||||
"GLOBAL_DAYS": "days",
|
||||
"GLOBAL_HOURS": "hours",
|
||||
"GLOBAL_MINUTES": "minutes",
|
||||
"GLOBAL_REPORT": "If you suspect someone of ^5CHEATING ^7use the ^5!report ^7command",
|
||||
"GLOBAL_ERROR": "Error",
|
||||
"GLOBAL_WARNING": "Warning",
|
||||
"GLOBAL_INFO": "Info",
|
||||
"GLOBAL_VERBOSE": "Verbose",
|
||||
|
||||
"MANAGER_CONSOLE_NOSERV": "No servers are currently being monitored",
|
||||
"SERVER_PLUGIN_ERROR": "A plugin generated an error",
|
||||
"PLUGINS_STATS_TEXT_NOQUALIFY": "No players qualify for top stats yet"
|
||||
}
|
||||
}
|
||||
}
|
203
Application/Localization/IW4MAdmin.es-EC.json
Normal file
203
Application/Localization/IW4MAdmin.es-EC.json
Normal file
@ -0,0 +1,203 @@
|
||||
{
|
||||
"LocalizationName": "es-ES",
|
||||
"LocalizationIndex": {
|
||||
"Set": {
|
||||
"MANAGER_VERSION_FAIL": "No se ha podido conseguir la última versión de IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "tiene una actualización. La última versión es",
|
||||
"MANAGER_VERSION_CURRENT": "Tu versión es",
|
||||
"MANAGER_VERSION_SUCCESS": "IW4MAdmin está actualizado",
|
||||
"MANAGER_INIT_FAIL": "Error fatal durante la inicialización",
|
||||
"MANAGER_EXIT": "Presione cualquier tecla para salir...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Apagado completo",
|
||||
"MANAGER_MONITORING_TEXT": "Ahora monitoreando",
|
||||
"MANAGER_CONNECTION_REST": "La conexión ha sido restablecida con",
|
||||
"SETUP_ENABLE_WEBFRONT": "Habilitar frente de la web",
|
||||
"SETUP_ENABLE_MULTIOWN": "Habilitar múltiples propietarios",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Habilitar jerarquía de privilegios por escalones",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Habilitar nombre a decir personalizado",
|
||||
"SETUP_SAY_NAME": "Ingresar nombre a decir personalizado",
|
||||
"SETUP_USE_CUSTOMENCODING": "Usar analizador de codificación personalizado",
|
||||
"SETUP_ENCODING_STRING": "Ingresar cadena de codificación",
|
||||
"SETUP_ENABLE_VPNS": "Habilitar VPNs clientes",
|
||||
"SETUP_IPHUB_KEY": "Ingresar clave api de iphub.info",
|
||||
"SETUP_DISPLAY_DISCORD": "Mostrar link de Discord en frente de la web",
|
||||
"SETUP_DISCORD_INVITE": "Ingresar link de invitación a discord",
|
||||
"SETUP_SERVER_USET6M": "Usar analizador Pluto T6",
|
||||
"SETUP_SERVER_USEIW5M": "Usar analizador Pluto IW5",
|
||||
"SETUP_SERVER_MANUALLOG": "Ingresar manualmente la ruta del archivo de registro",
|
||||
"SETUP_SERVER_IP": "Ingresar Dirección IP del servidor",
|
||||
"SETUP_SERVER_PORT": "Ingresar puerto del servidor",
|
||||
"SETUP_SERVER_RCON": "Ingresar contraseña RCon del servidor",
|
||||
"SETUP_SERVER_SAVE": "Configuración guardada, añadir otra",
|
||||
"SERVER_ERROR_DNE": "No existe",
|
||||
"SERVER_ERROR_LOG": "Archivo de registro del juego invalido",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "Un error interno ocurrió mientras se procesaba tu comando",
|
||||
"SERVER_ERROR_COMMAND_LOG": "Comando generó error",
|
||||
"SERVER_ERROR_UNFIXABLE": "No se está supervisando el servidor debido a errores incorregibles",
|
||||
"SERVER_ERROR_DVAR": "No se pudo obtener el valor dvar",
|
||||
"SERVER_ERROR_DVAR_HELP": "asegúrate de que el servidor tenga un mapa cargado",
|
||||
"SERVER_ERROR_PLUGIN": "Un error ocurrió mientras se cargaba el complemente",
|
||||
"SERVER_ERROR_ADDPLAYER": "Incapaz de añadir al jugador",
|
||||
"SERVER_ERROR_POLLING": "reduciendo la tasa de sondeo",
|
||||
"SERVER_ERROR_COMMUNICATION": "No se ha podido comunicar con",
|
||||
"SERVER_ERROR_EXCEPTION": "Excepción inesperada en",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "Las VPNs no están permitidas en este servidor",
|
||||
"SERVER_KICK_TEXT": "Fuiste expulsado",
|
||||
"SERVER_KICK_MINNAME": "Tu nombre debe contener al menos 3 caracteres",
|
||||
"SERVER_KICK_NAME_INUSE": "Tu nombre está siendo usado por alguien más",
|
||||
"SERVER_KICK_GENERICNAME": "Por favor cambia tu nombre usando /name",
|
||||
"SERVER_KICK_CONTROLCHARS": "Tu nombre no puede contener caracteres de control",
|
||||
"SERVER_TB_TEXT": "Estás temporalmente baneado",
|
||||
"SERVER_TB_REMAIN": "Tú estás temporalmente baneado",
|
||||
"SERVER_BAN_TEXT": "Estás baneado",
|
||||
"SERVER_BAN_PREV": "Baneado anteriormente por",
|
||||
"SERVER_BAN_APPEAL": "apela en",
|
||||
"SERVER_REPORT_COUNT": "Hay ^5{0} ^7reportes recientes",
|
||||
"SERVER_WARNLIMT_REACHED": "Muchas advertencias",
|
||||
"SERVER_WARNING": "ADVERTENCIA",
|
||||
"SERVER_WEBSITE_GENERIC": "el sitio web de este servidor",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7está ahora ^2en línea",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin está desconectado",
|
||||
"COMMAND_HELP_SYNTAX": "sintaxis:",
|
||||
"COMMAND_HELP_OPTIONAL": "opcional",
|
||||
"COMMAND_UNKNOWN": "Has ingresado un comando desconocido",
|
||||
"COMMAND_NOACCESS": "Tú no tienes acceso a ese comando",
|
||||
"COMMAND_NOTAUTHORIZED": "Tú no estás autorizado para ejecutar ese comando",
|
||||
"COMMAND_MISSINGARGS": "No se han proporcionado suficientes argumentos",
|
||||
"COMMAND_TARGET_MULTI": "Múltiples jugadores coinciden con ese nombre",
|
||||
"COMMAND_TARGET_NOTFOUND": "No se puede encontrar el jugador especificado",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "No se encontraron complementos para cargar",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
|
||||
"COMMANDS_OWNER_SUCCESS": "¡Felicidades, has reclamado la propiedad de este servidor!",
|
||||
"COMMANDS_OWNER_FAIL": "Este servidor ya tiene un propietario",
|
||||
"COMMANDS_WARN_FAIL": "No tiene los privilegios necesarios para advertir a",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "Todas las advertencias borradas para",
|
||||
"COMMANDS_KICK_SUCCESS": "ha sido expulsado",
|
||||
"COMMANDS_KICK_FAIL": "No tienes los privilegios necesarios para expulsar a",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "ha sido baneado temporalmente por",
|
||||
"COMMANDS_TEMPBAN_FAIL": "Tú no puedes banear temporalmente",
|
||||
"COMMANDS_BAN_SUCCESS": "ha sido baneado permanentemente",
|
||||
"COMMANDS_BAN_FAIL": "Tú no puedes banear",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Exitosamente desbaneado",
|
||||
"COMMANDS_UNBAN_FAIL": "no está baneado",
|
||||
"COMMANDS_HELP_NOTFOUND": "No se ha podido encontrar ese comando",
|
||||
"COMMANDS_HELP_MOREINFO": "Escribe !help <nombre del comando> para obtener la sintaxis de uso del comando",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "ha dado rápido reinicio al mapa",
|
||||
"COMMANDS_FASTRESTART_MASKED": "Al mapa se le ha dado un reinicio rápido",
|
||||
"COMMANDS_MAPROTATE": "Rotación de mapa en ^55 ^7segundos",
|
||||
"COMMANDS_SETLEVEL_SELF": "No puedes cambiar tu propio nivel",
|
||||
"COMMANDS_SETLEVEL_OWNER": "Solo puede haber un propietario. Modifica tu configuración si múltiples propietarios son requeridos",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor no te permite promover",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Tú solo puedes promover ^5{0} ^7a ^5{1} ^7o menor privilegio",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "¡Felicitaciones! has ha sido promovido a",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "fue promovido con éxito",
|
||||
"COMMANDS_SETLEVEL_FAIL": "Grupo inválido especificado",
|
||||
"COMMANDS_ADMINS_NONE": "No hay administradores visibles en línea",
|
||||
"COMMANDS_MAP_SUCCESS": "Cambiando al mapa",
|
||||
"COMMANDS_MAP_UKN": "Intentando cambiar a un mapa desconocido",
|
||||
"COMMANDS_FIND_MIN": "Por Favor introduzca al menos 3 caracteres",
|
||||
"COMMANDS_FIND_EMPTY": "No se encontraron jugadores",
|
||||
"COMMANDS_RULES_NONE": "El propietario del servidor no ha establecido ninguna regla",
|
||||
"COMMANDS_FLAG_SUCCESS": "Has marcado a",
|
||||
"COMMANDS_FLAG_UNFLAG": "Has desmarcado a",
|
||||
"COMMANDS_FLAG_FAIL": "Tú no puedes marcar",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "No puedes reportar a un jugador por campear",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "Ya has reportado a este jugador",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "No puedes reportarte a ti mismo",
|
||||
"COMMANDS_REPORT_FAIL": "Tú no puedes reportar",
|
||||
"COMMANDS_REPORT_SUCCESS": "Gracias por su reporte, un administrador ha sido notificado",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reportes borrados con éxito",
|
||||
"COMMANDS_REPORTS_NONE": "No hay jugadores reportados aun",
|
||||
"COMMANDS_MASK_ON": "Ahora estás enmascarado",
|
||||
"COMMANDS_MASK_OFF": "Ahora estás desenmascarado",
|
||||
"COMMANDS_BANINFO_NONE": "No se encontró ban activo para ese jugador",
|
||||
"COMMANDS_BANINO_SUCCESS": "fue baneado por ^5{0} ^7debido a:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Aliases",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "Exitosamente enviado el comando RCon",
|
||||
"COMMANDS_PLUGINS_LOADED": "Complementos cargados",
|
||||
"COMMANDS_IP_SUCCESS": "Tu IP externa es",
|
||||
"COMMANDS_PRUNE_FAIL": "Número inválido de días inactivos",
|
||||
"COMMANDS_PRUNE_SUCCESS": "los usuarios privilegiados inactivos fueron podados",
|
||||
"COMMANDS_PASSWORD_FAIL": "Tu contraseña debe tener al menos 5 caracteres de largo",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Su contraseña ha sido establecida con éxito",
|
||||
"COMMANDS_PING_TARGET": "ping es",
|
||||
"COMMANDS_PING_SELF": "Tu ping es",
|
||||
"COMMANDS_QUIT_DESC": "salir de IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "reclamar la propiedad del servidor",
|
||||
"COMMANDS_WARN_DESC": "advertir al cliente por infringir las reglas",
|
||||
"COMMANDS_WARNCLEAR_DESC": "eliminar todas las advertencias de un cliente",
|
||||
"COMMANDS_KICK_DESC": "expulsar a un cliente por su nombre",
|
||||
"COMMANDS_SAY_DESC": "transmitir el mensaje a todos los clientes",
|
||||
"COMMANDS_TEMPBAN_DESC": "banear temporalmente a un cliente por el tiempo especificado (predeterminado en 1 hora)",
|
||||
"COMMANDS_BAN_DESC": "banear permanentemente un cliente del servidor",
|
||||
"COMMANDS_UNBAN_DESC": "desbanear al cliente por ID",
|
||||
"COMMANDS_WHO_DESC": "da información sobre ti",
|
||||
"COMMANDS_LIST_DESC": "enlistar clientes activos",
|
||||
"COMMANDS_HELP_DESC": "enlistar todos los comandos disponibles",
|
||||
"COMMANDS_FASTRESTART_DESC": "dar reinicio rápido al mapa actial",
|
||||
"COMMANDS_MAPROTATE_DESC": "pasar al siguiente mapa en rotación",
|
||||
"COMMANDS_SETLEVEL_DESC": "establecer el cliente al nivel de privilegio especificado",
|
||||
"COMMANDS_USAGE_DESC": "obtener uso de la memoria de la aplicación",
|
||||
"COMMANDS_USAGE_TEXT": "está usando",
|
||||
"COMMANDS_UPTIME_DESC": "obtener el tiempo de ejecución de la aplicación actual",
|
||||
"COMMANDS_UPTIME_TEXT": "ha estado en línea por",
|
||||
"COMMANDS_ADMINS_DESC": "enlistar clientes privilegiados actualmente conectados",
|
||||
"COMMANDS_MAP_DESC": "cambiar al mapa especificado",
|
||||
"COMMANDS_FIND_DESC": "encontrar cliente en la base de datos",
|
||||
"COMMANDS_RULES_DESC": "enlistar reglas del servidor",
|
||||
"COMMANDS_PM_DESC": "enviar mensaje a otro cliente",
|
||||
"COMMANDS_FLAG_DESC": "marcar un cliente sospechoso y anunciar a los administradores al unirse",
|
||||
"COMMANDS_REPORT_DESC": "reportar un cliente por comportamiento sospechoso",
|
||||
"COMMANDS_REPORTS_DESC": "obtener o borrar informes recientes",
|
||||
"COMMANDS_MASK_DESC": "esconde tu presencia como un cliente privilegiado",
|
||||
"COMMANDS_BANINFO_DESC": "obtener información sobre el ban de un cliente",
|
||||
"COMMANDS_ALIAS_DESC": "obtener alias e ips anteriores de un cliente",
|
||||
"COMMANDS_RCON_DESC": "enviar el comando rcon al servidor",
|
||||
"COMMANDS_PLUGINS_DESC": "ver todos los complementos cargados",
|
||||
"COMMANDS_IP_DESC": "ver tu dirección IP externa",
|
||||
"COMMANDS_PRUNE_DESC": "degradar a los clientes con privilegios que no se hayan conectado recientemente (el valor predeterminado es 30 días)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "configura tu contraseña de autenticación",
|
||||
"COMMANDS_PING_DESC": "obtener ping del cliente",
|
||||
"COMMANDS_ARGS_PLAYER": "jugador",
|
||||
"COMMANDS_ARGS_REASON": "razón",
|
||||
"COMMANDS_ARGS_MESSAGE": "mensaje",
|
||||
"COMMANDS_ARGS_DURATION": "duración (m|h|d|w|y)",
|
||||
"COMMANDS_ARGS_CLIENTID": "id del cliente",
|
||||
"COMMANDS_ARGS_COMMANDS": "comandos",
|
||||
"COMMANDS_ARGS_LEVEL": "nivel",
|
||||
"COMMANDS_ARGS_MAP": "mapa",
|
||||
"COMMANDS_ARGS_CLEAR": "borrar",
|
||||
"COMMANDS_ARGS_INACTIVE": "días inactivo",
|
||||
"COMMANDS_ARGS_PASSWORD": "contraseña",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "iniciar sesión usando la contraseña",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Ahora está conectado",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "tu contraseña es incorrecta",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "restablece tus estadísticas a las nuevas de fábrica",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Tus estadísticas para este servidor se han restablecido",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Debes estar conectado a un servidor para restablecer tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "ver tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "El jugador especificado debe estar dentro del juego",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Debes estar dentro del juego para ver tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "No se puede encontrar el jugador que especificó",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estadísticas para",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "ver los 5 mejores jugadores en este servidor",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Mejores Jugadores",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "Asesinatos",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "Muertes",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "Habilidad",
|
||||
"GLOBAL_DAYS": "días",
|
||||
"GLOBAL_HOURS": "horas",
|
||||
"GLOBAL_MINUTES": "minutos",
|
||||
"GLOBAL_REPORT": "Si sospechas que alguien ^5usa cheats ^7usa el comando ^5!report",
|
||||
"GLOBAL_ERROR": "Error",
|
||||
"GLOBAL_WARNING": "Advertencia",
|
||||
"GLOBAL_INFO": "Información",
|
||||
"GLOBAL_VERBOSE": "Detallado",
|
||||
|
||||
"MANAGER_CONSOLE_NOSERV": "No hay servidores que estén siendo monitoreados en este momento",
|
||||
"SERVER_PLUGIN_ERROR": "Un complemento generó un error",
|
||||
"PLUGINS_STATS_TEXT_NOQUALIFY": "No hay jugadores que califiquen para los primeros lugares aun"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,197 +0,0 @@
|
||||
{
|
||||
"LocalizationName": "es-ES",
|
||||
"LocalizationSet": {
|
||||
"MANAGER_VERSION_FAIL": "No se ha podido conseguir la última versión de IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "tiene una actualización. La última versión es",
|
||||
"MANAGER_VERSION_CURRENT": "Tu versión es",
|
||||
"MANAGER_VERSION_SUCCESS": "IW4MAdmin está actualizado",
|
||||
"MANAGER_INIT_FAIL": "Error fatal durante la inicialización",
|
||||
"MANAGER_EXIT": "Presione cualquier tecla para salir...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Apagado completo",
|
||||
"MANAGER_MONITORING_TEXT": "Ahora monitoreando",
|
||||
"MANAGER_CONNECTION_REST": "La conexión ha sido restablecida con",
|
||||
"SETUP_ENABLE_WEBFRONT": "Habilitar frente de la web",
|
||||
"SETUP_ENABLE_MULTIOWN": "Habilitar múltiples propietarios",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Habilitar jerarquía de privilegios por escalones",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Habilitar nombre a decir personalizado",
|
||||
"SETUP_SAY_NAME": "Ingresar nombre a decir personalizado",
|
||||
"SETUP_USE_CUSTOMENCODING": "Usar analizador de codificación personalizado",
|
||||
"SETUP_ENCODING_STRING": "Ingresar cadena de codificación",
|
||||
"SETUP_ENABLE_VPNS": "Habilitar VPNs clientes",
|
||||
"SETUP_IPHUB_KEY": "Ingresar clave api de iphub.info",
|
||||
"SETUP_DISPLAY_DISCORD": "Mostrar link de Discord en frente de la web",
|
||||
"SETUP_DISCORD_INVITE": "Ingresar link de invitación a discord",
|
||||
"SETUP_SERVER_USET6M": "Usar analizador Pluto T6",
|
||||
"SETUP_SERVER_USEIW5M": "Usar analizador Pluto IW5",
|
||||
"SETUP_SERVER_MANUALLOG": "Ingresar manualmente la ruta del archivo de registro",
|
||||
"SETUP_SERVER_IP": "Ingresar Dirección IP del servidor",
|
||||
"SETUP_SERVER_PORT": "Ingresar puerto del servidor",
|
||||
"SETUP_SERVER_RCON": "Ingresar contraseña RCon del servidor",
|
||||
"SETUP_SERVER_SAVE": "Configuración guardada, añadir otra",
|
||||
"SERVER_ERROR_DNE": "No existe",
|
||||
"SERVER_ERROR_LOG": "Archivo de registro del juego invalido",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "Un error interno ocurrió mientras se procesaba tu comando",
|
||||
"SERVER_ERROR_COMMAND_LOG": "Comando generó error",
|
||||
"SERVER_ERROR_UNFIXABLE": "No se está supervisando el servidor debido a errores incorregibles",
|
||||
"SERVER_ERROR_DVAR": "No se pudo obtener el valor dvar",
|
||||
"SERVER_ERROR_DVAR_HELP": "asegúrate de que el servidor tenga un mapa cargado",
|
||||
"SERVER_ERROR_PLUGIN": "Un error ocurrió mientras se cargaba el complemente",
|
||||
"SERVER_ERROR_ADDPLAYER": "Incapaz de añadir al jugador",
|
||||
"SERVER_ERROR_POLLING": "reduciendo la tasa de sondeo",
|
||||
"SERVER_ERROR_COMMUNICATION": "No se ha podido comunicar con",
|
||||
"SERVER_ERROR_EXCEPTION": "Excepción inesperada en",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "Las VPNs no están permitidas en este servidor",
|
||||
"SERVER_KICK_TEXT": "Fuiste expulsado",
|
||||
"SERVER_KICK_MINNAME": "Tu nombre debe contener al menos 3 caracteres",
|
||||
"SERVER_KICK_NAME_INUSE": "Tu nombre está siendo usado por alguien más",
|
||||
"SERVER_KICK_GENERICNAME": "Por favor cambia tu nombre usando /name",
|
||||
"SERVER_KICK_CONTROLCHARS": "Tu nombre no puede contener caracteres de control",
|
||||
"SERVER_TB_TEXT": "Estás temporalmente baneado",
|
||||
"SERVER_TB_REMAIN": "Tú estás temporalmente baneado",
|
||||
"SERVER_BAN_TEXT": "Estás baneado",
|
||||
"SERVER_BAN_PREV": "Baneado anteriormente por",
|
||||
"SERVER_BAN_APPEAL": "apela en",
|
||||
"SERVER_REPORT_COUNT": "Hay ^5{0} ^7reportes recientes",
|
||||
"SERVER_WARNLIMT_REACHED": "Muchas advertencias",
|
||||
"SERVER_WARNING": "ADVERTENCIA",
|
||||
"SERVER_WEBSITE_GENERIC": "el sitio web de este servidor",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7está ahora ^2en línea",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin está desconectado",
|
||||
"COMMAND_HELP_SYNTAX": "sintaxis:",
|
||||
"COMMAND_HELP_OPTIONAL": "opcional",
|
||||
"COMMAND_UNKNOWN": "Has ingresado un comando desconocido",
|
||||
"COMMAND_NOACCESS": "Tú no tienes acceso a ese comando",
|
||||
"COMMAND_NOTAUTHORIZED": "Tú no estás autorizado para ejecutar ese comando",
|
||||
"COMMAND_MISSINGARGS": "No se han proporcionado suficientes argumentos",
|
||||
"COMMAND_TARGET_MULTI": "Múltiples jugadores coinciden con ese nombre",
|
||||
"COMMAND_TARGET_NOTFOUND": "No se puede encontrar el jugador especificado",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "No se encontraron complementos para cargar",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
|
||||
"COMMANDS_OWNER_SUCCESS": "¡Felicidades, has reclamado la propiedad de este servidor!",
|
||||
"COMMANDS_OWNER_FAIL": "Este servidor ya tiene un propietario",
|
||||
"COMMANDS_WARN_FAIL": "No tiene los privilegios necesarios para advertir a",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "Todas las advertencias borradas para",
|
||||
"COMMANDS_KICK_SUCCESS": "ha sido expulsado",
|
||||
"COMMANDS_KICK_FAIL": "No tienes los privilegios necesarios para expulsar a",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "ha sido baneado temporalmente por",
|
||||
"COMMANDS_TEMPBAN_FAIL": "Tú no puedes banear temporalmente",
|
||||
"COMMANDS_BAN_SUCCESS": "ha sido baneado permanentemente",
|
||||
"COMMANDS_BAN_FAIL": "Tú no puedes banear",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Exitosamente desbaneado",
|
||||
"COMMANDS_UNBAN_FAIL": "no está baneado",
|
||||
"COMMANDS_HELP_NOTFOUND": "No se ha podido encontrar ese comando",
|
||||
"COMMANDS_HELP_MOREINFO": "Escribe !help <nombre del comando> para obtener la sintaxis de uso del comando",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "ha dado rápido reinicio al mapa",
|
||||
"COMMANDS_FASTRESTART_MASKED": "Al mapa se le ha dado un reinicio rápido",
|
||||
"COMMANDS_MAPROTATE": "Rotación de mapa en ^55 ^7segundos",
|
||||
"COMMANDS_SETLEVEL_SELF": "No puedes cambiar tu propio nivel",
|
||||
"COMMANDS_SETLEVEL_OWNER": "Solo puede haber un propietario. Modifica tu configuración si múltiples propietarios son requeridos",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor no te permite promover",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Tú solo puedes promover ^5{0} ^7a ^5{1} ^7o menor privilegio",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "¡Felicitaciones! has ha sido promovido a",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "fue promovido con éxito",
|
||||
"COMMANDS_SETLEVEL_FAIL": "Grupo inválido especificado",
|
||||
"COMMANDS_ADMINS_NONE": "No hay administradores visibles en línea",
|
||||
"COMMANDS_MAP_SUCCESS": "Cambiando al mapa",
|
||||
"COMMANDS_MAP_UKN": "Intentando cambiar a un mapa desconocido",
|
||||
"COMMANDS_FIND_MIN": "Por Favor introduzca al menos 3 caracteres",
|
||||
"COMMANDS_FIND_EMPTY": "No se encontraron jugadores",
|
||||
"COMMANDS_RULES_NONE": "El propietario del servidor no ha establecido ninguna regla",
|
||||
"COMMANDS_FLAG_SUCCESS": "Has marcado a",
|
||||
"COMMANDS_FLAG_UNFLAG": "Has desmarcado a",
|
||||
"COMMANDS_FLAG_FAIL": "Tú no puedes marcar",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "No puedes reportar a un jugador por campear",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "Ya has reportado a este jugador",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "No puedes reportarte a ti mismo",
|
||||
"COMMANDS_REPORT_FAIL": "Tú no puedes reportar",
|
||||
"COMMANDS_REPORT_SUCCESS": "Gracias por su reporte, un administrador ha sido notificado",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Reportes borrados con éxito",
|
||||
"COMMANDS_REPORTS_NONE": "No hay jugadores reportados aun",
|
||||
"COMMANDS_MASK_ON": "Ahora estás enmascarado",
|
||||
"COMMANDS_MASK_OFF": "Ahora estás desenmascarado",
|
||||
"COMMANDS_BANINFO_NONE": "No se encontró ban activo para ese jugador",
|
||||
"COMMANDS_BANINO_SUCCESS": "fue baneado por ^5{0} ^7debido a:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Aliases",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "Exitosamente enviado el comando RCon",
|
||||
"COMMANDS_PLUGINS_LOADED": "Complementos cargados",
|
||||
"COMMANDS_IP_SUCCESS": "Tu IP externa es",
|
||||
"COMMANDS_PRUNE_FAIL": "Número inválido de días inactivos",
|
||||
"COMMANDS_PRUNE_SUCCESS": "los usuarios privilegiados inactivos fueron podados",
|
||||
"COMMANDS_PASSWORD_FAIL": "Tu contraseña debe tener al menos 5 caracteres de largo",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Su contraseña ha sido establecida con éxito",
|
||||
"COMMANDS_PING_TARGET": "ping es",
|
||||
"COMMANDS_PING_SELF": "Tu ping es",
|
||||
"COMMANDS_QUIT_DESC": "salir de IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "reclamar la propiedad del servidor",
|
||||
"COMMANDS_WARN_DESC": "advertir al cliente por infringir las reglas",
|
||||
"COMMANDS_WARNCLEAR_DESC": "eliminar todas las advertencias de un cliente",
|
||||
"COMMANDS_KICK_DESC": "expulsar a un cliente por su nombre",
|
||||
"COMMANDS_SAY_DESC": "transmitir el mensaje a todos los clientes",
|
||||
"COMMANDS_TEMPBAN_DESC": "banear temporalmente a un cliente por el tiempo especificado (predeterminado en 1 hora)",
|
||||
"COMMANDS_BAN_DESC": "banear permanentemente un cliente del servidor",
|
||||
"COMMANDS_UNBAN_DESC": "desbanear al cliente por ID",
|
||||
"COMMANDS_WHO_DESC": "da información sobre ti",
|
||||
"COMMANDS_LIST_DESC": "enlistar clientes activos",
|
||||
"COMMANDS_HELP_DESC": "enlistar todos los comandos disponibles",
|
||||
"COMMANDS_FASTRESTART_DESC": "dar reinicio rápido al mapa actial",
|
||||
"COMMANDS_MAPROTATE_DESC": "pasar al siguiente mapa en rotación",
|
||||
"COMMANDS_SETLEVEL_DESC": "establecer el cliente al nivel de privilegio especificado",
|
||||
"COMMANDS_USAGE_DESC": "obtener uso de la memoria de la aplicación",
|
||||
"COMMANDS_USAGE_TEXT": "está usando",
|
||||
"COMMANDS_UPTIME_DESC": "obtener el tiempo de ejecución de la aplicación actual",
|
||||
"COMMANDS_UPTIME_TEXT": "ha estado en línea por",
|
||||
"COMMANDS_ADMINS_DESC": "enlistar clientes privilegiados actualmente conectados",
|
||||
"COMMANDS_MAP_DESC": "cambiar al mapa especificado",
|
||||
"COMMANDS_FIND_DESC": "encontrar cliente en la base de datos",
|
||||
"COMMANDS_RULES_DESC": "enlistar reglas del servidor",
|
||||
"COMMANDS_PM_DESC": "enviar mensaje a otro cliente",
|
||||
"COMMANDS_FLAG_DESC": "marcar un cliente sospechoso y anunciar a los administradores al unirse",
|
||||
"COMMANDS_REPORT_DESC": "reportar un cliente por comportamiento sospechoso",
|
||||
"COMMANDS_REPORTS_DESC": "obtener o borrar informes recientes",
|
||||
"COMMANDS_MASK_DESC": "esconde tu presencia como un cliente privilegiado",
|
||||
"COMMANDS_BANINFO_DESC": "obtener información sobre el ban de un cliente",
|
||||
"COMMANDS_ALIAS_DESC": "obtener alias e ips anteriores de un cliente",
|
||||
"COMMANDS_RCON_DESC": "enviar el comando rcon al servidor",
|
||||
"COMMANDS_PLUGINS_DESC": "ver todos los complementos cargados",
|
||||
"COMMANDS_IP_DESC": "ver tu dirección IP externa",
|
||||
"COMMANDS_PRUNE_DESC": "degradar a los clientes con privilegios que no se hayan conectado recientemente (el valor predeterminado es 30 días)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "configura tu contraseña de autenticación",
|
||||
"COMMANDS_PING_DESC": "obtener ping del cliente",
|
||||
"COMMANDS_ARGS_PLAYER": "jugador",
|
||||
"COMMANDS_ARGS_REASON": "razón",
|
||||
"COMMANDS_ARGS_MESSAGE": "mensaje",
|
||||
"COMMANDS_ARGS_DURATION": "duración (m|h|d|w|y)",
|
||||
"COMMANDS_ARGS_CLIENTID": "id del cliente",
|
||||
"COMMANDS_ARGS_COMMANDS": "comandos",
|
||||
"COMMANDS_ARGS_LEVEL": "nivel",
|
||||
"COMMANDS_ARGS_MAP": "mapa",
|
||||
"COMMANDS_ARGS_CLEAR": "borrar",
|
||||
"COMMANDS_ARGS_INACTIVE": "días inactivo",
|
||||
"COMMANDS_ARGS_PASSWORD": "contraseña",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "iniciar sesión usando la contraseña",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Ahora está conectado",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "tu contraseña es incorrecta",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "restablece tus estadísticas a las nuevas de fábrica",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Tus estadísticas para este servidor se han restablecido",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Debes estar conectado a un servidor para restablecer tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "ver tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "El jugador especificado debe estar dentro del juego",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Debes estar dentro del juego para ver tus estadísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "No se puede encontrar el jugador que especificó",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estadísticas para",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "ver los 5 mejores jugadores en este servidor",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Mejores Jugadores",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "Asesinatos",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "Muertes",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "Habilidad",
|
||||
"GLOBAL_DAYS": "días",
|
||||
"GLOBAL_HOURS": "horas",
|
||||
"GLOBAL_MINUTES": "minutos",
|
||||
"GLOBAL_REPORT": "Si sospechas que alguien ^5usa cheats ^7usa el comando ^5!report",
|
||||
"GLOBAL_ERROR": "Error",
|
||||
"GLOBAL_WARNING": "Advertencia",
|
||||
"GLOBAL_INFO": "Información",
|
||||
"GLOBAL_VERBOSE": "Detallado"
|
||||
}
|
||||
}
|
203
Application/Localization/IW4MAdmin.pt-BR.json
Normal file
203
Application/Localization/IW4MAdmin.pt-BR.json
Normal file
@ -0,0 +1,203 @@
|
||||
{
|
||||
"LocalizationName": "pt-BR",
|
||||
"LocalizationIndex": {
|
||||
"Set": {
|
||||
"MANAGER_VERSION_FAIL": "Não foi possível obter a versão mais recente do IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "Há uma atualização disponível. A versão mais recente é",
|
||||
"MANAGER_VERSION_CURRENT": "Está é a sua versão",
|
||||
"MANAGER_VERSION_SUCCESS": "O IW4MAdmin está atualizado",
|
||||
"MANAGER_INIT_FAIL": "Erro fatal durante a inicialização",
|
||||
"MANAGER_EXIT": "Pressione qualquer tecla para sair...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Desligamento concluído",
|
||||
"MANAGER_MONITORING_TEXT": "Agora monitorando",
|
||||
"MANAGER_CONNECTION_REST": "A conexão foi reestabelecida com",
|
||||
"SETUP_ENABLE_WEBFRONT": "Habilitar o módulo da web do IW4MAdmin",
|
||||
"SETUP_ENABLE_MULTIOWN": "Ativar vários proprietários",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Ativar hierarquia de privilégios escalonada",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Habilitar a customização do nome do comando say",
|
||||
"SETUP_SAY_NAME": "Digite o nome customizado do comando say",
|
||||
"SETUP_USE_CUSTOMENCODING": "Usar o analisador de codificação customizado",
|
||||
"SETUP_ENCODING_STRING": "Digite a string de codificação",
|
||||
"SETUP_ENABLE_VPNS": "Habilitar que os usuários usem VPN",
|
||||
"SETUP_IPHUB_KEY": "Digite iphub.info api key",
|
||||
"SETUP_DISPLAY_DISCORD": "Exibir link do Discord no módulo de web",
|
||||
"SETUP_DISCORD_INVITE": "Digitar link do convite do Discord",
|
||||
"SETUP_SERVER_USET6M": "Usar Pluto T6 parser",
|
||||
"SETUP_SERVER_USEIW5M": "Usar Pluto IW5 Parser",
|
||||
"SETUP_SERVER_MANUALLOG": "Insira o caminho do arquivo de log manualmente",
|
||||
"SETUP_SERVER_IP": "Digite o endereço IP do servidor",
|
||||
"SETUP_SERVER_PORT": "Digite a porta do servidor",
|
||||
"SETUP_SERVER_RCON": "Digite a senha do RCon do servidor",
|
||||
"SETUP_SERVER_SAVE": "Configuração salva, adicionar outra",
|
||||
"SERVER_ERROR_DNE": "não existe",
|
||||
"SERVER_ERROR_LOG": "Log do jogo inválido",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "Ocorreu um erro interno ao processar seu comando",
|
||||
"SERVER_ERROR_COMMAND_LOG": "o comando gerou um erro",
|
||||
"SERVER_ERROR_UNFIXABLE": "Não monitorando o servidor devido a erros incorrigíveis",
|
||||
"SERVER_ERROR_DVAR": "Não foi possível obter o valor de dvar para",
|
||||
"SERVER_ERROR_DVAR_HELP": "garanta que o servidor tenha um mapa carregado",
|
||||
"SERVER_ERROR_PLUGIN": "Ocorreu um erro ao carregar o plug-in",
|
||||
"SERVER_ERROR_ADDPLAYER": "Não foi possível adicionar o jogador",
|
||||
"SERVER_ERROR_POLLING": "reduzir a taxa de sondagem do server",
|
||||
"SERVER_ERROR_COMMUNICATION": "Não foi possível fazer a comunicação com",
|
||||
"SERVER_ERROR_EXCEPTION": "Exceção inesperada em",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs não são permitidas neste servidor",
|
||||
"SERVER_KICK_TEXT": "Você foi expulso",
|
||||
"SERVER_KICK_MINNAME": "Seu nome deve conter no mínimo três caracteres",
|
||||
"SERVER_KICK_NAME_INUSE": "Seu nome já está sendo usado por outra pessoa",
|
||||
"SERVER_KICK_GENERICNAME": "Por favor, mude o seu nome usando o comando /name no console",
|
||||
"SERVER_KICK_CONTROLCHARS": "Seu nome não pode conter caracteres de controle",
|
||||
"SERVER_TB_TEXT": "Você está banido temporariamente",
|
||||
"SERVER_TB_REMAIN": "Você está banido temporariamente",
|
||||
"SERVER_BAN_TEXT": "Você está banido",
|
||||
"SERVER_BAN_PREV": "Banido preventivamente por",
|
||||
"SERVER_BAN_APPEAL": "apele em",
|
||||
"SERVER_REPORT_COUNT": "Você tem ^5{0} ^7denúncias recentes",
|
||||
"SERVER_WARNLIMT_REACHED": "Avisos demais! Leia o chat da próxima vez",
|
||||
"SERVER_WARNING": "AVISO",
|
||||
"SERVER_WEBSITE_GENERIC": "este é o site do servidor",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7agora está ^2ONLINE",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin ficou offline",
|
||||
"COMMAND_HELP_SYNTAX": "sintaxe:",
|
||||
"COMMAND_HELP_OPTIONAL": "opcional",
|
||||
"COMMAND_UNKNOWN": "Você digitou um comando desconhecido",
|
||||
"COMMAND_NOACCESS": "Você não tem acesso a este comando",
|
||||
"COMMAND_NOTAUTHORIZED": "Você não está autorizado a executar este comando",
|
||||
"COMMAND_MISSINGARGS": "Não foram oferecidos argumentos suficientes",
|
||||
"COMMAND_TARGET_MULTI": "Vários jogadores correspondem a esse nome",
|
||||
"COMMAND_TARGET_NOTFOUND": "Não é possível encontrar o jogador especificado",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "Não foram encontrados plugins para carregar",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
|
||||
"COMMANDS_OWNER_SUCCESS": "Parabéns, você reivindicou a propriedade deste servidor!",
|
||||
"COMMANDS_OWNER_FAIL": "Este servidor já tem um dono",
|
||||
"COMMANDS_WARN_FAIL": "Você não tem os privilégios necessários para fazer o Aviso",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "Todos os avisos foram apagados para",
|
||||
"COMMANDS_KICK_SUCCESS": "foi expulso",
|
||||
"COMMANDS_KICK_FAIL": "Você não tem os privilégios necessários para expulsar",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "foi banido temporariamente por",
|
||||
"COMMANDS_TEMPBAN_FAIL": "Você não pode banir temporariamente",
|
||||
"COMMANDS_BAN_SUCCESS": "foi banido permanentemente",
|
||||
"COMMANDS_BAN_FAIL": "Você não pode banir de maneira permanente",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Foi retirado o banimento com sucesso",
|
||||
"COMMANDS_UNBAN_FAIL": "não está banido",
|
||||
"COMMANDS_HELP_NOTFOUND": "Não foi possível encontrar esse comando",
|
||||
"COMMANDS_HELP_MOREINFO": "Digite !help <comando> para saber como usar o comando",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "reiniciou rapidamente o mapa",
|
||||
"COMMANDS_FASTRESTART_MASKED": "O mapa foi reiniciado rapidamente",
|
||||
"COMMANDS_MAPROTATE": "Rotacionando o mapa em ^55 ^7segundos",
|
||||
"COMMANDS_SETLEVEL_SELF": "Você não pode mudar seu próprio nível",
|
||||
"COMMANDS_SETLEVEL_OWNER": "Só pode haver 1 dono. Modifique suas configurações se vários proprietários forem necessários",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor não permite que você promova",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Você só pode promover do ^5{0} ^7para ^5{1} ^7ou um nível menor",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Parabéns! Você foi promovido para",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "foi promovido com sucesso",
|
||||
"COMMANDS_SETLEVEL_FAIL": "grupo especificado inválido",
|
||||
"COMMANDS_ADMINS_NONE": "Sem administradores visíveis online",
|
||||
"COMMANDS_MAP_SUCCESS": "Mudando o mapa para",
|
||||
"COMMANDS_MAP_UKN": "Tentando mudar para o mapa desconhecido",
|
||||
"COMMANDS_FIND_MIN": "Por favor, insira pelo menos 3 caracteres",
|
||||
"COMMANDS_FIND_EMPTY": "Nenhum jogador foi encontrado",
|
||||
"COMMANDS_RULES_NONE": "O proprietário do servidor não definiu nenhuma regra, sinta-se livre",
|
||||
"COMMANDS_FLAG_SUCCESS": "Você sinalizou",
|
||||
"COMMANDS_FLAG_UNFLAG": "Você tirou a sinalização de",
|
||||
"COMMANDS_FLAG_FAIL": "Você não pode sinalizar",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "Você não pode denunciar o jogador por camperar",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "Você já denunciou o jogador",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "Você não pode se reportar",
|
||||
"COMMANDS_REPORT_FAIL": "Você não pode reportar",
|
||||
"COMMANDS_REPORT_SUCCESS": "Obrigado pela sua denúncia, um administrador foi notificado",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Lista de denúncias limpa com sucesso",
|
||||
"COMMANDS_REPORTS_NONE": "Ninguém foi denunciado ainda",
|
||||
"COMMANDS_MASK_ON": "Você foi mascarado",
|
||||
"COMMANDS_MASK_OFF": "Você foi desmascarado",
|
||||
"COMMANDS_BANINFO_NONE": "Nenhum banimento ativo foi encontrado para esse jogador",
|
||||
"COMMANDS_BANINO_SUCCESS": "foi banido por ^5{0} ^7por:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Nomes registrados",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "O comando para o RCon foi enviado com sucesso",
|
||||
"COMMANDS_PLUGINS_LOADED": "Plugins carregados",
|
||||
"COMMANDS_IP_SUCCESS": "Seu endereço IP externo é",
|
||||
"COMMANDS_PRUNE_FAIL": "Número inválido de dias ativo",
|
||||
"COMMANDS_PRUNE_SUCCESS": "usuários privilegiados inativos foram removidos",
|
||||
"COMMANDS_PASSWORD_FAIL": "Sua senha deve ter pelo menos 5 caracteres",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Sua senha foi configurada com sucesso",
|
||||
"COMMANDS_PING_TARGET": "latência é",
|
||||
"COMMANDS_PING_SELF": "Sua latência é",
|
||||
"COMMANDS_QUIT_DESC": "sair do IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "reivindicar a propriedade do servidor",
|
||||
"COMMANDS_WARN_DESC": "avisa o cliente por infringir regras",
|
||||
"COMMANDS_WARNCLEAR_DESC": "remove todos os avisos para um cliente",
|
||||
"COMMANDS_KICK_DESC": "expulsa o cliente pelo nome",
|
||||
"COMMANDS_SAY_DESC": "transmite mensagem para todos os clientes",
|
||||
"COMMANDS_TEMPBAN_DESC": "bane temporariamente um cliente por tempo especificado (o padrão é 1 hora)",
|
||||
"COMMANDS_BAN_DESC": "banir permanentemente um cliente do servidor",
|
||||
"COMMANDS_UNBAN_DESC": "retira o ban de um jogador pelo seu ID",
|
||||
"COMMANDS_WHO_DESC": "dá informações sobre você",
|
||||
"COMMANDS_LIST_DESC": "lista os jogadores ativos na partida",
|
||||
"COMMANDS_HELP_DESC": "lista todos os comandos disponíveis",
|
||||
"COMMANDS_FASTRESTART_DESC": "reinicializa rapidamente o mapa, não recomendável o uso várias vezes seguidas",
|
||||
"COMMANDS_MAPROTATE_DESC": "avança para o próximo mapa da rotação",
|
||||
"COMMANDS_SETLEVEL_DESC": "define o jogador para o nível de privilégio especificado",
|
||||
"COMMANDS_USAGE_DESC": "vê quanto o aplicativo está usando de memória ram do seu computador",
|
||||
"COMMANDS_USAGE_TEXT": "está usando",
|
||||
"COMMANDS_UPTIME_DESC": "obtém o tempo de execução do aplicativo a quando aberto",
|
||||
"COMMANDS_UPTIME_TEXT": "está online por",
|
||||
"COMMANDS_ADMINS_DESC": "lista os clientes privilegiados conectados no momento",
|
||||
"COMMANDS_MAP_DESC": "muda para o mapa especificado",
|
||||
"COMMANDS_FIND_DESC": "acha o jogador na base de dados",
|
||||
"COMMANDS_RULES_DESC": "lista as regras do servidor",
|
||||
"COMMANDS_PM_DESC": "envia a mensagem para o outro jogador de maneira privada, use /!pm para ter efeito, se possível",
|
||||
"COMMANDS_FLAG_DESC": "sinaliza um cliente suspeito e anuncia aos administradores ao entrar no servidor",
|
||||
"COMMANDS_REPORT_DESC": "denuncia o jogador por comportamento suspeito",
|
||||
"COMMANDS_REPORTS_DESC": "obtém ou limpa as denúncias recentes",
|
||||
"COMMANDS_MASK_DESC": "esconda sua presença como um cliente privilegiado",
|
||||
"COMMANDS_BANINFO_DESC": "obtém informações sobre um banimento para um jogador",
|
||||
"COMMANDS_ALIAS_DESC": "obtém a lista de histórico de nomes que o jogador usou no servidor",
|
||||
"COMMANDS_RCON_DESC": "envia o comando Rcon para o servidor",
|
||||
"COMMANDS_PLUGINS_DESC": "mostra todos os plugins que estão carregados",
|
||||
"COMMANDS_IP_DESC": "mostra o seu endereço IP externo",
|
||||
"COMMANDS_PRUNE_DESC": "rebaixa qualquer cliente privilegiado que não tenha se conectado recentemente (o padrão é 30 dias)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "define sua senha de autenticação",
|
||||
"COMMANDS_PING_DESC": "mostra o quanto de latência tem o jogador",
|
||||
"COMMANDS_ARGS_PLAYER": "jogador",
|
||||
"COMMANDS_ARGS_REASON": "razão",
|
||||
"COMMANDS_ARGS_MESSAGE": "mensagem",
|
||||
"COMMANDS_ARGS_DURATION": "duração (minutos|horas|dias|semanas|anos)",
|
||||
"COMMANDS_ARGS_CLIENTID": "id do jogador",
|
||||
"COMMANDS_ARGS_COMMANDS": "comandos",
|
||||
"COMMANDS_ARGS_LEVEL": "nível",
|
||||
"COMMANDS_ARGS_MAP": "mapa",
|
||||
"COMMANDS_ARGS_CLEAR": "limpar",
|
||||
"COMMANDS_ARGS_INACTIVE": "dias inativos",
|
||||
"COMMANDS_ARGS_PASSWORD": "senha",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "Logar-se usando a senha",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Você agora está logado",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Sua senha está errada",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reinicia suas estatísticas para uma nova",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Suas estatísticas nesse servidor foram reiniciadas",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Você deve estar conectado a um servidor para reiniciar as suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "mostra suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "o jogador especificado deve estar jogando",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Você deve estar no jogo para ver suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Não foi encontrado o jogador que você especificou",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estatísticas para",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "visualiza os 5 melhores jogadores do servidor",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Jogadores",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "BAIXAS",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "MORTES",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "HABILIDADE",
|
||||
"GLOBAL_DAYS": "dias",
|
||||
"GLOBAL_HOURS": "horas",
|
||||
"GLOBAL_MINUTES": "minutos",
|
||||
"GLOBAL_REPORT": "Se você está suspeitando alguém de alguma ^5TRAPAÇA ^7use o comando ^5!report",
|
||||
"GLOBAL_ERROR": "Erro",
|
||||
"GLOBAL_WARNING": "AVISO",
|
||||
"GLOBAL_INFO": "Informação",
|
||||
"GLOBAL_VERBOSE": "Verbose",
|
||||
|
||||
"MANAGER_CONSOLE_NOSERV": "Nenhum servidor está sendo monitorado no momento",
|
||||
"SERVER_PLUGIN_ERROR": "Um plugin gerou um erro",
|
||||
"PLUGINS_STATS_TEXT_NOQUALIFY": "Não há ainda jogadores qualificados para as melhores estatísticas"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,197 +0,0 @@
|
||||
{
|
||||
"LocalizationName": "pt-BR",
|
||||
"LocalizationSet": {
|
||||
"MANAGER_VERSION_FAIL": "Não foi possível obter a versão mais recente do IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "Há uma atualização disponível. A versão mais recente é",
|
||||
"MANAGER_VERSION_CURRENT": "Está é a sua versão",
|
||||
"MANAGER_VERSION_SUCCESS": "O IW4MAdmin está atualizado",
|
||||
"MANAGER_INIT_FAIL": "Erro fatal durante a inicialização",
|
||||
"MANAGER_EXIT": "Pressione qualquer tecla para sair...",
|
||||
"MANAGER_SHUTDOWN_SUCCESS": "Desligamento concluído",
|
||||
"MANAGER_MONITORING_TEXT": "Agora monitorando",
|
||||
"MANAGER_CONNECTION_REST": "A conexão foi reestabelecida com",
|
||||
"SETUP_ENABLE_WEBFRONT": "Habilitar o módulo da web do IW4MAdmin",
|
||||
"SETUP_ENABLE_MULTIOWN": "Ativar vários proprietários",
|
||||
"SETUP_ENABLE_STEPPEDPRIV": "Ativar hierarquia de privilégios escalonada",
|
||||
"SETUP_ENABLE_CUSTOMSAY": "Habilitar a customização do nome do comando say",
|
||||
"SETUP_SAY_NAME": "Digite o nome customizado do comando say",
|
||||
"SETUP_USE_CUSTOMENCODING": "Usar o analisador de codificação customizado",
|
||||
"SETUP_ENCODING_STRING": "Digite a string de codificação",
|
||||
"SETUP_ENABLE_VPNS": "Habilitar que os usuários usem VPN",
|
||||
"SETUP_IPHUB_KEY": "Digite iphub.info api key",
|
||||
"SETUP_DISPLAY_DISCORD": "Exibir link do Discord no módulo de web",
|
||||
"SETUP_DISCORD_INVITE": "Digitar link do convite do Discord",
|
||||
"SETUP_SERVER_USET6M": "Usar Pluto T6 parser",
|
||||
"SETUP_SERVER_USEIW5M": "Usar Pluto IW5 Parser",
|
||||
"SETUP_SERVER_MANUALLOG": "Insira o caminho do arquivo de log manualmente",
|
||||
"SETUP_SERVER_IP": "Digite o endereço IP do servidor",
|
||||
"SETUP_SERVER_PORT": "Digite a porta do servidor",
|
||||
"SETUP_SERVER_RCON": "Digite a senha do RCon do servidor",
|
||||
"SETUP_SERVER_SAVE": "Configuração salva, adicionar outra",
|
||||
"SERVER_ERROR_DNE": "não existe",
|
||||
"SERVER_ERROR_LOG": "Log do jogo inválido",
|
||||
"SERVER_ERROR_COMMAND_INGAME": "Ocorreu um erro interno ao processar seu comando",
|
||||
"SERVER_ERROR_COMMAND_LOG": "o comando gerou um erro",
|
||||
"SERVER_ERROR_UNFIXABLE": "Não monitorando o servidor devido a erros incorrigíveis",
|
||||
"SERVER_ERROR_DVAR": "Não foi possível obter o valor de dvar para",
|
||||
"SERVER_ERROR_DVAR_HELP": "garanta que o servidor tenha um mapa carregado",
|
||||
"SERVER_ERROR_PLUGIN": "Ocorreu um erro ao carregar o plug-in",
|
||||
"SERVER_ERROR_ADDPLAYER": "Não foi possível adicionar o jogador",
|
||||
"SERVER_ERROR_POLLING": "reduzir a taxa de sondagem do server",
|
||||
"SERVER_ERROR_COMMUNICATION": "Não foi possível fazer a comunicação com",
|
||||
"SERVER_ERROR_EXCEPTION": "Exceção inesperada em",
|
||||
"SERVER_KICK_VPNS_NOTALLOWED": "VPNs não são permitidas neste servidor",
|
||||
"SERVER_KICK_TEXT": "Você foi expulso",
|
||||
"SERVER_KICK_MINNAME": "Seu nome deve conter no mínimo três caracteres",
|
||||
"SERVER_KICK_NAME_INUSE": "Seu nome já está sendo usado por outra pessoa",
|
||||
"SERVER_KICK_GENERICNAME": "Por favor, mude o seu nome usando o comando /name no console",
|
||||
"SERVER_KICK_CONTROLCHARS": "Seu nome não pode conter caracteres de controle",
|
||||
"SERVER_TB_TEXT": "Você está banido temporariamente",
|
||||
"SERVER_TB_REMAIN": "Você está banido temporariamente",
|
||||
"SERVER_BAN_TEXT": "Você está banido",
|
||||
"SERVER_BAN_PREV": "Banido preventivamente por",
|
||||
"SERVER_BAN_APPEAL": "apele em",
|
||||
"SERVER_REPORT_COUNT": "Você tem ^5{0} ^7denúncias recentes",
|
||||
"SERVER_WARNLIMT_REACHED": "Avisos demais! Leia o chat da próxima vez",
|
||||
"SERVER_WARNING": "AVISO",
|
||||
"SERVER_WEBSITE_GENERIC": "este é o site do servidor",
|
||||
"BROADCAST_ONLINE": "^5IW4MADMIN ^7agora está ^2ONLINE",
|
||||
"BROADCAST_OFFLINE": "IW4MAdmin ficou offline",
|
||||
"COMMAND_HELP_SYNTAX": "sintaxe:",
|
||||
"COMMAND_HELP_OPTIONAL": "opcional",
|
||||
"COMMAND_UNKNOWN": "Você digitou um comando desconhecido",
|
||||
"COMMAND_NOACCESS": "Você não tem acesso a este comando",
|
||||
"COMMAND_NOTAUTHORIZED": "Você não está autorizado a executar este comando",
|
||||
"COMMAND_MISSINGARGS": "Não foram oferecidos argumentos suficientes",
|
||||
"COMMAND_TARGET_MULTI": "Vários jogadores correspondem a esse nome",
|
||||
"COMMAND_TARGET_NOTFOUND": "Não é possível encontrar o jogador especificado",
|
||||
"PLUGIN_IMPORTER_NOTFOUND": "Não foram encontrados plugins para carregar",
|
||||
"PLUGIN_IMPORTER_REGISTERCMD": "Comando registrado",
|
||||
"COMMANDS_OWNER_SUCCESS": "Parabéns, você reivindicou a propriedade deste servidor!",
|
||||
"COMMANDS_OWNER_FAIL": "Este servidor já tem um dono",
|
||||
"COMMANDS_WARN_FAIL": "Você não tem os privilégios necessários para fazer o Aviso",
|
||||
"COMMANDS_WARNCLEAR_SUCCESS": "Todos os avisos foram apagados para",
|
||||
"COMMANDS_KICK_SUCCESS": "foi expulso",
|
||||
"COMMANDS_KICK_FAIL": "Você não tem os privilégios necessários para expulsar",
|
||||
"COMMANDS_TEMPBAN_SUCCESS": "foi banido temporariamente por",
|
||||
"COMMANDS_TEMPBAN_FAIL": "Você não pode banir temporariamente",
|
||||
"COMMANDS_BAN_SUCCESS": "foi banido permanentemente",
|
||||
"COMMANDS_BAN_FAIL": "Você não pode banir de maneira permanente",
|
||||
"COMMANDS_UNBAN_SUCCESS": "Foi retirado o banimento com sucesso",
|
||||
"COMMANDS_UNBAN_FAIL": "não está banido",
|
||||
"COMMANDS_HELP_NOTFOUND": "Não foi possível encontrar esse comando",
|
||||
"COMMANDS_HELP_MOREINFO": "Digite !help <comando> para saber como usar o comando",
|
||||
"COMMANDS_FASTRESTART_UNMASKED": "reiniciou rapidamente o mapa",
|
||||
"COMMANDS_FASTRESTART_MASKED": "O mapa foi reiniciado rapidamente",
|
||||
"COMMANDS_MAPROTATE": "Rotacionando o mapa em ^55 ^7segundos",
|
||||
"COMMANDS_SETLEVEL_SELF": "Você não pode mudar seu próprio nível",
|
||||
"COMMANDS_SETLEVEL_OWNER": "Só pode haver 1 dono. Modifique suas configurações se vários proprietários forem necessários",
|
||||
"COMMANDS_SETLEVEL_STEPPEDDISABLED": "Este servidor não permite que você promova",
|
||||
"COMMANDS_SETLEVEL_LEVELTOOHIGH": "Você só pode promover do ^5{0} ^7para ^5{1} ^7ou um nível menor",
|
||||
"COMMANDS_SETLEVEL_SUCCESS_TARGET": "Parabéns! Você foi promovido para",
|
||||
"COMMANDS_SETLEVEL_SUCCESS": "foi promovido com sucesso",
|
||||
"COMMANDS_SETLEVEL_FAIL": "grupo especificado inválido",
|
||||
"COMMANDS_ADMINS_NONE": "Sem administradores visíveis online",
|
||||
"COMMANDS_MAP_SUCCESS": "Mudando o mapa para",
|
||||
"COMMANDS_MAP_UKN": "Tentando mudar para o mapa desconhecido",
|
||||
"COMMANDS_FIND_MIN": "Por favor, insira pelo menos 3 caracteres",
|
||||
"COMMANDS_FIND_EMPTY": "Nenhum jogador foi encontrado",
|
||||
"COMMANDS_RULES_NONE": "O proprietário do servidor não definiu nenhuma regra, sinta-se livre",
|
||||
"COMMANDS_FLAG_SUCCESS": "Você sinalizou",
|
||||
"COMMANDS_FLAG_UNFLAG": "Você tirou a sinalização de",
|
||||
"COMMANDS_FLAG_FAIL": "Você não pode sinalizar",
|
||||
"COMMANDS_REPORT_FAIL_CAMP": "Você não pode denunciar o jogador por camperar",
|
||||
"COMMANDS_REPORT_FAIL_DUPLICATE": "Você já denunciou o jogador",
|
||||
"COMMANDS_REPORT_FAIL_SELF": "Você não pode se reportar",
|
||||
"COMMANDS_REPORT_FAIL": "Você não pode reportar",
|
||||
"COMMANDS_REPORT_SUCCESS": "Obrigado pela sua denúncia, um administrador foi notificado",
|
||||
"COMMANDS_REPORTS_CLEAR_SUCCESS": "Lista de denúncias limpa com sucesso",
|
||||
"COMMANDS_REPORTS_NONE": "Ninguém foi denunciado ainda",
|
||||
"COMMANDS_MASK_ON": "Você foi mascarado",
|
||||
"COMMANDS_MASK_OFF": "Você foi desmascarado",
|
||||
"COMMANDS_BANINFO_NONE": "Nenhum banimento ativo foi encontrado para esse jogador",
|
||||
"COMMANDS_BANINO_SUCCESS": "foi banido por ^5{0} ^7por:",
|
||||
"COMMANDS_ALIAS_ALIASES": "Nomes registrados",
|
||||
"COMMANDS_ALIAS_IPS": "IPs",
|
||||
"COMMANDS_RCON_SUCCESS": "O comando para o RCon foi enviado com sucesso",
|
||||
"COMMANDS_PLUGINS_LOADED": "Plugins carregados",
|
||||
"COMMANDS_IP_SUCCESS": "Seu endereço IP externo é",
|
||||
"COMMANDS_PRUNE_FAIL": "Número inválido de dias ativo",
|
||||
"COMMANDS_PRUNE_SUCCESS": "usuários privilegiados inativos foram removidos",
|
||||
"COMMANDS_PASSWORD_FAIL": "Sua senha deve ter pelo menos 5 caracteres",
|
||||
"COMMANDS_PASSWORD_SUCCESS": "Sua senha foi configurada com sucesso",
|
||||
"COMMANDS_PING_TARGET": "latência é",
|
||||
"COMMANDS_PING_SELF": "Sua latência é",
|
||||
"COMMANDS_QUIT_DESC": "sair do IW4MAdmin",
|
||||
"COMMANDS_OWNER_DESC": "reivindicar a propriedade do servidor",
|
||||
"COMMANDS_WARN_DESC": "avisa o cliente por infringir regras",
|
||||
"COMMANDS_WARNCLEAR_DESC": "remove todos os avisos para um cliente",
|
||||
"COMMANDS_KICK_DESC": "expulsa o cliente pelo nome",
|
||||
"COMMANDS_SAY_DESC": "transmite mensagem para todos os clientes",
|
||||
"COMMANDS_TEMPBAN_DESC": "bane temporariamente um cliente por tempo especificado (o padrão é 1 hora)",
|
||||
"COMMANDS_BAN_DESC": "banir permanentemente um cliente do servidor",
|
||||
"COMMANDS_UNBAN_DESC": "retira o ban de um jogador pelo seu ID",
|
||||
"COMMANDS_WHO_DESC": "dá informações sobre você",
|
||||
"COMMANDS_LIST_DESC": "lista os jogadores ativos na partida",
|
||||
"COMMANDS_HELP_DESC": "lista todos os comandos disponíveis",
|
||||
"COMMANDS_FASTRESTART_DESC": "reinicializa rapidamente o mapa, não recomendável o uso várias vezes seguidas",
|
||||
"COMMANDS_MAPROTATE_DESC": "avança para o próximo mapa da rotação",
|
||||
"COMMANDS_SETLEVEL_DESC": "define o jogador para o nível de privilégio especificado",
|
||||
"COMMANDS_USAGE_DESC": "vê quanto o aplicativo está usando de memória ram do seu computador",
|
||||
"COMMANDS_USAGE_TEXT": "está usando",
|
||||
"COMMANDS_UPTIME_DESC": "obtém o tempo de execução do aplicativo a quando aberto",
|
||||
"COMMANDS_UPTIME_TEXT": "está online por",
|
||||
"COMMANDS_ADMINS_DESC": "lista os clientes privilegiados conectados no momento",
|
||||
"COMMANDS_MAP_DESC": "muda para o mapa especificado",
|
||||
"COMMANDS_FIND_DESC": "acha o jogador na base de dados",
|
||||
"COMMANDS_RULES_DESC": "lista as regras do servidor",
|
||||
"COMMANDS_PM_DESC": "envia a mensagem para o outro jogador de maneira privada, use /!pm para ter efeito, se possível",
|
||||
"COMMANDS_FLAG_DESC": "sinaliza um cliente suspeito e anuncia aos administradores ao entrar no servidor",
|
||||
"COMMANDS_REPORT_DESC": "denuncia o jogador por comportamento suspeito",
|
||||
"COMMANDS_REPORTS_DESC": "obtém ou limpa as denúncias recentes",
|
||||
"COMMANDS_MASK_DESC": "esconda sua presença como um cliente privilegiado",
|
||||
"COMMANDS_BANINFO_DESC": "obtém informações sobre um banimento para um jogador",
|
||||
"COMMANDS_ALIAS_DESC": "obtém a lista de histórico de nomes que o jogador usou no servidor",
|
||||
"COMMANDS_RCON_DESC": "envia o comando Rcon para o servidor",
|
||||
"COMMANDS_PLUGINS_DESC": "mostra todos os plugins que estão carregados",
|
||||
"COMMANDS_IP_DESC": "mostra o seu endereço IP externo",
|
||||
"COMMANDS_PRUNE_DESC": "rebaixa qualquer cliente privilegiado que não tenha se conectado recentemente (o padrão é 30 dias)",
|
||||
"COMMANDS_SETPASSWORD_DESC": "define sua senha de autenticação",
|
||||
"COMMANDS_PING_DESC": "mostra o quanto de latência tem o jogador",
|
||||
"COMMANDS_ARGS_PLAYER": "jogador",
|
||||
"COMMANDS_ARGS_REASON": "razão",
|
||||
"COMMANDS_ARGS_MESSAGE": "mensagem",
|
||||
"COMMANDS_ARGS_DURATION": "duração (minutos|horas|dias|semanas|anos)",
|
||||
"COMMANDS_ARGS_CLIENTID": "id do jogador",
|
||||
"COMMANDS_ARGS_COMMANDS": "comandos",
|
||||
"COMMANDS_ARGS_LEVEL": "nível",
|
||||
"COMMANDS_ARGS_MAP": "mapa",
|
||||
"COMMANDS_ARGS_CLEAR": "limpar",
|
||||
"COMMANDS_ARGS_INACTIVE": "dias inativos",
|
||||
"COMMANDS_ARGS_PASSWORD": "senha",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_DESC": "Logar-se usando a senha",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS": "Você agora está logado",
|
||||
"PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL": "Sua senha está errada",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_DESC": "reinicia suas estatísticas para uma nova",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_SUCCESS": "Suas estatísticas nesse servidor foram reiniciadas",
|
||||
"PLUGINS_STATS_COMMANDS_RESET_FAIL": "Você deve estar conectado a um servidor para reiniciar as suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_DESC": "mostra suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME": "o jogador especificado deve estar jogando",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL_INGAME_SELF": "Você deve estar no jogo para ver suas estatísticas",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_FAIL": "Não foi encontrado o jogador que você especificou",
|
||||
"PLUGINS_STATS_COMMANDS_VIEW_SUCCESS": "Estatísticas para",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_DESC": "visualiza os 5 melhores jogadores do servidor",
|
||||
"PLUGINS_STATS_COMMANDS_TOP_TEXT": "Top Jogadores",
|
||||
"PLUGINS_STATS_TEXT_KILLS": "BAIXAS",
|
||||
"PLUGINS_STATS_TEXT_DEATHS": "MORTES",
|
||||
"PLUGINS_STATS_TEXT_SKILL": "HABILIDADE",
|
||||
"GLOBAL_DAYS": "dias",
|
||||
"GLOBAL_HOURS": "horas",
|
||||
"GLOBAL_MINUTES": "minutos",
|
||||
"GLOBAL_REPORT": "Se você está suspeitando alguém de alguma ^5TRAPAÇA ^7use o comando ^5!report",
|
||||
"GLOBAL_ERROR": "Erro",
|
||||
"GLOBAL_WARNING": "AVISO",
|
||||
"GLOBAL_INFO": "Informação",
|
||||
"GLOBAL_VERBOSE": "Verbose"
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"LocalizationName": "ru-RU",
|
||||
"LocalizationSet": {
|
||||
"LocalizationIndex": {
|
||||
"Set": {
|
||||
"MANAGER_VERSION_FAIL": "Не удалось получить последнюю версию IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "- есть обновление. Последняя версия:",
|
||||
"MANAGER_VERSION_CURRENT": "Ваша версия:",
|
||||
@ -192,6 +193,11 @@
|
||||
"GLOBAL_ERROR": "Ошибка",
|
||||
"GLOBAL_WARNING": "Предупреждение",
|
||||
"GLOBAL_INFO": "Информация",
|
||||
"GLOBAL_VERBOSE": "Подробно"
|
||||
"GLOBAL_VERBOSE": "Подробно",
|
||||
|
||||
"MANAGER_CONSOLE_NOSERV": "На данный момент нет серверов под мониторингом",
|
||||
"SERVER_PLUGIN_ERROR": "Плагин произвел ошибку",
|
||||
"PLUGINS_STATS_TEXT_NOQUALIFY": "Ещё нет совернующихся игроков за лучшую статистику"
|
||||
}
|
||||
}
|
||||
}
|
@ -30,8 +30,14 @@ namespace IW4MAdmin.Application
|
||||
|
||||
void Write(string msg, LogType type)
|
||||
{
|
||||
if (!Utilities.CurrentLocalization.LocalizationSet.TryGetValue($"GLOBAL_{type.ToString().ToUpper()}", out string stringType))
|
||||
stringType = type.ToString();
|
||||
string stringType = type.ToString();
|
||||
|
||||
try
|
||||
{
|
||||
stringType = Utilities.CurrentLocalization.LocalizationIndex[$"GLOBAL_{type.ToString().ToUpper()}"];
|
||||
}
|
||||
|
||||
catch (Exception) { }
|
||||
|
||||
string LogLine = $"[{DateTime.Now.ToString("HH:mm:ss")}] - {stringType}: {msg}";
|
||||
lock (ThreadLock)
|
||||
|
@ -8,6 +8,8 @@ using SharedLibraryCore.Objects;
|
||||
using SharedLibraryCore.Database;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using SharedLibraryCore.Localization;
|
||||
|
||||
namespace IW4MAdmin.Application
|
||||
{
|
||||
@ -21,8 +23,7 @@ namespace IW4MAdmin.Application
|
||||
{
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", OperatingDirectory);
|
||||
//System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal;
|
||||
Localization.Configure.Initialize();
|
||||
var loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
|
||||
Console.OutputEncoding = Encoding.UTF8;
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
|
||||
@ -35,11 +36,15 @@ namespace IW4MAdmin.Application
|
||||
Console.WriteLine($" Version {Version.ToString("0.0")}");
|
||||
Console.WriteLine("=====================================================");
|
||||
|
||||
Index loc = null;
|
||||
|
||||
try
|
||||
{
|
||||
CheckDirectories();
|
||||
|
||||
ServerManager = ApplicationManager.GetInstance();
|
||||
Localization.Configure.Initialize(ServerManager.GetApplicationSettings().Configuration()?.CustomLocale);
|
||||
loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
|
||||
using (var db = new DatabaseContext(ServerManager.GetApplicationSettings().Configuration()?.ConnectionString))
|
||||
new ContextSeed(db).Seed().Wait();
|
||||
|
@ -132,7 +132,7 @@ namespace IW4MAdmin.Application
|
||||
|
||||
catch (Exception E)
|
||||
{
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_EXCEPTION"]} {sensitiveEvent.Owner}");
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_EXCEPTION"]} {sensitiveEvent.Owner}");
|
||||
Logger.WriteDebug("Error Message: " + E.Message);
|
||||
Logger.WriteDebug("Error Trace: " + E.StackTrace);
|
||||
sensitiveEvent.OnProcessed.Set();
|
||||
@ -203,7 +203,7 @@ namespace IW4MAdmin.Application
|
||||
do
|
||||
{
|
||||
newConfig.Servers.Add((ServerConfiguration)new ServerConfiguration().Generate());
|
||||
} while (Utilities.PromptBool(Utilities.CurrentLocalization.LocalizationSet["SETUP_SERVER_SAVE"]));
|
||||
} while (Utilities.PromptBool(Utilities.CurrentLocalization.LocalizationIndex["SETUP_SERVER_SAVE"]));
|
||||
|
||||
config = newConfig;
|
||||
await ConfigHandler.Save();
|
||||
@ -244,7 +244,7 @@ namespace IW4MAdmin.Application
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_PLUGIN"]} {Plugin.Name}");
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_PLUGIN"]} {Plugin.Name}");
|
||||
Logger.WriteDebug($"Exception: {e.Message}");
|
||||
Logger.WriteDebug($"Stack Trace: {e.StackTrace}");
|
||||
}
|
||||
@ -286,7 +286,7 @@ namespace IW4MAdmin.Application
|
||||
Commands.Add(new CIP());
|
||||
Commands.Add(new CMask());
|
||||
Commands.Add(new CPruneAdmins());
|
||||
//Commands.Add(new CKillServer());
|
||||
Commands.Add(new CKillServer());
|
||||
Commands.Add(new CSetPassword());
|
||||
Commands.Add(new CPing());
|
||||
|
||||
@ -307,16 +307,16 @@ namespace IW4MAdmin.Application
|
||||
_servers.Add(ServerInstance);
|
||||
}
|
||||
|
||||
Logger.WriteVerbose($"{Utilities.CurrentLocalization.LocalizationSet["MANAGER_MONITORING_TEXT"]} {ServerInstance.Hostname}");
|
||||
Logger.WriteVerbose($"{Utilities.CurrentLocalization.LocalizationIndex["MANAGER_MONITORING_TEXT"]} {ServerInstance.Hostname}");
|
||||
// add the start event for this server
|
||||
Handler.AddEvent(new GameEvent(GameEvent.EventType.Start, "Server started", null, null, ServerInstance));
|
||||
}
|
||||
|
||||
catch (ServerException e)
|
||||
{
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_UNFIXABLE"]} [{Conf.IPAddress}:{Conf.Port}]");
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_UNFIXABLE"]} [{Conf.IPAddress}:{Conf.Port}]");
|
||||
if (e.GetType() == typeof(DvarException))
|
||||
Logger.WriteDebug($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_DVAR"]} {(e as DvarException).Data["dvar_name"]} ({Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_DVAR_HELP"]})");
|
||||
Logger.WriteDebug($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_DVAR"]} {(e as DvarException).Data["dvar_name"]} ({Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_DVAR_HELP"]})");
|
||||
else if (e.GetType() == typeof(NetworkException))
|
||||
{
|
||||
Logger.WriteDebug(e.Message);
|
||||
@ -418,7 +418,7 @@ namespace IW4MAdmin.Application
|
||||
|
||||
catch (Exception E)
|
||||
{
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_EXCEPTION"]} {newEvent.Owner}");
|
||||
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();
|
||||
@ -435,7 +435,7 @@ namespace IW4MAdmin.Application
|
||||
HeartbeatTimer.Change(0, Timeout.Infinite);
|
||||
|
||||
foreach (var S in Servers)
|
||||
S.Broadcast(Utilities.CurrentLocalization.LocalizationSet["BROADCAST_OFFLINE"]).Wait();
|
||||
S.Broadcast("^1" + Utilities.CurrentLocalization.LocalizationIndex["BROADCAST_OFFLINE"]).Wait();
|
||||
#endif
|
||||
_servers.Clear();
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace Application.RconParsers
|
||||
TempBan = "tempbanclient {0} \"{1}\""
|
||||
};
|
||||
|
||||
private static string StatusRegex = @"^( *[0-9]+) +([0-9]+) +((?:[A-Z]+|[0-9]+)) +((?:[a-z]|[0-9]){16}|bot[0-9]+) +(.{0,20}) +([0-9]+) +(\d+\.\d+\.\d+.\d+\:-*\d{1,5}|0+.0+:-*\d{1,5}) +(-*[0-9]+) +([0-9]+) *$";
|
||||
private static string StatusRegex = @"^( *[0-9]+) +-*([0-9]+) +((?:[A-Z]+|[0-9]+)) +((?:[a-z]|[0-9]){16}|bot[0-9]+) +(.{0,20}) +([0-9]+) +(\d+\.\d+\.\d+.\d+\:-*\d{1,5}|0+.0+:-*\d{1,5}) +(-*[0-9]+) +([0-9]+) *$";
|
||||
|
||||
public async Task<string[]> ExecuteCommandAsync(Connection connection, string command)
|
||||
{
|
||||
@ -118,7 +118,6 @@ namespace Application.RconParsers
|
||||
|
||||
if (P.IsBot)
|
||||
{
|
||||
P.NetworkId = -(P.ClientNumber + 1);
|
||||
P.IPAddress = P.ClientNumber + 1;
|
||||
}
|
||||
|
||||
@ -126,6 +125,11 @@ namespace Application.RconParsers
|
||||
}
|
||||
}
|
||||
|
||||
// this happens if status is requested while map is rotating
|
||||
if (Status[1] == "Rotating map...")
|
||||
{
|
||||
throw new ServerException("Server is rotating map");
|
||||
}
|
||||
|
||||
if (Status.Length > 5 && validMatches == 0)
|
||||
{
|
||||
|
@ -19,13 +19,14 @@ using Application.Misc;
|
||||
using Application.RconParsers;
|
||||
using IW4MAdmin.Application.EventParsers;
|
||||
using IW4MAdmin.Application.IO;
|
||||
using SharedLibraryCore.Localization;
|
||||
|
||||
namespace IW4MAdmin
|
||||
{
|
||||
public class IW4MServer : Server
|
||||
{
|
||||
private CancellationToken cts;
|
||||
private static Dictionary<string, string> loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
private static Index loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
private GameLogEvent LogEvent;
|
||||
|
||||
|
||||
@ -203,7 +204,7 @@ namespace IW4MAdmin
|
||||
if (!Manager.GetApplicationSettings().Configuration().EnableClientVPNs &&
|
||||
await VPNCheck.UsingVPN(player.IPAddressString, Manager.GetApplicationSettings().Configuration().IPHubAPIKey))
|
||||
{
|
||||
await player.Kick(Utilities.CurrentLocalization.LocalizationSet["SERVER_KICK_VPNS_NOTALLOWED"], new Player() { ClientId = 1 });
|
||||
await player.Kick(Utilities.CurrentLocalization.LocalizationIndex["SERVER_KICK_VPNS_NOTALLOWED"], new Player() { ClientId = 1 });
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -709,7 +710,11 @@ namespace IW4MAdmin
|
||||
&& BroadcastMessages.Count > 0
|
||||
&& ClientNum > 0)
|
||||
{
|
||||
await Broadcast(Utilities.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage]));
|
||||
string[] messages = this.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage]).Split(Environment.NewLine);
|
||||
|
||||
foreach(string message in messages)
|
||||
await Broadcast(message);
|
||||
|
||||
NextMessage = NextMessage == (BroadcastMessages.Count - 1) ? 0 : NextMessage + 1;
|
||||
start = DateTime.Now;
|
||||
}
|
||||
@ -821,7 +826,7 @@ namespace IW4MAdmin
|
||||
CustomCallback = await ScriptLoaded();
|
||||
string mainPath = EventParser.GetGameDir();
|
||||
#if DEBUG
|
||||
basepath.Value = @"\\192.168.88.253\mw2";
|
||||
basepath.Value = @"\\192.168.88.253\Call of Duty Black Ops II";
|
||||
#endif
|
||||
string logPath;
|
||||
if (GameName == Game.IW5)
|
||||
@ -1051,8 +1056,8 @@ namespace IW4MAdmin
|
||||
|
||||
override public void InitializeTokens()
|
||||
{
|
||||
Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("TOTALPLAYERS", Manager.GetClientService().GetTotalClientsAsync().Result.ToString));
|
||||
Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("VERSION", Application.Program.Version.ToString));
|
||||
Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("TOTALPLAYERS", (Server s) => Manager.GetClientService().GetTotalClientsAsync().Result.ToString()));
|
||||
Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("VERSION", (Server s) => Application.Program.Version.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ namespace IW4MAdmin.Plugins.Login.Commands
|
||||
{
|
||||
public class CLogin : Command
|
||||
{
|
||||
public CLogin() : base("login", Utilities.CurrentLocalization.LocalizationSet["PLUGINS_LOGIN_COMMANDS_LOGIN_DESC"], "li", Player.Permission.Trusted, false, new CommandArgument[]
|
||||
public CLogin() : base("login", Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_COMMANDS_LOGIN_DESC"], "li", Player.Permission.Trusted, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
@ -25,12 +25,12 @@ namespace IW4MAdmin.Plugins.Login.Commands
|
||||
if (hashedPassword[0] == client.Password)
|
||||
{
|
||||
Plugin.AuthorizedClients[E.Origin.ClientId] = true;
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_COMMANDS_LOGIN_SUCCESS"]);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_COMMANDS_LOGIN_FAIL"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
Dictionary<IW4Info.HitLocation, int> HitLocationCount;
|
||||
EFClientStatistics ClientStats;
|
||||
DateTime LastKill;
|
||||
long LastOffset;
|
||||
ILogger Log;
|
||||
Strain Strain;
|
||||
|
||||
@ -65,7 +66,6 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
return new DetectionPenaltyResult()
|
||||
{
|
||||
ClientPenalty = Penalty.PenaltyType.Any,
|
||||
RatioAmount = 0
|
||||
};
|
||||
|
||||
if (LastKill == DateTime.MinValue)
|
||||
@ -79,6 +79,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
// make sure it's divisible by 2
|
||||
if (kill.AnglesList.Count % 2 == 0)
|
||||
{
|
||||
/*
|
||||
double maxDistance = 0;
|
||||
for (int i = 0; i < kill.AnglesList.Count - 1; i += 1)
|
||||
{
|
||||
@ -92,7 +93,9 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
{
|
||||
maxDistance = currDistance;
|
||||
}
|
||||
}
|
||||
if (maxDistance > hitLoc.MaxAngleDistance)
|
||||
hitLoc.MaxAngleDistance = (float)maxDistance;
|
||||
}*/
|
||||
|
||||
double realAgainstPredict = Vector3.AbsoluteDistance(kill.ViewAngles, kill.AnglesList[10]);
|
||||
|
||||
@ -102,9 +105,6 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
double newAverage = (previousAverage * (hitLoc.HitCount - 1) + realAgainstPredict) / hitLoc.HitCount;
|
||||
hitLoc.HitOffsetAverage = (float)newAverage;
|
||||
|
||||
if (maxDistance > hitLoc.MaxAngleDistance)
|
||||
hitLoc.MaxAngleDistance = (float)maxDistance;
|
||||
|
||||
if (double.IsNaN(hitLoc.HitOffsetAverage))
|
||||
{
|
||||
Log.WriteWarning("[Detection::ProcessKill] HitOffsetAvgerage NaN");
|
||||
@ -116,30 +116,33 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
.Where(hl => new List<int>() { 4, 5, 2, 3, }.Contains((int)hl.Location))
|
||||
.Where(hl => ClientStats.SessionKills > Thresholds.MediumSampleMinKills + 30);
|
||||
|
||||
double banAverage = hitlocations.Count() > 0 ? hitlocations.Average(c =>c.HitOffsetAverage) : 0;
|
||||
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 (banAverage > Thresholds.MaxOffset)
|
||||
if (hitOffsetAverage > Thresholds.MaxOffset)
|
||||
{
|
||||
return new DetectionPenaltyResult()
|
||||
{
|
||||
ClientPenalty = Penalty.PenaltyType.Ban,
|
||||
RatioAmount = banAverage,
|
||||
RatioAmount = hitOffsetAverage,
|
||||
KillCount = ClientStats.SessionKills,
|
||||
};
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
Log.WriteDebug($"MaxDistance={maxDistance}, PredictVsReal={realAgainstPredict}");
|
||||
Log.WriteDebug($"PredictVsReal={realAgainstPredict}");
|
||||
#endif
|
||||
}
|
||||
|
||||
var currentStrain = Strain.GetStrain(kill.ViewAngles, (kill.When - LastKill).TotalMilliseconds);
|
||||
var currentStrain = Strain.GetStrain(kill.ViewAngles, kill.TimeOffset - LastOffset);
|
||||
LastOffset = kill.TimeOffset;
|
||||
|
||||
if (currentStrain > ClientStats.MaxStrain)
|
||||
{
|
||||
ClientStats.MaxStrain = currentStrain;
|
||||
}
|
||||
|
||||
if (ClientStats.MaxStrain > Thresholds.MaxStrain)
|
||||
if (Strain.TimesReachedMaxStrain >= 3)
|
||||
{
|
||||
return new DetectionPenaltyResult()
|
||||
{
|
||||
@ -148,7 +151,6 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
KillCount = ClientStats.SessionKills,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
Log.WriteDebug($"Current Strain: {currentStrain}");
|
||||
|
@ -11,6 +11,8 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
private double CurrentStrain;
|
||||
private Vector3 LastAngle;
|
||||
|
||||
public int TimesReachedMaxStrain { get; private set; }
|
||||
|
||||
public double GetStrain(Vector3 newAngle, double deltaTime)
|
||||
{
|
||||
if (LastAngle == null)
|
||||
@ -30,15 +32,12 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
}
|
||||
|
||||
double newStrain = Math.Pow(distance[0] + distance[1], 0.99) / deltaTime;
|
||||
|
||||
if (newStrain + CurrentStrain > 0.25)
|
||||
{
|
||||
Console.WriteLine($"{LastAngle}-{newAngle}-{decayFactor}-{CurrentStrain}-{newStrain}-{distance[0]}-{distance[1]}-{deltaTime}");
|
||||
}
|
||||
|
||||
CurrentStrain += newStrain;
|
||||
LastAngle = newAngle;
|
||||
|
||||
if (CurrentStrain > Thresholds.MaxStrain)
|
||||
TimesReachedMaxStrain++;
|
||||
|
||||
LastAngle = newAngle;
|
||||
return CurrentStrain;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IW4MAdmin.Plugins.Stats.Cheat
|
||||
{
|
||||
|
@ -11,7 +11,7 @@ namespace IW4MAdmin.Plugins.Stats.Commands
|
||||
{
|
||||
public class ResetStats : Command
|
||||
{
|
||||
public ResetStats() : base("resetstats", Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_RESET_DESC"], "rs", Player.Permission.User, false) { }
|
||||
public ResetStats() : base("resetstats", Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_DESC"], "rs", Player.Permission.User, false) { }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
@ -32,12 +32,12 @@ namespace IW4MAdmin.Plugins.Stats.Commands
|
||||
|
||||
// fixme: this doesn't work properly when another context exists
|
||||
await svc.SaveChangesAsync();
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_RESET_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_SUCCESS"]);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_RESET_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_FAIL"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,53 +8,70 @@ using SharedLibraryCore.Objects;
|
||||
using SharedLibraryCore.Services;
|
||||
using IW4MAdmin.Plugins.Stats.Models;
|
||||
using SharedLibraryCore.Database;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace IW4MAdmin.Plugins.Stats.Commands
|
||||
{
|
||||
class TopStats : Command
|
||||
{
|
||||
public TopStats() : base("topstats", Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_TOP_DESC"], "ts", Player.Permission.User, false) { }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
public static async Task<List<string>> GetTopStats(Server s)
|
||||
{
|
||||
var statsSvc = new GenericRepository<EFClientStatistics>();
|
||||
int serverId = E.Owner.GetHashCode();
|
||||
int serverId = s.GetHashCode();
|
||||
List<string> topStatsText = new List<string>()
|
||||
{
|
||||
$"^5--{Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_TOP_TEXT"]}--"
|
||||
};
|
||||
|
||||
using (var db = new DatabaseContext())
|
||||
{
|
||||
db.ChangeTracker.AutoDetectChangesEnabled = false;
|
||||
db.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
|
||||
|
||||
var thirtyDaysAgo = DateTime.UtcNow.AddMonths(-1);
|
||||
var topStats = await (from stats in db.Set<EFClientStatistics>()
|
||||
|
||||
var iqStats = (from stats in db.Set<EFClientStatistics>()
|
||||
join client in db.Clients
|
||||
on stats.ClientId equals client.ClientId
|
||||
join alias in db.Aliases
|
||||
on client.CurrentAliasId equals alias.AliasId
|
||||
where stats.ServerId == serverId
|
||||
where stats.TimePlayed >= 3600
|
||||
where client.Level != Player.Permission.Banned
|
||||
where client.LastConnection >= thirtyDaysAgo
|
||||
orderby stats.Skill descending
|
||||
select new
|
||||
select $"^3{client.Name}^7 - ^5{stats.KDR} ^7KDR | ^5{stats.Skill} ^7{Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_SKILL"]}")
|
||||
.Take(5);
|
||||
|
||||
topStatsText.AddRange(await iqStats.ToListAsync());
|
||||
}
|
||||
|
||||
// no one qualified
|
||||
if (topStatsText.Count == 0)
|
||||
{
|
||||
alias.Name,
|
||||
stats.KDR,
|
||||
stats.Skill
|
||||
})
|
||||
.Take(5)
|
||||
.ToListAsync();
|
||||
topStatsText = new List<string>()
|
||||
{
|
||||
Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_TEXT_NOQUALIFY"]
|
||||
};
|
||||
}
|
||||
|
||||
return topStatsText;
|
||||
}
|
||||
|
||||
public TopStats() : base("topstats", Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_TOP_DESC"], "ts", Player.Permission.User, false) { }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
var topStats = await GetTopStats(E.Owner);
|
||||
if (!E.Message.IsBroadcastCommand())
|
||||
{
|
||||
await E.Origin.Tell($"^5--{Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_TOP_TEXT"]}--");
|
||||
|
||||
foreach (var stat in topStats)
|
||||
await E.Origin.Tell($"^3{stat.Name}^7 - ^5{stat.KDR} ^7KDR | ^5{stat.Skill} ^7{Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_TEXT_SKILL"]}");
|
||||
await E.Origin.Tell(stat);
|
||||
}
|
||||
else
|
||||
{
|
||||
await E.Owner.Broadcast($"^5--{Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_TOP_TEXT"]}--");
|
||||
|
||||
foreach (var stat in topStats)
|
||||
await E.Owner.Broadcast($"^3{stat.Name}^7 - ^5{stat.KDR} ^7KDR | ^5{stat.Skill} ^7{Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_TEXT_SKILL"]}");
|
||||
}
|
||||
await E.Owner.Broadcast(stat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ namespace IW4MAdmin.Plugins.Stats.Commands
|
||||
{
|
||||
public class CViewStats : Command
|
||||
{
|
||||
public CViewStats() : base("stats", Utilities.CurrentLocalization.LocalizationSet["PLUGINS_STATS_COMMANDS_VIEW_DESC"], "xlrstats", Player.Permission.User, false, new CommandArgument[]
|
||||
public CViewStats() : base("stats", Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_VIEW_DESC"], "xlrstats", Player.Permission.User, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
@ -24,7 +24,7 @@ namespace IW4MAdmin.Plugins.Stats.Commands
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
var loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
|
||||
if (E.Target?.ClientNumber < 0)
|
||||
{
|
||||
|
@ -320,6 +320,10 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
||||
{
|
||||
async Task executePenalty(Cheat.DetectionPenaltyResult penalty)
|
||||
{
|
||||
#if DEBUG
|
||||
Log.WriteVerbose("Player Banned");
|
||||
return;
|
||||
#endif
|
||||
// prevent multiple bans from occuring
|
||||
if (attacker.Level == Player.Permission.Banned)
|
||||
{
|
||||
|
@ -170,7 +170,8 @@ namespace IW4MAdmin.Plugins.Stats
|
||||
(double)clientStats.Where(c => c.HitLocations.Count > 0)
|
||||
.Sum(c => c.HitLocations.Where(hl => hl.Location != IW4Info.HitLocation.none).Sum(f => f.HitCount)), 2);
|
||||
|
||||
hitOffsetAverage = clientStats.Sum(c => c.AverageHitOffset) / Math.Max(1, clientStats.Where(c => c.AverageHitOffset > 0).Count());
|
||||
var validOffsets = clientStats.Where(c => c.HitLocations.Count(hl => hl.HitCount > 0) > 0).SelectMany(hl => hl.HitLocations);
|
||||
hitOffsetAverage = validOffsets.Sum(o => o.HitCount * o.HitOffsetAverage) / (double)validOffsets.Sum(o => o.HitCount);
|
||||
}
|
||||
|
||||
return new List<ProfileMeta>()
|
||||
@ -248,22 +249,28 @@ namespace IW4MAdmin.Plugins.Stats
|
||||
|
||||
MetaService.AddMeta(getMessages);
|
||||
|
||||
string totalKills()
|
||||
string totalKills(Server server)
|
||||
{
|
||||
var serverStats = new GenericRepository<EFServerStatistics>();
|
||||
return serverStats.Find(s => s.Active)
|
||||
.Sum(c => c.TotalKills).ToString("#,##0");
|
||||
}
|
||||
|
||||
string totalPlayTime()
|
||||
string totalPlayTime(Server server)
|
||||
{
|
||||
var serverStats = new GenericRepository<EFServerStatistics>();
|
||||
return Math.Ceiling((serverStats.GetQuery(s => s.Active)
|
||||
.Sum(c => c.TotalPlayTime) / 3600.0)).ToString("#,##0");
|
||||
}
|
||||
|
||||
string topStats(Server s)
|
||||
{
|
||||
return String.Join(Environment.NewLine, Commands.TopStats.GetTopStats(s).Result);
|
||||
}
|
||||
|
||||
manager.GetMessageTokens().Add(new MessageToken("TOTALKILLS", totalKills));
|
||||
manager.GetMessageTokens().Add(new MessageToken("TOTALPLAYTIME", totalPlayTime));
|
||||
manager.GetMessageTokens().Add(new MessageToken("TOPSTATS", topStats));
|
||||
|
||||
ServerManager = manager;
|
||||
|
||||
|
@ -29,7 +29,7 @@ namespace SharedLibraryCore
|
||||
|
||||
public String Name { get; private set; }
|
||||
public String Description { get; private set; }
|
||||
public String Syntax => $"{Utilities.CurrentLocalization.LocalizationSet["COMMAND_HELP_SYNTAX"]} !{Alias} {String.Join(" ", Arguments.Select(a => $"<{(a.Required ? "" : Utilities.CurrentLocalization.LocalizationSet["COMMAND_HELP_OPTIONAL"] + " ")}{a.Name}>"))}";
|
||||
public String Syntax => $"{Utilities.CurrentLocalization.LocalizationIndex["COMMAND_HELP_SYNTAX"]} !{Alias} {String.Join(" ", Arguments.Select(a => $"<{(a.Required ? "" : Utilities.CurrentLocalization.LocalizationIndex["COMMAND_HELP_OPTIONAL"] + " ")}{a.Name}>"))}";
|
||||
public String Alias { get; private set; }
|
||||
public int RequiredArgumentCount => Arguments.Count(c => c.Required);
|
||||
public bool RequiresTarget { get; private set; }
|
||||
|
@ -7,6 +7,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SharedLibraryCore.Commands
|
||||
@ -14,7 +15,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CQuit : Command
|
||||
{
|
||||
public CQuit() :
|
||||
base("quit", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_QUIT_DESC"], "q", Player.Permission.Owner, false)
|
||||
base("quit", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_QUIT_DESC"], "q", Player.Permission.Owner, false)
|
||||
{ }
|
||||
|
||||
public override Task ExecuteAsync(GameEvent E)
|
||||
@ -26,7 +27,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class COwner : Command
|
||||
{
|
||||
public COwner() :
|
||||
base("owner", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_OWNER_DESC"], "iamgod", Player.Permission.User, false)
|
||||
base("owner", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_OWNER_DESC"], "iamgod", Player.Permission.User, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -34,29 +35,29 @@ namespace SharedLibraryCore.Commands
|
||||
if ((await (E.Owner.Manager.GetClientService() as ClientService).GetOwners()).Count == 0)
|
||||
{
|
||||
E.Origin.Level = Player.Permission.Owner;
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_OWNER_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_OWNER_SUCCESS"]);
|
||||
// so setpassword/login works
|
||||
E.Owner.Manager.GetPrivilegedClients().Add(E.Origin.ClientId, E.Origin);
|
||||
await E.Owner.Manager.GetClientService().Update(E.Origin);
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_OWNER_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_OWNER_FAIL"]);
|
||||
}
|
||||
}
|
||||
|
||||
public class CWarn : Command
|
||||
{
|
||||
public CWarn() :
|
||||
base("warn", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_WARN_DESC"], "w", Player.Permission.Trusted, true, new CommandArgument[]
|
||||
base("warn", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_WARN_DESC"], "w", Player.Permission.Trusted, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -65,7 +66,7 @@ namespace SharedLibraryCore.Commands
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
if (E.Origin.Level <= E.Target.Level)
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_WARN_FAIL"]} {E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_WARN_FAIL"]} {E.Target.Name}");
|
||||
else
|
||||
await E.Target.Warn(E.Data, E.Origin);
|
||||
}
|
||||
@ -74,11 +75,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CWarnClear : Command
|
||||
{
|
||||
public CWarnClear() :
|
||||
base("warnclear", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_WARNCLEAR_DESC"], "wc", Player.Permission.Trusted, true, new CommandArgument[]
|
||||
base("warnclear", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_WARNCLEAR_DESC"], "wc", Player.Permission.Trusted, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -87,7 +88,7 @@ namespace SharedLibraryCore.Commands
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
E.Target.Warnings = 0;
|
||||
String Message = $"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_WARNCLEAR_SUCCESS"]} {E.Target.Name}";
|
||||
String Message = $"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_WARNCLEAR_SUCCESS"]} {E.Target.Name}";
|
||||
await E.Owner.Broadcast(Message);
|
||||
}
|
||||
}
|
||||
@ -95,16 +96,16 @@ namespace SharedLibraryCore.Commands
|
||||
public class CKick : Command
|
||||
{
|
||||
public CKick() :
|
||||
base("kick", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_KICK_DESC"], "k", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
base("kick", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_KICK_DESC"], "k", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -116,21 +117,21 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
E.Owner.Manager.GetEventHandler().AddEvent(new GameEvent(GameEvent.EventType.Kick, E.Data, E.Origin, E.Target, E.Owner));
|
||||
await E.Target.Kick(E.Data, E.Origin);
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_KICK_SUCCESS"]}");
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_KICK_SUCCESS"]}");
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_KICK_FAIL"]} {E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_KICK_FAIL"]} {E.Target.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
public class CSay : Command
|
||||
{
|
||||
public CSay() :
|
||||
base("say", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SAY_DESC"], "s", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
base("say", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SAY_DESC"], "s", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_MESSAGE"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_MESSAGE"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -145,21 +146,21 @@ namespace SharedLibraryCore.Commands
|
||||
public class CTempBan : Command
|
||||
{
|
||||
public CTempBan() :
|
||||
base("tempban", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_TEMPBAN_DESC"], "tb", Player.Permission.Administrator, true, new CommandArgument[]
|
||||
base("tempban", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_TEMPBAN_DESC"], "tb", Player.Permission.Administrator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_DURATION"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_DURATION"],
|
||||
Required = true,
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -175,26 +176,26 @@ namespace SharedLibraryCore.Commands
|
||||
if (E.Origin.Level > E.Target.Level)
|
||||
{
|
||||
await E.Target.TempBan(Message, length, E.Origin);
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_TEMPBAN_SUCCESS"]} ^5{length.TimeSpanText()}");
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_TEMPBAN_SUCCESS"]} ^5{length.TimeSpanText()}");
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_TEMPBAN_FAIL"]} {E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_TEMPBAN_FAIL"]} {E.Target.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
public class CBan : Command
|
||||
{
|
||||
public CBan() :
|
||||
base("ban", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BAN_DESC"], "b", Player.Permission.SeniorAdmin, true, new CommandArgument[]
|
||||
base("ban", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BAN_DESC"], "b", Player.Permission.SeniorAdmin, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -205,26 +206,26 @@ namespace SharedLibraryCore.Commands
|
||||
if (E.Origin.Level > E.Target.Level)
|
||||
{
|
||||
await E.Target.Ban(E.Data, E.Origin);
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BAN_SUCCESS"]}");
|
||||
await E.Origin.Tell($"^5{E.Target} ^7{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BAN_SUCCESS"]}");
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BAN_FAIL"]} {E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BAN_FAIL"]} {E.Target.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
public class CUnban : Command
|
||||
{
|
||||
public CUnban() :
|
||||
base("unban", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_UNBAN_DESC"], "ub", Player.Permission.SeniorAdmin, true, new CommandArgument[]
|
||||
base("unban", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNBAN_DESC"], "ub", Player.Permission.SeniorAdmin, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_CLIENTID"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_CLIENTID"],
|
||||
Required = true,
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -236,11 +237,11 @@ namespace SharedLibraryCore.Commands
|
||||
if (penalties.Where(p => p.Type == Penalty.PenaltyType.Ban || p.Type == Penalty.PenaltyType.TempBan).FirstOrDefault() != null)
|
||||
{
|
||||
await E.Owner.Unban(E.Data, E.Target, E.Origin);
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_UNBAN_SUCCESS"]} {E.Target}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNBAN_SUCCESS"]} {E.Target}");
|
||||
}
|
||||
else
|
||||
{
|
||||
await E.Origin.Tell($"{E.Target} {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_UNBAN_FAIL"]}");
|
||||
await E.Origin.Tell($"{E.Target} {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UNBAN_FAIL"]}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -248,7 +249,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CWhoAmI : Command
|
||||
{
|
||||
public CWhoAmI() :
|
||||
base("whoami", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_WHO_DESC"], "who", Player.Permission.User, false)
|
||||
base("whoami", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_WHO_DESC"], "who", Player.Permission.User, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -261,7 +262,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CList : Command
|
||||
{
|
||||
public CList() :
|
||||
base("list", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_LIST_DESC"], "l", Player.Permission.Moderator, false)
|
||||
base("list", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_LIST_DESC"], "l", Player.Permission.Moderator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -296,11 +297,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CHelp : Command
|
||||
{
|
||||
public CHelp() :
|
||||
base("help", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_HELP_DESC"], "h", Player.Permission.User, false, new CommandArgument[]
|
||||
base("help", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_HELP_DESC"], "h", Player.Permission.User, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_COMMANDS"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_COMMANDS"],
|
||||
Required = false
|
||||
}
|
||||
})
|
||||
@ -325,7 +326,7 @@ namespace SharedLibraryCore.Commands
|
||||
}
|
||||
|
||||
if (!found)
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_HELP_NOTFOUND"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_HELP_NOTFOUND"]);
|
||||
}
|
||||
|
||||
else
|
||||
@ -352,7 +353,7 @@ namespace SharedLibraryCore.Commands
|
||||
}
|
||||
}
|
||||
await E.Origin.Tell(helpResponse.ToString());
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_HELP_MOREINFO"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_HELP_MOREINFO"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -360,7 +361,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CFastRestart : Command
|
||||
{
|
||||
public CFastRestart() :
|
||||
base("fastrestart", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FASTRESTART_DESC"], "fr", Player.Permission.Moderator, false)
|
||||
base("fastrestart", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FASTRESTART_DESC"], "fr", Player.Permission.Moderator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -368,24 +369,24 @@ namespace SharedLibraryCore.Commands
|
||||
await E.Owner.ExecuteCommandAsync("fast_restart");
|
||||
|
||||
if (!E.Origin.Masked)
|
||||
await E.Owner.Broadcast($"^5{E.Origin.Name} ^7{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FASTRESTART_UNMASKED"]}");
|
||||
await E.Owner.Broadcast($"^5{E.Origin.Name} ^7{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FASTRESTART_UNMASKED"]}");
|
||||
else
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FASTRESTART_MASKED"]);
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FASTRESTART_MASKED"]);
|
||||
}
|
||||
}
|
||||
|
||||
public class CMapRotate : Command
|
||||
{
|
||||
public CMapRotate() :
|
||||
base("maprotate", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAPROTATE_DESC"], "mr", Player.Permission.Administrator, false)
|
||||
base("maprotate", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAPROTATE_DESC"], "mr", Player.Permission.Administrator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
if (!E.Origin.Masked)
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAPROTATE"]} [^5{E.Origin.Name}^7]");
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAPROTATE"]} [^5{E.Origin.Name}^7]");
|
||||
else
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAPROTATE"]);
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAPROTATE"]);
|
||||
Task.Delay(5000).Wait();
|
||||
await E.Owner.ExecuteCommandAsync("map_rotate");
|
||||
}
|
||||
@ -394,16 +395,16 @@ namespace SharedLibraryCore.Commands
|
||||
public class CSetLevel : Command
|
||||
{
|
||||
public CSetLevel() :
|
||||
base("setlevel", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_DESC"], "sl", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
base("setlevel", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_DESC"], "sl", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_LEVEL"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_LEVEL"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -413,7 +414,7 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (E.Target == E.Origin)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_SELF"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_SELF"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -422,14 +423,14 @@ namespace SharedLibraryCore.Commands
|
||||
if (newPerm == Player.Permission.Owner &&
|
||||
!E.Owner.Manager.GetApplicationSettings().Configuration().EnableMultipleOwners)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_OWNER"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_OWNER"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (E.Origin.Level < Player.Permission.Owner &&
|
||||
!E.Owner.Manager.GetApplicationSettings().Configuration().EnableSteppedHierarchy)
|
||||
{
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_STEPPEDDISABLED"]} ^5{E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_STEPPEDDISABLED"]} ^5{E.Target.Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -437,7 +438,7 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (E.Origin.Level < Player.Permission.Owner)
|
||||
{
|
||||
await E.Origin.Tell(string.Format(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_LEVELTOOHIGH"], E.Target.Name, (E.Origin.Level - 1).ToString()));
|
||||
await E.Origin.Tell(string.Format(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_LEVELTOOHIGH"], E.Target.Name, (E.Origin.Level - 1).ToString()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -450,7 +451,7 @@ namespace SharedLibraryCore.Commands
|
||||
if (ActiveClient != null)
|
||||
{
|
||||
ActiveClient.Level = newPerm;
|
||||
await ActiveClient.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_SUCCESS_TARGET"]} {newPerm}");
|
||||
await ActiveClient.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_SUCCESS_TARGET"]} {newPerm}");
|
||||
}
|
||||
|
||||
else
|
||||
@ -470,36 +471,36 @@ namespace SharedLibraryCore.Commands
|
||||
E.Owner.Manager.GetPrivilegedClients()[E.Target.ClientId] = E.Target;
|
||||
}
|
||||
|
||||
await E.Origin.Tell($"{E.Target.Name} {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_SUCCESS"]}");
|
||||
await E.Origin.Tell($"{E.Target.Name} {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_SUCCESS"]}");
|
||||
}
|
||||
|
||||
else
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETLEVEL_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_FAIL"]);
|
||||
}
|
||||
}
|
||||
|
||||
public class CUsage : Command
|
||||
{
|
||||
public CUsage() :
|
||||
base("usage", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_USAGE_DESC"], "us", Player.Permission.Moderator, false)
|
||||
base("usage", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_USAGE_DESC"], "us", Player.Permission.Moderator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
await E.Origin.Tell($"IW4MAdmin {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_USAGE_TEXT"]}" + Math.Round(((System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64 / 2048f) / 1200f), 1) + "MB");
|
||||
await E.Origin.Tell($"IW4MAdmin {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_USAGE_TEXT"]}" + Math.Round(((System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64 / 2048f) / 1200f), 1) + "MB");
|
||||
}
|
||||
}
|
||||
|
||||
public class CUptime : Command
|
||||
{
|
||||
public CUptime() :
|
||||
base("uptime", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_UPTIME_DESC"], "up", Player.Permission.Moderator, false)
|
||||
base("uptime", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_UPTIME_DESC"], "up", Player.Permission.Moderator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
TimeSpan uptime = DateTime.Now - System.Diagnostics.Process.GetCurrentProcess().StartTime;
|
||||
var loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
await E.Origin.Tell($"IW4M Admin {loc["COMMANDS_UPTIME_TEXT"]} {uptime.Days} {loc["GLOBAL_DAYS"]}, {uptime.Hours} {loc["GLOBAL_HOURS"]}, {uptime.Minutes} {loc["GLOBAL_MINUTES"]}");
|
||||
}
|
||||
}
|
||||
@ -507,7 +508,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CListAdmins : Command
|
||||
{
|
||||
public CListAdmins() :
|
||||
base("admins", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ADMINS_DESC"], "a", Player.Permission.User, false)
|
||||
base("admins", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ADMINS_DESC"], "a", Player.Permission.User, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -527,18 +528,18 @@ namespace SharedLibraryCore.Commands
|
||||
}
|
||||
|
||||
if (numOnline == 0)
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ADMINS_NONE"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ADMINS_NONE"]);
|
||||
}
|
||||
}
|
||||
|
||||
public class CLoadMap : Command
|
||||
{
|
||||
public CLoadMap() :
|
||||
base("map", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAP_DESC"], "m", Player.Permission.Administrator, false, new CommandArgument[]
|
||||
base("map", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAP_DESC"], "m", Player.Permission.Administrator, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_MAP"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_MAP"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -551,14 +552,14 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (m.Name.ToLower() == newMap || m.Alias.ToLower() == newMap)
|
||||
{
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAP_SUCCESS"]} ^5{m.Alias}");
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAP_SUCCESS"]} ^5{m.Alias}");
|
||||
Task.Delay(5000).Wait();
|
||||
await E.Owner.LoadMap(m.Name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MAP_UKN"]} ^5{newMap}");
|
||||
await E.Owner.Broadcast($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MAP_UKN"]} ^5{newMap}");
|
||||
Task.Delay(5000).Wait();
|
||||
await E.Owner.LoadMap(newMap);
|
||||
}
|
||||
@ -567,11 +568,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CFindPlayer : Command
|
||||
{
|
||||
public CFindPlayer() :
|
||||
base("find", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FIND_DESC"], "f", Player.Permission.Administrator, false, new CommandArgument[]
|
||||
base("find", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FIND_DESC"], "f", Player.Permission.Administrator, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -581,7 +582,7 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (E.Data.Length < 3)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FIND_MIN"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FIND_MIN"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -592,7 +593,7 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
if (db_players.Count == 0)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FIND_EMPTY"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FIND_EMPTY"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -610,7 +611,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CListRules : Command
|
||||
{
|
||||
public CListRules() :
|
||||
base("rules", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_RULES_DESC"], "r", Player.Permission.User, false)
|
||||
base("rules", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_RULES_DESC"], "r", Player.Permission.User, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -619,9 +620,9 @@ namespace SharedLibraryCore.Commands
|
||||
E.Owner.ServerConfig.Rules?.Count < 1)
|
||||
{
|
||||
if (E.Message.IsBroadcastCommand())
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_RULES_NONE"]);
|
||||
await E.Owner.Broadcast(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_RULES_NONE"]);
|
||||
else
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_RULES_NONE"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_RULES_NONE"]);
|
||||
}
|
||||
|
||||
else
|
||||
@ -645,16 +646,16 @@ namespace SharedLibraryCore.Commands
|
||||
public class CPrivateMessage : Command
|
||||
{
|
||||
public CPrivateMessage() :
|
||||
base("privatemessage", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PM_DESC"], "pm", Player.Permission.User, true, new CommandArgument[]
|
||||
base("privatemessage", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PM_DESC"], "pm", Player.Permission.User, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_MESSAGE"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_MESSAGE"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -670,16 +671,16 @@ namespace SharedLibraryCore.Commands
|
||||
public class CFlag : Command
|
||||
{
|
||||
public CFlag() :
|
||||
base("flag", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FLAG_DESC"], "fp", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
base("flag", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_DESC"], "fp", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -690,7 +691,7 @@ namespace SharedLibraryCore.Commands
|
||||
// todo: move unflag to seperate command
|
||||
if (E.Target.Level >= E.Origin.Level)
|
||||
{
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FLAG_FAIL"]} ^5{E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_FAIL"]} ^5{E.Target.Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -698,7 +699,7 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
E.Target.Level = Player.Permission.User;
|
||||
await E.Owner.Manager.GetClientService().Update(E.Target);
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FLAG_UNFLAG"]} ^5{E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_UNFLAG"]} ^5{E.Target.Name}");
|
||||
}
|
||||
|
||||
else
|
||||
@ -719,7 +720,7 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
await E.Owner.Manager.GetPenaltyService().Create(newPenalty);
|
||||
E.Owner.Manager.GetEventHandler().AddEvent(new GameEvent(GameEvent.EventType.Flag, E.Data, E.Origin, E.Target, E.Owner));
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_FLAG_SUCCESS"]} ^5{E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_FLAG_SUCCESS"]} ^5{E.Target.Name}");
|
||||
}
|
||||
|
||||
}
|
||||
@ -728,16 +729,16 @@ namespace SharedLibraryCore.Commands
|
||||
public class CReport : Command
|
||||
{
|
||||
public CReport() :
|
||||
base("report", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_DESC"], "rep", Player.Permission.User, true, new CommandArgument[]
|
||||
base("report", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_DESC"], "rep", Player.Permission.User, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_REASON"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_REASON"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -747,31 +748,31 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (E.Data.ToLower().Contains("camp"))
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_FAIL_CAMP"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_FAIL_CAMP"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (E.Owner.Reports.Find(x => (x.Origin == E.Origin && x.Target.NetworkId == E.Target.NetworkId)) != null)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_FAIL_DUPLICATE"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_FAIL_DUPLICATE"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (E.Target == E.Origin)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_FAIL_SELF"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_FAIL_SELF"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (E.Target.Level > E.Origin.Level)
|
||||
{
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_FAIL"]} {E.Target.Name}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_FAIL"]} {E.Target.Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data));
|
||||
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORT_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_SUCCESS"]);
|
||||
E.Owner.Manager.GetEventHandler().AddEvent(new GameEvent(GameEvent.EventType.Report, E.Data, E.Origin, E.Target, E.Owner));
|
||||
await E.Owner.ToAdmins(String.Format("^5{0}^7->^1{1}^7: {2}", E.Origin.Name, E.Target.Name, E.Data));
|
||||
}
|
||||
@ -780,11 +781,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CListReports : Command
|
||||
{
|
||||
public CListReports() :
|
||||
base("reports", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORTS_DESC"], "reps", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
base("reports", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORTS_DESC"], "reps", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_CLEAR"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_CLEAR"],
|
||||
Required = false
|
||||
}
|
||||
})
|
||||
@ -792,16 +793,16 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
if (E.Data != null && E.Data.ToLower().Contains(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_CLEAR"]))
|
||||
if (E.Data != null && E.Data.ToLower().Contains(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_CLEAR"]))
|
||||
{
|
||||
E.Owner.Reports = new List<Report>();
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORTS_CLEAR_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORTS_CLEAR_SUCCESS"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (E.Owner.Reports.Count < 1)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_REPORTS_NONE"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORTS_NONE"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -813,7 +814,7 @@ namespace SharedLibraryCore.Commands
|
||||
public class CMask : Command
|
||||
{
|
||||
public CMask() :
|
||||
base("mask", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MASK_DESC"], "hide", Player.Permission.Moderator, false)
|
||||
base("mask", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MASK_DESC"], "hide", Player.Permission.Moderator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
@ -821,12 +822,12 @@ namespace SharedLibraryCore.Commands
|
||||
if (E.Origin.Masked)
|
||||
{
|
||||
E.Origin.Masked = false;
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MASK_OFF"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MASK_OFF"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
E.Origin.Masked = true;
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_MASK_ON"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_MASK_ON"]);
|
||||
}
|
||||
|
||||
await E.Owner.Manager.GetClientService().Update(E.Origin);
|
||||
@ -836,11 +837,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CListBanInfo : Command
|
||||
{
|
||||
public CListBanInfo() :
|
||||
base("baninfo", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BANINFO_DESC"], "bi", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
base("baninfo", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BANINFO_DESC"], "bi", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -854,12 +855,12 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
if (penalty == null)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BANINFO_NONE"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BANINFO_NONE"]);
|
||||
return;
|
||||
}
|
||||
|
||||
string timeRemaining = penalty.Type == Penalty.PenaltyType.TempBan ? $"({(penalty.Expires - DateTime.UtcNow).TimeSpanText()} remaining)" : "";
|
||||
string success = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_BANINO_SUCCESS"];
|
||||
string success = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_BANINO_SUCCESS"];
|
||||
|
||||
await E.Origin.Tell($"^1{E.Target.Name} ^7{string.Format(success, penalty.Punisher.Name)} {penalty.Punisher.Name} {timeRemaining}");
|
||||
}
|
||||
@ -869,11 +870,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CListAlias : Command
|
||||
{
|
||||
public CListAlias() :
|
||||
base("alias", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ALIAS_DESC"], "known", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
base("alias", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ALIAS_DESC"], "known", Player.Permission.Moderator, true, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true,
|
||||
}
|
||||
})
|
||||
@ -887,12 +888,12 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
await E.Target.Tell($"[^3{E.Target}^7]");
|
||||
|
||||
message.Append($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ALIAS_ALIASES"]}: ");
|
||||
message.Append($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ALIAS_ALIASES"]}: ");
|
||||
message.Append(String.Join(" | ", names));
|
||||
await E.Origin.Tell(message.ToString());
|
||||
|
||||
message.Clear();
|
||||
message.Append($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ALIAS_IPS"]}: ");
|
||||
message.Append($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ALIAS_IPS"]}: ");
|
||||
message.Append(String.Join(" | ", IPs));
|
||||
await E.Origin.Tell(message.ToString());
|
||||
}
|
||||
@ -901,11 +902,11 @@ namespace SharedLibraryCore.Commands
|
||||
public class CExecuteRCON : Command
|
||||
{
|
||||
public CExecuteRCON() :
|
||||
base("rcon", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_RCON_DESC"], "rcon", Player.Permission.Owner, false, new CommandArgument[]
|
||||
base("rcon", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_RCON_DESC"], "rcon", Player.Permission.Owner, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_COMMANDS"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_COMMANDS"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -917,19 +918,19 @@ namespace SharedLibraryCore.Commands
|
||||
foreach (string S in Response)
|
||||
await E.Origin.Tell(S.StripColors());
|
||||
if (Response.Length == 0)
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_RCON_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_RCON_SUCCESS"]);
|
||||
}
|
||||
}
|
||||
|
||||
public class CPlugins : Command
|
||||
{
|
||||
public CPlugins() :
|
||||
base("plugins", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PLUGINS_DESC"], "p", Player.Permission.Administrator, false)
|
||||
base("plugins", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PLUGINS_DESC"], "p", Player.Permission.Administrator, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PLUGINS_LOADED"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PLUGINS_LOADED"]);
|
||||
foreach (var P in Plugins.PluginImporter.ActivePlugins)
|
||||
{
|
||||
await E.Origin.Tell(String.Format("^3{0} ^7[v^3{1}^7] by ^5{2}^7", P.Name, P.Version, P.Author));
|
||||
@ -940,22 +941,22 @@ namespace SharedLibraryCore.Commands
|
||||
public class CIP : Command
|
||||
{
|
||||
public CIP() :
|
||||
base("getexternalip", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_IP_DESC"], "ip", Player.Permission.User, false)
|
||||
base("getexternalip", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_IP_DESC"], "ip", Player.Permission.User, false)
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_IP_SUCCESS"]} ^5{E.Origin.IPAddressString}");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_IP_SUCCESS"]} ^5{E.Origin.IPAddressString}");
|
||||
}
|
||||
}
|
||||
|
||||
public class CPruneAdmins : Command
|
||||
{
|
||||
public CPruneAdmins() : base("prune", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PRUNE_DESC"], "pa", Player.Permission.Owner, false, new CommandArgument[]
|
||||
public CPruneAdmins() : base("prune", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PRUNE_DESC"], "pa", Player.Permission.Owner, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_INACTIVE"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_INACTIVE"],
|
||||
Required = false
|
||||
}
|
||||
})
|
||||
@ -977,7 +978,7 @@ namespace SharedLibraryCore.Commands
|
||||
|
||||
catch (FormatException)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PRUNE_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PRUNE_FAIL"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -994,18 +995,18 @@ namespace SharedLibraryCore.Commands
|
||||
inactiveUsers.ForEach(c => c.Level = Player.Permission.User);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
await E.Origin.Tell($"^5{inactiveUsers.Count} ^7{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PRUNE_SUCCESS"]}");
|
||||
await E.Origin.Tell($"^5{inactiveUsers.Count} ^7{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PRUNE_SUCCESS"]}");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class CSetPassword : Command
|
||||
{
|
||||
public CSetPassword() : base("setpassword", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_SETPASSWORD_DESC"], "sp", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
public CSetPassword() : base("setpassword", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETPASSWORD_DESC"], "sp", Player.Permission.Moderator, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PASSWORD"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PASSWORD"],
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
@ -1015,7 +1016,7 @@ namespace SharedLibraryCore.Commands
|
||||
{
|
||||
if (E.Data.Length < 5)
|
||||
{
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PASSWORD_FAIL"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PASSWORD_FAIL"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1029,11 +1030,10 @@ namespace SharedLibraryCore.Commands
|
||||
E.Owner.Manager.GetPrivilegedClients()[E.Origin.ClientId].PasswordSalt = hashedPassword[1];
|
||||
|
||||
await E.Owner.Manager.GetClientService().Update(E.Origin);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PASSWORD_SUCCESS"]);
|
||||
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PASSWORD_SUCCESS"]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
public class CKillServer : Command
|
||||
{
|
||||
public CKillServer() : base("killserver", "kill the game server", "kill", Player.Permission.Administrator, false)
|
||||
@ -1043,7 +1043,21 @@ namespace SharedLibraryCore.Commands
|
||||
public override async Task ExecuteAsync(GameEvent E)
|
||||
{
|
||||
var gameserverProcesses = System.Diagnostics.Process.GetProcessesByName("iw4x");
|
||||
var currentProcess = gameserverProcesses.FirstOrDefault(g => g.MainWindowTitle.Contains(E.Owner.Hostname));
|
||||
|
||||
System.Diagnostics.Process currentProcess = null;
|
||||
|
||||
foreach (var p in gameserverProcesses)
|
||||
{
|
||||
string cmdLine = Utilities.GetCommandLine(p.Id);
|
||||
|
||||
var regex = Regex.Match(cmdLine, @".*((?:\+set|\+) net_port) +([0-9]+).*");
|
||||
|
||||
if (regex.Success && Int32.Parse(regex.Groups[2].Value) == E.Owner.GetPort())
|
||||
{
|
||||
currentProcess = p;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (currentProcess == null)
|
||||
{
|
||||
@ -1063,7 +1077,7 @@ namespace SharedLibraryCore.Commands
|
||||
}
|
||||
}
|
||||
|
||||
catch (NetworkException)
|
||||
catch (Exceptions.NetworkException)
|
||||
{
|
||||
await E.Origin.Tell("Unable to cleanly shutdown server, forcing");
|
||||
}
|
||||
@ -1085,16 +1099,16 @@ namespace SharedLibraryCore.Commands
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
public class CPing : Command
|
||||
{
|
||||
public CPing() : base("ping", Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PING_DESC"], "pi", Player.Permission.User, false, new CommandArgument[]
|
||||
public CPing() : base("ping", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PING_DESC"], "pi", Player.Permission.User, false, new CommandArgument[]
|
||||
{
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = Utilities.CurrentLocalization.LocalizationSet["COMMANDS_ARGS_PLAYER"],
|
||||
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_PLAYER"],
|
||||
Required = false
|
||||
}
|
||||
})
|
||||
@ -1105,16 +1119,16 @@ namespace SharedLibraryCore.Commands
|
||||
if (E.Message.IsBroadcastCommand())
|
||||
{
|
||||
if (E.Target == null)
|
||||
await E.Owner.Broadcast($"{E.Origin.Name}'s {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PING_TARGET"]} ^5{E.Origin.Ping}^7ms");
|
||||
await E.Owner.Broadcast($"{E.Origin.Name}'s {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PING_TARGET"]} ^5{E.Origin.Ping}^7ms");
|
||||
else
|
||||
await E.Owner.Broadcast($"{E.Target.Name}'s {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PING_TARGET"]} ^5{E.Target.Ping}^7ms");
|
||||
await E.Owner.Broadcast($"{E.Target.Name}'s {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PING_TARGET"]} ^5{E.Target.Ping}^7ms");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (E.Target == null)
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PING_SELF"]} ^5{E.Origin.Ping}^7ms");
|
||||
await E.Origin.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PING_SELF"]} ^5{E.Origin.Ping}^7ms");
|
||||
else
|
||||
await E.Origin.Tell($"{E.Target.Name}'s {Utilities.CurrentLocalization.LocalizationSet["COMMANDS_PING_TARGET"]} ^5{E.Target.Ping}^7ms");
|
||||
await E.Origin.Tell($"{E.Target.Name}'s {Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_PING_TARGET"]} ^5{E.Target.Ping}^7ms");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ namespace SharedLibraryCore.Configuration
|
||||
|
||||
public IBaseConfiguration Generate()
|
||||
{
|
||||
var loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
Id = Guid.NewGuid().ToString();
|
||||
|
||||
EnableWebFront = Utilities.PromptBool(loc["SETUP_ENABLE_WEBFRONT"]);
|
||||
|
@ -17,7 +17,7 @@ namespace SharedLibraryCore.Configuration
|
||||
|
||||
public IBaseConfiguration Generate()
|
||||
{
|
||||
var loc = Utilities.CurrentLocalization.LocalizationSet;
|
||||
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||
|
||||
while (string.IsNullOrEmpty(IPAddress))
|
||||
{
|
||||
|
@ -5,16 +5,16 @@ namespace SharedLibraryCore.Helpers
|
||||
public class MessageToken
|
||||
{
|
||||
public string Name { get; private set; }
|
||||
Func<string> Value;
|
||||
public MessageToken(string Name, Func<string> Value)
|
||||
Func<Server, string> Value;
|
||||
public MessageToken(string Name, Func<Server, string> Value)
|
||||
{
|
||||
this.Name = Name;
|
||||
this.Value = Value;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
public string Process(Server server)
|
||||
{
|
||||
return Value().ToString();
|
||||
return this.Value(server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
@ -7,6 +8,30 @@ namespace SharedLibraryCore.Localization
|
||||
public class Layout
|
||||
{
|
||||
public string LocalizationName { get; set; }
|
||||
public Dictionary<string, string> LocalizationSet { get; set; }
|
||||
public Index LocalizationIndex { get; set; }
|
||||
|
||||
public Layout(Dictionary<string, string> set)
|
||||
{
|
||||
LocalizationIndex = new Index()
|
||||
{
|
||||
Set = set
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class Index
|
||||
{
|
||||
public Dictionary<string, string> Set { get; set; }
|
||||
|
||||
public string this[string key]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Set.TryGetValue(key, out string value))
|
||||
throw new Exception($"Invalid locale key {key}");
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ namespace SharedLibraryCore.Plugins
|
||||
|
||||
if (dllFileNames.Length == 0)
|
||||
{
|
||||
Manager.GetLogger().WriteDebug(Utilities.CurrentLocalization.LocalizationSet["PLUGIN_IMPORTER_NOTFOUND"]);
|
||||
Manager.GetLogger().WriteDebug(Utilities.CurrentLocalization.LocalizationIndex["PLUGIN_IMPORTER_NOTFOUND"]);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ namespace SharedLibraryCore.Plugins
|
||||
Object commandObject = Activator.CreateInstance(assemblyType);
|
||||
Command newCommand = (Command)commandObject;
|
||||
ActiveCommands.Add(newCommand);
|
||||
Manager.GetLogger().WriteDebug($"{Utilities.CurrentLocalization.LocalizationSet["PLUGIN_IMPORTER_REGISTERCMD"]} \"{newCommand.Name}\"");
|
||||
Manager.GetLogger().WriteDebug($"{Utilities.CurrentLocalization.LocalizationIndex["PLUGIN_IMPORTER_REGISTERCMD"]} \"{newCommand.Name}\"");
|
||||
LoadedCommands++;
|
||||
continue;
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ namespace SharedLibraryCore.RCon
|
||||
if (!connectionState.Buffer.Take(4).ToArray().SequenceEqual(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }))
|
||||
throw new NetworkException("Unexpected packet received");
|
||||
|
||||
if (serverConnection.Available > 0)
|
||||
if (FailedReceives == 0 && serverConnection.Available > 0)
|
||||
{
|
||||
serverConnection.BeginReceive(connectionState.Buffer, 0, connectionState.Buffer.Length, 0,
|
||||
new AsyncCallback(OnReceivedCallback), connectionState);
|
||||
@ -276,7 +276,7 @@ namespace SharedLibraryCore.RCon
|
||||
|
||||
if (FailedReceives >= 4)
|
||||
{
|
||||
throw new NetworkException($"Could not receive data from {socketConnection.RemoteEndPoint}");
|
||||
throw new NetworkException($"{Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_COMMUNICATION"]} {socketConnection.RemoteEndPoint}");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,7 +137,6 @@ namespace SharedLibraryCore
|
||||
};
|
||||
|
||||
Manager.GetEventHandler().AddEvent(e);
|
||||
await this.ExecuteCommandAsync(formattedMessage);
|
||||
#else
|
||||
Logger.WriteVerbose(Message.StripColors());
|
||||
await Task.CompletedTask;
|
||||
|
@ -10,6 +10,7 @@ using System.Reflection;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using System.Globalization;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace SharedLibraryCore
|
||||
{
|
||||
@ -101,7 +102,7 @@ namespace SharedLibraryCore
|
||||
}
|
||||
}
|
||||
|
||||
public static String ProcessMessageToken(IList<Helpers.MessageToken> tokens, String str)
|
||||
public static String ProcessMessageToken(this Server server, IList<Helpers.MessageToken> tokens, String str)
|
||||
{
|
||||
MatchCollection RegexMatches = Regex.Matches(str, @"\{\{[A-Z]+\}\}", RegexOptions.IgnoreCase);
|
||||
foreach (Match M in RegexMatches)
|
||||
@ -112,7 +113,7 @@ namespace SharedLibraryCore
|
||||
var found = tokens.FirstOrDefault(t => t.Name.ToLower() == Identifier.ToLower());
|
||||
|
||||
if (found != null)
|
||||
str = str.Replace(Match, found.ToString());
|
||||
str = str.Replace(Match, found.Process(server));
|
||||
}
|
||||
|
||||
return str;
|
||||
@ -185,7 +186,7 @@ namespace SharedLibraryCore
|
||||
return id;
|
||||
var bot = Regex.Match(str, @"bot[0-9]+").Value;
|
||||
if (!string.IsNullOrEmpty(bot))
|
||||
return -Convert.ToInt64(bot.Substring(3));
|
||||
return -Convert.ToInt64(bot.Substring(3)) + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -378,6 +379,30 @@ namespace SharedLibraryCore
|
||||
return dict;
|
||||
}
|
||||
|
||||
/* https://loune.net/2017/06/running-shell-bash-commands-in-net-core/ */
|
||||
public static string GetCommandLine(int pId)
|
||||
{
|
||||
var cmdProcess = new Process()
|
||||
{
|
||||
StartInfo = new ProcessStartInfo()
|
||||
{
|
||||
FileName = "cmd.exe",
|
||||
Arguments = $"/c wmic process where processid={pId} get CommandLine",
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
}
|
||||
};
|
||||
|
||||
cmdProcess.Start();
|
||||
cmdProcess.WaitForExit();
|
||||
|
||||
string[] cmdLine = cmdProcess.StandardOutput.ReadToEnd().Split("\r\n", StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
return cmdLine.Length > 1 ? cmdLine[1] : cmdLine[0];
|
||||
}
|
||||
|
||||
|
||||
public static Task<Dvar<T>> GetDvarAsync<T>(this Server server, string dvarName) => server.RconParser.GetDvarAsync<T>(server.RemoteConnection, dvarName);
|
||||
|
||||
public static Task SetDvarAsync(this Server server, string dvarName, object dvarValue) => server.RconParser.SetDvarAsync(server.RemoteConnection, dvarName, dvarValue);
|
||||
|
@ -14,15 +14,14 @@ namespace WebfrontCore.Controllers
|
||||
{
|
||||
var info = new ActionInfo()
|
||||
{
|
||||
ActionButtonLabel = "Ban",
|
||||
ActionButtonLabel = Localization["WEBFRONT_ACTION_BAN_NAME"],
|
||||
Name = "Ban",
|
||||
Inputs = new List<InputInfo>()
|
||||
{
|
||||
new InputInfo()
|
||||
{
|
||||
Name = "Reason",
|
||||
Label = "Reason",
|
||||
Placeholder = ""
|
||||
Label = Localization["WEBFRONT_ACTION_LABEL_REASON"],
|
||||
}
|
||||
},
|
||||
Action = "BanAsync"
|
||||
@ -46,15 +45,14 @@ namespace WebfrontCore.Controllers
|
||||
{
|
||||
var info = new ActionInfo()
|
||||
{
|
||||
ActionButtonLabel = "Unban",
|
||||
ActionButtonLabel = Localization["WEBFRONT_ACTION_UNBAN_NAME"],
|
||||
Name = "Unban",
|
||||
Inputs = new List<InputInfo>()
|
||||
{
|
||||
new InputInfo()
|
||||
{
|
||||
Name = "Reason",
|
||||
Label = "Reason",
|
||||
Placeholder = ""
|
||||
Label = Localization["WEBFRONT_ACTION_LABEL_REASON"],
|
||||
}
|
||||
},
|
||||
Action = "UnbanAsync"
|
||||
@ -78,7 +76,7 @@ namespace WebfrontCore.Controllers
|
||||
{
|
||||
var login = new ActionInfo()
|
||||
{
|
||||
ActionButtonLabel = "Login",
|
||||
ActionButtonLabel = Localization["WEBFRONT_ACTION_LOGIN_NAME"],
|
||||
Name = "Login",
|
||||
Inputs = new List<InputInfo>()
|
||||
{
|
||||
|
@ -17,6 +17,7 @@ namespace WebfrontCore.Controllers
|
||||
protected IManager Manager;
|
||||
protected readonly DatabaseContext Context;
|
||||
protected bool Authorized { get; private set; }
|
||||
protected SharedLibraryCore.Localization.Index Localization { get; private set; }
|
||||
protected EFClient Client { get; private set; }
|
||||
private static byte[] LocalHost = { 127, 0, 0, 1 };
|
||||
private static string DiscordLink;
|
||||
|
Loading…
Reference in New Issue
Block a user