Защита от паровозов. Проверяем паровозеров вокруг нас.

Функция, которую Вы можете использовать в свои скриптах, для проверки, нет ли поблизости людей, которые пытаются Вас запоровозить.

В связи с очередным отрытием Classic серверов, думаю стоит вспомнить о проверке на то, что нас пытаются запоровозить.

uses SysUtils;

function CheckTrains(amount: integer = 5; R: integer = 1500): boolean;   
var i, j, count: integer;
begin
  result:= false;
  for i:= 0 to CharList.Count-1 do begin                                      // пробегаем по списку персонажей
    count:= 0;                                                                // обнуляем счетчик мобов, бегущих за персонажем
    if (User.DistTo(CharList.Items(i)) < R*1.5)                               // если i-ый персонаж в радуисе x1.5 от нас
    and (CharList.Items(i).Moved) then begin                                  // и он двигается, то
      for j:= 0 to NpcList.Count-1 do begin                                   // пробегаемся по списку мобов
        if (NpcList.Items(j).Target = CharList.Items(i))                      // если j-ый мобов держит в таргете i-го игрока
        and (not (NpcList.Items(j).Dead)                                      // и этот моб не мертв
        and (CharList.Items(i).DistTo(NpcList.Items(j)) < R)) then Inc(count);// и дистанция между i-ым игроком и j-ым мобом < R, то увеличиваем счетчик мобов
        if (count >= amount) then begin                                       // если счетчик мобов > кол-ва мобов, которое мы проверяем, то 
          result:= true;                                                      // присваиваем результат true
          Print('Замечен паровоз из '+IntToStr(count)+'+ мобов, бегут за '+CharList.Items(i).Name);     // печатаем информацию
          exit;                                                               // и выходим из функции
        end;
      end;
    end;
  end;
end;

begin
  while delay(555) do begin
    if (Engine.Status = lsOnline) then begin
      // прибегаем на спот, включаем интерфейс и тд
      
      if CheckTrains(4, 2000) then begin   // Если кто-то ведет паровоз из 4+ мобов в радиусе меньше 2к, то 
        // Отключаем интерфейс, делаем релог или предпринимаем другие меры 
      
      end;
    end;
  end;
end.