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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 8-12-2011, 13:31 Просмотров: 9043

    get_time Функция получает время/дату в необходимом формате

    В современном мире без времени ни куда, оно на столько важно и дорого стоит, что на заводах высчитывают сколько необходимо времени рабочему на совершение той или иной операции, разумеется в любимейшей игре Counter-Strike время очень важно и для его получения есть разные функции, на этот раз рассмотрим функцию get_time, ее отличительная особенность заключается в том, что результат ее работы мы можем удобно корректировать. То есть получить только количества секунд или день недели, а может сразу все данные, главное не забыть увеличить размер массива, куда будут записываться полученные данные.

    Инфо из amxmodx.inc:
    /* Returns time in given format. The most popular is: "%m/%d/%Y - %H:%M:%S". */
    native get_time(const format[],output[],len);


    Синтаксис:
    get_time ( const format[],output[],len )

    • const format[] - Задается формат в котором хотим получить время.
      • %a сокращенное имя дня недели (Sun)
      • %A полное название дня недели (воскресенье)
      • %b сокращенное имя месяца (Dec)
      • %B полное имя месяца (December)
      • %c Дата и время (2 December 6:55:15 1979)
      • %d День месяца(сегодняшнее число) (02)
      • %H Час 24-часового дня (06)
      • %I Час 12-часового дня (06)
      • %j День года, от 001 (365)
      • %m Месяц года, от 01 (12)
      • %M Сколько минут в данный момент (55)
      • %p индикатор AM/PM
      • %S сколько секунд (15)
      • %U Какая неделя по счету (от НГ)(по воскресеньям) (48)
      • %w День недели в числах ( вторник - 2)
      • %W Какая неделя по счету (от НГ)(по понедельникам) (47)
      • Дата %x (2 Dec 1979)
      • Время %X (6:55:15)
      • Год %y столетия, от 00 (79)
      • Год %Y тысячелетия (1979)
    • output[] - Массив куда записывается результат
    • len - Максимальная длина массива


    Тип функции:
    Native

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>

    #define PLUGIN "[amxmodx.inc] get_time"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        register_concmd("real_time","f_real_time")
    }
    public f_real_time(id){
        
        new CurrentTime[32]
        get_time("%H:%M:%S",CurrentTime,31)
        server_print("The current time is: %s",CurrentTime)
        //The current time is: 13:28:52

        get_time("%m/%d/%Y - %H:%M:%S",CurrentTime,31)
        server_print("The current time is: %s",CurrentTime)
        //The current time is: 11/29/2011 - 13:28:52
        
        get_time("%X",CurrentTime,31)
        server_print("The current time is: %s",CurrentTime)
        //The current time is: 13:28:52
        
        get_time("%x",CurrentTime,31)
        server_print("The current date is: %s",CurrentTime)
        //The current date is: 11/29/11
    }


    Описание:
    Функция работает с числами и символами, по этому будем работать в консоли сервера.
    Все варианты я уж не стану приводить, принцип работы везде один и тот же.

    Нужен новый массив в который получается текущее время (год, минута , секунда, что вам нужно), последним аргументом идет максимальная длина, ставьте ее на 1 меньше чем подготовленный массив.
    Самое интересное происходит в первом аргументе функции, там и задается формат в котором будет получено время.
    Можно получить отдельно день или секунду, час или год - все что вам взбредет в голову касаемо даты.

    В примере ниже каждого вывода сообщения с датой, вставлен результат работы.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    lenarsaitov

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

    Большое спасибо !smile
    merlinwarwar

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

    Здраствуйте.
    Я хочу сделать Вип плагин, но у меня небольшая проблемка.
    Например на сервере будет введена продажа вип-статуса на месяц.
    Я хочу что бы випу писалось сколько времени осталось до окончания .

    Например: У вас осталось 17 дней!.
    Admin

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

    Это тебе нужно получать время в секундах до конкретной даты
    Вычитать из него текущее
    Из получившегося числа выделять целые дни и их уже показывать.

    Но это делается с помощью функции get_gametime
    --------------------
    merlinwarwar

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

    Не могли бы вы написать небольшой пример ?
    Admin

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

    Нет, так как это не относится ни к теме и уж точно не в комментариях это пишется.
    И на форумах это много раз обсуждалось, ищи.
    --------------------
    maine

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

    А как можно сравнивать значение времени? мне нужно определить ночь и день. Как это можно сделать?
    Admin

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

    А как бы ты сравнил не кодом?
    наверное так: с 21 часа до 03 утра это ночь, верно?
    ну так и берешь формат по часовой
    %H Час 24-часового дня (06)

    и сравниваешь полученное значение с необходимым диапазоном.
    --------------------
    maine

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

    Я так и делал, только вот проблема, видимо нули мешают.
    Admin

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

    а в чем проблема сделать так:
    if( (21 <= num <= 24) || ( 00 <= num <= 3 ) ){


    }
    --------------------
    demondzr

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

    if( (num >= 21 ) || (num <= 3 ) ){

    }

    Так тоже сойдет =)

    Информация

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

Реклама