xtance
Участник
- Сообщения
- 513
- Реакции
- 743
Хочу создать повторяющийся таймер, который будет автоматически убиваться на следующем раунде.
Делаю указатель :
Ловлю начало раунда :
Убиваю таймер и начинаю его заново :
Но в итоге таймер так и остаётся и не убивается. =(
Что в этом коде не так. Сижу уже пятый час, прочитал все темы об этих таймерах, что были.
--- Добавлено позже ---
Придумал костыль. Как вы думаете, вредит ли такое серверу? Но вообще, мне бы хотелось разобраться до конца, как же работать с таймерами.
Оффтоп
public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
ServerCommand("sm plugins reload pluginName");
}
Делаю указатель :
C-подобный:
new Handle:hTimerDecider;
Ловлю начало раунда :
C-подобный:
public void OnPluginStart()
{
HookEvent("round_start", Event_RoundStart, EventHookMode_Post);
}
Убиваю таймер и начинаю его заново :
C-подобный:
public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
PrintToConsoleAll("Начался новый раунд");
if (hTimerDecider != INVALID_HANDLE)
{
PrintToConsoleAll("Сейчас будем убивать таймер");
KillTimer(hTimerDecider); //Почему-то таймер таки не убивается
hTimerDecider = INVALID_HANDLE;
}
hTimerDecider = CreateTimer(3.0, rTimerDecider, _, TIMER_REPEAT);
return Plugin_Handled;
}
public Action rTimerDecider(Handle timer)
{
static int iTimerCounter = 0;
if (iTimerCounter == 10)
{
iTimerCounter = 0;
hTimerDecider = INVALID_HANDLE;
return Plugin_Stop;
}
iTimerCounter++;
PrintToConsoleAll("Таймер сработал %i раз", iTimerCounter);
return Plugin_Continue;
}
Но в итоге таймер так и остаётся и не убивается. =(
Что в этом коде не так. Сижу уже пятый час, прочитал все темы об этих таймерах, что были.
--- Добавлено позже ---
Придумал костыль. Как вы думаете, вредит ли такое серверу? Но вообще, мне бы хотелось разобраться до конца, как же работать с таймерами.
Оффтоп
public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
ServerCommand("sm plugins reload pluginName");
}
Последнее редактирование: