Discussion:______________
http://yoko.netroof.net/forum/viewtopic.php?t=1437
Author or poster:_________
Edred,
tercia@spb.lanck.net
Tested on:_______________
Цитадель
http://ultima.e-burg.ru
Must work:_______________
Sphere emu
Customization required:____
Yes/place (serials Sunduk; also check object types and logs quota for single item)
Description:______________
Скрипт для прокачки боукрафта. Делаем шафты.
Чар берет из сундука логи, крафтит из них шафты и складывает эти шафты в этот же сундук. Если логи закончились - выход. Если даггер (или что вы там используете) сломался - скрипт найдет аналогичный по типу в бэкпаке и возьмет в руки
Настройка: внесите в соответствующие переменные сериал сундука, проверьте необходимые типы, укажите количество логов для разового крафта.
Yoko comment:___________
none
________________________
Code:
#####################################################################
; 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