Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 4
    Гостей: 2
    Пользователи: - отсутствуют
    Роботы: Google Bot, crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 10-07-2012, 01:25 Просмотров: 6567

    Урок 18. Вызов функции в определенный час дня.

    Несколько раз я натыкался на вопросы вроде:
    Как сделать так чтоб, определённая функция работала в определённое время?Например каждый день в 00.00
    Обычно я проходил мимо данного вопроса, а тот что то меня зацепило и я решил попробовать реализовать первый пришедший в голову алгоритм.

    При загрузке плагина выполнять следующие действия:
    1. Получить время на сервере в требуемом формате ( часы, минуты секунды )
    2. Определить разницу между текущим временем и тем когда необходимо выполнить функцию.
    3. С помощью функции 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
    В теории все должно быть в порядке, но думаю что подводные камни могут быть.
    Но цель урока не дать готовый вариант скрипта, а указать направление для собственных мыслей.

    Если у вас возникли более здравые или интересные идеи пишите в комментариях, а может даже напишете свой урок.
    Дерзайте!
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Урок 18. Вызов функции в определенный час дня.
    L4D2

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Может кто помочь , хотелось бы не по времени функцию задать, а по дате и времени. ?
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    http://amxxmodx.ru/core/amxmodxinc/214-get_time-funkciya-poluchaet-vremyadatu-v-neobhodimom-formate.html

    Дерзай.

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама