Бывают ситуации когда у спаринг партньоров очень мало скила Хилинг (например 50 - я не щитаю что это много) а так хочеться выбросить Ванды и взять в руки что-то более тяжолое...
 
 Ближе к делу
Скрипт позволяет вести спаринг между несколькими партнёрами одновременно, уникальным является то - что дерущиеся останавливаются - что бы подлечиться - если у кого то из них HP падают ниже критического уровня.
Скрипт тестировался в компании из трьох воинов, они атачили друг друга по кругу 1->2, 2->3, 3->1
И если вдруг у воина 2 HP палали ниже критического (тоесть сам заличить себя он уже не мог, или просто неуспевал) - то воин который его атачит - 1 приостанавливал атаку - и пытался помочь ему заличить раны (как настоящий друг
 ), но при этом - воин 3 никак не реагировал на это - и продолжал дубасить воина 1 Как это всё закручено?
 ), но при этом - воин 3 никак не реагировал на это - и продолжал дубасить воина 1 Как это всё закручено?   Увидите сами - или я подскажу позже
 Увидите сами - или я подскажу позже  
 Собственно сам скрипт
Code: Select all
Program Fight_Heal; 
var t : Integer; 
     self : cardinal;
     enemy : Cardinal; 
     red_line:boolean;   {TRUE - воин SELF готов драться}
     green_line:boolean; {TRUE - воин ENEMY готов драться}
     lifes_to_heal:cardinal;
     t1:TDateTime;
{$Include 'all.inc'} 
Begin 
{=======РЕДАКТИРОВАТЬ ЗДЕСЬ:============}
Self:=$00CF3CCF;  {наш воин  - START1, STOP1 - вот такие фразы говорит}
Enemy:=$00CF1782; {противник - START2, STOP2 - вот такие фразы говорит}
lifes_to_heal:=30;{скоко HP будим пытаться отхилить - это критический уровень}
{=======================================}
wait(10000);{10 сек задержки для старта скрипта для всех воинов}
t1:=now; {берём текущее время}
SetARStatus(true);
green_line:=false;{зелёная линия Выключена - противник не готов драться}
red_line:=false;  {красная линия Выключена - мы не готовы драться}
GetHP(self);      {обновляєм значение жизни (на всякий случай)}
Hungry(1,ground); {драться с пустым желудком?? нет уж!}
while not Dead do 
begin 
 if Connected then 
 begin 
  for t := 0 to 100 do 
  begin 
   if (red_line)and(green_line) then attack(enemy); {если мы и противник готовы - то дерёмся}
   if (red_line)and(HP<=MaxHP-lifes_to_heal) then {у нас критический уровень - говорим STOP чтоб прекратили драть нас :-D }
      begin UOSay('STOP1');   
             red_line:=false; 
             SetWarMode(false);
      end;
   if (not(red_line))and(MaxHP=HP) then begin UOSay('START1'); red_line:=true; SetWarMode(true); end;
   if InJournalBetweenTimes('STOP2',t1,now)>=0 then {противник говорит что он неготов драться, мы прекращаем его атачить}
      begin green_line:=false; 
             SetWarMode(false);
             t1:=now;
      end;
   if InJournalBetweenTimes('START2',t1,now)>=0 then {противник говорит что он готов драться - но драку начинать мы не спешим}
      begin green_line:=true; 
             SetWarMode(true);
             t1:=now;
      end;
   if not(red_line) then {если мы не готовы драться - лечим себя}
      begin UseObject(FindType($0E21,Ground));
             waittargetobject(self);
             wait(5000);
   end;
   if not(green_line) then {если противник не готов драться - лечим его}
      begin UseObject(FindType($0E21,Ground));
             waittargetobject(enemy); 
             wait(5000);
      end;
   wait(1000);
  end; 
  Hungry(1,ground); 
  end; 
end; 
End.


