Перейти к содержанию
Форум шарда Middle-Earth
Авторизация  
Гость MEdition

Спаринг [Injection]

Рекомендуемые сообщения

Гость MEdition

Запускаем на 1м чаре наводим таргет на противника. На 2м тоже самое.

Если в руке и бекпаке одинаковое оружие, то при поломке будет хватать из пака.

Кушают жареную рыбку.

Кладём в бекпак побольше бинтов.

Как остаётся мало хп - чары расходятся и вылечиваются.

 

 

##################### MIDDLE-EARTH.RU ##########################
sub Sparring() 
   var oppHpThreshold = 50/100   #порог хп оппонента, при котором отходить 
   var selfHpThreshold = 50/100  #порог своего хп, при котором отходить 

   uo.AddObject('opponent') 
   while uo.targeting() 
      wait(100) 
   wend 
    
   var done = 0 
   var oppHpLow = 0 
   var selfHpLow = 0 
   var selfX = uo.GetX() 
   var selfY = uo.GetY() 
   var oppX = uo.GetX('opponent') 
   var oppY = uo.GetY('opponent') 
   var dx = oppX - selfX 
   var dy = oppY - selfY 
    
   var Rhand = uo.GetGraphic(uo.ObjAtLayer('Rhand')) #тип объекта в правой руке (0x0000 если пусто) 
   var Lhand = uo.GetGraphic(uo.ObjAtLayer('Lhand')) #тип объекта в левой руке (0x0000 если пусто) 

   uo.WarMode(1) 
   uo.Attack('opponent') 

   repeat 

      if (uo.GetHP('opponent') < uo.GetMaxHP('opponent') * oppHpThreshold) then 
         oppHpLow = 1 
      end if 

      if (uo.Life < uo.str * selfHpThreshold) then 
         selfHpLow = 1 
      end if 

      #если у кого-то мало хп, отходи и лечимся 
      if (oppHpLow or selfHpLow) then 
         Step(-dx, -dy) 
         uo.WarMode(0) 

         if (oppHpLow) then 
            HealOpponent() 
            oppHpLow = 0 
         end if 

         if (selfHpLow) then 
            HealSelf() 
            selfHpLow = 0 
         end if 
          
         Step(dx, dy) 
         uo.WarMode(1) 
         uo.Attack('opponent') 
      end if 
       
      wait(500) 
       
      #иногда на сейвах слетает вар 
      if (not uo.WarMode()) then 
         uo.WarMode(1) 
         uo.Attack('opponent') 
      end if 
       
      #если в правой руке не то, что было в самом начале, 
      #и если в самом начале там что-то было, пытаемся взять тоже самое 
      #если того-же самого нет, ставим флаг завершения 
       
      if (uo.GetGraphic(uo.ObjAtLayer('Rhand')) <> Rhand and Rhand <> '0x0000') then 
         uo.FindType(Rhand) 
         if (uo.FindCount()) then 
            uo.Equipt('Rhand', Rhand) 
            uo.print('Equip Rhand device') 
         else 
            done = 1 
            uo.print('no more Rhand devices') 
         end if 
      end if 

      #аналогично правой руке 
      if (uo.GetGraphic(uo.ObjAtLayer('Lhand')) <> Lhand and Lhand <> '0x0000') then 
         uo.FindType(Lhand) 
         if (uo.FindCount()) then 
            uo.Equipt('Lhand', Lhand) 
            uo.print('Equip Lhand device') 
         else 
            done = 1 
            uo.print('no more Lhand devices') 
         end if 
      end if 
       
      #проверка на дохлость 
      if (uo.GetHP('opponent') == 0 or uo.Life == 0) then 
         done = 1 
         uo.print('somebody is dead') 
      end if 
       
      #если бинты кончились, заканчиваем 
      if (uo.B == 0) then 
         done = 1 
         uo.print('no more bandages') 
      end if 
       
   until done 
    
   Step(-dx, -dy) 
   uo.WarMode(0) 
   uo.print('Done traning') 
     
end sub 

#--------------------------------------------- 
#вспомогательные функции 

Sub HealOpponent() 
   uo.print('heal opponent') 
   repeat 
      uo.waittargetobject('opponent') 
      uo.usetype('0x0E21') #бинты 
      wait(5000) 
   until uo.getHP('opponent') == uo.getMaxHP('opponent') 
   uo.print('opponent heal complete') 
end Sub 

Sub HealSelf() 
   uo.print('heal self') 
   repeat 
      uo.bandageself() 
      wait(5100) 
   until uo.Life == uo.STR 
   uo.print('self heal complete')
    uo.usetype(0x097B)
          wait(100)
end Sub 

Sub Step(dx, dy) 
   var direction 
   dim directions[9] 
   directions[1] = 8 
   directions[2] = 7 
   directions[3] = 4 
   directions[4] = 9 
   directions[5] = 5 
   directions[6] = 1 
   directions[7] = 6 
   directions[8] = 3 
   directions[9] = 2 
   var idx = (sign(dx) + 1) * 3 + (sign(dy) + 1) + 1 
    
   uo.AddStep(directions[idx]) 
end Sub 

Sub sign(n) 
   if (n < 0) then 
      n = -1 
   end if 
    
   if (n > 0) then 
      n = 1 
   end if 
    
   return n 
end Sub
##################### MIDDLE-EARTH.RU ##########################

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
Авторизация  

×
×
  • Создать...