1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

время

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Gh0st_one, 5 сен 2010.

  1. Gh0st_one Знакомый модера

    Сообщения:
    35
    Спасибы:
    0
    Сборка бота GHost:
    Ghost one 1.7.266
    Люди как добавить команду !time (показывает текущее время) ? компилировать я умею тока незнаю какой код надо добавить. ???
  2. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    хм прикольная команда будет :)
  3. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    В боте реализовывается как
    Код:
    GetTime()
    Но можно сделать самому.
  4. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Код:
    				if( Command == "time" || Command == "t" )
    				{
    
    	struct tm * timeinfo;
    	char buffer [80];
    	string sDate;
    	time_t Now = time( NULL );
    	timeinfo = localtime( &Now );
    	strftime (buffer,80,"Time: %H:%M:%S Date: %d %B %Y (By RwC)",timeinfo);  
    	sDate = buffer;
    						QueueChatCommand(sDate, User, Whisper);
    				}
  5. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Вообще есть такой стандартный замечательный файл как time.h, его инклуд закомментирован, но с ним можно намного интересней сделать функцию даты, вплоть до русских названий дней недели, вот код:
    Код:
      #include <stdio.h>
      #include <string.h>
      #include <time.h>
    
      int main(void)
      {
         struct tm t;
         char str[80];
    
         /* sample loading of tm structure  */
    
         t.tm_sec    = 1;  /* Seconds */
         t.tm_min    = 30; /* Minutes */
         t.tm_hour   = 9;  /* Hour */
         t.tm_mday   = 22; /* Day of the Month  */
         t.tm_mon    = 11; /* Month */
         t.tm_year   = 56; /* Year - does not include century */
         t.tm_wday   = 4;  /* Day of the week  */
         t.tm_yday   = 0;  /* Does not show in asctime */
         t.tm_isdst  = 0;  /* Is Daylight SavTime; does not show in asctime */
     
         /* converts structure to null terminated string */
    
         strcpy(str, asctime(&t));
         printf("%s\n", str);
    
         return 0;
      }
    Кто разбираются - те поймут что надо и как изменить, кто не разбирается - постигайте дальше азы с++ и попытайтесь сделать вывод дней недели в боте хотябы на англ, входит в базовые знания с++
  6. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Тихо. Весь народ распугаешь. Название месяца (на англ. кстати, например при бане юзера) можно изменить только в либах подлкючаемых к VS C++ ...
    Вот вопрос. Есть исходники либов?
  7. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Localization Demonstration
    The boost::date_time library provides the ability to create customized locale facets. Date ordering, language, seperators, and abbreviations can be customized.
    Код:
     /* The following shows the creation of a facet for the output of 
       * dates in German (please forgive me for any errors in my German --
       * I'm not a native speaker).
       */
    
      #include "boost/date_time/gregorian/gregorian.hpp"
      #include <iostream>
      #include <algorithm>
    
      /* Define a series of char arrays for short and long name strings 
       * to be associated with German date output (US names will be 
       * retrieved from the locale). */
      const char* const de_short_month_names[] = 
      {
        "Jan", "Feb", "Mar", "Apr", "Mai", "Jun",
        "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "NAM" 
      };
      const char* const de_long_month_names[] =
      {
        "Januar", "Februar", "Marz", "April", "Mai",
        "Juni", "Juli", "August", "September", "Oktober",
        "November", "Dezember", "NichtDerMonat"
      };
      const char* const de_long_weekday_names[] = 
      {
        "Sonntag", "Montag", "Dienstag", "Mittwoch",
        "Donnerstag", "Freitag", "Samstag"
      };
      const char* const de_short_weekday_names[] =
      {
        "Son", "Mon", "Die","Mit", "Don", "Fre", "Sam"
      };
    
    
      int main() 
      {
        using namespace boost::gregorian;
       
        // create some gregorian objects to output
        date d1(2002, Oct, 1);
        greg_month m = d1.month();
        greg_weekday wd = d1.day_of_week();
        
        // create a facet and a locale for German dates
        date_facet* german_facet = new date_facet();
        std::cout.imbue(std::locale(std::locale::classic(), german_facet));
    
        // create the German name collections
        date_facet::input_collection_type short_months, long_months, 
                                          short_weekdays, long_weekdays;
        std::copy(&de_short_month_names[0], &de_short_month_names[11],
                  std::back_inserter(short_months));
        std::copy(&de_long_month_names[0], &de_long_month_names[11],
                  std::back_inserter(long_months));
        std::copy(&de_short_weekday_names[0], &de_short_weekday_names[6],
                  std::back_inserter(short_weekdays));
        std::copy(&de_long_weekday_names[0], &de_long_weekday_names[6],
                  std::back_inserter(long_weekdays));
    
        // replace the default names with ours
        // NOTE: date_generators and special_values were not replaced as 
        // they are not used in this example
        german_facet->short_month_names(short_months);
        german_facet->long_month_names(long_months);
        german_facet->short_weekday_names(short_weekdays);
        german_facet->long_weekday_names(long_weekdays);
        
        // output the date in German using short month names
        german_facet->format("%d.%m.%Y");
        std::cout << d1 << std::endl; //01.10.2002
        
        german_facet->month_format("%B");
        std::cout << m << std::endl; //Oktober
        
        german_facet->weekday_format("%A");
        std::cout << wd << std::endl; //Dienstag
    
    
        // Output the same gregorian objects using US names
        date_facet* us_facet = new date_facet();
        std::cout.imbue(std::locale(std::locale::classic(), us_facet)); 
    
        us_facet->format("%m/%d/%Y");
        std::cout << d1 << std::endl; //  10/01/2002
        
        // English names, iso order (year-month-day), '-' separator
        us_facet->format("%Y-%b-%d");
        std::cout << d1 << std::endl; //  2002-Oct-01
        
        return 0;
    
      }
    Найти можете у себя на компе по адресу
    file://localhost/D:/boost_1_41_0/doc/html/date_time/examples.html#date_time.examples.localization
    Вместо D:/boost_1_41_0 ваш путь до буста
  8. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Либов исходники есть у всех, в инете даже есть инструкция по компиляции буста =)
    Можно сделать самому, не обязательно исходники либ менять, сделать соответствие, к примеру так (с исходника выложеного на пару постов выше)
    Считываем значение t.tm_wday /* День недели */ например если t.tm_wday = 1 то t.tm_wday = "понедельник" и так по всем дням недели, только единственное у америкосов 1 = воскресенью вроде а 7 субботе =)
  9. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Отсчет начинается с нуля а не с 1.
  10. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    А, да =))) 0 - воскр 1-понед 6-суббота
  11. Gh0st_one Знакомый модера

    Сообщения:
    35
    Спасибы:
    0
    Сборка бота GHost:
    Ghost one 1.7.266
    так вы напишите что где добавлять ???
  12. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    это засовываеш в bnet.cpp строка ~5835 сразу после
    Код:
    				if( Command == "version" || Command == "v" )
    				{
    					if( IsAdmin( User ) || IsRootAdmin( User ) )
    						QueueChatCommand( m_GHost->m_Language->VersionAdmin( m_GHost->m_Version ), User, Whisper );
    					else
    						QueueChatCommand( m_GHost->m_Language->VersionNotAdmin( m_GHost->m_Version ), User, Whisper );
    				}
    зы: в строке strftime (buffer,80,"Time: %H:%M:%S Date: %d %B %Y (By RwC)",timeinfo);
    (By RwC) можеш удалить
    зыы:команды пашут на канале или в личку боту
  13. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Нет не можешь :D
  14. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Вот последний вариант.

    Код:
    				//
    				// !Time
    				// !T
    				//
    
    				if( Command == "time" || Command == "t" )
    				{
    				
    
    						struct tm * timeinfo;
    						char buffer [150];
    						string sDate;
    						time_t Now = time( NULL );
    						timeinfo = localtime( &Now );
    						strftime (buffer,150,"Local time %H:%M:%S Local date: %d %B %Y",timeinfo);  
    						sDate = buffer;
    						QueueChatCommand(sDate, User, Whisper);
    				}
    
    Bum нравится это.
  15. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    лучше уже server time или bot time так как команда доступна не только для владельца бота, а для них твоё время не будет "локальным".
  16. Bum Наш человек

    Сообщения:
    36
    Спасибы:
    1
    Дата начала использования бота:
    01.01.2015
    Как сделать чтоб команда работала в лобби и в игре . Добавление самого бота в лобби как fakeplayer на 12 слоте не интересно .