- Баллы
- 88
- Имя в Minecraft
- marick0073
Смотрю на картинку и создаётся впечатление что в плагине используется скедулер(scheduler). Это ведь не так?Ну так то '/20' можно влепить и в closingBracket.
А собсна, вот тот баг, о котором я вещал.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Смотрю на картинку и создаётся впечатление что в плагине используется скедулер(scheduler). Это ведь не так?Ну так то '/20' можно влепить и в closingBracket.
А собсна, вот тот баг, о котором я вещал.
Для таких раздумий существуют исходники, которые можно найти в джарнике плагина.Смотрю на картинку и создаётся впечатление что в плагине используется скедулер(scheduler). Это ведь не так?
Сижу через телефон. Через 8-9 часов гляну.Для таких раздумий существуют исходники, которые можно найти в джарнике плагина.
Я не настолько на голову двинутый, чтобы для элементарного действия писать шедулер.Смотрю на картинку и создаётся впечатление что в плагине используется скедулер(scheduler). Это ведь не так?
private String healthGraphical(int health) {
//Звиняйте, мой инглиш весьма плох.
int пол_хп = health / 2;
int отс_хп = 10 - пол_хп;
String out = this.conf.getString("openingBracket")
.concat(this.conf.getString("colorExistingHP"));
//Рисуем зелёные полоски
for (int i = 0; i < пол_хп; i++) {
out = out.concat(this.conf.getString("hpChar"));
}
//Добавляем цвет к отсутствующему хп
out = out.concat(this.conf.getString("colorMissingHP"));
//Рисуем красные полоски
for (int i = 0; i < отс_хп; i++) {
out = out.concat(this.conf.getString("hpChar"));
}
out = out.concat(this.conf.getString("closingBracket"));
return ChatColor.translateAlternateColorCodes('&', out);
}
Не на всех серверах используется стандартное количество здоровья, на некоторых завышают, а на некоторых занижают.Я не настолько на голову двинутый, чтобы для элементарного действия писать шедулер.
Собсна, тот самый метод:
Java:private String healthGraphical(int health) { //Звиняйте, мой инглиш весьма плох. int пол_хп = health / 2; int отс_хп = 10 - пол_хп; String out = this.conf.getString("openingBracket") .concat(this.conf.getString("colorExistingHP")); //Рисуем зелёные полоски for (int i = 0; i < пол_хп; i++) { out = out.concat(this.conf.getString("hpChar")); } //Добавляем цвет к отсутствующему хп out = out.concat(this.conf.getString("colorMissingHP")); //Рисуем красные полоски for (int i = 0; i < отс_хп; i++) { out = out.concat(this.conf.getString("hpChar")); } out = out.concat(this.conf.getString("closingBracket")); return ChatColor.translateAlternateColorCodes('&', out); }
private String healthGraphical(int health, int maxHealth) {
int пол_хп = health / 2;
int отс_хп = (maxHealth/2) - пол_хп;
Не на всех серверах используется стандартное количество здоровья, на некоторых завышают, а на некоторых занижают.
Java:private String healthGraphical(int health, int maxHealth) { int пол_хп = health / 2; int отс_хп = (maxHealth/2) - пол_хп;
Я и не просил тыкать меня пальцем туда, где я уже глазами пробежал.При написании плагина в общем. Я исходил из статичного максимального здоровья в 20 хп (разделив на два, разумеется), и делил хп игрока на 2, чтобы получились 10 штук символов.
Если поставить хп игрока выше, чем 20, то кол-во символов увеличится, что не есть хорошо.
В итоге, метод healthGraphical(int) будет переписан.
Такое гадство происходит при кодировке cp866 только .-.Выдаёт в консоли ошибку на инициализацию этой переменной - пустой инициализатор.
out = out.concat("&a" + health);
Убрал русское описание из конфига - всё отлично работает.
+1. Но, некоторым нравится.Бесполезная фича.
имхо

Ну такая задачка пока не по зубам мне. Да и к тому же, player.getMaxHealth() возвращает действительно максимальное кол-во хп, а не 20, что может помочь в пропорциональном выводе.откуда такое число ХП было? Если 20 максимально, а хп больше 20, то можно же в методе private String healthGraphical(int health) обрезать, например:
health = ( health > 20 ) ? 20 : health ;
к тому же, если больше 20, то ловить это превышение куда-то в булеву переменную, и выводить уже не 20, а например 20+ с другим цветом, имхо
А еще, мне кажется еще лучше, если хп больше 20, то можно пропорционально выводить, т.е. если у тебя максимально должно быть 10 значков, то пропорционально и выводить 10 значков
boolean overFlow = false ;
if( player.getMaxHealth() > 20 ) overFlow = true ;

Теперь я понял, что я делаю херовые алгоритмы, хоть и брожу около правильного решения.Итак, player.getMaxHealth() возвращает число макс. хп. Смотрим, если число больше 20, то считаем сколько хп должно подразумеваться под 10%. Для этого число делим на 10. Если было 120, то 10% - это 12.
Далее смотрим сколько у плэера хп, допустим 37.
Теперь смотрим сколько целых частей ( 12 ) влезет в 37, ((int)37/12) = 3, т.е. вывод будет 3 из 10, 3/10,
далее смотрим, если остаток больше половины части, то увеличиваем вывод на единицу:
остаток = 37 - ((int)37/12) = 1, остаток единица,
половина части = 12/2 = 6,
1 < 6, значит вывод будет 3/10 ХП, если бы было, например, 8 то, 8 > 6, следовательно вывод был бы не 3/10 а 4/10 ХП.
Вот так примерно можно пропорционально выводить
UPD: для численного вывода, можно ловить в булеву переменную
Теперь если overFlow == true, выводим не 10 максимально, а 10+.Код:boolean overFlow = false ; if( player.getMaxHealth() > 20 ) overFlow = true ;
П.С. если тебе надо не 10 макс. а 20, просто сделай умножение на коеф. масштабирования, в данном случае на 2
------------
Надеюсь помог, алгоритм готов, только переведи в код![]()
Теперь я понял, что я делаю херовые алгоритмы, хоть и брожу около правильного решения.

а почему первые четыре на нуле? или там просто нет хп?
Там было недостаточно хп для '1'.а почему первые четыре на нуле? или там просто нет хп?
При наложении эффекта "сердец", они появляются пустыми, а потом регенятся до нужного уровня. А плагин просто посчитал уровень жизни в % соотношенииа почему первые четыре на нуле? или там просто нет хп?