Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Добавление времени.
IceMeN Дата: Четверг, 26.04.2012, 20:20:37 | Сообщение # 1
Сообщений: 47
Репутация: 5 [ +/- ]
Какой командой или функцией можно узнать время, которое осталось до конца раунда?


Сообщение отредактировал IceMeN - Четверг, 26.04.2012, 22:58:43
 
_wS_ Дата: Четверг, 26.04.2012, 23:15:47 | Сообщение # 2
Code
new round_end_sec;

round_start
{
     round_end_sec = GetTime() + GetEventInt(event, "timelimit");
}

// Осталось до конца раунда:

new last_sec = round_end_sec - GetTime();
if (last_sec < 1)
{
     // время раунда вышло
}


Можно блокировать завершение раунда в событии CS_OnTerminateRound (об этом есть тема в уроках), и в нужный момент завершить его с помощью CS_TerminateRound. Можно таймер сделать:

Code
new Handle:RoundEndTimer;

round_start
{
     if (RoundEndTimer != INVALID_HANDLE) KillTimer(RoundEndTimer);
     RoundEndTimer = CreateTimer(float(GetEventInt(event, "timelimit")), RoundEndTimer_Func);
}

round_end
{
     if (RoundEndTimer != INVALID_HANDLE)
     {
         KillTimer(RoundEndTimer);
         RoundEndTimer = INVALID_HANDLE;
     }
}

public Action:RoundEndTimer_Func(Handle:timer, any:xz)
{
     // тут завершай раунд
     RoundEndTimer = INVALID_HANDLE;
}
 
IceMeN Дата: Четверг, 26.04.2012, 23:59:42 | Сообщение # 3
Сообщений: 47
Репутация: 5 [ +/- ]
Спасибо.

И еще что делает функция GetTime()?
Есть предположения, но решил переспросить... Данная функция возвращает время на сервере(на машине сервера)?
 
_wS_ Дата: Пятница, 27.04.2012, 00:37:09 | Сообщение # 4
Возвращает число секунд, прошедших с Эпохи Unix, которое растёт с каждой секундой (+1 сек)
Ой, я там с таймером ошибся немного, надо так:

Code
round_start
{
     if (RoundEndTimer != INVALID_HANDLE) KillTimer(RoundEndTimer);
     RoundEndTimer = CreateTimer(float(GetEventInt(event, "timelimit")), RoundEndTimer_Func);
}

round_end
{
     if (RoundEndTimer != INVALID_HANDLE)
     {
         KillTimer(RoundEndTimer);
         RoundEndTimer = INVALID_HANDLE;
     }
}
 
IceMeN Дата: Пятница, 27.04.2012, 08:01:04 | Сообщение # 5
Сообщений: 47
Репутация: 5 [ +/- ]
И еще.
Можно ли изменить это оставшееся время использую:
SetEventInt(event, "timelimit", 180);
 
_wS_ Дата: Пятница, 27.04.2012, 09:00:46 | Сообщение # 6
Скорее всего нет (попробуй в pre hook'е)
 
IceMeN Дата: Пятница, 27.04.2012, 15:53:58 | Сообщение # 7
Сообщений: 47
Репутация: 5 [ +/- ]
Но мне нужно добавить время прямо в этот раунд.
Или это невозможно?
 
_wS_ Дата: Пятница, 27.04.2012, 19:26:46 | Сообщение # 8
Я же тебе сказал, как это можно сделать (CS_OnTerminateRound и CS_TerminateRound), а само время внизу как изменить, я не знаю, надо искать, да и это не поможет.
 
  • Страница 1 из 1
  • 1
Поиск: