##################################################################### ; Bowcraft. v.1.03b © Edred ; ; Чар берет из сундука логи, крафтит из них шафты ; и складывает эти шафты в этот же сундук. ; Если логи закончились - выход. ; Если даггер (или что вы там используете) сломался - ; скрипт найдет аналогичный по типу в бэкпаке и возьмет ; в руки. ; ; 1.03b: Проверка, если Kolvo = 1, то берем три и кладем обратно два ; лога. ; sub bowcraft() VAR Sunduk = '0x403C3758' ; Сериал сундука VAR Logi = '0x1BDD' ; Тип логов VAR Shafts = '0x1BD4' ; Тип шафтов VAR Kolvo = 1 ; Брать логов для одного крафта VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) While TRUE UO.FindType( Logi, -1, Sunduk ) ; Ищем логи в сундуке If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return else j = UO.GetQuantity( 'finditem' ) If j > Kolvo Then UO.Print( 'I can use ' + str( j ) + ' logs' ) else UO.Print( "I can't use " + str( j ) + " logs" ) return Endif Endif If Kolvo == 1 Then ; v. 1.03 UO.Grab( '3', 'finditem' ) wait(500) UO.FindType( Logi ) UO.MoveItem( 'finditem', '2', Sunduk ) wait(500) Else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) Endif ; А это - динамическая пауза на мув while UO.Count( Logi ) < Kolvo wait(100) wend ; проверка на то, что в руках по-прежнему даггер If CheckInstr() == 0 Then UO.Print("You don't have daggers!" ) return Endif UO.DeleteJournal() UO.CancelMenu() UO.WaitMenu ('What do you want to carve', 'shaft' ) UO.WaitTargetType( Logi ) UO.UseObject( dagger ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Shafts ) > 0 then UO.FindType( Shafts, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait(500) while UO.Count( Shafts ) > 0 wait(100) wend UO.Print( 'Shafts moved' ) Endif Wend end sub Sub CheckInstr() ; проверим, есть ли в правой руке инструмент того же ; типа, что и в глобальной переменной instrtype ; если нет - найдем в бэкпаке такой инструмент и ; возьмем в правую руку. VAR typ = UO.GetGlobal( 'instrtype' ) VAR cur = UO.GetGraphic( UO.ObjAtLayer( 'Rhand' ) ) If typ == cur Then return 1 Endif UO.FindType( typ ) If UO.FindCount() == 0 Then return 0 Endif UO.Equip( 'RHand' , 'finditem' ) wait(1000) return 1 endsub
|