AMX MOD X
Вторник, 06.01.2026, 17:03:12



Приветствую Вас Гость | RSS
[ Главная ] [ сравнение времени - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
сравнение времени
AGPДата: Понедельник, 28.04.2008, 11:53:40 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Не в сети
Привет! нужна помощь в написании некоторого плагина. запоролся на сравнении времени, имею

Code
new hn[9], mn[9]
       get_time("%H", hn, 9)
       get_time("%M", mn, 9)

       new Result:res = dbi_query(sql, "SELECT `he`, `me`, `mail` FROM `rcon` WHERE `approved` = '1' ORDER BY `date`, `hs`, `ms` LIMIT 1")
       new he[32], me[32], mail[32]
       dbi_result(res,"he", he, 32)
       dbi_result(res,"me", me, 32)
             
       if (equal(he,hn)) {
        if (equal(me,mn)){       
         ....
         }

таким образом мы сравниваем время точь в точь, каким образом я могу проверить, что hn уже больше he? тоесть
если ((he==hn) или (he < hn))...
заранее спасибо, и извените за глупый вопрос.


Сообщение отредактировал AGP - Понедельник, 28.04.2008, 11:55:40
 
DaTaДата: Понедельник, 28.04.2008, 12:19:58 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Скажи, для чего ты это используешь? Может тебе во все не нужно это.

Quote
get_time("%H", hn, 9)
get_time("%M", mn, 9)
new he[32], me[32]
dbi_result(res,"he", he, 32)
dbi_result(res,"me", me, 32)

Последний параметр - максимальная длинна, в которую можно что-то вписать. Так как последний символ обязательно должен быть нулевым '\0'(при инициализации массива сначала все символы нулевые), то тебе нужно брать на 1 меньше, чем размер массива, т.е. get_time("%M", mn, 8), еще удобная форма - get_time("%M", mn, sizeof mn - 1)

Quote
if (equal(he,hn)) {
if (equal(me,mn)){

Используй if( equal(he,hn) || equal(me,mn) ) {, читабельнее. Так как функция с запросом в БД вызывается редко, я надеюсь, то тут подобная оптимизация не обязательна.

Ну и напоследок я бы тебе рекомендовал использовать(amxmodx.inc):

Code
/* Returns system time in seconds elapsed since 00:00:00 on January 1, 1970.  
* Offset is given in seconds.*/
native get_systime(offset = 0);

Например, проверить, время в из запроса с базы данных находится в пределах 60ти секунд от текущего?
Code

//bd_time - время из результата БД
if(  get_systime() - bd_time < 60  ) {
 
AGPДата: Понедельник, 28.04.2008, 19:22:55 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Не в сети
спасибо, что помогаешь нубу.
первый вариант пробывал, сервер пишет такую бяку:
Quote

pipes.cpp (484) : Assertion Failed: bRet
pipes.cpp (536) : Assertion Failed: bRet
steamclient.cpp (371) : Assertion Failed: pClientPipe->BWriteAndReadResult( buf, bufRet )
steamclient.cpp (373) : Assertion Failed: bufRet.TellPut() == ( sizeof(HSteamUser) + sizeof(uint8) )

второй мне больше понравился, но не понял, в каком формате должно время в мускуле лежать. куча секунд должна быть?
въехал, вопросов больше не имею(пока). спасибо!


Сообщение отредактировал AGP - Понедельник, 28.04.2008, 21:21:33
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026