Внизу более новая версия! Старую оставил для ознакомления с направлением движения мысли : )
Code: Select all
program taketarget;
var
  t1, t2: cardinal;
procedure taketarget;
  var
    cTime: tdatetime;
  begin
    // Отменяем старый таргет.
    if targetpresent then
      canceltarget
    else
      cancelwaittarget;
    // Выходим из батл стойки.
    if warmode then
      setwarmode(false);
    // Используем скилл для получения таргета.
    uosay('Укажите бегемота.');
    useskill('Remove Trap');
    
    // Ждем появления таргета.
    if NOT waitfortarget(15000) then begin
      addtosystemjournal('Превышен лимит ожидания появления цели. Повторите попытку.');
      exit;
    end;
    // Ждем указания цели.
    cTime := now;
    while targetpresent do begin
      wait(300);
      if cTime+(1.0/(24*60*4)) <= now then begin
        canceltarget;
        addtosystemjournal('Превышен лимит ожидания указания цели. Повторите попытку.');
        exit;
      end;
    end;
    // Присваиваем переменной ID цели.
    t1 := lasttarget;
    // Используем скилл для получения таргета.
    uosay('Укажите ягненка.');
    useskill('Remove Trap');
    
    // Ждем появления таргета.
    if NOT waitfortarget(15000) then begin
      addtosystemjournal('Превышен лимит ожидания появления цели. Повторите попытку.');
      exit;
    end;
    // Ждем указания цели.
    cTime := now;
    while targetpresent do begin
      wait(300);
      if cTime+(1.0/(24*60*4)) <= now then begin
        canceltarget;
        addtosystemjournal('Превышен лимит ожидания указания цели. Повторите попытку.');
        exit;
      end;
    end;
    // Присваиваем переменной ID цели.
    t2 := lasttarget;
  end;
begin
  taketarget;
  // Крутим и вертим цель как хотим.
  clickonobject(t1);
  checklag(15000);
  wait(100);
  addtosystemjournal(getname(t1));
  clickonobject(t2);
  checklag(15000);
  wait(100);
  addtosystemjournal(getname(t2));
end.Code: Select all
program taketarget;
var
  t1, t2: cardinal;
function taketarget(s: string; var t: cardinal): boolean;
  var
    cTime: tdatetime;
  begin
    // Отменяем старый таргет.
    if targetpresent then
      canceltarget
    else
      cancelwaittarget;
    // Выходим из батл стойки.
    if warmode then
      setwarmode(false);
    // Используем скилл для получения таргета.
    clientprint(s);
    useskill('Remove Trap');
    
    // Ждем появления таргета.
    if NOT waitfortarget(15000) then begin
      clientprint('Превышен лимит ожидания появления таргета. Повторите попытку.');
      addtosystemjournal('Превышен лимит ожидания появления таргета. Повторите попытку.');
      exit;
    end;
    // Ждем указания цели.
    cTime := now;
    while targetpresent do begin
      wait(300);
      if cTime+(1.0/(24*60*4)) <= now then begin
        canceltarget;
        clientprint('Превышен лимит ожидания цели. Повторите попытку.');
        addtosystemjournal('Превышен лимит ожидания цели. Повторите попытку.');
        exit;
      end;
    end;
    // Отмена таргета?
    if lasttarget = 0 then begin
      uosay('Таргет отменен.');
      addtosystemjournal('Таргет отменен.');
      exit;
    end;
    // Присваиваем переменной ID цели.
    t := lasttarget;
    result := true;
  end;
begin
  if NOT taketarget('Укажите слона.', t1) then
    exit;
  if NOT taketarget('Укажите слониху слону.', t2) then
    exit;
  // Крутим и вертим цель как хотим.
  clientprint('Цель 1 - $' + inttohex(t1, 8));
  addtosystemjournal('Цель 1 - $' + inttohex(t1, 8));
  clientprint('Цель 2 - $' + inttohex(t2, 8));
  addtosystemjournal('Цель 2 - $' + inttohex(t2, 8));
end.


