Нужен опытный пользователь пилота. вот есть такой скрипт.
он с другой программы название ее l2 epic
// ------------- NPC helper functions -----------------
function IsAggrEnemy(Npc: TNpcClass): Boolean;
var
s: String;
begin
try
if Npc.Target = nil then
begin
Result:= False;
Exit;
end;
if Script.GetGuiCheck('cbAttackAggr') and (Npc.Target = SelfNpc) then
begin
Result:= True;
Exit;
end;
if Script.GetGuiCheck('cbAttackAggrParty') then
if PartyLst.GetById(Npc.Target.ObjectId) <> nil then
begin
Result:= True;
Exit;
end;
s:= #13#10 + Script.GetGuiText('edAutoPartyList') + #13#10;
Result:= Pos(#13#10 + LowerCase(Npc.Target.Name) + #13#10, s) > 0;
except
Result:= False;
end;
end;
function IsTargeted(Npc: TNpcClass): Boolean;
var
i: Integer;
fNpc: TNpcClass;
begin
try
if Npc.Target = SelfNpc then //если моб держит нас в таргете, идут все нафиг
begin
Result:= False;
Exit;
end;
for i:= 0 to NpcList.Count-1 do
try
fNpc:= NpcList.GetByInd(i);
if not fNpc.IsMob then
if not fNpc.IsDead then
if fNpc <> SelfNpc then
if not fNpc.IsMyParty then
if fNpc.Target = Npc then
if fNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) - 200 < SelfNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) then
begin
Result:= True;
Exit;
end;
except end;
except end;
Result:= False;
end;
procedure DoTarget(Npc: TNpcClass);
begin
try
if SelfNpc.Target = Npc then Exit; //уже у нас в таргете
Action(Npc.ObjectId, 0, 0, 0, 0); //1 - Shift, 0 - без
Sleep(150);
except end;
end;
procedure DoAttack(Npc: TNpcClass);
begin
try
if SelfNpc.Target <> Npc then DoTarget(Npc);
Action(Npc.ObjectId, 0, 0, 0, 0);
Sleep(50);
except end;
end;
var LastAngle: Double;
procedure DoWalkTo(Npc: TNpcClass);
var
zx,zy: Double;
Dist: Double;
begin
try
if SelfNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) > 10000 then Exit;
zx:= Npc.X;
zy:= Npc.Y;
//бежим зигзагом
if Script.GetGuiCheck('cbFarmWalkZZ') then
begin
Dist:= Npc.Distance * StrToIntDef(Script.GetGuiText('edFarmWalkZZ'), 50) / 100;
if Math.Random < 0.3 then LastAngle:= Math.Random*360;
zx:= Npc.X + Dist*Sin(LastAngle);
zy:= Npc.Y + Dist*Cos(LastAngle);
end;
MoveTo(zx, zy, Npc.Z);
except end;
end;
// --------------------------------------------------
// mobs targets
function MobsCountAround(Target: TNpcClass; Radius: Integer; AddAggred: Boolean): Integer;
var
i: Integer;
dist: Double;
npc: TNpcClass;
begin
Result:= 0;
for i:= 0 to NpcList.Count-1 do
try
npc:= NpcList.GetByInd(i);
if npc.IsMob then
if not npc.IsDead then
begin
dist:= npc.DistanceTo(Target.X, Target.Y, Target.Z);
if (dist <= Radius) or (AddAggred and IsAggrEnemY(npc)) then Inc(Result);
end;
except end;
end;
( хочу узнать. если ли возможность его переделать как то под сам пилот? и возможно-ли сделать что то подобное )