Page 1 of 1

Стопки вещей!

Posted: 2006-05-01 00:09:07
by CnupT
Люди подскажите плизз как сделать стопки через инжу например из роб,шапок и тд?

Posted: 2006-05-01 05:52:16
by Scripts Writer
Могу ошибаться, но командой:

Code: Select all

uo.MoveItem(item,'quantity','container','x','y','z')


x,y,z-координаты точки в контейнере,в которую переместятся вещи в заданном кол-ве.

Posted: 2006-05-01 12:08:44
by Edred
В команде 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

Posted: 2006-05-01 18:35:58
by Scripts Writer
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


у парня первый пост, и наверно он даже не смыслит ничего а ты ему такой скрипт на голову.

Posted: 2006-05-01 23:23:23
by Edred
Дык берет этот скрипт и использует. Он очень удобный и ничего в нем править не надо. Единственное - скрипт требует АСМ, но любой версии.