Yoko

All sides of Injection
It is currently 2025-11-03 17:43:00

All times are UTC+02:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 2010-04-23 01:15:53 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
В общем... Имею в паке нестакающиеся камни, одинаковые по типу и цвету. Так же имею сундук, в котором лежат мешки, пустые и не очень пустые, и так же одинаковые по типу и цвету. Мне нужно разгрузить камни в эти мешки. Имеется ограничение на кол-во итемов в контейнере - 255. Помогите набросать основу скриптика.

Пока только имею:
Code:
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 будут работать корректно? Или надо марочиться с переводом из строки в число и обратно?

Всем заранее спасибо за помощь, ну или хотя бы за прочтение =)


Top
   
PostPosted: 2010-04-23 01:20:22 
Offline
User avatar

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


Top
   
PostPosted: 2010-04-23 02:33:12 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Помощь больше не требуется. Перечитал учебнить и вот что получилось:
Code:
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


Проверил, работает на ура


Top
   
PostPosted: 2010-04-29 05:56:06 
Offline

Joined: 2010-02-16 19:41:25
Posts: 18
Code:
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


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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 4 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited