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

Помогите Математика, Short, Durability, и прочее.

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

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

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

    Баллы:
    123
    Го не обращать внимания на гавнокод?
    Код:
        private Short setDurabilityForLore(Material item, String durability)
        {
            if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"))) { return (short) ((int) item.getMaxDurability() - ((int) item.getMaxDurability()/2)); }
            if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&cПоношенный"))) { return (short) ((int) item.getMaxDurability() - ((int) item.getMaxDurability()/4)); }
            if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&5&lПосле полевых испытаний"))) { return (short) ((int) item.getMaxDurability() - ((int) item.getMaxDurability()/6)); }
            if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный"))) { return (short) ((int) item.getMaxDurability() - ((int) item.getMaxDurability()/10)); }
            if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"))) { return item.getMaxDurability(); }
            return null;
        }
    
    Мне кажеться что должно считаться так (пример) : 100 - (100/2) = 50, 100 - (100/4) = 75, и т.д., однако считается все не так... Какой урок по математике я пропустил?
     
  2. Хостинг MineCraft
    <
  3. lolifrag

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

    Баллы:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    А какие результаты выдаёт этот код?
     
  4. kirill2011s

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

    Баллы:
    103
    Зачем такие махинации из short в int, а затем опять в short?
     
  5. lolifrag

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

    Баллы:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    возможно ему выдавало ошибку типа данных формата числа, на которое делили во второй части (гипотеза)
     
  6. kirill2011s

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

    Баллы:
    103
    Вряд-ли.
    Думаю, проблема в том, что при делении целого числа на целое получается целое.[DOUBLEPOST=1428243829,1428243778][/DOUBLEPOST]И если написать вместо "2" -> "2.", все будет работать как надо.
     
  7. lolifrag

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

    Баллы:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    всё же остаётся вопрос, что конкретно не получается
    ибо если 100 - 50 = 50, то норм
    а если не равно 50, то значит что-то не так)
    хотя я сомневаюсь, что ошибка такого рода может быть именно в этой части кода
     
  8. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Не получается то, что вычесления работают не правильно.
    У "Закаленного в боях" прочность - половина (ну это так и должно быть).
    У "Поношенного" прочность - четверть (должно быть 3/4).
    ... и так далее к худшему, должно быть наоборот.
    У "Прямо с завода" прочность - 0 (т.е. один клик и он сломан).[DOUBLEPOST=1428245652,1428244989][/DOUBLEPOST]По моей задумке должно быть так - "Прямо с завода" - полная прочность.
    А начиная с "Немного поношенный" до "Закаленный в боях" все хуже.
     
  9. kirill2011s

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

    Баллы:
    103
    Так пробуй:
    Код:
    private Short setDurabilityForLore(Material item, String durability) {
        switch(durability) {
            case ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"): return item.getMaxDurability() / 2.; break;
            case ChatColor.translateAlternateColorCodes('&', "&cПоношенный"): return item.getMaxDurability() - item.getMaxDurability() / 4.; break;
            case ChatColor.translateAlternateColorCodes('&', "&5&lПосле полевых испытаний"): return item.getMaxDurability() - tem.getMaxDurability() / 6.; break;
            case ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"): return item.getMaxDurability() - item.getMaxDurability() / 10.; break;
            case ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"): return item.getMaxDurability(); break;
        }
        return null;
    }
     
  10. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Не пашет(
     
  11. kirill2011s

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

    Баллы:
    103
    Результат тот же?
     
  12. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    IDE не принимает, все красное.
     
  13. kirill2011s

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

    Баллы:
    103
    Лол, потому что я сплю)
    Так должно работать(сам замени нужные названия):
    Код:
     short f(short max, String durab) {
        switch(durab) {
            case "a": return max / 2.;
            case "b": return max * 3. / 4;
            case "c": return max * 5. / 6;
            case "d": return max * 9. / 10;
            case "e": return max;
        }
        return -1;
    }
    [code]
     
  14. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Слущай, я тогда тоже пойду храпеть... У меня после ~14:00 мозг отказывается что-то понимать по программированию.[DOUBLEPOST=1428258186,1428257921][/DOUBLEPOST]
    Ах да, но IDE строчки с вычеслением все-равно красит в красный.
    Го утром проснешься, тогда и подскажешь на "свежую голову"? :D
     
  15. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    После цифр точки стоят.
     
  16. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тут и без еклипса у меня в глазах ерроры уже :D.
    Код:
      short f(short max, String durab) {
            switch(durab) {
                case "a": return (short) (max / 2.);
                case "b": return (short) (max * 3. / 4);
                case "c": return (short) (max * 5. / 6);
                case "d": return (short) (max * 9. / 10);
                case "e": return max;
            }
            return -1;
      }
     
  17. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Подчеркивает красным durab в switch говорит что в switch можно использовать только byte, char, short, int.[DOUBLEPOST=1428283515,1428283217][/DOUBLEPOST]Хотя, кликнул на какую-то кнопочку, зароботало чВ
     
  18. kirill2011s

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

    Баллы:
    103
    Ну так надо седьмую джаву юзать.[DOUBLEPOST=1428283640][/DOUBLEPOST]
    Это что, запрещено?
    Извиняюсь, сонный был.
     
  19. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Так седьмую вроде и юзаю, на 8 не успел перейти..[DOUBLEPOST=1428284553,1428284051][/DOUBLEPOST]Большое спасибо всем, вроде зароботало (проверял на тестовых букафках, но думаю с ChatColor проблем не возникнет). Но есть еще одна проблема, (сам сделать попытался, но увы, не вышло)
    Можете скинуть такой-же код, только немного апгрейдженный,
    Мне надо ретурнить рандомное число,
    Минимум = (то_что_ретурнится_сейчас) - (max/10) (т.е. число на десятую часть меньше.
    Максимум = (то_что_ретурнится_сейчас) + (max + (max/10)) (т.е. число на десятую часть больше).[DOUBLEPOST=1428289878][/DOUBLEPOST]
    Хм... А как сделать с ChatColor? Ибо так не прокатывает:
    case ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"): return (short) (max / 2.);
     
  20. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    ALT + 21 на цифровой клавиатуре.
     
  21. kirill2011s

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

    Баллы:
    103
    Код:
    Random r = new Random()
    r.nextInt(N); // Число от 0 до N.
    
     

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