Бывают ситуации когда у спаринг партньоров очень мало скила Хилинг (например 50 - я не щитаю что это много) а так хочеться выбросить Ванды и взять в руки что-то более тяжолое...
Ближе к делу
Скрипт позволяет вести спаринг между несколькими партнёрами одновременно, уникальным является то - что дерущиеся останавливаются - что бы подлечиться - если у кого то из них HP падают ниже критического уровня.
Скрипт тестировался в компании из трьох воинов, они атачили друг друга по кругу 1->2, 2->3, 3->1
И если вдруг у воина 2 HP палали ниже критического (тоесть сам заличить себя он уже не мог, или просто неуспевал) - то воин который его атачит - 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.