// функция движения по указанному маршруту
// path - массив вида [x1,y1,z1, x2,y2,z2, ...]
function PathMoveTo(path: array of integer): boolean;                
var i, start: integer;
begin
  result:= false;
  if (Length(path) >= 3) and (Length(path) mod 3 = 0) then begin   // сначала проверяем, что заданный маршрут задан корректно   
    start:= 0;                                                     // задаем индекс ближайшей точки по умолчанию - 0
    for i:= 0 to Length(path) do begin                             // пробегаемся по массивку координат
      if (i mod 3 <> 0) then continue;                             // работаем только с каждым 3им индексом (ищем координаты X)
      // если расстояние до текущей проверяемой точки < расстояния до точки, которую мы пометили как стартовую в маршруте, то
      // запоминаем текущую точку как новую стартовую точку
      if (User.DistTo(path[i], path[i+1], path[i+2]) < User.DistTo(path[start], path[start+1], path[start+2])) then start:= i;
    end;
  end else exit;                                                   // если массив координат некорректен, то сразу выходим
  
  for i:= start to Length(path)-1 do begin                         // теперь пробегаемся по маршруту начиная с ближайшей к нам точки и до конца
    if (i mod 3 <> 0) then continue;                               // работаем только с каждым 3им индексом (ищем координаты X)
    if (User.Dead) then exit;                                      // если мы мертвы - прекращаем выполнение функции
    result:= Engine.MoveTo(path[i], path[i+1], path[i+2]);         // двигаемся в координаты очередной точки маршрута
  end;
end;

var
  path_from_GK_to_NPC: array of integer = [108869, -173711, -579,  108592, -173446, -579,  108211, -173558, -579];

begin
  // в скрипте вызываем функцию либо явно подавая массив координат как аргумент:
  PathMoveTo([108869, -173711, -579,  108592, -173446, -579,  108211, -173558, -579,  107717, -173864, -488,  107704, -174198, -430,  108325, -174110, -436]);

  // либо используя заранее объявленную переменную:
  PathMoveTo(path_from_GK_to_NPC);
end.