Мои скрипты под ДРВ

Anything and all.

Moderators: Murderator+, Murderator

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

Мои скрипты под ДРВ

Post by Zeppelin »

Иногда буду выкладывать здесь свои (иногда только доработанные мной) скрипты под шард ДРВ.
Отписывайтесь об ошибках, пишите пожелания и т.д.
Last edited by Zeppelin on 2010-01-24 17:23:25, edited 1 time in total.
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Мои скрипты под ДРВ

Post by Zeppelin »

1. Раскладка денег

Раскладка денег по кучкам + переброс в мешок + аккуратная раскладка

Code: Select all

#######################
##Раскладка денег 1.0##
#######################
############
##Zeppelin##
##  DRW   ##
############
sub StackMaker()
   var mode = 1             ;1 - с аккуратным раскладыванием, иначе - без
   var maxstack = 50000     ;максимально гп в стопке (для ДРВ - 50000)
   var delay = 700          ;задержка между переброской кучек в миллисекундах
   var x = 35               ;начальный x в сумке
   var y = 50               ;начальный y в сумке
   var xstep = 15           ;шаг x
   var ystep = 18           ;шаг y
   var inrow = 8            ;количество стопок по горизонтали
   var incolumn = 6         ;количество стопок по вертикали
   var bagto = ''           ;контейнер, куда будут складываться деньги
   var bagfrom = 'backpack' ;контейнер, откуда будут переброшены деньги, и куда бросится остаток
                            ;ID или указатели вроде 'backpack' или 'lastcontainer', если же равны пустой строке,
                            ;предоставится выбор вручную.
   var a = 0
   var b = 0                       
   var xx = x
   var yy = y
   while ((bagto=='') or (uo.getserial(bagto)==uo.getserial(bagfrom)))
      bagto = addobject('BagTo')
   wend
   while ((bagfrom=='') or (uo.getserial(bagto)==uo.getserial(bagfrom)))
      bagfrom = addobject('BagFrom')
   wend
endif
uo.findtype('0x0EED',-1,bagfrom)
while uo.findcount()
   uo.moveitem('finditem',0,bagto)
   mywait(delay)
   uo.findtype('0x0EED',-1,bagfrom)
wend
uo.findtype('0x0EED',-1,bagto)
while uo.findcount()
   if (uo.getquantity('finditem')<maxstack) then
      if (b==0) then
         b=uo.getquantity('finditem')
         uo.moveitem('finditem',0,bagfrom)
         mywait(delay)
      else
         a = uo.getquantity('finditem')
         uo.moveitem('finditem',str(maxstack-b),bagfrom)
         wait(delay)
         b = b + a
         if (b>=maxstack) then
            b = 0
         endif
      endif
   else
      uo.moveitem('finditem',0,bagfrom)
      mywait(delay)
   endif
   uo.findtype('0x0EED',-1,bagto)
wend
a = 0
uo.findtype('0x0EED',-1,bagfrom)
while uo.findcount()
   if (uo.getquantity('finditem') < maxstack) then
      a = uo.getserial('finditem')
      uo.moveitem('finditem',0,bagto)
   else
      if (mode==1) then
         if (xx==x+xstep*inrow) then
            xx = x
            yy = yy + ystep
            if (yy==y+ystep*incolumn) then
               yy = y
            endif
         endif
         uo.moveitem('finditem',0,bagto,xx,yy,0)
         xx = xx + xstep
      else
         uo.moveitem('finditem',0,bagto)
      endif
   endif
   mywait(delay)
   uo.findtype('0x0EED',-1,bagfrom)
wend
if (a>0) then
   uo.moveitem(a,0,bagfrom)
endif
uo.print('Переброска окончена! :)')
endsub

Sub addobject(object)
   var execution = 'addobject ' + object
   uo.exec(execution)
   while uo.targeting()
      wait(100)
   wend
   return object
endsub

Sub mywait(delay)
   wait(delay)
   wait_world_save()
   uo.deletejournal()
endsub

Sub wait_world_save()
   If UO.InJournal('World is saving') Then
      Repeat
         wait(100)
      Until UO.InJournal('seconds')
   Endif
end Sub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мои скрипты под ДРВ

Post by Mirage »

У меня скрипт перекинув разложил кучки как были - 63К 58К 60К...
Щаз поищем в чем проблема.
Zeppelin
Posts: 30
Joined: 2008-08-11 21:52:22

Re: Мои скрипты под ДРВ

Post by Zeppelin »

Mirage wrote:У меня скрипт перекинув разложил кучки как были - 63К 58К 60К...
Щаз поищем в чем проблема.

Константу менял в начале скрипта про максимальный стэк?

Code: Select all

var maxstack = 50000     ;максимально гп в стопке (для ДРВ - 50000)

Тут дело в том, что 50000 - это именно максимально возможный на шарде стэк, а не тот, который хочется в стопках.. =)
Под другие шарды, надо переписать немного, чтобы раскладывалось по нужному количеству, просто на дрв всех 50к устраивает, и например, 40к не будут стопки делать =)
В случае иных шардов проблема в таких строках:

Code: Select all

if (uo.getquantity('finditem')<maxstack) then

при этом, если у тебя в кучке больше чем maxstack (который 50к например) монет, он просто так все и оставит =)
Могу доработать конечно, чтобы делал кучки нужного стэка, но именно под ДРВ это не нужно =)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мои скрипты под ДРВ

Post by Mirage »

Интересно. Подумал что скрипт кидает кучки по требованию :)
У нас максимум в куче гп 65535 :)
Post Reply