Mator

[xEdit] [pascal] Get Objects In Radius

Nov 23rd, 2015
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.08 KB | None | 0 0
  1. unit UserScript;
  2.  
  3. const
  4.   sSignature = 'ACHR';
  5.   targetX = 74770.671875;
  6.   targetY = -59106.628906;
  7.   targetZ = 1301.145020;
  8.   fRadius = 8000.0;
  9.  
  10. var
  11.   sl: TStringList;
  12.  
  13. function Initialize: Integer;
  14. begin
  15.   sl := TStringList.Create;
  16. end;
  17.  
  18. function DistanceFromTarget(e: IInterface): Real;
  19. var
  20.   eX, eY, dX, dY: Real;
  21. begin
  22.   eX := StrToFloat(GetElementEditValues(e, 'DATA\Position\X'));
  23.   eY := StrToFloat(GetElementEditValues(e, 'DATA\Position\Y'));
  24.   dX := targetX - eX;
  25.   dY := targetY - eY;
  26.   Result := dX * dX + dY * dY;
  27. end;
  28.  
  29. function Process(e: IInterface): Integer;
  30. var
  31.   fDistance, fRadiusSq: Real;
  32.   npcRecord: IInterface;
  33. begin
  34.   if Signature(e) <> sSignature then
  35.     exit;
  36.   fDistance := DistanceFromTarget(e);
  37.   fRadiusSq := fRadius * fRadius;
  38.   if fDistance < fRadiusSq then begin
  39.     npcRecord := LinksTo(ElementByPath(e, 'NAME'));
  40.     sl.Add(Format('%s :: Distance = %0.3f',
  41.       [Name(npcRecord), Sqrt(fDistance)]));
  42.   end;
  43. end;
  44.  
  45. function Finalize: Integer;
  46. begin
  47.   sl.SaveToFile(sSignature+' Nearby.txt');
  48.   sl.Free;
  49. end;
  50.  
  51. end.
Advertisement
Add Comment
Please, Sign In to add comment