-Time- wrote:
Edred
Пробывал твой скрипт на RUO шарде
Работает без перебоев, покрайне мере у меня.
С поломкой пердмета я не столкнулся (одним же ножиком уже до 77 докачал)
Вот только один минус, но думаю ето не твой скрипт
Если ложишь все логи в кучу к примеру 20к логов он неможет 1 лог взять с кучи
приходиться кучками по 1200 разлаживать ))
но и там тупик, если в какой либо кучке будет 1 лог скрипт останавливаеться ((((
Это стандартный глюк сферы. Вполне может присутствовать и на других эмулях. Не позволяет брать 1 штучку чего-либо из кучки, которую не может приподнять. Лечится заменой команды взять 1 шт. на команды взять 3 шт и положить 2 обратно. Мой скрипт на боукрафт в таком изменении для меня не нуждался, так как у меня надо было брать по 10 шт сразу.
Вот усовершенствованная версия с проверкой: если кол-во логов для крафта = 1, то тащить 3, а потом два класть обратно. Тестируйте (я не тестировал):
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