fixed base controller Manager being null
fixed log reading duplicates with new event processing added portuguese translation
This commit is contained in:
parent
99390f1f35
commit
b6c979beba
@ -56,12 +56,15 @@
|
||||
<None Update="DefaultSettings.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.en-US.json">
|
||||
<None Update="Localization\IW4MAdmin.en-EN.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.es-ES.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.pt-PT.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Localization\IW4MAdmin.ru-RU.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
@ -17,7 +17,6 @@ namespace IW4MAdmin.Application.IO
|
||||
GameLogReader Reader;
|
||||
Timer RefreshInfoTimer;
|
||||
string GameLogFile;
|
||||
FileInfo Info;
|
||||
|
||||
public GameLogEvent(Server server, string gameLogPath, string gameLogName)
|
||||
{
|
||||
@ -26,13 +25,11 @@ namespace IW4MAdmin.Application.IO
|
||||
Server = server;
|
||||
RefreshInfoTimer = new Timer((sender) =>
|
||||
{
|
||||
var newInfo = new FileInfo(GameLogFile);
|
||||
if (newInfo.Length - Info?.Length > 0)
|
||||
LogPathWatcher_Changed(this, new FileSystemEventArgs(WatcherChangeTypes.Changed, "", ""));
|
||||
Info = newInfo;
|
||||
long newLength = new FileInfo(GameLogFile).Length;
|
||||
UpdateLogEvents(newLength);
|
||||
|
||||
}, null, 0, 100);
|
||||
LogPathWatcher = new FileSystemWatcher()
|
||||
/*LogPathWatcher = new FileSystemWatcher()
|
||||
{
|
||||
Path = gameLogPath.Replace(gameLogName, ""),
|
||||
Filter = gameLogName,
|
||||
@ -40,33 +37,33 @@ namespace IW4MAdmin.Application.IO
|
||||
InternalBufferSize = 4096
|
||||
};
|
||||
|
||||
LogPathWatcher.Changed += LogPathWatcher_Changed;
|
||||
LogPathWatcher.EnableRaisingEvents = true;
|
||||
// LogPathWatcher.Changed += LogPathWatcher_Changed;
|
||||
LogPathWatcher.EnableRaisingEvents = true;*/
|
||||
}
|
||||
|
||||
/*
|
||||
~GameLogEvent()
|
||||
{
|
||||
LogPathWatcher.EnableRaisingEvents = false;
|
||||
}
|
||||
}*/
|
||||
|
||||
private void LogPathWatcher_Changed(object sender, FileSystemEventArgs e)
|
||||
private void UpdateLogEvents(long fileSize)
|
||||
{
|
||||
// retrieve the new file size
|
||||
long newFileSize = new FileInfo(GameLogFile).Length;
|
||||
|
||||
if (PreviousFileSize == 0)
|
||||
PreviousFileSize = newFileSize;
|
||||
PreviousFileSize = fileSize;
|
||||
|
||||
long fileDiff = newFileSize - PreviousFileSize;
|
||||
long fileDiff = fileSize - PreviousFileSize;
|
||||
|
||||
if (fileDiff < 1)
|
||||
return;
|
||||
|
||||
var events = Reader.EventsFromLog(Server, fileDiff);
|
||||
PreviousFileSize = fileSize;
|
||||
|
||||
var events = Reader.EventsFromLog(Server, fileDiff, 0);
|
||||
foreach (var ev in events)
|
||||
Server.Manager.GetEventHandler().AddEvent(ev);
|
||||
|
||||
PreviousFileSize = newFileSize;
|
||||
PreviousFileSize = fileSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,21 +18,23 @@ namespace IW4MAdmin.Application.IO
|
||||
Parser = parser;
|
||||
}
|
||||
|
||||
public ICollection<GameEvent> EventsFromLog(Server server, long fileSizeDiff)
|
||||
public ICollection<GameEvent> EventsFromLog(Server server, long fileSizeDiff, long startPosition)
|
||||
{
|
||||
// allocate the bytes for the new log lines
|
||||
byte[] fileBytes = new byte[fileSizeDiff];
|
||||
List<string> logLines = new List<string>();
|
||||
|
||||
// open the file as a stream
|
||||
using (var rd = new BinaryReader(new FileStream(LogFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Utilities.EncodingType))
|
||||
using (var rd = new StreamReader(new FileStream(LogFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Utilities.EncodingType))
|
||||
{
|
||||
rd.BaseStream.Seek(rd.BaseStream.Length - fileSizeDiff - 1, SeekOrigin.Begin);
|
||||
// take the old start position and go back the number of new characters
|
||||
rd.BaseStream.Seek(-fileSizeDiff, SeekOrigin.End);
|
||||
// the difference should be in the range of a int :P
|
||||
rd.Read(fileBytes, 0, (int)fileSizeDiff);
|
||||
string newLine;
|
||||
while (!String.IsNullOrEmpty(newLine = rd.ReadLine()))
|
||||
{
|
||||
logLines.Add(newLine.Replace("\r\n", ""));
|
||||
}
|
||||
}
|
||||
|
||||
// convert to event line list
|
||||
string[] logLines = Utilities.EncodingType.GetString(fileBytes).Replace("\r", "").Split('\n');
|
||||
|
||||
List<GameEvent> events = new List<GameEvent>();
|
||||
|
||||
@ -40,9 +42,19 @@ namespace IW4MAdmin.Application.IO
|
||||
foreach (string eventLine in logLines)
|
||||
{
|
||||
if (eventLine.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
// todo: catch elsewhere
|
||||
events.Add(Parser.GetEvent(server, eventLine));
|
||||
}
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return events;
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,10 @@ namespace IW4MAdmin.Application.Localization
|
||||
public static void Initialize()
|
||||
{
|
||||
string currentLocale = Program.ServerManager.GetApplicationSettings().Configuration().CustomLocale ??
|
||||
CultureInfo.CurrentCulture.Name.Substring(0, 2);
|
||||
CultureInfo.CurrentCulture.Name?.Substring(0, 2);
|
||||
|
||||
if (currentLocale == null)
|
||||
throw new Exception("Computer CurrentCulture does not exist");
|
||||
#if DEBUG
|
||||
// currentLocal = "ru-RU";
|
||||
#endif
|
||||
@ -26,10 +29,12 @@ namespace IW4MAdmin.Application.Localization
|
||||
|
||||
else
|
||||
{
|
||||
localizationFile = $"Localization{Path.DirectorySeparatorChar}IW4MAdmin.en-US.json";
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
198
Application/Localization/IW4MAdmin.pt-PT.json
Normal file
198
Application/Localization/IW4MAdmin.pt-PT.json
Normal file
@ -0,0 +1,198 @@
|
||||
// translated by Daniel aka Vou te comer
|
||||
{
|
||||
"LocalizationName": "pt-BR",
|
||||
"LocalizationSet": {
|
||||
"MANAGER_VERSION_FAIL": "Não foi possível obter a versão mais recente do IW4MAdmin",
|
||||
"MANAGER_VERSION_UPDATE": "Tem uma atualização. 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 propietá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 possivel 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 expluso",
|
||||
"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 reniciado rapidamente",
|
||||
"COMMANDS_MAPROTATE": "Rotacionando o mapa em ^55 ^7segundos",
|
||||
"COMMANDS_SETLEVEL_SELF": "Você não pode mudar seu própio 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 desmarcarado",
|
||||
"COMMANDS_BANINFO_NONE": "Nenhum banimento ativo foi encontrado para esse jogador",
|
||||
"COMMANDS_BANINO_SUCCESS": "foi bannido 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": "renincializa 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": "commandos",
|
||||
"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 connectado 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"
|
||||
}
|
||||
}
|
@ -366,7 +366,10 @@ namespace IW4MAdmin.Application
|
||||
{
|
||||
try
|
||||
{
|
||||
Task.WaitAll(newEvent.Owner.ExecuteEvent(newEvent));
|
||||
newEvent.Owner.ExecuteEvent(newEvent).Wait();
|
||||
#if DEBUG
|
||||
Logger.WriteDebug("Processed Event");
|
||||
#endif
|
||||
}
|
||||
|
||||
catch (Exception E)
|
||||
@ -374,6 +377,8 @@ namespace IW4MAdmin.Application
|
||||
Logger.WriteError($"{Utilities.CurrentLocalization.LocalizationSet["SERVER_ERROR_EXCEPTION"]} {newEvent.Owner}");
|
||||
Logger.WriteDebug("Error Message: " + E.Message);
|
||||
Logger.WriteDebug("Error Trace: " + E.StackTrace);
|
||||
newEvent.OnProcessed.Set();
|
||||
continue;
|
||||
}
|
||||
// tell anyone waiting for the output that we're done
|
||||
newEvent.OnProcessed.Set();
|
||||
|
@ -984,8 +984,8 @@ namespace IW4MAdmin
|
||||
Link = Target.AliasLink
|
||||
};
|
||||
|
||||
await Manager.GetPenaltyService().Create(unbanPenalty);
|
||||
await Manager.GetPenaltyService().RemoveActivePenalties(Target.AliasLink.AliasLinkId);
|
||||
await Manager.GetPenaltyService().Create(unbanPenalty);
|
||||
}
|
||||
|
||||
override public void InitializeTokens()
|
||||
|
@ -37,7 +37,8 @@ namespace IW4MAdmin.Plugins.Login
|
||||
|
||||
if (E.Type == GameEvent.EventType.Command)
|
||||
{
|
||||
if (E.Origin.Level < Player.Permission.Moderator)
|
||||
if (E.Origin.Level < Player.Permission.Moderator ||
|
||||
E.Origin.Level == Player.Permission.Console)
|
||||
return Task.CompletedTask;
|
||||
|
||||
E.Owner.Manager.GetPrivilegedClients().TryGetValue(E.Origin.ClientId, out Player client);
|
||||
|
@ -249,9 +249,14 @@ namespace SharedLibraryCore.Services
|
||||
p.Active = false;
|
||||
// reset the player levels
|
||||
if (p.Type == Objects.Penalty.PenaltyType.Ban)
|
||||
await context.Clients
|
||||
{
|
||||
using (var internalContext = new DatabaseContext())
|
||||
{
|
||||
await internalContext.Clients
|
||||
.Where(c => c.AliasLinkId == p.LinkId)
|
||||
.ForEachAsync(c => c.Level = Objects.Player.Permission.User);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
await context.SaveChangesAsync();
|
||||
|
@ -22,7 +22,7 @@ namespace WebfrontCore.Controllers
|
||||
|
||||
public BaseController()
|
||||
{
|
||||
var Manager = Program.Manager;
|
||||
Manager = Program.Manager;
|
||||
if (Manager.GetApplicationSettings().Configuration().EnableDiscordLink)
|
||||
{
|
||||
string inviteLink = Manager.GetApplicationSettings().Configuration().DiscordInviteCode;
|
||||
|
@ -48,7 +48,7 @@ namespace WebfrontCore.Controllers
|
||||
|
||||
Manager.GetEventHandler().AddEvent(remoteEvent);
|
||||
// wait for the event to process
|
||||
remoteEvent.OnProcessed.Wait();
|
||||
await Task.Run(() => remoteEvent.OnProcessed.Wait());
|
||||
var response = server.CommandResult.Where(c => c.ClientId == client.ClientId).ToList();
|
||||
|
||||
// remove the added command response
|
||||
|
Loading…
Reference in New Issue
Block a user