/// <inheritdoc /> public override void ExecuteCommand(ICommonSession?session, string command) { if (string.IsNullOrWhiteSpace(command)) { return; } // echo the command locally WriteLine(null, "> " + command); //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(command, args); var commandName = args[0]; if (AvailableCommands.ContainsKey(commandName)) { var command1 = AvailableCommands[commandName]; args.RemoveAt(0); var shell = new ConsoleShell(this, null); var cmdArgs = args.ToArray(); AnyCommandExecuted?.Invoke(shell, commandName, command, cmdArgs); command1.Execute(shell, command, cmdArgs); } else { WriteError(null, "Unknown command: " + commandName); } }
private void ExecuteInShell(IConsoleShell shell, string command) { try { var args = new List <string>(); CommandParsing.ParseArguments(command, args); // missing cmdName if (args.Count == 0) { return; } string?cmdName = args[0]; if (AvailableCommands.TryGetValue(cmdName, out var conCmd)) // command registered { args.RemoveAt(0); var cmdArgs = args.ToArray(); if (shell.Player != null) // remote client { if (_groupController.CanCommand((IPlayerSession)shell.Player, cmdName)) // client has permission { AnyCommandExecuted?.Invoke(shell, cmdName, command, cmdArgs); conCmd.Execute(shell, command, cmdArgs); } else { shell.WriteError($"Unknown command: '{cmdName}'"); } } else // system console { AnyCommandExecuted?.Invoke(shell, cmdName, command, cmdArgs); conCmd.Execute(shell, command, cmdArgs); } } else { shell.WriteError($"Unknown command: '{cmdName}'"); } } catch (Exception e) { LogManager.GetSawmill(SawmillName).Error($"{FormatPlayerString(shell.Player)}: ExecuteError - {command}:\n{e}"); shell.WriteError($"There was an error while executing the command: {e}"); } }
/// <inheritdoc /> public override void ExecuteCommand(ICommonSession?session, string command) { if (string.IsNullOrWhiteSpace(command)) { return; } // echo the command locally WriteLine(null, "> " + command); //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(command, args); var commandName = args[0]; if (AvailableCommands.ContainsKey(commandName)) { var playerManager = IoCManager.Resolve <IPlayerManager>(); #if !DEBUG if (!_conGroup.CanCommand(commandName) && playerManager.LocalPlayer?.Session.Status > SessionStatus.Connecting) { WriteError(null, $"Insufficient perms for command: {commandName}"); return; } #endif var command1 = AvailableCommands[commandName]; args.RemoveAt(0); var shell = new ConsoleShell(this, null); var cmdArgs = args.ToArray(); AnyCommandExecuted?.Invoke(shell, commandName, command, cmdArgs); command1.Execute(shell, command, cmdArgs); } else { WriteError(null, "Unknown command: " + commandName); } }