Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Еще одна ошибка. =C

Discussion in 'Разработка плагинов для новичков' started by ANTI_GREEFER, Apr 18, 2013.

  1. Автор темы
    ANTI_GREEFER

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

    Trophy Points:
    88
    [​IMG]
    Не работает оператор IF.
    Подскажите решение или скажите где писать setCanceled(true) в командах.
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Нужно написать в нужном месте return true
     
  4. Автор темы
    ANTI_GREEFER

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

    Trophy Points:
    88
    Понял. Оно возвращяет серверу bool значение, что команда завершилась? Ясно.
     
  5. limito

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

    Trophy Points:
    103
    1. Вы уверены, что название команды - "darberplugin.kick"? Название команды - это то название, которое вводит пользователь. Например "kick".
    2. if (args[1] != null).
    Получите ArrayIndexOutOfBoundsException, если массив слишком маленький. Для проверки размера массива используйте array.length >= someNumber.
    3. Что касается setCancelled. Обработчик команды только один, поэтому нет действия отмены команды. Если хотите завершить выполнение команды, просто используйте return true; для выхода из метода.
    4. Про return. Если написать return false, то сервер покажет usage команды из plugin.yml. Если написать return true, то сервер ничего не сделает.
     
    VaNnOrus, Mik1313 and Den_Abr like this.
  6. smilesdc

    smilesdc Няша Модератор

    Trophy Points:
    153
    Имя в Minecraft:
    smilesdc
    Code:
    else if(cmd.getName().equalsIgnoreCase("kick"))
    {
        Player p = Bukkit.getServer().getPlayer(args[0]);
        if(p == null)
            {
              sender.sendMessage(args[0] + " is offline.");
              return true;
            }
        if(args[1] == null)
            {
              sender.sendMessage("Enter rhe reason!");
              return true;
            }
        p.kickPlayer(args[1]);
        return true;
    }
    Как-то так :)
     
    slavik123123123 likes this.
  7. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    что значит args[1] == null??? если нет причины, то этот аргумент не нулл, а его вообще нет и будет ошибка. так что он либо причина, либо его просто нет.
     
    HoShiMin likes this.
  8. smilesdc

    smilesdc Няша Модератор

    Trophy Points:
    153
    Имя в Minecraft:
    smilesdc
    Если его нет, значит null. Ошибки не будет, так как return true;.
    Если args[1] > 1, тогда все нормально.
     
    DavidShabaev likes this.
  9. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    если его нет, то аргумент только 1 (только ник, без причины, и то надо проверить, что он есть). то есть надо писать не if (args[1] == null) а if (args.length < 2) и этого будет достаточно
    мм, сравнение строки с единицей. восхитительно.
     
  10. smilesdc

    smilesdc Няша Модератор

    Trophy Points:
    153
    Имя в Minecraft:
    smilesdc
    Боже, какой Вы печальный ._.
    Я сделал проверки, чего Вы еще хотите? О_о
    Ну понятное дело, что длину массива я имел в виду, а не строку, где ваша интуиция?
     
    MineMan910 and VaNnOrus like this.
  11. VaNnOrus

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

    Trophy Points:
    123
    Когда же новички начнут читать документацию...
    Ответы на две предыдущие темы лежат на вики ведра -_-
     
  12. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    проверка, что args[1] == null некорректна, я хочу увидеть проверку, что args.length < 2 и тогда выводит, что нехватает причины, в коде, а не на словах, что "если больше, то все нормально"
     
  13. VaNnOrus

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

    Trophy Points:
    123
    Что Вы прицепились к человеку? Тут людям помогают, давая примерный код, а не готовый рабочий вариант.
     
    Сникерсни likes this.
  14. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    у топикстартера "не работает оператор IF". из всех возможных причин, я вижу только то, что он получает в условии ошибку выхода за пределы массива. а человек, дающий примерный код эту ошибку повторяет. и где помощь тогда?
     
  15. VaNnOrus

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

    Trophy Points:
    123
    Еще до поста с "примерным кодом" написали о том, что проверка "args[1] == null" не корректна, если человек собирается писать плагины, то он должен понимать основы языка. Следовательно заменить проверку из "примерного кода" на правильную, которую написали чуть выше не составит труда.

    Хотя перечитал посты, понял из-за чего весь сыр-бор пошел, smilesdc не прав, ошибка, конечно, будет :)
     
    Сникерсни likes this.

Share This Page