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

Помогите Как сделать проверку на изменение статистики

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

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

    JayRoon Участник Пользователь Заблокирован

    Баллы:
    31
    Имя в Minecraft:
    Krongss_FUR
    Вопрос в шапке может крайне не понятный, но.
    Мне надо, наиграл к примеру игрок 10 минут/1 час/день и т.д и в консоль выводится любое сообщение.
    Я попробовал начало будет ли писать в консоль сообщение при изменение статистики с новым значением с статистикой так -
    Код:
        @EventHandler
        public void updateStatistic(PlayerStatisticIncrementEvent e) {
            if(e.getStatistic() == Statistic.PLAY_ONE_MINUTE) {
                   System.out.println(e.getNewValue());
                }
            }
    В итоге ничего не происходит в консоли. Ну вопрос остаётся, какую делать проверку на то что игрок наиграл к примеру первые 10 минут и первый час?
     
  2. ReloGGrc

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

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Не знаю, разумно ли это, на как вариант если тебе нужно только время, то запустить например при входе игрока long startTime = System.currentTimeMillis() (вроде так)
    И проверять в определенный момент равно ли startTime определенному числу.
    Если переводить в минуты то это вроде (startTime / 1000 / 60) в часы (startTime / 1000 / 60 / 60)
     
  3. Автор темы
    JayRoon

    JayRoon Участник Пользователь Заблокирован

    Баллы:
    31
    Имя в Minecraft:
    Krongss_FUR
    А если к примеру надо проверять сколько игрок проиграл на сервере каждый час? мне надо что бы каждый час проверялось сколько там игрок играл, и я считаю что легче было бы если бы делали через статистику.
     
  4. ReloGGrc

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

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Таймером можно по идее
    TimerTask task = new TimerTask() {
    public void run() {
    System.out.println("Игрок " player.getName + " отиграл " + (startTime/1000/60));
    }
    };

    Timer timer = new Timer("PlayingTime");

    long delay = 60000*60L;
    timer.schedule(task, delay);


    Только вот я не уверен, он повторяющийся или одноразовый
     
  5. Автор темы
    JayRoon

    JayRoon Участник Пользователь Заблокирован

    Баллы:
    31
    Имя в Minecraft:
    Krongss_FUR
    Я теперь не уверен вообще в чём либо, можно даже такое велосипед небольшой это назвать. Т.к надо начало фиксировать наиграл ли это время игрок, запускать шедулер и ещё что то. Так можно выполнить через ивент это?
    Просто фиксировать, если 1 час к примеру игрок наиграл(1 час - каждый новый наигранный час) и выполнять код и выполнить через ивент?
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ивент не фиксирует часто-вызываемые статистики. Тут только шедулером.
     
  7. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Одноразовый, срабатывает через delay время
     

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