Нужен опытный пользователь пилота. вот есть такой скрипт. он с другой программы название ее 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;
( хочу узнать. если ли возможность его переделать как то под сам пилот? и возможно-ли сделать что то подобное )
|