Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 20:08   #11
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

здесь нужно хорошо обдумать сам алгоритм, мой первый вариант такой:
делаем таймер с интервалом в 1 сек...
+ есть переменная щетчик которая в событии таймера увеличиваетса на 1;
дальше когда клиент отсылает сообщение запоминаетса значение переменной щетчика, также нам нужен щетчик нажатия на кнопку, когда щетчик нажатия равент 3 проверяем различие между значением переменной которая запоминала значение щетчика и самим щетчиком если интервал оч мал отключаэм клиента попробуйте сами ето реализировать. не знаю будет ли работать, алгоритм придумал за 2 мин так что не уверен.
Pein95 вне форума Ответить с цитированием
Старый 24.06.2011, 20:34   #12
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TFormMain.AntiFlood;
begin
  if GetTickCount - LTime < 7000 then
    begin
      inc(BCount);
      // Три нажатия - два интервала < 7-ми секунд
      if BCount = 10 then
        begin
          BCount := 0;
          T := T + 1;

          if IntToStr(T) = '3' then
            begin
              Locked := True;
              SendRVEdit.Clear;
              SendRVEdit.Format;
              ChatView.AddTextFromNewLine('[' + TimeToStr(Now) + '] ', 1);
              ChatView.AddText('Автобан за флуд', 9);
              ChatView.Format;

              RVEChatAutoscroll;

              StatusBar1.Panels[0].Text := 'Автобан за флуд';

              // Отправляем команду автобана
              ClientSocket.Socket.SendText('30');

              // Сбрасываем счётчик
              T := 0;

              Exit;
            end;
          Exit;
        end;
    end
    else
    begin
      LTime := GetTickCount;

      // Счетчик сбрасываем не сразу два быстрых нажатия одно длинное и опять быстрое приведут к блокировке
      if BCount > 0 then dec(BCount);
    end;
end;
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен чат на php + ajax. Abuhamed Фриланс 3 24.01.2011 22:11
Нужен чат под wordpress (переделать ваш готовый или с нуля) U-uh Фриланс 6 04.10.2010 17:14
Нужен анти strcat Hichigo Общие вопросы C/C++ 1 04.08.2010 15:08