1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Проверка пароля

Тема в разделе "Разработка плагинов для новичков", создана пользователем MasterCapeXD, 30 дек 2016.

Статус темы:
Закрыта.
  1. Автор темы
    MasterCapeXD

    MasterCapeXD Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    MasterCapeXD
    Вообщем, пишу плагин, который выполняет действия, только когда игрок напишет команду например /gadd password121 . Проблема в том, что я никогда не работал с args[] в onCommand, и вот пришло это время.Как мне сделать, чтобы плагин проверял правильность пароля, установленого плагином? Помогите пожалуйста!

    Вот код.Написал полную чушь начиная с args. Помогите пожалуйста, очень надо!

    Код:
        public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
        {
          
          
            if(sender instanceof Player)
            {
                Player p = (Player) sender;
              
                PermissionUser user = PermissionsEx.getUser(p);
              
                if(cmd.getName().equals("gadd"))
                {
                    if(args != null && args.length > 1)
                    {
                      
                        String[] pass = args[0].equals("password121");
                      
                        if(pass = "password")
                        {
                               user.addGroup("OWNER");
                        }
                       
                    } else
                        p.sendMessage(ChatColor.RED+"Запрос отклонен");
                }
              
            }
          
          
            return true;
          
          
          
        }
     
  2. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Ты не умеешь в массивы?
     
  3. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    ты такую дичь написал

    args[o] - это строка, операция equals вернет true либо false, и после этого ты присвоил в массив строк значение либо true либо false. Ватафак ****

    Не знаешь java не берись. тут в закрепе висист учебник по явке - сначала изучи ее а потом иди кодить.
    Код:
    if(cmd.getName().equals("gadd"))
                {
                    if(args != null && args.length > 1)
                    {
                    
                        String[] pass = args[0].equals("password121");
                    
                        if(pass = "password")
                        {
                               user.addGroup("OWNER");
                        }
                      
                    } else
                        p.sendMessage(ChatColor.RED+"Запрос отклонен");
                }
    Ну начнем
    if(cmd.getName().equals("gadd")) ок
    if(args != null && args.length > 1) не ок. ты проверяешь аргумента на нулл либо длина боле одного, но когда у тебя один аргумент то args.length = 1, поэтому args.length == 1 (два пароля тебе же не надо?) ели нужно и больше одного аргумента то ">="
    ну дальше самый пздец
    String[] pass = args[0].equals("password121"); я уже выше написал. у тея в массиве будет либо true либо false , вообще не понимаю как среда разработки(или как это там называется) это не подчеркивает.
    берем и pass = "тут строчка с паролем, хоть из конфига бери"
    далее
    if(pass.equals(args[0]))
    {
    user.addGroup("OWNER");
    }

    P.s в джаве (как и в большинстве языков) проверка на равенство имеет синтаксис как два равно, а не как одно
     
  4. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equals("gadd") && args.length == 1 && sender instanceof Player) {
                if (args[0].equalsIgnoreCase("password121")) {
                    PermissionsEx.getUser((Player) sender).addGroup("OWNER");
                    return true;
                }
            }
            return false;
        }
     
  5. Автор темы
    MasterCapeXD

    MasterCapeXD Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    MasterCapeXD
    Спасибо за то что обьяснили.Я перерыл свой код, и нашел сам кучу ошибок.Много чего исправил, вроде не ругается, вот получившейся код.Может он и не сработает, но я не такой уж и тупой (надеюсь), может, сонный, не заметил такие ошибки.


    Код:
        public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
        {
          
          
            if(sender instanceof Player)
            {
                Player p = (Player) sender;
              
                PermissionUser user = PermissionsEx.getUser(p);
              
                if(cmd.getName().equalsIgnoreCase("gadd"))
                {
                    if(args != null && args.length >= 1)
                    {
                      
                        String pass = "password121";
                      
                        if(args.equals(pass))
                        {
                                user.addGroup("OWNER");
    
                        } else
                            p.sendMessage(ChatColor.RED+"Запрос отклонен");
                    }
                }
              
            }
          
            return true;  
        }
    
    Если найдете еще ошибки, сообщите пожалуйста.
     
  6. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    args - список всех аргументов, тебе нужен первый ( в программировании нулевой) if(args[0].equals(pass))
    P.s используй [code = java] (без пробела)[/code]
     
  7. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Во-первых, не проверяй отправителя на игрока(и не получай пользователя из PermissionEx соотв.) до проверки на имя команды, делай это после.Во-вторых, научись работать с массивом.Ты проверяешь целый массив, вместо того, что бы использовать его элементы(args[0], args[1]).В итоге, получится примерно тот код, который я кинул выше, перечитай.
     
  8. Автор темы
    MasterCapeXD

    MasterCapeXD Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    MasterCapeXD
    Все работает, спасибо за помощь
     
Статус темы:
Закрыта.

Поделиться этой страницей