Page 1 of 1

автограб регов из сумки

Posted: 2008-01-20 09:41:18
by AzaToT

Code: Select all

sub autograb() 

var n = 100 , q , i #n - eto po skolko regov vi obi4no berete
####Spisok Regov####
 DIM Reags[8]
  Reags[0] = '0x0F7B' #Blood Moss
  Reags[1] = '0x0F86' #Mandrake Roots
  Reags[2] = '0x0F7A' #Black Pearls
  Reags[3] = '0x0F88' #Nightshades
  Reags[4] = '0x0F8C' #Sulphorous Ash
  Reags[5] = '0x0F84' #Garlics
  Reags[6] = '0x0F85' #Ginsengs
  Reags[7] = '0x0F8D' #Spider's Silk
  ####Dark Magic#####
  #Reags[8] = '0x0F7D' #Vial of Blood
  #Reags[9] = '0x0F7E' #Bones
  #Reags[10] = '0x0F81' #Fertile Dirt
  ####Light Magic####
  #Reags[11] = '0x0F8F' #Volcanic Ash
  #Reags[12] = '0x0F7F' #Brimstone

wait(1000)
   UO.Print('Viberi svou sumku s regami')
   UO.AddObject('MyBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.SetCatchBag('MyBag')
    wait(100)
    UO.UseObject('MyBag')
   wait(1000)
   
   UO.Print('Viberi sumku gde lezhat VSE regi')
   UO.AddObject('BigBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.UseObject('BigBag')

####SAM SKRIPT#####   
     for i=0 to 7
wait(1000)
 UO.Count(Reags[i])
 q = n - UO.Count(Reags[i])
 wait(100)
      If UO.Count(Reags[i]) < n then
        UO.FindType(Reags[i],'0xffff','BigBag')
        wait(100)
      else
        next
      endif
        If UO.GetQuantity('finditem') > q then
          wait(500)
          UO.Grab(q,'finditem')
        else
          UO.Grab('finditem')
        endif
     next
wait(2000)
UO.UnSetCatchBag()
UO.Print('AutoGrab Done')
end sub

Вот это скрипт для автограба регов из сумки. Он считает кол-во каждого рега у вас и, если нужно, берет столько, сколько нужно добрать до необходимого кол-ва.
Проблема в том что на моем шарде кроме есть четыре типа классов: обычные, зеленые, темные и светлые. Зеленые и обычные пользуются только стандартным набором регов, а у темных и светлых есть еще несколько своих(в скрипте их графики прописаны). Так вот, как замутить более-менее простую схему выбора комплекта регов, чтобы не загружать в автолоад три скрипта?

Re: автограб регов из сумки

Posted: 2008-01-20 10:58:57
by Kynep
AzaToT wrote:[Вот это скрипт для автограба регов из сумки. Он считает кол-во каждого рега у вас и, если нужно, берет столько, сколько нужно добрать до необходимого кол-ва.
Проблема в том что на моем шарде кроме есть четыре типа классов: обычные, зеленые, темные и светлые. Зеленые и обычные пользуются только стандартным набором регов, а у темных и светлых есть еще несколько своих(в скрипте их графики прописаны). Так вот, как замутить более-менее простую схему выбора комплекта регов, чтобы не загружать в автолоад три скрипта?


Code: Select all

sub autograb() 

var n = 100 , q , i, a=0, b=0 #n - eto po skolko regov vi obi4no berete
####Spisok Regov####
 DIM Reags[8]
  Reags[0] = '0x0F7B' #Blood Moss
  Reags[1] = '0x0F86' #Mandrake Roots
  Reags[2] = '0x0F7A' #Black Pearls
  Reags[3] = '0x0F88' #Nightshades
  Reags[4] = '0x0F8C' #Sulphorous Ash
  Reags[5] = '0x0F84' #Garlics
  Reags[6] = '0x0F85' #Ginsengs
  Reags[7] = '0x0F8D' #Spider's Silk
  ####Dark Magic#####
  Reags[8] = '0x0F7D' #Vial of Blood
  Reags[9] = '0x0F7E' #Bones
  Reags[10] = '0x0F81' #Fertile Dirt
  ####Light Magic####
  Reags[11] = '0x0F8F' #Volcanic Ash
  Reags[12] = '0x0F7F' #Brimstone

wait(1000)
   UO.Print('Viberi svou sumku s regami')
   UO.AddObject('MyBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.SetCatchBag('MyBag')
    wait(100)
    UO.UseObject('MyBag')
   wait(1000)
   
   UO.Print('Viberi sumku gde lezhat VSE regi')
   UO.AddObject('BigBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.UseObject('BigBag')

UO.Print('Kakoy klass?')
UO.DeleteJournal()
   repeat
      wait(100)
   until UO.InJournal('normal') or UO.InJournal('dark') or UO.InJournal('light')

If UO.InJournal('normal') then
   a = 0
   b = 7
endif

If UO.InJournal('dark') then
   a = 0
   b = 10
endif

If UO.InJournal('light') then
   a = 11
   b = 12
endif

####SAM SKRIPT#####   
     for i = a to b
wait(1000)
 UO.Count(Reags[i])
 q = n - UO.Count(Reags[i])
 wait(100)
      If UO.Count(Reags[i]) < n then
        UO.FindType(Reags[i],'0xffff','BigBag')
        wait(100)
      else
        next
      endif
        If UO.GetQuantity('finditem') > q then
          wait(500)
          UO.Grab(q,'finditem')
        else
          UO.Grab('finditem')
        endif
     next
wait(2000)
UO.UnSetCatchBag()
UO.Print('AutoGrab Done')
a = 0
b = 0
end sub


Попробуй так, запускаешь, указываешь мешки, он спрашивает, какой класс говоришь normal, dark, light. Берет нужные реги, пробуй

Posted: 2008-01-20 15:18:41
by AzaToT
мм спасибо
но
нельзя ли както сделать так чтобы не приходилось запускатть скрипт два раза? дело в том что лайт и дарк классы юзают нормальные+свои реги а зеленые и обычные классы юзают только нормальные.

Posted: 2008-01-20 15:32:19
by AzaToT
я скрипт в общемто написал сам почти без чужой помощи,
просто не умею обращатся с массивами

как то можно циклы задавать подобным образом:
for i = 0 to 7 , a to b ?

Posted: 2008-01-20 15:33:50
by Kynep
AzaToT wrote:мм спасибо
но
нельзя ли както сделать так чтобы не приходилось запускатть скрипт два раза? дело в том что лайт и дарк классы юзают нормальные+свои реги а зеленые и обычные классы юзают только нормальные.


Ну для Дарка подправил, а вот с лайтом сложнее. ХЗ щас мыслей ни каких нет, может попозже появятся или кто то другой предложит решение.

Posted: 2008-01-20 15:37:20
by Kynep
AzaToT wrote:я скрипт в общемто написал сам почти без чужой помощи,
просто не умею обращатся с массивами

как то можно циклы задавать подобным образом:
for i = 0 to 7 , a to b ?


нет что бы два диапазона сразу, незя.

Posted: 2008-01-21 01:59:53
by CuHTpoH

Code: Select all

for i = 0 to 7
  for a = X to b
    ...
  next
next


не это ли?

Posted: 2008-01-21 02:41:45
by Grin
и что получилось?
самый простой вариант это просто сделать 2 чередующих икла
первый накладывает только нормальные, второй дополнительные по выбору, разница только в первом цикле

Code: Select all

...
If UO.InJournal('dark') then
   a = 8
   b = 10
endif

If UO.InJournal('light') then
   a = 11
   b = 12
endif

for i = 0 to 7
...
next
for i = a to b
...
next
...

Posted: 2008-01-21 09:07:10
by Kynep
Grin wrote:и что получилось?
самый простой вариант это просто сделать 2 чередующих икла
первый накладывает только нормальные, второй дополнительные по выбору, разница только в первом цикле

Code: Select all

...
If UO.InJournal('dark') then
   a = 8
   b = 10
endif

If UO.InJournal('light') then
   a = 11
   b = 12
endif

for i = 0 to 7
...
next
for i = a to b
...
next
...


Ок, а как быть с нормальными? ведь скрипт будет ждать ввода слова. Если ввести normal? что будет делать второй цикл? Или приравнять обе переменные к нулю?

Posted: 2008-01-21 11:48:33
by Grin
обе переменые утебя инициализируются по 0, а выход из цикла ожидания тотже, проверка на 3 слова.

Posted: 2008-01-21 11:51:35
by Kynep
Grin wrote:обе переменые утебя инициализируются по 0, а выход из цикла ожидания тотже, проверка на 3 слова.


Ну в принципе должно сработать ) :D

Posted: 2008-01-21 17:59:11
by AzaToT

Code: Select all

sub autograb()

var n = 100 #po skolko regov berete
var q , i , a , b
####Spisok Regov####
 DIM Reags[8]
  Reags[0] = '0x0F7B' #Blood Moss
  Reags[1] = '0x0F86' #Mandrake Roots
  Reags[2] = '0x0F7A' #Black Pearls
  Reags[3] = '0x0F88' #Nightshades
  Reags[4] = '0x0F8C' #Sulphorous Ash
  Reags[5] = '0x0F84' #Garlics
  Reags[6] = '0x0F85' #Ginsengs
  Reags[7] = '0x0F8D' #Spider's Silk
  ####Dark Magic#####
  #Reags[8] = '0x0F7D' #Vial of Blood
  #Reags[9] = '0x0F7E' #Bones
  #Reags[10] = '0x0F81' #Fertile Dirt
  ####Light Magic####
  #Reags[11] = '0x0F8F' #Volcanic Ash
  #Reags[12] = '0x0F7F' #Brimstone

wait(1000)
   UO.Print('Viberi svou sumku s regami')
   UO.AddObject('MyBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.SetCatchBag('MyBag')
    wait(100)
    UO.UseObject('MyBag')
   wait(1000)
   
   UO.Print('Viberi sumku gde lezhat VSE regi')
   UO.AddObject('BigBag')
   while UO.Targeting()
    wait(1000)
   wend
    UO.UseObject('BigBag')
   
   UO.Print('Viberi nabor regov (dark,light,normal)')
   UO.DeleteJournal()
   Repeat
    wait(1000)
   Until UO.InJournal('normal') or UO.InJournal('dark') or UO.InJournal('light')
####SAM SKRIPT#####   
     for i=0 to 7
wait(1000)
 UO.Count(Reags[i])
 q = n - UO.Count(Reags[i])
 wait(100)
      If UO.Count(Reags[i]) < n then
        UO.FindType(Reags[i],'0xffff','BigBag')
        wait(100)
      else
        next
      endif
        If UO.GetQuantity('finditem') > q then
          wait(500)
          UO.Grab(q,'finditem')
        else
          UO.Grab('finditem')
        endif
     next
      If UO.InJournal('dark') then
       a = 8
       b = 10
      endif
      If UO.InJournal('light') then
       a = 11
       b = 12
      endif
      If UO.InJournal('normal') then
       a = 0
       b = 0
      endif
####Special Reags####
for i=a to b
wait(1000)
 UO.Count(Reags[i])
 q = n - UO.Count(Reags[i])
 wait(100)
      If UO.Count(Reags[i]) < n then
        UO.FindType(Reags[i],'0xffff','BigBag')
        wait(100)
      else
        next
      endif
        If UO.GetQuantity('finditem') > q then
          wait(500)
          UO.Grab(q,'finditem')
        else
          UO.Grab('finditem')
        endif
     next 
wait(2000)
UO.UnSetCatchBag()
UO.Print('AutoGrab Done')
end sub


если так то выдает line 81: runtime error

Posted: 2008-01-21 22:52:07
by Kynep
AzaToT wrote:

если так то выдает line 81: runtime error


Code: Select all

sub autograb()
   
   var n = 100 #po skolko regov berete
   var q , i , a , b
   ####Spisok Regov####
   DIM Reags[8]
   Reags[0] = '0x0F7B' #Blood Moss
   Reags[1] = '0x0F86' #Mandrake Roots
   Reags[2] = '0x0F7A' #Black Pearls
   Reags[3] = '0x0F88' #Nightshades
   Reags[4] = '0x0F8C' #Sulphorous Ash
   Reags[5] = '0x0F84' #Garlics
   Reags[6] = '0x0F85' #Ginsengs
   Reags[7] = '0x0F8D' #Spider's Silk
   ####Dark Magic#####
   Reags[8] = '0x0F7D' #Vial of Blood
   Reags[9] = '0x0F7E' #Bones
   Reags[10] = '0x0F81' #Fertile Dirt
   ####Light Magic####
   Reags[11] = '0x0F8F' #Volcanic Ash
   Reags[12] = '0x0F7F' #Brimstone
   
   wait(1000)
   UO.Print('Viberi svou sumku s regami')
   UO.AddObject('MyBag')
   while UO.Targeting()
      wait(1000)
   wend
   UO.SetCatchBag('MyBag')
   wait(100)
   UO.UseObject('MyBag')
   wait(1000)
   
   UO.Print('Viberi sumku gde lezhat VSE regi')
   UO.AddObject('BigBag')
   while UO.Targeting()
      wait(1000)
   wend
   UO.UseObject('BigBag')
   
   UO.Print('Viberi nabor regov (dark,light,normal)')
   UO.DeleteJournal()
   Repeat
      wait(1000)
   Until UO.InJournal('normal') or UO.InJournal('dark') or UO.InJournal('light')
   
   If UO.InJournal('dark') then
      a = 8
      b = 10
   endif
   If UO.InJournal('light') then
      a = 11
      b = 12
   endif
   If UO.InJournal('normal') then
      a = 0
      b = 0
   endif
   
   ####SAM SKRIPT#####
   for i=0 to 7
      wait(1000)
      UO.Count(Reags[i])
      q = n - UO.Count(Reags[i])
      wait(100)
      If UO.Count(Reags[i]) < n then
         UO.FindType(Reags[i],'0xffff','BigBag')
         wait(100)
      endif
      If UO.GetQuantity('finditem') > q then
         wait(500)
         UO.Grab(q,'finditem')
      else
         UO.Grab('finditem')
      endif
   next
   ####Special Reags####
   for i=a to b
      wait(1000)
      UO.Count(Reags[i])
      q = n - UO.Count(Reags[i])
      wait(100)
      If UO.Count(Reags[i]) < n then
         UO.FindType(Reags[i],'0xffff','BigBag')
         wait(100)
      endif
      If UO.GetQuantity('finditem') > q then
         wait(500)
         UO.Grab(q,'finditem')
      else
         UO.Grab('finditem')
      endif
   next
   wait(2000)
   UO.UnSetCatchBag()
   UO.Print('AutoGrab Done')
end sub

пробуй

Posted: 2008-01-22 10:29:00
by AzaToT
блин затупил )) спс

Posted: 2008-01-22 10:34:08
by Kynep
AzaToT wrote:блин затупил )) спс


Не за что :D рад был помочь