PDA

Просмотр полной версии : [Вопрос] секунды



Mr.DeViLsS
21.06.2014, 16:45
подскажите пожалуйста, как сделать что бы писало сколько секунд осталось до обновления паблика?

SetTimer("Name", 30000, true);
например: "До обновления паблика осталось: %i секунд"

Salvacore
21.06.2014, 17:19
А зачем это тебе?
Паблик обновляется каждые 30 сек...

Mr.DeViLsS
21.06.2014, 17:58
А зачем это тебе?
Паблик обновляется каждые 30 сек...
30 сек я взял для проверки, будет 10 минут, если знаешь как сделать,подскажи пожалуйста.

underwoker
22.06.2014, 02:56
30 сек я взял для проверки, будет 10 минут, если знаешь как сделать,подскажи пожалуйста.
Попробуй таймер в таймере.

Mexanizm
22.06.2014, 15:03
Попробуй таймер в таймере.

Что прости ?



#define TIMER_RESET 30 // 30 повторений, после этого всё поновой

SetTimer("Timer", 1000, true);

forward Timer();
public Timer()
{
static timer = TIMER_RESET; // timer будет доступна ТОЛЬКО в пределах Timer()
timer--;
printf("Осталось %d секунд(а)",timer);
if(timer <= 0)timer = TIMER_RESET;
// ДАЛЕЕ КОД таймера
return 1;
}

Таймер буде вызывать функцию каждую секунду. С помощью переменной timer будет вестись подсчёт секунд и вывод в лог сервера.
Это было нужно ?

Spectrum
22.06.2014, 15:13
Попробуй таймер в таймере.

я б так же сделал

DeimoS
22.06.2014, 15:15
Что прости ?



#define TIMER_RESET 30 // 30 повторений, после этого всё поновой

SetTimer("Timer", 1000, true);

forward Timer();
public Timer()
{
static timer = TIMER_RESET; // timer будет доступна ТОЛЬКО в пределах Timer()
timer--;
new str[25];
format(str, sizeof(str), "Осталось %d секунд(а)",timer);
print(str);
if(timer <= 0)timer = TIMER_RESET;
// ДАЛЕЕ КОД таймера
return 1;
}

Таймер буде вызывать функцию каждую секунду. С помощью переменной timer будет вестись подсчёт секунд и вывод в лог сервера.
Это было нужно ?

Для чего format в printf? :D Форматируем строку и помещаем в функцию, которая опять форматирует строку

С gettime() будет попроще

UPD:
/
/Глобальная переменная
new store_the_timer;


//Таймер
SetTimer("Public", 1000*600, false);// В секунде 1000 миллисекунд, поэтому 600 умножаем на 1000 и таймер сработает через 600 секунд
store_the_timer = gettime()+600;


//И пример с выводом времени
if(store_the_timer > gettime()) printf("Таймер будет работать ещё %d секунд",store_the_timer-gettime());
else print("Таймер не запущен");

Как-то так

Mexanizm
22.06.2014, 15:22
Для чего format в printf? :D Форматируем строку и помещаем в функцию, которая опять форматирует строку

С gettime() будет попроще

UPD:
/
/Глобальная переменная
new store_the_timer;


//Таймер
SetTimer("Public", 1000*600, false);// В секунде 1000 миллисекунд, поэтому 600 умножаем на 1000 и таймер сработает через 600 секунд
store_the_timer = gettime()+600;


//И пример с выводом времени
if(store_the_timer > gettime()) printf("Таймер будет работать ещё %d секунд",store_the_timer-gettime());
else print("Таймер не запущен");

Как-то так
с форматом тупанул
А с кодом ниже это уже совсем другая реализация. Автор не уточнил как где и зачем будет запрашиваться время.

Mr.DeViLsS
23.06.2014, 18:37
Что прости ?



#define TIMER_RESET 30 // 30 повторений, после этого всё поновой

SetTimer("Timer", 1000, true);

forward Timer();
public Timer()
{
static timer = TIMER_RESET; // timer будет доступна ТОЛЬКО в пределах Timer()
timer--;
printf("Осталось %d секунд(а)",timer);
if(timer <= 0)timer = TIMER_RESET;
// ДАЛЕЕ КОД таймера
return 1;
}

Таймер буде вызывать функцию каждую секунду. С помощью переменной timer будет вестись подсчёт секунд и вывод в лог сервера.
Это было нужно ?
примерно это.. только нужно чтобы при вводе команды эти секунды писали

Mexanizm
24.06.2014, 03:14
примерно это.. только нужно чтобы при вводе команды эти секунды писали

выведи текст в команде


new string[30];
format(string,30, "Таймер через %d секунд",10-(gettime() - timer_time));
SendClientMessage(playerid, COLOR_ORANGE, string);


SetTimer("Timer", 10000, true);

new timer_time = 0;

forward Timer();
public Timer()
{
timer_time = gettime();
return 1;
}

Таймер выполнится раз в 10 секунд

Mr.DeViLsS
24.06.2014, 03:45
выведи текст в команде


new string[30];
format(string,30, "Таймер через %d секунд",10-(gettime() - timer_time));
SendClientMessage(playerid, COLOR_ORANGE, string);


SetTimer("Timer", 10000, true);

new timer_time = 0;

forward Timer();
public Timer()
{
timer_time = gettime();
return 1;
}

Таймер выполнится раз в 10 секунд
спасибо