В связи с очередным отрытием 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.