Разгрузка и раскладка

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Разгрузка и раскладка

Post by ZeroDX »

В общем... Имею в паке нестакающиеся камни, одинаковые по типу и цвету. Так же имею сундук, в котором лежат мешки, пустые и не очень пустые, и так же одинаковые по типу и цвету. Мне нужно разгрузить камни в эти мешки. Имеется ограничение на кол-во итемов в контейнере - 255. Помогите набросать основу скриптика.

Пока только имею:

Code: Select all

Sub Unload()
  var Container = 'id', Bag = 'graphic'
  Далее я хочу сделать поиск сумок в сундуке, потом поиск всего в этой сумке.
  Ну и если в ней итемов < 255, то вызов MoveStones(255 - кол-во вещей в сумке, ID сумки)
  Если камни кончились(MoveStones вернула 0), то UO.IgnorReset() и Return, а если не
  кончились и MoveStones вернула 1, игнорить сумку и искать следующую и по новой,
  пока не кончатся камни.
Endsub

Sub MoveStones(num, container)
  var a, Quit = 0
  For a = 1 to num
    UO.FindType(Stone, '-1', 'backpack')
    If UO.FindCount() > 0 then
      UO.MoveItem('finditem', '-1', container)
      Wait(450)
     else
      Return 0
    EndIf
  Next
  Return 1
Endsub


Вроде все расписал. А проблемма моя в том, что в УО не играл около 2-ух лет, и всё позабыл. MoveStones писал минут аж 15-20 просто вспоминая "как я там раньше делал".

Помимо проблеммы, есть 2 вопроса.
1) For a = 1 to num, если num будет 1, сделает ли фор свое дело?
2) UO.MoveItem('finditem', '-1', container), For a = 1 to num будут работать корректно? Или надо марочиться с переводом из строки в число и обратно?

Всем заранее спасибо за помощь, ну или хотя бы за прочтение =)
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Разгрузка и раскладка

Post by ZeroDX »

Кое что набросал, но не пойму как как заставить функцию закрыться если камни кончились. Вообще не пойму как сделать цикличность
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Разгрузка и раскладка

Post by ZeroDX »

Помощь больше не требуется. Перечитал учебнить и вот что получилось:

Code: Select all

var Container = '', Stone = '0x136C', BagID, ItemCount

Sub Unload()
  UO.UseObject(Container)
  Wait(100)
  While true
    UO.FindType(Bag, '-1', Container)
    If UO.FindCount() > 0 then
      UO.UseObject('finditem')
      BagID = UO.GetSerial('finditem')
    Endif
    UO.FindType('-1', '-1', BagID)
    If UO.FindCount() < 255 then
      ItemCount = UO.FindCount()
      If MoveStones(255 - ItemCount, BagID) == 1 then
        UO.Ignor(BagID)
       else
        UO.IgnoreReset()
        Return
      Endif
     else
      UO.Ignore(BagID)
    Endif
  Wend
Endsub

Sub MoveStones(num, container)
  var a, Quit = 0
  For a = 1 to num
    UO.FindType(Stone, '-1', 'backpack')
    If UO.FindCount() > 0 then
      UO.MoveItem('finditem', '-1', container)
      Wait(450)
     else
      Return 0
    EndIf
  Next
  Return 1
Endsub


Проверил, работает на ура
messir
Posts: 18
Joined: 2010-02-16 19:41:25

Re: Разгрузка и раскладка

Post by messir »

Code: Select all

Sub MoveStones(num, container)
  var a, Quit = 0
  For a = 1 to num
   repeat
    UO.FindType(Stone, '-1', 'backpack')
    If UO.FindCount() > 0 then
      UO.MoveItem('finditem', '-1', container)
      Wait(450)
    EndIf
   Until UO.FindCount==0
  Next
Endsub


Можно так еще :)
Post Reply