コード例 #1
0
        private static bool Prefix(QueryProcessor __instance, string query)
        {
            if (__instance._sender == null)
            {
                return(false);
            }

            var player = __instance._sender.GetPlayer();

            SynapseController.Server.Events.Server.InvokeConsoleCommandEvent(player, query);

            if (player == null)
            {
                return(false);
            }
            var args = query.Split(' ');

            if (SynapseController.CommandHandlers.ClientCommandHandler.TryGetCommand(args[0], out var command))
            {
                //If sender has no permission and permission is not null or empty
                if (!__instance.GetPlayer().HasPermission(command.Permission) && !string.IsNullOrWhiteSpace(command.Permission))
                {
                    player.SendConsoleMessage(Server.Get.Configs.SynapseTranslation.GetTranslation("noperm").Replace("%perm%", command.Permission), "red");
                    return(false);
                }

                try
                {
                    var flag = command.Execute(new Command.CommandContext {
                        Arguments = args.Segment(1), Player = player, Platform = Command.Platform.ClientConsole
                    });

                    var color = "blue";
                    switch (flag.State)
                    {
                    case Command.CommandResultState.Ok:
                        color = "gray";
                        break;

                    case Command.CommandResultState.Error:
                        color = "red";
                        break;

                    case CommandResultState.NoPermission:
                        color = "yellow";
                        break;
                    }

                    player.SendConsoleMessage(flag.Message, color);
                }
                catch (Exception e)
                {
                    Logger.Get.Error($"Synapse-Commands: Command Execution failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
                }
                return(false);
            }
            return(true);
        }
コード例 #2
0
        // ReSharper disable once InconsistentNaming
        public static bool Prefix(QueryProcessor __instance, string query)
        {
            try
            {
                Events.InvokeConsoleCommandEvent(__instance.GetPlayer(), query, out var allow);

                return(allow);
            }
            catch (Exception e)
            {
                Log.Error($"ConsoleCommand Event Error: {e}");
                return(true);
            }
        }