Как сделать так чтоб, определённая функция работала в определённое время?Например каждый день в 00.00
Обычно я проходил мимо данного вопроса, а тот что то меня зацепило и я решил попробовать реализовать первый пришедший в голову алгоритм.При загрузке плагина выполнять следующие действия:
- Получить время на сервере в требуемом формате ( часы, минуты секунды )
- Определить разницу между текущим временем и тем когда необходимо выполнить функцию.
- С помощью функции set_task задать задание с полученным ранее временем
Вот что у меня из этого вышло:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[http://amxxmodx.ru] Function call in exact time"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
server_print("^n^n^n^n^n")
new hour,minute,secound
//Задаем час и минуты для задания
new Fhour = 1,Fminute = 11
//Получение текущего времени
time(hour,minute,secound)
//Для наглядности вывод в консоль сервера
server_print("The Time: %dh. %dm. %ds.",hour,minute,secound)
//Сколько времени в секундах ( относительно суток )
new RealTimeSec = (hour*60*60)+(minute*60)+ secound
//Вычесляем сколько времени нужно до заданного
new TimeToStartFunc = (Fhour*60*60)+(Fminute*60) - RealTimeSec
//Вывод текущего времени и во сколько должна сработать функция
server_print("Time[%d:%d] - FStart[%d:%d], Time to start[%d]",hour,minute,Fhour,Fminute,TimeToStartFunc)
//Если время для задания положительное
if(TimeToStartFunc > 0){
//Преобразование целого числа в дробное ( необходимо для set_task)
new Float:sec = float(TimeToStartFunc)
//Задаем задание с необходимым времем
set_task(sec,"func",777)
}else{
server_print("Time passed")
}
server_print("^n^n^n^n^n")
}
public func(){
server_print("^n^n^n^n^n Hello http://amxxmodx.ru ^n^n^n^n^n^"")
}
В коде расставлены комментарии, и добавить мне особо нечего, кроме того что я не продумывал что будет при переходе 23:55 на 00:10
В теории все должно быть в порядке, но думаю что подводные камни могут быть.
Но цель урока не дать готовый вариант скрипта, а указать направление для собственных мыслей.
Если у вас возникли более здравые или интересные идеи пишите в комментариях, а может даже напишете свой урок.
Дерзайте!