Войти или зарегистрироваться

Помогите Как получить время до конца шедулера?

  • Автор темы Автор темы g1tufix
  • Дата начала Дата начала

g1tufix

Активный участник
Пользователь
Баллы
61
Нужно сделать, что бы раз в 5 минут открывался доступ к получению еды на одну минуту.
Сделал 2 шедулера, один в другом. При запуске второго просто записываем false в переменную а-ля isTimeToGiveEat, а в эвенте при клике на нпс отслеживаем, можно ли в текущее время получить игроку еду. Возникла такая проблема: Как получить время до конца этого шедулера, что бы вывести это время игроку? Что-то вроде "приходи через 2 минуты 41 секунду"
 
При запуске второго просто записываем false в переменную
Почему бы не записывать текущее время + кд?
Когда нужно проверить есть ли кд - проверяем текущее время < записанного.
Чтобы узнать сколько осталось - от записанного отнимаем текущее время.
ЗЫ на всякий случай уточняю, я про аремя в миллисекундах.
 
Последнее редактирование:
Почему бы не записывать текущее время + кд?
Когда нужно проверить есть ли кд - проверяем текущее время < записанного.
Чтобы узнать сколько осталось - от записанного отнимаем текущее время.
ЗЫ на всякий случай уточняю, я про аремя в миллисекундах.

Можно пример кода?
 
Можно пример кода?
long end_time = 0;
long cooldown = 5000; // 5 секунд
// ставим кд
cooldown = System.currentTimeMillis() + cooldown;
// true если время в переменной больше текущего, то есть сейчас кд
boolean b = end_time > System.currentTimeMillis();
// время до конца кд
long time_left = end_time - System.currentTimeMillis(); // можно поделить на 1000, чтобы получить секунды

Я ещё такого не писал, мб так делать не правильно, но сейчас мне это кажется самым простым вариантом.
 
long end_time = 0;
long cooldown = 5000; // 5 секунд
// ставим кд
cooldown = System.currentTimeMillis() + cooldown;
// true если время в переменной больше текущего, то есть сейчас кд
boolean b = end_time > System.currentTimeMillis();
// время до конца кд
long time_left = end_time - System.currentTimeMillis(); // можно поделить на 1000, чтобы получить секунды

Я ещё такого не писал, мб так делать не правильно, но сейчас мне это кажется самым простым вариантом.
cooldown в моем случае продолжительность того, сколько длиться полный цикл от начала таймера до конца + 1 минута в течении которой можно будет выдать игроку
я правильно понял?
 
cooldown в моем случае продолжительность того, сколько длиться полный цикл от начала таймера до конца + 1 минута в течении которой можно будет выдать игроку
я правильно понял?
А, ну я либо не вчитывался, либо отвлёкся.
Ну, основное рассказал, суть в получении текущего времени, манипуляциях и сравнении с ним.
 
Немного набросал

Делаешь несколько полей
long last_time;
long one_min = 1 * 60 * 1000;
long five_min = 5 * 60 * 1000;

Каждые 5 минут отмечаем время
last_time = System.currentTimeMillis();

Проверяем или получаем время
long current = System.currentTimeMillis();
// Укладывается ли в первую минуту
if (current > last_time + one_min) {
// Не укладывается
}
// Время до начала следующего цикла
long next = last_time + five_min - current;
// Время до конца первой минуты
long end = last_time + one_min - current;
 
Назад
Верх