1. SetReceivingContainer прописывается в первой части скрипта, чтобы каждый лишний раз не прописывал.
Есть ли разница между
Code:
A = Quantity - UO.GetQuantity('finditem')
и
Code:
A = Quantity - UO.Count(Type, Color)
Если контейнер, где строка определяет количество, находится в личном рюкзаке?
2. К сожалению UO.MoveItem работает некорректно, поэтому приходиться извращаться.
3. Добавил проверку на то, в каком контейнере лежит предмет, как в твоем скрипте.
При запуске скрипта инжект выдает ошибку "Parse Error" на строку:
Code:
While UO.ContainerOf( Item ) == To
Собственно вот скрипт целиком
Code:
;==============================================================================;
Var Reagents = '0x407D0DEC'; ID контейнера с реагентами
Var Potions = '0x40B04AA4'; ID контейнера с эликсирами
;------------------------------------------------------------------------------;
Var TContainer = '0x0E76'; Тип контейнера для реагентов
Var CContainer = '0x0481'; Цвет контейнера для реагентов
;------------------------------------------------------------------------------;
Var Container, Item, A = 0
;==============================================================================;
sub Move()
UO.FindType(TContainer, CContainer, 'backpack')
If UO.FindCount() > 0 Then
Container = UO.GetSerial('finditem')
UO.Set('quiet', '1')
UO.SetReceivingContainer( Container )
Take('0x0F7A', '-1', Reagents, Container, 50); Black Pearl
Take('0x0F7B', '-1', Reagents, Container, 50); Blood Moss
Take('0x0F84', '-1', Reagents, Container, 50); Garlic
Take('0x0F85', '-1', Reagents, Container, 50); Ginseng
Take('0x0F86', '-1', Reagents, Container, 50); Mandrake Root
Take('0x0F88', '-1', Reagents, Container, 50); Nightshade
Take('0x0F8C', '-1', Reagents, Container, 50); Sulphorous Ash
Take('0x0F8D', '-1', Reagents, Container, 50); Spider's Silk
UO.UnsetReceivingContainer()
UO.Set('quiet', '0')
Else
UO.Print('Контейнер для реагентов не найден.')
Endif
Take('0x0E24', '0x05BD', Potions, 'backpack', 10); Greater Agility Potion
Take('0x0E24', '0x0060', Potions, 'backpack', 5); Invisibility Potion
Take('0x0E24', '0x0676', Potions, 'backpack', 5); Total Refresh Potion
End Sub
Sub Take(Type, Color, From, To, Quantity)
UO.FindType(Type, Color, To)
If UO.FindCount() < Quantity Then
Item = UO.GetSerial('finditem')
A = Quantity - UO.GetQuantity( Item )
UO.FindType(Type, Color, From)
If UO.FindCount() Then
While UO.ContainerOf( Item ) == To
UO.Grab(A, Item)
Wait(500)
Wend
Else
UO.Print('Запрашиваемый предмет не найден.')
Endif
Endif
End Sub
Как быть? Мне кажется, что эта строка:
Code:
A = Quantity - UO.GetQuantity( Item )
Не всегда сбрасывает количество предыдущего предмета, таким образом плюсует и берет больше, чем насчитал.