Довелось мне тут к нему вернуться, так переписал его. Так что новая версия будет ниже, замените ее:
Code: Select all
#####################################################################
; Tailoring. v.1.04b (c) Edred
;
; Два сундука: в одном много кожи и воска, а также лежит много пустых мешков.
; В другой чар будет класть мешки и наполнять их картами (по 200 штук в
; каждый).
;
; (1.04b) - переделываю. Все берется из одного сундука, и мат, и мешки.
; Переходим заодно на AutoMenu, вводим чеклаг и всякие доп проверки.
;
sub tailoring()
VAR Sunduk1 = '0x4043310C' ; Сериал сундука с пустыми мешками
VAR Sunduk2 = '0x40403350' ; Сериал пустого сундука
VAR Meshok = '0x0E76' ; Тип мешка
VAR Shkur = '0x1067' ; Тип шкур
VAR Vosk = '0x1423' ; Тип воска
VAR Kit = '0x0F9D' ; Тип инструмента тейлора
VAR Map = '0x14EB' ; Тип карты
VAR Kolvo = 200 ; Брать шкур и воска
VAR MeshSer, j, ShkurSer, k, i
VAR Med = '0x09EC' ; Тип меда
VAR success = 'You put'
VAR fizzle = 'fail'
UO.CancelMenu()
UO.AutoMenu( "Leather", "Blank's" )
UO.AutoMenu("Blank's", "blank map" )
While TRUE
# Перекладываем один мешок в сундук 2
UO.FindType( Meshok, '-1', Sunduk1 ) ; Ищем мешок в сундуке 1
MeshSer = UO.GetSerial( 'finditem' )
UO.MoveItem( MeshSer, '0', Sunduk2 )
wait(500)
CheckLag()
i = 0
repeat
If UO.Count( Shkur ) < 10 Then
If GetResource( Shkur, 200 - UO.Count( Shkur ), Sunduk1 ) == 0 Then
return
Endif
Endif
If UO.Count( Vosk ) < 10 Then
If GetResource( Vosk, 200 - UO.Count( Vosk ), Sunduk1 ) == 0 Then
return
Endif
Endif
UO.Print('Ostalos ' + Str( UO.Count( Shkur ) ) + ' shkur' )
DeleteJournal( success )
DeleteJournal( fizzle )
UO.FindType( Shkur )
UO.WaitTargetObject( 'finditem' )
UO.UseType( Kit )
k = 0
repeat
k = k + 1
wait(500)
until UO.InJournal( success ) OR UO.InJournal( fizzle ) OR ( k > 30 )
If UO.Count( Map ) > 0 Then
i = i + 1
UO.FindType( Map )
UO.MoveItem( 'finditem', '0', MeshSer )
wait(500)
CheckLag()
UO.Print( str(i) + ' maps moved' )
Endif
Until i > 199
Wend
endsub
#####################################################################
Sub GetResource( typ, kolvo, cont )
; Берем из указанного контейнера указанное количество ресурса по типу
; Возвращаем 0 если ресурс не найден и 1 если все ок.
UO.FindType( typ, '-1', cont ) ; Ищем ресурс в контейнере
If UO.FindCount() == 0 Then
UO.Print("Resource not found, script terminated")
return 0
Endif
UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем ресурсы в пак
Wait(500)
CheckLag()
return 1
endsub
#####################################################################
Sub CheckLag()
DeleteJournal( 'backpack' )
UO.Click( 'backpack' )
repeat
wait(100)
until UO.InJournal( 'backpack' )
return
end sub
#####################################################################
Sub DeleteJournal( string1 )
VAR nom = UO.InJournal( string1 )
If nom > 0 Then
UO.SetJournalLine( Nom - 1, 'string replaced' )
DeleteJournal( string1 )
Endif
endsub