Page 2 of 2

Posted: 2006-07-15 23:22:46
by derevo
Grin wrote:ground - с маленкой буквы...
Скрипт похорошему надо переписать... всякие лишни репиты и венды весячие...

Ет видел. пока черновая просто. сё будет

Posted: 2006-07-15 23:29:11
by Savage
Вот набросок для твоего дворника:

Code: Select all

sub test()
   VAR shmot='0x0000' ; tip smota
   VAR count=0 ; s4et4ik
   VAR sunduk='0x00000000' ; serial sunduka s pustimy meshkami
   VAR sunduk2='0x00000000' ; serial sunduka s polnimi meshkami
   VAR meshok='0x0000' ; tip meshka
   VAR curent ; serial meshka v kototii kidaem
   VAR waittime=500 ; vremya pausy
   VAR max=100 ; kol-vo predmetov
UO.UseObject(sunduk)
UO.UseObject(sunduk2)
   While NOT UO.Dead()
      UO.FindType(meshok,-1,sunduk)
      wait(waittime)
      curent=UO.GetSerial('finditem')
      UO.Moveitem('finditem',1.sunduk2)
      wait(waittime)
      For count=1 to max
         UO.Findtype(shmot,-1,'ground')
         wait(waittime)
         If UO.Findcount() Then
            UO.Moveitem('finditem',1,curent)
            wait(waittime)
         Else
            count=count-1
         Endif
      Next
   Wend
end sub


Posted: 2006-07-15 23:30:26
by derevo
Grin wrote:ground - с маленкой буквы...
Скрипт похорошему надо переписать... всякие лишни репиты и венды весячие...

Не находит всё равно(

Posted: 2006-07-15 23:33:14
by derevo
Кстать из за чего могут вещи виснуть на курсоре? АОС может быть?



UO.FindType(Map,-1,'ground')
If UO.GetQuantity('finditem')>0 then
UO.MoveItem( 'finditem',1,MeshSer)
wait( 2000 )

Вот что здесь не так? селал как вы писали! и не видит на полу хоть убейся! тип итема верный

Posted: 2006-07-28 16:46:23
by Sfagnum
подчёт заданных айтемов в заданном контейнере [код AGRSа]

Code: Select all

Sub get_amount(Type, Color, Cont)
var item_amount = 0
   UO.UseObject(Cont)
   CheckLag()
   UO.IgnoreReset()
   repeat
      UO.FindType(Type, Color, Cont)
      if UO.FindCount()>0 Then
         if UO.GetQuantity('finditem')==0 Then
            item_amount = item_amount + 1
         else
            item_amount = item_amount + UO.GetQuantity('finditem')
         end if
         UO.Ignore('finditem')
         UO.FindType(Type, Color, Cont)
      end if
   until UO.FindCount()<1
   UO.IgnoreReset()
   return item_amount
end sub

обёртка к предыдущему скрипту на перекладку.
в месте назначения (destPack) будет лежать заданное кол-во (qGood) айтемов (tGood,cGood). если в исходном(resPack) и в конечном паках нет заданых айтемов - вернёт falseб иначе - true.
Писалось под специфичную задачу, переделать под требуемое - думаю не проблема.

Code: Select all

Sub getGoods(tGood,cGood,qGood,resPack,destPack)
var t,z
   t = get_amount(tGood,cGood,uo.getSerial(destPack))
   while t < qGood
      z = grabContainer(tGood,cGood,qGood-t,resPack)
      if (z + t) == 0 then
         return false
      end if
      if z == 0 then
         return true
      end if
      t = get_amount(tGood,cGood,uo.getSerial(destPack))
   wend
   return true
end sub

NB! если берёшь из реально больших пачек надо обработать ситуёвину когда может возникнуть необходимость взять 1 айтем из пачки.