Yoko

All sides of Injection
It is currently 2018-12-11 10:01:09

All times are UTC+02:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
 Post subject: Veterinary
PostPosted: 2016-06-24 10:43:11 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Доброго дня.
Прошу помощи дописать в этот скрипт питье рефрешки при условии если стамина чара ниже определенного числа N.
Code:
#####################################################################
; Veterinary. v.1.08b (c) Edred
;
sub Veterinar()
; Ставим рядом двух чаров, у каждого по лошади. Рядом с чарами
; сундук. В сундук чистые бинты. Сериалы лошадей каждому в скрипт.
; Стравливаем лошадей (можно использовать скрипт provocat2.sc) и
; качаемся. Внимание! При низком скилле за работой скрипта надо
; следить (одним чаром, вытащив на экран статусы обоих лошадей) и
; периодически садиться на лошадь и отъезжать в сторону, слезать с нее
; и давать обоим чарам вылечить лошадей полностью. После 40-45 скилла
; нужда в этом отпадает (скилл растет быстро).
;
   VAR Sunduk = '0x4048E250'       ; Сериал сундука с бинтами
   VAR Bandag = '0x0E21'          ; Тип бинтов
   VAR BlBandag = '0x0E20'         ; Тип грязных бинтов
   VAR Horse1 = '0x0040F759'      ; Сериал лошади ЭТОГО чара
   VAR fizzle = 'You apply bandages to a horse but fail'
   VAR Success = 'You apply the bandages to a horse'
   VAR mustwait = 'You must wait to use bandages again'
   VAR k
   UO.UseObject( Sunduk )
   wait(1000)
   While UO.SkillVal( 'Veterinary' ) < 1000
      If UO.Count( Bandag ) < 10 Then
         UO.FindType( Bandag, '-1', Sunduk )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '200' )
            wait(500)
            CheckLag()
         Else
            UO.Print( 'Bandage not found! Script terminated!' )
            return
         Endif
         UO.FindType( BlBandag )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '0', sunduk )
            wait(500)
            CheckLag()
         Endif
      Endif
      If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then
         DeleteJournal( fizzle )
         DeleteJournal( success )
         DeleteJournal( mustwait )
         UO.WaitTargetObject( Horse1 )
         UO.UseType( Bandag )
         k = 0
         repeat
            wait(100)
            k = k + 1
         until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
         If UO.InJournal( success ) Then
            wait(2500)
         Endif
         If UO.InJournal( mustwait ) Then
            wait(500)
         Endif
         wait(1500)
      Else
         wait(500)
      Endif
   Wend
endsub

sub Provocat2()
;
; Для провокации вам в паке необходим муз.инструмент!
;
   VAR ser1, ser2
   VAR Horse1 = '0x00C8', Horse2 = '0x00E2'
   UO.Set( 'finddistance', '2' )
   UO.FindType( Horse1, '-1', '1' )
   If UO.FindCount() == 0 Then
      UO.FindType( Horse2, '-1', '1' )
      If UO.FindCount() == 0 Then
         UO.Print( 'Horse 1 not found!' )
         return
      Endif
   Endif
   ser1 = UO.GetSerial( 'finditem' )
   UO.Print( ser1 )
   UO.Ignore( 'finditem' )
   UO.FindType( Horse1, '-1', '1' )
   If UO.FindCount() == 0 Then
      UO.FindType( Horse2, '-1', '1' )
      If UO.FindCount() == 0 Then
         UO.Print( 'Horse 2 not found!' )
         UO.IgnoreReset()
         return
      Endif
   Endif
   ser2 = UO.GetSerial( 'finditem' )
   UO.Print( ser2 )
   UO.IgnoreReset()
   UO.WaitTargetObject( ser1, ser2 )
   UO.UseSkill( 'Provocation' )
endsub


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-24 13:32:49 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Code:
if uo.stam < N then
  uo.usetype("type банки")
