Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

СПАРИНГ для НЮБАСИКОФФ

Only working scripts
Post Reply
Dr.Assassin
Neophyte
Neophyte
Posts: 14
Joined: 14.03.2005 12:46
Location: Ukraine
Contact:

СПАРИНГ для НЮБАСИКОФФ

Post by Dr.Assassin »

Лирика

Бывают ситуации когда у спаринг партньоров очень мало скила Хилинг (например 50 - я не щитаю что это много) а так хочеться выбросить Ванды и взять в руки что-то более тяжолое... 8)

Ближе к делу

Скрипт позволяет вести спаринг между несколькими партнёрами одновременно, уникальным является то - что дерущиеся останавливаются - что бы подлечиться - если у кого то из них HP падают ниже критического уровня.
Скрипт тестировался в компании из трьох воинов, они атачили друг друга по кругу 1->2, 2->3, 3->1
И если вдруг у воина 2 HP палали ниже критического (тоесть сам заличить себя он уже не мог, или просто неуспевал) - то воин который его атачит - 1 приостанавливал атаку - и пытался помочь ему заличить раны (как настоящий друг 8) ), но при этом - воин 3 никак не реагировал на это - и продолжал дубасить воина 1 Как это всё закручено? :?: Увидите сами - или я подскажу позже :P

Собственно сам скрипт

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.
P.S. незабывайте редактировать сообщения - которыми воины руководят своими напарниками - что б небыло ложных срабатываний на чужые сообщения!! (я говорю о фразах 'START1', 'STOP1', 'START2', 'STOP2')
May The Force Be With You!
Dr.Assassin
Neophyte
Neophyte
Posts: 14
Joined: 14.03.2005 12:46
Location: Ukraine
Contact:

Обновление :)

Post by Dr.Assassin »

НЕМНОГО ПОДПРАВЛЕН - И ОТЛИЧНО ПРОШОЛ ИСПЫТАНИЯ :P

Code: Select all

Program Fight_and_Heal; 
var t : Integer; 
     enemy : Cardinal; 
     red_line:boolean;   {TRUE - когда мы готовы к бою}
     green_line:boolean; {TRUE - когда наш противник готов к бою}
     lifes_to_heal:cardinal; {количество жизней что мы можем отхилять}
     t1:TDateTime;
     SIGNAL_TO_ATACKER_FOR_ATTACK:string;
     SIGNAL_TO_ATACKER_FOR_STOP_ATTACK:string;
     SIGNAL_FROM_ENEMY_FOR_ATTACK:string;
     SIGNAL_FROM_ENEMY_FOR_STOP_ATTACK:string;
     SIGNAL_FROM_ATACKER_FOR_ATTACK:string;
{$Include 'all.inc'} 

Begin 
{-------------------------------------}
Enemy:=$00CF1782; {ID Enemy   -START2, STOP2}
lifes_to_heal:=30;{скоко житух будим пытаться отхилить}
{ATACKER - тот, кто атакует нас}
{ENEMY - тот, кого атакуем мы}
SIGNAL_TO_ATACKER_FOR_ATTACK     :='START1'; {сигнал для Атакера что б он Атаковал нас}
SIGNAL_TO_ATACKER_FOR_STOP_ATTACK:='STOP1';  {сигнал для Атакера что б он прекратил нас Атачить}
SIGNAL_FROM_ENEMY_FOR_ATTACK     :='START2'; {сигнал от Енеми, что можно его Атачить}
SIGNAL_FROM_ENEMY_FOR_STOP_ATTACK:='STOP2';  {сигнал от Енеми, что б перестать его Атачить}
SIGNAL_FROM_ATACKER_FOR_ATTACK    :='START3'; {сигнал от Атакера, что он просто готов драться}
{-------------------------------------}
t1:=now;
wait(10000);{10 секунд ожидания старта всех скриптов для воинов}
SetARStatus(true); 
green_line:=false;{зелёная линия - выключена}
red_line:=false;  {красная линия - выключена}
GetHP(self);      {обновляєм значение количества HP}
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 begin UOSay(SIGNAL_TO_ATACKER_FOR_STOP_ATTACK);  
               red_line:=false; 
               SetWarMode(false);
        end;
   if (not(red_line))and(MaxHP=HP) 
   then begin UOSay(SIGNAL_TO_ATACKER_FOR_ATTACK); 
               red_line:=true; 
               SetWarMode(true); 
         end;
   if InJournalBetweenTimes(SIGNAL_FROM_ENEMY_FOR_STOP_ATTACK,t1,now)>=0 
   then begin green_line:=false;
               SetWarMode(false);
               t1:=now;
         end;
   if InJournalBetweenTimes(SIGNAL_FROM_ENEMY_FOR_ATTACK,t1,now)>=0 
   then begin green_line:=true;
               SetWarMode(true);
               t1:=now;
         end;
   {если противник который должен нас атачить сообщил что он готов - 
    то мы повторим ему сигнал что нас можно атачить:}
   if (InJournalBetweenTimes(SIGNAL_FROM_ATACKER_FOR_ATTACK,t1,now)>=0) and (red_line)
   then begin UOSay(SIGNAL_TO_ATACKER_FOR_ATTACK); 
               t1:=now;
         end;
   if not(red_line) then begin
      UseObject(FindType($0E21,Ground)); {лечимся бинтами что на полу}
      waittargetobject(self);
      wait(5000);
   end else begin
      {если полно здоровья - юзаем скил Анатомия на противника}       
      UseSkill('Anatomy');     
      waittargetobject(enemy);
      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. 
May The Force Be With You!
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

А теперь подумай, что будет если рядом с домом, где у тебя дерутся чары, встанет какой-нибудь приколист и начнет кричать:
"START1", "START2", "START3"?

Так что, во избежание, введи еще проверку сериала чара, сказавшего нужную фразу.
Dr.Assassin
Neophyte
Neophyte
Posts: 14
Joined: 14.03.2005 12:46
Location: Ukraine
Contact:

:)

Post by Dr.Assassin »

Здравствуй Edred!!

Очень рад встречи с такой легендарной личностью как ты!!

Ты прав нащёт того - что командуя START1,START2...
можно руководить воинами - разрешая атаковать противника,
но если воин сам неготов драться (из-за низкого HP) - в драку он неполезет!

А командуя STOP1,STOP2... - бывает полезно
остановить воинов - что бы, например, зайти уоклиентом и
одеть им армор, или другое оружие, или выбросить кровавые бинты
(кстати - нужно добавить что б они выбрасывали эти самые бинты
сами, на кучку, и умели брать оружие - если предидущее сломалось
из-за варварского к нему отношения :P )

Но в основном замечание в точку, и для прокачки чаров - устойчивой
к неблагожелательной социальной обстановке - будет полезно!
Обязательно над этим помедитирую!

Мерси! :wink:
May The Force Be With You!
Post Reply