oleg_nelasy
Участник
- Сообщения
- 664
- Реакции
- 46
Есть код.
При отключении игрока
Или можно так?
if(g_hTaimer[iClient])
delete g_hTaimer[iClient];
Тут вроде как все понятно и правильно:
public Action Event_Activate(Handle hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
Создаем таймер если его нет
if(!g_hTaimer[iClient])
g_hTaimer[iClient] = CreateTimer(g_fTaimer, TimerConnectTeam, GetClientUserId(iClient));
}
public Action TimerConnectTeam(Handle timer, any iClient)
{
UnTimerConnectTeam(iClient, true);
}
stock void UnTimerConnectTeam(int iClient, const bool timer = false)
{
if(!(iClient = GetClientOfUserId(iClient)) || !g_hTaimer[iClient])
return;
if(GetClientTeam(iClient) == CS_TEAM_NONE)
ChangeClientTeam(iClient, CS_TEAM_SPECTATOR);
После отработки кода удаляю таймер
if(timer) g_hTaimer[iClient] = null;
else if(g_hTaimer[iClient]) delete g_hTaimer[iClient];
}
При отключении игрока
C-подобный:
public void OnClientDisconnect(int iClient)
{
Насколько я понял тут должна быть проверка если таймер есть
И выглядеть она должна так if(g_hTaimer[iClient])?
а в текушем варианте получается если таймера нет?
if(!g_hTaimer[iClient])
{
Тут удаление таймера?
g_hTaimer[iClient] = null;
delete g_hTaimer[iClient];
}
}
Сообщения автоматически склеены:
Или можно так?
if(g_hTaimer[iClient])
delete g_hTaimer[iClient];