Page 1 of 1

Alchemy for o1. Need help.

Posted: 2006-02-19 16:31:51
by Dron D.
Имеется скрипт на прокачку алхимии, собственного производства.
По идее, при количестве сваренных бутлей в паке >10, они должны выкидыватся в сундук, но почему то в етот момент пишется Targeting Cancelled и леззер падает мне под ноги. А иногда вообще не перекидывает...
Вот часть скрипта, отвечающяя за переброс:

Code: Select all


;completed bottles moved to pack
   UO.DeleteJournal()
   UO.FindType('0x0F0D','0x0000','backpack')
         If uo.findcount()>15 Then
           checklag()
           uo.moveitem('0x0F0D','all',chest)
          endif
   wait(1000)


Re: Alchemy for o1. Need help.

Posted: 2006-02-19 16:55:15
by Boris
Dron D. wrote:Имеется скрипт на прокачку алхимии, собственного производства.
По идее, при количестве сваренных бутлей в паке >10, они должны выкидыватся в сундук, но почему то в етот момент пишется Targeting Cancelled и леззер падает мне под ноги. А иногда вообще не перекидывает...
Вот часть скрипта, отвечающяя за переброс:

Code: Select all


;completed bottles moved to pack
   UO.DeleteJournal()
   UO.FindType('0x0F0D','0x0000','Bpack')
         wait(200)
      If uo.findcount()>10 then                          # Почему здесь 15 ?  ты же вроде написал что больше 10 надо чтобы перекладывал
           checklag()
           uo.moveitem('0x0F0D','-1','chest')      # А что ты перекладываешь кстати ?
          endif
   wait(1000)




пс если ты перекладываешь бутылки то вроде как All не канает, это для стыкуемых предметов, хотя могу и ошибаться

Posted: 2006-02-19 17:02:35
by Dron D.
см ниже.

Posted: 2006-02-19 17:17:13
by Boris
Dron D. wrote:10 или 15 не имеет большого значения.
А значение -1 - означает все айтемы.

Но все равно не кидает.

-1 означает все айтемы для стыкуемух предметов

Re: Alchemy for o1. Need help.

Posted: 2006-02-19 17:20:28
by Boris

Code: Select all


;completed bottles moved to pack
   UO.DeleteJournal()
   UO.FindType('0x0F0D','-1','Bpack')
         wait(200)
   If uo.findcount() > 10 then                     
      while uo.count('0x0F0D') > 0         #тип бутылки
                    UO.FindType('0x0F0D','-1','Bpack') 
                    wait(200)
                    uo.moveitem('finditem','-1','chest')     
                    wait(200)
            wend
         endif
   wait(1000)


пробуй так

Posted: 2006-02-19 17:29:31
by Dron D.
Вобщем тут нужно весь скрипт коцать я так понял.
Алгоритм:

Code: Select all

1 .Нашли рег (0x0F7B) в сундуке (0x4172E101) 
2 .Нашли бутылки (0x0F0E) в суднуке
3 .Взяли и то и другое 100 и 30 соответсвенно.
4 .Варим Agility  (0x0F08, 0x0000)
5 .Если бутлей меньше 2, тогда берем еще 30.
6 .Если рега меньше 5, тогда берем еще 90.
7 .Если бутылок с готовой продукцией в паке больше 25 тогда перекидываем их в сундук.


Вот сам скрипт, но плохо функионирует:


Code: Select all

sub alchemytrain() ; качб алхимии.
VAR Exit=0, LastTimer
var reg='0x0F8C'
var chest='0x4172E101'

while not uo.dead()
;empty bottles grab
   UO.FindType('0x0F0E','-1','backpack')
   If UO.GetQuantity('finditem')<10 then
      Uo.usefromground('0x4172E101')
      wait(50)
      UO.FindType('0x0F0E','-1','0x4172E101')
      wait(1000)
      UO.Grab('30','finditem')
      wait(1000)
   Endif
;regs grab
   UO.FindType(reg,'-1','backpack')
   If UO.GetQuantity('finditem')<20 then
      UO.FindType(reg,'-1',chest)
      wait(1000)
      UO.Grab('250','finditem')
      wait(1000)
   Endif

   LastTimer=UO.Timer()
   UO.DeleteJournal()
;toss
   UO.UseType(reg)
   UO.WaitMenu('What','Agility')       
   while NOT UO.InJournal("You put") AND NOT UO.InJournal("You toss the failed")
   wait(500)
   wend
   If UO.InJournal("You toss the failed") then
      repeat
      wait(100)
      until UO.InJournal("You put")
       Else
   EndIf
;completed bottles moved to pack
    uo.setreceivingcontainer('0x4172E101')
   UO.FindType('0x0F0D','0x0000','backpack')
   wait(100)
   uo.moveitem('finditem','-1','0x4172E101')
   wait(1000)
wend   
end sub   

Posted: 2006-02-20 01:18:59
by Grin

Code: Select all

sub OpenContainer(container)
   if uo.GetSerial('lastcontainer') == container then
      uo.UseObject('backpack')
      while uo.GetSerial('lastcontainer') <> uo.GetSerial('backpack')
         wait(100)
      wend
   end if
   uo.UseObject(container)
   while uo.GetSerial('lastcontainer') <> container
      wait(100)
   wend
end sub

sub CountContainer(type, color, container)
   uo.FindType(type, color, container)
   return uo.FindCount()
end sub
   
sub main()
var PotionNeed=3
var PotionType='0x0F08'
var PotionColor='0x0000'
var RegType='0x0F7B'
var Container=''
var tempCount=0
   if uo.Targeting() then
      uo.canceltarget()
   end if
   uo.Print('Выбери контейнер с ресурсами')
   uo.Info()
   while uo.Targeting()
      wait(100)
   wend
   Container=uo.GetSerial('lasttarget')
   OpenContainer(Container)
   while not uo.Dead()
      if not uo.count('0x0f0e', 0) then
         if CountContainer('0x0f0e', 0, Container) then
            uo.Grab('100', 'finditem')
            while  not uo.Count('0x0f0e', 0)
               wait(100)
            wend
         else
            uo.Print('Закончились банки')
            Return
         end if
      end if
      if uo.count(RegType) < PotionNeed then
         if CountContainer(RegType, 0, Container) then
            tempCount=uo.Count(RegType)
            uo.Grab('100', 'finditem')
            while  uo.Count(RegType) == tempCount
               wait(100)
            wend
            if uo.count(RegType) < PotionNeed then
               uo.Print('Нехватает регов')
               Return
            end if
         else
            uo.Print('Закончились реги')
            Return
         end if
      end if
      uo.WaitMenu('What', 'Agility')
      uo.WaitTargetType(RegType)
      uo.DeleteJournal()
      uo.usetype('0x0E9B')
      while not uo.InJournal('put|toss')
         wait(100)
      wend
      while CountContainer(PotionType, PotionColor, 'backpack')
         uo.moveitem('finditem', 0, Container)
         while uo.ContainerOf('finditem') <> Container
            wait(100)
         wend
      wend
   wend
end sub


Что делает:
Берет бутылки если нет
Берет рег если его не хватает на изготовления 1 зелья
Скидывает сразу получившиюся продукцию

Скрипт настроен под агилки Сундук выбирается вручную.

PS Ничего настроивать не надо... (кроме если только журнала)

Posted: 2006-02-20 19:32:17
by Dron D.
Большое спасибо.

Posted: 2006-02-21 20:39:41
by Dron D.
Спасибо.
Но видимо особенность шарда о1, в том что на нём пролагивает частенько и скрипт запарывается.
А происходит ето во время когда что-то куда-то перетаскивается.
Если сваренный поушн начинаем перетаскивать, то он пропадает в никуда и скрипт останавливается, если потянуть за любой айтем то етот поушн выпадает под ноги и чтобы скрипт запахал, нужно поушн кинуть в сундук. Или аналогичная ситуация при grab`e регов\бутлей. Даже хз как с етим боротся)

Posted: 2006-02-22 00:03:34
by Grin
странно с бутылками... хотелось постестить... давно там не грал но никогда таких траблов небыло;) а тот бай порой юзал чтобы тоскатьвещи которые в пак не лезли(из за перевеса). Точно такжи класно прятались вещи от не прощареных гмов%)