end if

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-24 19:32:42 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
С виду что все ок. Доделал чтоб добирал баночки рефреша и вставил то что вы написали, но при запуске после того как в пак все кладет ругается на парсер строки 96 (тестирую пока без лошадей, чисто запуск и добор). Может проблема в этом или я что-то не так сделал, не могли бы взглянуть еще разок на конечный вариант?
Code:
sub Veterinar()
   ; Ставим рядом двух чаров, у каждого по лошади. Рядом с чарами
   ; сундук. В сундук чистые бинты. Сериалы лошадей каждому в скрипт.
   ; Стравливаем лошадей (можно использовать скрипт provocat2.sc) и
   ; качаемся. Внимание! При низком скилле за работой скрипта надо
   ; следить (одним чаром, вытащив на экран статусы обоих лошадей) и
   ; периодически садиться на лошадь и отъезжать в сторону, слезать с нее
   ; и давать обоим чарам вылечить лошадей полностью. После 40-45 скилла
   ; нужда в этом отпадает (скилл растет быстро).
   ;
   VAR Sunduk = '0x40EA5CD6'       ; Сериал сундука с бинтами и медом
   VAR Bandag = '0x0E21'          ; Тип бинтов
   VAR BlBandag = '0x0E20'   ; Тип грязных бинтов
   VAR Refresh = '0x0F0B' ; Тип банки рефреш
   VAR Horse1 = '0x00CE9739'      ; Сериал лошади ЭТОГО чара
   VAR fizzle = 'You apply bandages to a horse but fail'
   VAR Success = 'You apply the bandages to a horse'
   VAR mustwait = 'You must wait to use bandages again'
   VAR k
   UO.UseObject( Sunduk )
   wait(1000)
   While UO.SkillVal( 'Veterinary' ) < 1000
      If UO.Count( Bandag ) < 10 Then
         UO.FindType( Bandag, '-1', Sunduk )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '200' )
            wait(500)
         Else
            UO.Print( 'Bandage not found! Script terminated!' )
            return
         Endif
         UO.FindType( BlBandag )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '0', sunduk )
            wait(500)
         Endif
         If UO.Count( Refresh ) < 1 Then
            UO.FindType( Refresh, '-1', Sunduk )
            If UO.FindCount() > 0 Then
               UO.MoveItem( 'finditem', '1' )
               wait(500)
            Endif
         Endif
         If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then
            uo.DeleteJournal( fizzle )
            uo.DeleteJournal( success )
            uo.DeleteJournal( mustwait )
            UO.WaitTargetObject( Horse1 )
            UO.UseType( Bandag )
            k = 0
            repeat
               wait(100)
               k = k + 1
            until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
            If UO.InJournal( success ) Then
               wait(2500)
            Endif
            If UO.InJournal( mustwait ) Then
               wait(500)
            Endif
            wait(1500)
         Else
         wait(500)   
         Endif
         if uo.stam < 30 then
         uo.usetype('0x0F0B')
         end if
      Wend
endsub


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-24 20:33:13 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Я не могу знать что у тебя в скрипте под строкой 96, ты должен её указать. А пока видно что для строки
Code:
If UO.Count( Bandag ) < 10 Then

нет end if

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-24 20:42:12 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Я не могу знать что у тебя в скрипте под строкой 96, ты должен её указать. А пока видно что для строки
Code:
If UO.Count( Bandag ) < 10 Then

нет end if

Пишет что переменная не определена на uo.stam.


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-24 21:01:11 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А если uo.stamina

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 10:15:46 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
А если uo.stamina

То же самое.


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 10:30:44 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А это уже чудеса. Что пишет при выполнении
Code:
uo.print(str(uo.stamina))

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 10:57:55 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
А это уже чудеса. Что пишет при выполнении
Code:
uo.print(str(uo.stamina))

Выводит значение моей стамины (110)


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:16:38 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ну и все правильно. Ты точно заменил uo.stam на uo.stamina?

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:20:12 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Ну и все правильно. Ты точно заменил uo.stam на uo.stamina?

