Yoko
http://forum.yoko.com.ua/

Veterinary
http://forum.yoko.com.ua/viewtopic.php?f=17&t=17760
Page 1 of 2

Author:  NiggaSuperBulka [ 2016-06-24 10:43:11 ]
Post subject:  Veterinary

Доброго дня.
Прошу помощи дописать в этот скрипт питье рефрешки при условии если стамина чара ниже определенного числа 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

Author:  Incorrect User [ 2016-06-24 13:32:49 ]
Post subject:  Re: Veterinary

Code:
if uo.stam < N then
  uo.usetype("type банки")
end if

Author:  NiggaSuperBulka [ 2016-06-24 19:32:42 ]
Post subject:  Re: Veterinary

С виду что все ок. Доделал чтоб добирал баночки рефреша и вставил то что вы написали, но при запуске после того как в пак все кладет ругается на парсер строки 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

Author:  Incorrect User [ 2016-06-24 20:33:13 ]
Post subject:  Re: Veterinary

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

нет end if

Author:  NiggaSuperBulka [ 2016-06-24 20:42:12 ]
Post subject:  Re: Veterinary

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

нет end if

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

Author:  Incorrect User [ 2016-06-24 21:01:11 ]
Post subject:  Re: Veterinary

А если uo.stamina

Author:  NiggaSuperBulka [ 2016-06-25 10:15:46 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
А если uo.stamina

То же самое.

Author:  Incorrect User [ 2016-06-25 10:30:44 ]
Post subject:  Re: Veterinary

А это уже чудеса. Что пишет при выполнении
Code:
uo.print(str(uo.stamina))

Author:  NiggaSuperBulka [ 2016-06-25 10:57:55 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
А это уже чудеса. Что пишет при выполнении
Code:
uo.print(str(uo.stamina))

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

Author:  Incorrect User [ 2016-06-25 11:16:38 ]
Post subject:  Re: Veterinary

Ну и все правильно. Ты точно заменил uo.stam на uo.stamina?

Author:  NiggaSuperBulka [ 2016-06-25 11:20:12 ]
Post subject:  Re: Veterinary

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

Author:  Incorrect User [ 2016-06-25 11:24:05 ]
Post subject:  Re: Veterinary

Гг uo.stamima

Author:  NiggaSuperBulka [ 2016-06-25 11:28:26 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
Гг uo.stamima

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

Author:  NiggaSuperBulka [ 2016-06-25 11:45:04 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
Гг uo.stamima

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

Author:  Incorrect User [ 2016-06-25 11:47:15 ]
Post subject:  Re: Veterinary

Code:
If UO.Count( Bandag ) < 10 Then

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

Author:  NiggaSuperBulka [ 2016-06-25 11:51:51 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
Code:
If UO.Count( Bandag ) < 10 Then

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

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

Author:  Incorrect User [ 2016-06-25 12:00:43 ]
Post subject:  Re: Veterinary

Кинь в пак бинтов и сделай
Code:
uo.print(str(uo.count("type бинтов")))

Что пишет?

Author:  NiggaSuperBulka [ 2016-06-25 12:20:07 ]
Post subject:  Re: Veterinary

Incorrect User wrote:
Кинь в пак бинтов и сделай
Code:
uo.print(str(uo.count("type бинтов")))

Что пишет?

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

Author:  Incorrect User [ 2016-06-25 12:26:12 ]
Post subject:  Re: Veterinary

Сколько ты положил и сколько пишет?

Author:  NiggaSuperBulka [ 2016-06-25 12:26:58 ]
Post subject:  Re: Veterinary

Он у меня их теперь почему то постоянно из сундука берет по 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


Page 1 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/