Боевые.

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Боевые.

Post by EvolutioN »

Помогите пожалуйста. При чар атакует чара-куклу с луком, потом лечит его, но почему то лечит 1-2 раза и снова бьет. Все хп не вылечивает. В чем тут проблема?
Заранее благодарю.

Code: Select all

sub main()
var selfID = UO.GetSerial('self')
var ID = '0x004CFD60'                             ## ID персонажа которого бить надо
UO.Exec("exec reconnector")
UO.Exec("setarm wp")
while not UO.Dead()
     if GetHP(ID) < 60 then
          uo.Exec('warmode 0')
          UO.Disarm()
          while GetHP(ID) < 60
               uo.Exec('warmode 0')
               Healing(ID)
               wait(100)
          wend
          UO.Exec("arm wp")
          wait(1000)
          uo.Exec('warmode 1')
     end if
     wait(500)
     UO.Attack(ID)
wend
end sub

sub GetHP(ID)
var maxhp, result
UO.GetStatus(ID)
maxhp = UO.GetMaxHP(ID)
if maxhp > 0 then
     result = (UO.GetHP(ID) * 150) / maxhp
else
     result = 0
end if
return result
end sub

sub Healing(ID)
var b=0x0E21
;if UO.Life < UO.Str then
     UO.WaitTargetObject(ID)
     UO.UseType(b)
     CheckLag()
     uo.Exec('warmode 0')
     wait(1000)
     uo.Exec('warmode 0')
     wait(1000)
     uo.Exec('warmode 0')
     wait(1000)
     return true
;end if
return true
end sub

sub CheckLag()
     DeleteJournal('backpack')
     repeat
          UO.Click('backpack')
          wait(500)
     until UO.InJournal('backpack')
end sub

sub DeleteJournal(msg)
var num
while UO.InJournal(msg)
     num = UO.InJournal(msg)
     UO.SetJournalLine(num - 1,' ')
wend
end sub

sub CheckBandage()
uo.WaitTargetType('0x1008')
uo.UseType('0x0E20')
wait(1000)
end sub


sub Reconnector()
var RFlag
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) Then
RFlag = 1
endif
Until false
end sub

EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

subj.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

Code: Select all

sub main()
   var selfID = UO.GetSerial('self')
   var ID = '0x004CFD60'                             ## ID персонажа которого бить надо
   var MAXHP = 150 ## максимальное значение жизни у цели. Отрегулируй.
   UO.Exec("exec reconnector")
   UO.Exec("setarm wp")
   while not UO.Dead()
      if GetHP(ID) < 60 then
         uo.Exec('warmode 0')
         UO.Disarm()
         while GetHP(ID) < MAXHP
            if  UO.WarMode()==1 then
               UO.WarMode(0)
            endif
            Healing(ID)
            wait(100)
         wend
         UO.Exec("arm wp")
         wait(1000)
         uo.warmode (1)
      end if
      wait(500)
      UO.Attack(ID)
   wend
end sub
sub GetHP(ID)
   var maxhp, result
   UO.GetStatus(ID)
   maxhp = UO.GetMaxHP(ID)
   if maxhp > 0 then
      result = (UO.GetHP(ID) * 150) / maxhp
   else
      result = 0
   end if
   return result
end sub
sub Healing(ID)
   var b=0x0E21
   if  UO.WarMode()==1 then
      UO.WarMode(0)
   endif
   UO.WaitTargetObject(ID)
   UO.UseType(b)
   CheckLag()
   wait(3000)
   return true
end sub
sub CheckLag()
   DeleteJournal('ackpack')
   repeat
      UO.Click('backpack')
      wait(500)
   until UO.InJournal('ackpack')
end sub
sub DeleteJournal(msg)
   var num
   while UO.InJournal(msg)
      num = UO.InJournal(msg)
      UO.SetJournalLine(num - 1,' ')
   wend
end sub
sub CheckBandage()
   uo.WaitTargetType('0x1008')
   uo.UseType('0x0E20')
   wait(1000)
end sub
sub Reconnector()
   var RFlag
   RFlag = 1
   Repeat
      While (UO.ObjAtLayer('Bpack') == '')
         if RFlag Then
            RFlag = 0
         endif
         Wait(20000) # WorldSave Protection
         UO.Say('')
         Wait(3000)
         UO.Say('')
         Wait(3000)
         UO.Say('')
         Wait(3000)
         UO.LDblClick(357,164)
         UO.LClick(616,459)
         Wait(3000)
      WEnd
      Wait(3000)
      if (RFlag == 0) Then
         RFlag = 1
      endif
   Until false
end sub
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

Спасибо :) Теперь не могу понять почему он хватает молоток, а если нет молотка то бьет рукой ...
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

у тебя запоминается первое оружие которое есть в руках у чара.
UO.Exec("setarm wp")
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

Ну вот сейчас тестил, в сумке дагер и клевер лежат, молоток выкинул. Взял клевер, когда он его вылечил, он не одевает ничего, а бьет рукой. И так раз 5 одевал в ручную - всеравно не берет клевер... Можешь сюда вставить чтобы он брал оружие по Type?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

вместо
UO.Exec("setarm wp")
впиши

Code: Select all

var x = uo.GetGraphic(uo.ObjAtLayer('Lhand'))
var y = uo.GetGraphic(uo.ObjAtLayer('Rhand'))


вместо
UO.Exec("arm wp")
впиши

Code: Select all

    uo.Equipt('Lhand',x)
    uo.Equipt('Rhand',y)


usetype не очень хорошо работает с даггерами - появляется прицел, который надо сбивать... Возня.
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

От души .) Все работает. Но прежде тем чтобы поменять оружие, нужно выключить скрипт, потом взять которое нужно и снова включить :) Вот только бинты не моет, да и ладно :)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

не моет потому что лучше сделать вот так:
прописать в шапке скрипта
var Miska = 'ID тазика для мытья'

Code: Select all

Sub CheckBandage()  
  UO.waittargetobject( Miska )
  UO.usetype('0x0e20')
  Wait(1000)
end sub
Post Reply