Конечно, вот
Code:
#####################################################################
; Veterinary. v.1.08b (c) Edred
;
sub Veterinar()
   ; Ñòàâèì ðÿäîì äâóõ ÷àðîâ, ó êàæäîãî ïî ëîøàäè. Ðÿäîì ñ ÷àðàìè
   ; ñóíäóê.  ñóíäóê ÷èñòûå áèíòû. Ñåðèàëû ëîøàäåé êàæäîìó â ñêðèïò.
   ; Ñòðàâëèâàåì ëîøàäåé (ìîæíî èñïîëüçîâàòü ñêðèïò provocat2.sc) è
   ; êà÷àåìñÿ. Âíèìàíèå! Ïðè íèçêîì ñêèëëå çà ðàáîòîé ñêðèïòà íàäî
   ; ñëåäèòü (îäíèì ÷àðîì, âûòàùèâ íà ýêðàí ñòàòóñû îáîèõ ëîøàäåé) è
   ; ïåðèîäè÷åñêè ñàäèòüñÿ íà ëîøàäü è îòúåçæàòü â ñòîðîíó, ñëåçàòü ñ íåå
   ; è äàâàòü îáîèì ÷àðàì âûëå÷èòü ëîøàäåé ïîëíîñòüþ. Ïîñëå 40-45 ñêèëëà
   ; íóæäà â ýòîì îòïàäàåò (ñêèëë ðàñòåò áûñòðî).
   ;
   VAR Sunduk = '0x40EA5CD6'       ; Ñåðèàë ñóíäóêà ñ áèíòàìè è ìåäîì
   VAR Bandag = '0x0E21'          ; Òèï áèíòîâ
   VAR BlBandag = '0x0E20'   ; Òèï ãðÿçíûõ áèíòîâ
   VAR Refresh = '0x0F0B' ; Òèï áàíêè ðåôðåø
   VAR Horse1 = '0x00C6A214'      ; Ñåðèàë ëîøàäè ÝÒÎÃÎ ÷àðà
   VAR fizzle = 'You apply bandages to a horse but fail'
   VAR Success = 'You apply the bandages to a horse'
   VAR mustwait = 'You must wait to use bandages again'
   VAR k
   UO.UseObject( Sunduk )
   wait(1000)
   While UO.SkillVal( 'Veterinary' ) < 1000
      If UO.Count( Bandag ) < 10 Then
         UO.FindType( Bandag, '-1', Sunduk )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '200' )
            wait(500)
         Endif
      Else
         UO.Print( 'Bandage not found! Script terminated!' )
         return
      Endif
      UO.FindType( BlBandag )
      If UO.FindCount() > 0 Then
         UO.MoveItem( 'finditem', '0', sunduk )
         wait(500)
      Endif
      If UO.Count( Refresh ) < 1 Then
         UO.FindType( Refresh, '-1', Sunduk )
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '1' )
            wait(500)
         Endif
      Endif
      If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then
         uo.DeleteJournal( fizzle )
         uo.DeleteJournal( success )
         uo.DeleteJournal( mustwait )
         UO.WaitTargetObject( Horse1 )
         UO.UseType( Bandag )
         k = 0
         repeat
            wait(100)
            k = k + 1
         until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
         If UO.InJournal( success ) Then
            wait(2500)
         Endif
         If UO.InJournal( mustwait ) Then
            wait(500)
         Endif
         wait(1500)
      Else
         wait(500)   
      Endif
      if uo.stamima < 30 then
        uo.usetype('0x0F0B')
      end if
   Wend
endsub


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:24:05 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Гг uo.stamima

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:28:26 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Гг uo.stamima

И правда, моя невнимательность пардон.
Но появилась новая трабла, запускаю скрипт он берет банку, бинты из сундука и пишет фразу
Code:
'Bandage not found! Script terminated!'
, хотя бинты есть и в паке и в сундуке.
я убрал else и все заработало


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:45:04 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Гг uo.stamima

Большущее вам спасибо! Как всегда выручаете!


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:47:15 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Code:
If UO.Count( Bandag ) < 10 Then

Во-первых uo.count видит предметы в стаке как один итем, и может показать только количество отдельных кучек в паке. Чтобы увидеть количество в стаке нужно использовать команду uo.getquantity
Code:
uo.findtype("type бинтов")
if uo.getquantity("finditem") < 10 then

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 11:51:51 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Code:
If UO.Count( Bandag ) < 10 Then

