##################################################################### ; 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
С виду что все ок. Доделал чтоб добирал баночки рефреша и вставил то что вы написали, но при запуске после того как в пак все кладет ругается на парсер строки 96 (тестирую пока без лошадей, чисто запуск и добор). Может проблема в этом или я что-то не так сделал, не могли бы взглянуть еще разок на конечный вариант?
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
Во-первых uo.count видит предметы в стаке как один итем, и может показать только количество отдельных кучек в паке. Чтобы увидеть количество в стаке нужно использовать команду uo.getquantity
Во-первых uo.count видит предметы в стаке как один итем, и может показать только количество отдельных кучек в паке. Чтобы увидеть количество в стаке нужно использовать команду uo.getquantity
##################################################################### ; 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