Стопки вещей!
Posted: 2006-05-01 00:09:07
Люди подскажите плизз как сделать стопки через инжу например из роб,шапок и тд?
Code: Select all
uo.MoveItem(item,'quantity','container','x','y','z')
Code: Select all
#####################################################################
sub AutoMove()
; Автоматическое перекладывание предметов одного типа и цвета из одного
; контейнера в другой. Поддержка двух режимов - драга на стопку и драга
; на контейнер.
; v.1.04b (c) Edred
VAR MyPause = 600
VAR Type1, Color1, s, n, SerStopka, SumCol = 0
UO.Print( 'Select sending container' )
UO.Exec('addobject TmpCont1')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Select targeting container' )
UO.Exec('addobject TmpCont2')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Select type for move' )
UO.Exec('addobject TmpObj1')
While UO.Targeting()
Wait(100)
Wend
Type1 = UO.GetGraphic( 'TmpObj1' )
Color1 = UO.GetColor( 'TmpObj1' )
While UO.Targeting()
Wait(100)
Wend
s = ''
s = UO.asmInputString("Задайте размер порции:","500")
If s == '' Then
UO.Print( 'Invalid count of objects!' )
return
Endif
VAR ToDo = UO.asmInputList("Выберите способ:","'Драг в стопку';'Драг на контейнер'")
SerStopka = UO.GetSerial( 'TmpCont2' )
n = val( s )
If n < 0 OR n > 20000 Then
UO.Print( 'Invalid count of objects!' )
return
Endif
repeat
If ToDo == 1 Then
UO.FindType( Type1, Color1, 'TmpCont2' )
If UO.FindCount() > 0 Then
SerStopka = UO.GetSerial( 'finditem' )
Else
SerStopka = UO.GetSerial( 'TmpCont2' )
Endif
Endif
UO.FindType( Type1, Color1, 'TmpCont1' )
If UO.FindCount() > 0 Then
If UO.GetQuantity( 'finditem' ) < n Then
SumCol = SumCol + UO.GetQuantity( 'finditem' )
Else
SumCol = SumCol + n
Endif
UO.MoveItem( 'finditem', str(n), SerStopka )
Wait( MyPause )
CheckLag()
UO.Print( 'I moved ' + str(SumCol) + ' items' )
Else
UO.Print( 'Automove finished' )
Return
Endif
until False
endsub
Edred wrote:В команде UO.MoveItem использовать стопку как приемный контейнер. Тогда новая вещь "прикучкуется".
Вообще, посмотри как это реализовано в моих скриптах, топик "Наследство от Эдреда". Например, в этом скрипте:Code: Select all
#####################################################################
sub AutoMove()
; Автоматическое перекладывание предметов одного типа и цвета из одного
; контейнера в другой. Поддержка двух режимов - драга на стопку и драга
; на контейнер.
; v.1.04b (c) Edred
VAR MyPause = 600
VAR Type1, Color1, s, n, SerStopka, SumCol = 0
UO.Print( 'Select sending container' )
UO.Exec('addobject TmpCont1')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Select targeting container' )
UO.Exec('addobject TmpCont2')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Select type for move' )
UO.Exec('addobject TmpObj1')
While UO.Targeting()
Wait(100)
Wend
Type1 = UO.GetGraphic( 'TmpObj1' )
Color1 = UO.GetColor( 'TmpObj1' )
While UO.Targeting()
Wait(100)
Wend
s = ''
s = UO.asmInputString("Задайте размер порции:","500")
If s == '' Then
UO.Print( 'Invalid count of objects!' )
return
Endif
VAR ToDo = UO.asmInputList("Выберите способ:","'Драг в стопку';'Драг на контейнер'")
SerStopka = UO.GetSerial( 'TmpCont2' )
n = val( s )
If n < 0 OR n > 20000 Then
UO.Print( 'Invalid count of objects!' )
return
Endif
repeat
If ToDo == 1 Then
UO.FindType( Type1, Color1, 'TmpCont2' )
If UO.FindCount() > 0 Then
SerStopka = UO.GetSerial( 'finditem' )
Else
SerStopka = UO.GetSerial( 'TmpCont2' )
Endif
Endif
UO.FindType( Type1, Color1, 'TmpCont1' )
If UO.FindCount() > 0 Then
If UO.GetQuantity( 'finditem' ) < n Then
SumCol = SumCol + UO.GetQuantity( 'finditem' )
Else
SumCol = SumCol + n
Endif
UO.MoveItem( 'finditem', str(n), SerStopka )
Wait( MyPause )
CheckLag()
UO.Print( 'I moved ' + str(SumCol) + ' items' )
Else
UO.Print( 'Automove finished' )
Return
Endif
until False
endsub