uses SysUtils;
function Tranced(Obj: TL2Live): boolean;
begin
result:= (Obj.AbnormalID = 128);
end;
function Attacked_By_Party(Obj: TL2Live): boolean;
var i: integer;
begin
result:= false;
for i:= 0 to Party.Chars.Count-1 do begin
if (Party.Chars.Items(i).AtkOID = Obj.OID) then begin
result:= true;
break;
end;
end;
end;
function Mob_Attack_Party(Obj: TL2Live): boolean;
var i: integer;
begin
result:= false;
for i:= 0 to Party.Chars.Count-1 do begin
if (Obj.Target = Party.Chars.Items(i)) then begin
result:= true;
break;
end;
end;
end;
procedure Trace_All_Mobs(R: integer = 300);
var i: integer;
begin
for i:= 0 to NpcList.Count-1 do begin
if (NpcList(i).Attackable)
and (User.DistTo(NpcList(i)) < R)
and (not Attacked_By_Party(NpcList(i)))
and (Mob_Attack_Party(NpcList(i)))
and (not Tranced(NpcList(i))) then begin
if Engine.SetTarget(NpcList(i)) then delay(555);
if Engine.UseSkill('Транс') then delay(555);
end;
end;
end;
begin
while delay(9999) do Trace_All_Mobs(200);
end.
Примерно так по ТЗ от
@BreadfanLock
вот только не помню точно, что возвращает AtkOID - возможно эту проверку нужно будет изменить чуток