Во-первых uo.count видит предметы в стаке как один итем, и может показать только количество отдельных кучек в паке. Чтобы увидеть количество в стаке нужно использовать команду uo.getquantity
Code:
uo.findtype("type бинтов")
if uo.getquantity("finditem") < 10 then

Сейчас заменю спасибо!


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 12:00:43 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Кинь в пак бинтов и сделай
Code:
uo.print(str(uo.count("type бинтов")))

Что пишет?

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 12:20:07 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Кинь в пак бинтов и сделай
Code:
uo.print(str(uo.count("type бинтов")))

Что пишет?

Пишет кол-во бинтов в паке.


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 12:26:12 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Сколько ты положил и сколько пишет?

_________________
CodeSweeper


Top
   
 Post subject: Re: Veterinary
PostPosted: 2016-06-25 12:26:58 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Он у меня их теперь почему то постоянно из сундука берет по 200 штук без остановки:
Code:
#####################################################################
; Veterinary. v.1.08b (c) Edred
;
sub Veterinar()
   ; Ставим рядом двух чаров, у каждого по лошади. Рядом с чарами
   ; сундук. В сундук чистые бинты. Сериалы лошадей каждому в скрипт.
   ; Стравливаем лошадей (можно использовать скрипт provocat2.sc) и
   ; качаемся. Внимание! При низком скилле за работой скрипта надо
   ; следить (одним чаром, вытащив на экран статусы обоих лошадей) и
   ; периодически садиться на лошадь и отъезжать в сторону, слезать с нее
   ; и давать обоим чарам вылечить лошадей полностью. После 40-45 скилла
   ; нужда в этом отпадает (скилл растет быстро).
   ;
   VAR Sunduk = '0x40EA5CD6'       ; Сериал сундука с бинтами и медом
   VAR Bandag = '0x0E21'          ; Тип бинтов
   VAR BlBandag = '0x0E20'   ; Тип грязных бинтов
   VAR Refresh = '0x0F0B' ; Тип банки рефреш
   VAR Horse1 = '0x00C9442F'      ; Сериал лошади ЭТОГО чара
   VAR fizzle = 'You apply bandages to a horse but fail'
   VAR Success = 'You apply the bandages to a horse'
   VAR mustwait = 'You must wait to use bandages again'
   VAR k
   UO.UseObject( Sunduk )
   wait(1000)
   While UO.SkillVal( 'Veterinary' ) < 1000
         uo.findtype( Bandag, '-1', Sunduk)
         if uo.getquantity('0x0E21') < 10 then
         If UO.FindCount() > 0 Then
            UO.MoveItem( 'finditem', '200' )
            wait(500)
         Endif
         Endif
         else
      UO.Print( 'Bandage not found! Script terminated!' )
         return
      Endif
      UO.FindType( BlBandag )
      If UO.FindCount() > 0 Then
         UO.MoveItem( 'finditem', '0', sunduk )
         wait(500)
      Endif
      If UO.Count( Refresh ) < 1 Then
        UO.FindType( Refresh, '-1', Sunduk )
        If UO.FindCount() > 0 Then
           UO.MoveItem( 'finditem', '1' )
          wait(500)
        Endif
      Endif
      If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then
         uo.DeleteJournal( fizzle )
         uo.DeleteJournal( success )
         uo.DeleteJournal( mustwait )
         UO.WaitTargetObject( Horse1 )
         UO.UseType( Bandag )
         k = 0
         repeat
            wait(100)
            k = k + 1
         until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
         If UO.InJournal( success ) Then
            wait(2500)
         Endif
         If UO.InJournal( mustwait ) Then
            wait(500)
         Endif
         wait(1500)
      Else
         wait(500)   
      Endif
      if uo.stamina < 30 then
         uo.usetype('0x0F0B')
      end if
   Wend
endsub

sub prnt()
uo.print(str(uo.count("0x0E21")))
endsub



Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited