1 вариант. Крафтим шафты.
Code: Select all
#####################################################################
; Bowcraft. v.1.03b (c) Edred
;
; Чар берет из сундука логи, крафтит из них шафты
; и складывает эти шафты в этот же сундук.
; Если логи закончились - выход.
; Если даггер (или что вы там используете) сломался -
; скрипт найдет аналогичный по типу в бэкпаке и возьмет
; в руки.
;
; 1.03b: Проверка, если Kolvo = 1, то берем три и кладем обратно два
; лога.
;
sub bowcraft()
VAR Sunduk = '0x4042B1A1' ; Сериал сундука
VAR Logi = '0x1BDD' ; Тип логов
VAR Shafts = '0x1BD4' ; Тип шафтов
VAR Kolvo = 10 ; Брать логов для одного крафта
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
2 вариант. Крафтим стрелы из шафтов.
Code: Select all
#####################################################################
; Bowcraft2. v.1.01b (c) Edred
;
; Чар берет из сундука шафты и перья, крафтит из них стрелы и
; складывает эти стрелы в этот же сундук.
; Если шафты или перья закончились - выход.
;
sub bowcraft2()
VAR Sunduk = '0x404CFAA3' ; Сериал сундука
VAR Shafts = '0x1BD4' ; Тип шафтов
VAR Feather = '0x1BD1' ; Тип перьев
VAR Arrows = '0x0F3F' ; Тип стрел
VAR Kolvo = 1 ; Брать шафтов для одного крафта
VAR k = 0, j
UO.CancelMenu()
UO.AutoMenu ('Select arrow type', 'arrow' )
While TRUE
If UO.Count( Shafts ) == 0 Then
UO.FindType( Shafts, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Shafts not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
while UO.Count( Shafts ) < Kolvo
wait(100)
wend
CheckLag()
Endif
If UO.Count( Feather ) == 0 Then
UO.FindType( Feather, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Feather not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
while UO.Count( Feather ) < Kolvo
wait(100)
wend
CheckLag()
Endif
UO.DeleteJournal()
UO.UseType( Shafts )
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( Arrows ) > 0 then
UO.FindType( Arrows, -1, -1 )
UO.MoveItem( 'finditem', 0, Sunduk )
wait(500)
while UO.Count( Arrows ) > 0
wait(100)
wend
UO.Print( 'Arrows moved' )
Endif
Wend
end sub
Описание обоих скриптов скину в личку Йоко... Хотя комментариев в начале скрипта достаточно вполне
