Вопрос Таймер luckperms

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.

Ну он скорее всего имеет в виду ( плейсхолдер показывающий сколько время осталось до окончания привилегии LP )
Авто объединение сообщений:

  • Установить
    Еще папи скачать

    /papi ecloud download LuckPerms
    Вы можете найти актуальный список заполнителей (плейсхолдеров) на .
 
Последнее редактирование:
Ну он скорее всего имеет в виду ( плейсхолдер показывающий сколько время осталось до окончания привилегии LP )
Авто объединение сообщений:

  • Установить

    Вы можете найти актуальный список заполнителей на .
Нет, дописали аддон на основе лакпермс апи, не выводит время, тоесть он не распознает эту группу как временную
Авто объединение сообщений:

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.
Да ничего не работает, не скрипт на папи, не аддон по апи лакпермса
Авто объединение сообщений:

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.
Вот даже пример скрипта
Код:
var group = '%vault_rank%'

function format() {
    
    if (group == 'default') {
        return '' //Это если у игрока нет доната. Выводим пустоту, так как группа default не истекает.
    }

    var expires = '%luckperms_group_expiry_time_' + group + '%'
    if (expires == "") {
        return '∞'
    }

    return expires;
    
}

format()
 
Последнее редактирование:
а что он выводит? пустоту или скриптеррор?
Он не распознает группу как временную, выводит знак бесконечности
Тоесть знак бесконечности выводится для привлегий навсегда, а он ещё и на временные группы выводит знак бесконечности
 
Он не распознает группу как временную, выводит знак бесконечности
Тоесть знак бесконечности выводится для привлегий навсегда, а он ещё и на временные группы выводит знак бесконечности
может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
 
Будьте осторожны с рекомендациями этого пользователя.
может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
не-а
Авто объединение сообщений:

может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
Всё так-же бесконечность выводит
 
Будьте осторожны с рекомендациями этого пользователя.
Нет, дописали аддон на основе лакпермс апи, не выводит время, тоесть он не распознает эту группу как временную
Авто объединение сообщений:


Да ничего не работает, не скрипт на папи, не аддон по апи лакпермса
Авто объединение сообщений:


Вот даже пример скрипта
Код:
var group = '%vault_rank%'

function format() {
   
    if (group == 'default') {
        return '' //Это если у игрока нет доната. Выводим пустоту, так как группа default не истекает.
    }

    var expires = '%luckperms_group_expiry_time_' + group + '%'
    if (expires == "") {
        return '∞'
    }

    return expires;
   
}

format()

Я сперва подумал, что вы делаете что-то не так. Но сам протестировав это я впал в ступор, потому что код JS абсолютно рабочий. Интересный факт - если заменить var expires = '%luckperms_group_expiry_time_' + group + '%' на var expires = '%luckperms_group_expiry_time_vip%' или другой любой донат, то всё заработает. Может быть какой-то баг или Placeholders API или LuckPerms или JS Expansion.

В общем, единственное адекватно-верное решение я нашел в написании своего аддона к Placeholders API. То есть, больше не нужно будет использовать никаких JS E. (хотя далее используем). Кода там на буквально две строчки, но вот если интересно:
Java:
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
    String playerGroup = PlaceholderAPI.setPlaceholders(player, "%vault_group%");
    return PlaceholderAPI.setPlaceholders(player, "%luckperms_group_expiry_time_" + playerGroup +"%");
}

В итоге мы получаем абсолютно рабочий плейсхолдер при вызове %rank_time%.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

С которым мы кстати можем работать и помощью JS E. Например, изменить d,h,m,s на д,ч,м,с. Вот пример:
JavaScript:
function format() {
    
    var expires = "%rank_time%"
    
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
    
    return expires;
    
}

format()
В итоге получая это
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Приложу плагин снизу, надеюсь кому-то помог.
 

Вложения

  • RankTimePlaceholder-1.0.jar
    4.8 KB · Просмотры: 101
Я сперва подумал, что вы делаете что-то не так. Но сам протестировав это я впал в ступор, потому что код JS абсолютно рабочий. Интересный факт - если заменить var expires = '%luckperms_group_expiry_time_' + group + '%' на var expires = '%luckperms_group_expiry_time_vip%' или другой любой донат, то всё заработает. Может быть какой-то баг или Placeholders API или LuckPerms или JS Expansion.

В общем, единственное адекватно-верное решение я нашел в написании своего аддона к Placeholders API. То есть, больше не нужно будет использовать никаких JS E. (хотя далее используем). Кода там на буквально две строчки, но вот если интересно:
Java:
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
    String playerGroup = PlaceholderAPI.setPlaceholders(player, "%vault_group%");
    return PlaceholderAPI.setPlaceholders(player, "%luckperms_group_expiry_time_" + playerGroup +"%");
}

В итоге мы получаем абсолютно рабочий плейсхолдер при вызове %rank_time%.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

С которым мы кстати можем работать и помощью JS E. Например, изменить d,h,m,s на д,ч,м,с. Вот пример:
JavaScript:
function format() {
   
    var expires = "%rank_time%"
   
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()
В итоге получая это
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Приложу плагин снизу, надеюсь кому-то помог.
А можно как то сделать чтоб выводились только часы а когда остается меньше часа то только минуты а когда меньше минуты только секунды?
 
А можно как то сделать чтоб выводились только часы а когда остается меньше часа то только минуты а когда меньше минуты только секунды?
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
    
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
    
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
    
    return expires;
    
}

format()

По итогу получим:
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений


То есть, будет выводиться только первое число времени.
 
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
   
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
   
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()

По итогу получим:
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений


То есть, будет выводиться только первое число времени.
а куда это вставлять?
 
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
   
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
   
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()

По итогу получим:
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений


То есть, будет выводиться только первое число времени.


Привет, а может подскажешь как можно изменить формат времени? Перелазил по js форумам в поисках решения.
Я нашел не много интересней решение, но результат тот же самый. Единственное что не могу разобрать как можно поменять формат отображения оставшегося времени?
Тоесть, в переменную expires мы получаем к примеру "4недели 2дня 4часа 59м 59с" на человеческий язык 30дней. Как сделатать так что бы преобразовать в человеческое отображение? "30д" вместо "4недели 2дня 4часа 59м 59с". Думал может есть какие-то parse для такого случая, но догадываюсь что тут в другом дело и есть наверняка очень простой способ. Может знаешь ответ на данный вопрос?
ВАЖНО как отформатировать что бы выводило к примеру "4н" или "23ч" я разобрался. Интересует имеенно свести получаемую дату к единому формату - к дням.
Авто объединение сообщений:

А для того что бы код работал и отображал время, достаточно просто подавать другой запрос:
var group = "%luckperms_highest_group_by_weight%";
А таким образом находим оставшееся время:
var expires = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, '%luckperms_group_expiry_time_' + group + '%')
 
Назад
Сверху Снизу