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

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

  • Страница 1 из 1
  • 1
Нужен ли CloseHandle()
Vitaminoz Дата: Вторник, 18.03.2014, 21:20:56 | Сообщение # 1
Сообщений: 141
Репутация: 1 [ +/- ]
Всем привет.
Есть код:
Код
...
public PlayerBlind(Handle:event, const String:name[], bool:dontBroadcast)
{
  new client = GetClientOfUserId(GetEventInt(event, "userid"));
  new client_team = GetClientTeam(client);
  new count_flash;
  if (client_team == CS_TEAM_CT)
  {
   if (!IsFakeClient(client))
   {
    SetEntPropFloat(client, Prop_Send, "m_flFlashMaxAlpha", 0.0);
    SetEntPropFloat(client, Prop_Send, "m_flFlashDuration", 0.0);
   }
  }
  else if (client_team == CS_TEAM_T)
  {
   SetEntityRenderMode(client, RENDER_TRANSCOLOR);
   SetEntityRenderColor(client, 0, 120, _, _);
   SetEntityMoveType(client, MOVETYPE_NONE);
   count_flash++;
   timer_freeze = CreateTimer(10.0, UnFrouzen_Function, client, TIMER_FLAG_NO_MAPCHANGE);
   if (count_flash == 1)
   {
    Freeze_Function(client);
   }
  }
}

Freeze_Function(client)
{
  for (new i_client = 1;i_client <= MaxClients; i_client++)
  {
   if (!IsClientInGame(i_client) || IsFakeClient(i_client))
   {
    continue;
   }
   else
   {
    EmitSoundToClient(i_client, "physics/glass/glass_impact_bullet4.wav", client);
   }
  }
}

public Action:UnFrouzen_Function(Handle:timer, any:client)
{
  static unfrouzen_count;
  if (GetEntityMoveType(client) == MOVETYPE_NONE)
  {
   SetEntityRenderMode(client, RENDER_NORMAL);
   SetEntityRenderColor(client, 255, 255, _, _);
   if (unfrouzen_count++ == 1)
   {
    Freeze_Function(client)
   }
  }
  timer_freeze = INVALID_HANDLE;
}

Не могу сам себя понять нужно ли делать в Call'Back таймере CloseHandle(timer_freeze) ?
 
ThRunningMan Дата: Среда, 19.03.2014, 21:44:46 | Сообщение # 2
Сообщений: 140
Репутация: 12 [ +/- ]
зачем в самом таймере CloseHandle, если только чтобы его закрыть по событию, например, конец раунда
 
_wS_ Дата: Четверг, 20.03.2014, 15:35:38 | Сообщение # 3
1. Не CloseHandle, а KillTimer
2. В самом таймере никогда этого делать не нужно, достаточно его остановить (return Plugin_Stop)

3. После того, как слепнет Т, ты делаешь timer_freeze = CreateTimer. Получается, если 10 Т сразу ослепли, запущено 10 таймеров, но ты в timer_freeze хранишь только последний = нет смысла. Тем более слепнуть игрок может часто, ты не останавливаешь прошлые таймеры, а просто запускаешь новые
 
  • Страница 1 из 1
  • 1
Поиск: