Помогите с раскладкой денежных кучек

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Помогите с раскладкой денежных кучек

Post by Zeppelin »

Взял пару скриптов у Dark Enemy, совместил, немного добавил и, по идее, получилось нечто, что должно раскладывать деньги по кучкам в 50к, неполную кучку кидать в бэкпак, а потом еще и аккуратно раскладывать кучки в сумке (которые по 50к).. Но проблема в том, что первый раз все работает нормально, а при повторных попытках может работать, а может и не работать, а может вобще ошибку выдать и вырубить клиент.. или еще всякое... Иногда перестает видеть кучки findtype-ом (иногда все, иногда не все, как будто ignorereset не работал), иногда видит...
При повторных попытках разделял кучки в сумке на части, и тудаже еще и из бэкпака кидал.. вот тогда веселье начиналось.. Но если сделать это при первом запуске - все нормально... Помогите разобраться, пожалуйста.
Иногда "Warning: error in command" или "Unhandled exception in parser" выводит.
А иногда работает нормально.. Но факт в том - что первый раз всегда нормально работает, и "Done" печатает, так что в чем проблема не пойму :(

Code: Select all

sub Make_GP()
   uo.exec('addobject sumka')
   while uo.targeting()
      wait(100)
   wend
   var b
   var mode = 1      ;1 - раскладывать аккуратно в мешке; 0 - без раскладывания
   var x = 35        ;начальный x
   var y = 50        ;начальный y
   var xstep = 15    ;шаг x
   var ystep = 18    ;шаг y
   var inrow = 8     ;количество стопок по горизонтали
   var incolumn = 6  ;количество стопок по вертикали
   var xx = x
   var yy = y
   uo.ignorereset()
   uo.findtype('0x0EED',-1,'sumka')
   while uo.findcount()
      while uo.getquantity('finditem')==50000
         uo.ignore('finditem')
         uo.findtype('0x0EED',-1,'sumka')
      wend
      if uo.findcount()>=2 then
         b=uo.getserial('finditem')
         uo.ignore(b)
         uo.findtype('0x0EED',-1,'sumka')
         while uo.getquantity('finditem')==50000
            uo.ignore('finditem')
            uo.findtype('0x0EED',-1,'sumka')
         wend
         if uo.findcount() then
            uo.moveitem('finditem',str(50000-uo.getquantity(b)),b)
            wait(700)
         else
            uo.moveitem(b)
            wait(700)
         endif
      endif
      uo.findtype('0x0EED',-1,'sumka')
   wend
   uo.ignorereset()
   if mode then
      uo.findtype('0x0EED',-1,'sumka')
      while uo.findcount()
         if (xx==x+xstep*inrow) then
            xx = x
            yy = yy + ystep
            if (yy==y+ystep*(incolumn+1)) then
               yy = y
            endif
         endif
         uo.moveitem('finditem',0,'sumka',xx,yy,0)
         wait(700)
         uo.ignore('finditem')
         uo.findtype('0x0EED',-1,'sumka')
         xx = xx + xstep
      wend
      uo.ignorereset()
   endif
   uo.print('Done')
endsub
Last edited by Zeppelin on 2010-01-23 15:52:40, edited 1 time in total.
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Помогите с раскладкой денежных кучек

Post by Zeppelin »

Помогите, пожалуйста, потестите кто может :cry: Я не могу уже, 3 дня голову ломаю. :cry: :cry:
ДРВ, 702.11, Flush log, Verbose menu, No client hung message.

Вот простой тест: в бэкпаке сумка, в ней 3 кучки по 50к, одна по 25к.
Открываю сумку, запускаю скрипт, указываю на сумку, в итоге - в сумке 3 стопки аккуратно разложены, 25к в бэкпаке. Done.
Перемещаю стопку из бэкпака (25к) в ту сумку, получаю:

"UO client performed an unrecoverable invalid operation. Terminate?"
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Re: Помогите с раскладкой денежных кучек

Post by Scripts Writer »

Code: Select all

uo.ignorereset() 
перед завершением скрипта надо запускать
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Помогите с раскладкой денежных кучек

Post by Zeppelin »

Scripts Writer wrote:

Code: Select all

uo.ignorereset() 
перед завершением скрипта надо запускать

Эм, не в этом дело, у меня же и в начале

Code: Select all

uo.ignorereset()
стоит, и после раскладки по кучкам, и после раскладки в сумке. По идее, все в порядке должно быть. Попробовал поставить в самый конец, все равно при описанном тесте - "UO client performed an unrecoverable invalid operation. Terminate?". Кому не очень лениво, потестите, пожалуйста :cry:
Эм, или хочешь сказать, что

Code: Select all

uo.ignorereset()
можно ставить только в конец скрипта, а если еще понатыкано, то приводит к ошибкам?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Помогите с раскладкой денежных кучек

Post by Mirage »

Я бы посоветовал использовать 2 контейнера - тогда практически от всех игноров можно избавиться
алгоритм можно оформить 2 путями:
1)собирать кучки по 50К, остатки перемещая в мешок откуда они брались = кучки перенаполнятся
2)просто взять требуемое количество монет (124000 гп например). Достаточно переместить например кучку в 64К и насобирать остаток.

2 помоему проще.

ЗЫ клиент может воспользоваться скриптом для подсчета золота в трейд окне - он строк в 5-7 всего.
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Помогите с раскладкой денежных кучек

Post by Zeppelin »

Mirage wrote:Я бы посоветовал использовать 2 контейнера - тогда практически от всех игноров можно избавиться
алгоритм можно оформить 2 путями:
1)собирать кучки по 50К, остатки перемещая в мешок откуда они брались = кучки перенаполнятся
2)просто взять требуемое количество монет (124000 гп например). Достаточно переместить например кучку в 64К и насобирать остаток.

2 помоему проще.

ЗЫ клиент может воспользоваться скриптом для подсчета золота в трейд окне - он строк в 5-7 всего.

Ага, спасибо, буду пробовать..
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Помогите с раскладкой денежных кучек

Post by Zeppelin »

Вот без игноров, получилось:
viewtopic.php?f=15&t=15501
Post Reply