public void CreateCommandHotlist(ulong sender, string param = null)
        {
            List<CommandStruct> commands = new List<CommandStruct>(Permissions.Commands);

            if (!string.IsNullOrEmpty(param))
            {
                commands = new List<CommandStruct>(Permissions.Commands.Where(c => c.Name.IndexOf(param, StringComparison.InvariantCultureIgnoreCase) >= 0));

                if (commands.Count == 0)
                {
                    ConnectionHelper.SendChatMessage(sender, string.Format("No command matching with {0} could be found.", param));
                    return;
                }
            }

            if (!CommandCache.ContainsKey(sender))
                CommandCache.Add(sender, commands);
            else
                CommandCache[sender] = commands;

            var message = new MessageCommandPermission()
            {
                Commands = commands,
                CommandAction = CommandActions.List
            };

            ConnectionHelper.SendMessageToPlayer(sender, message);
        }
        public void SendPermissionChange(ulong steamId, CommandStruct commandStruct)
        {
            var message = new MessageCommandPermission()
            {
                Commands = new List<CommandStruct>(),
                CommandAction = CommandActions.Level
            };
            message.Commands.Add(commandStruct);

            ConnectionHelper.SendMessageToPlayer(steamId, message);
        }
        public void ProcessCommandPermission(string[] args)
        {
            var commandMessage = new MessageCommandPermission();
            switch (args[1].ToLowerInvariant())
            {
                case "setlevel":
                    if (args.Length < 4)
                    {
                        MyAPIGateway.Utilities.ShowMessage("Permissions", "Not enough arguments.");
                        MyAPIGateway.Utilities.ShowMessage("Command setlevel", "/perm command setlevel <commandName> <level>");
                        return;
                    }

                    uint level;
                    if (uint.TryParse(args[3], out level))
                    {
                        commandMessage.Commands = new List<CommandStruct>();
                        commandMessage.CommandAction = CommandActions.Level;

                        commandMessage.Commands.Add(new CommandStruct()
                        {
                            Name = args[2],
                            NeededLevel = level
                        });
                    }
                    else
                    {
                        MyAPIGateway.Utilities.ShowMessage("Permissions", string.Format("{0} is no valid level. It must be an integer and can't be below 0.", args[3]));
                        return;
                    }
                    break;
                case "list":
                    commandMessage.CommandAction = CommandActions.List;
                    if (args.Length > 2)
                        commandMessage.ListParameter = args[2];
                    break;
                default:
                    MyAPIGateway.Utilities.ShowMessage("Permissions", string.Format("There is no action named {0}. Available actions: setlevel, list.", args[1]));
                    return;
            }

            ConnectionHelper.SendMessageToServer(commandMessage);
        }