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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
AzaToT
Posts: 13
Joined: 2004-07-14 09:18:05

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

Post 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

Вот это скрипт для автограба регов из сумки. Он считает кол-во каждого рега у вас и, если нужно, берет столько, сколько нужно добрать до необходимого кол-ва.
Проблема в том что на моем шарде кроме есть четыре типа классов: обычные, зеленые, темные и светлые. Зеленые и обычные пользуются только стандартным набором регов, а у темных и светлых есть еще несколько своих(в скрипте их графики прописаны). Так вот, как замутить более-менее простую схему выбора комплекта регов, чтобы не загружать в автолоад три скрипта?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

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

Post 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. Берет нужные реги, пробуй
Last edited by Kynep on 2008-01-20 15:31:47, edited 1 time in total.
AzaToT
Posts: 13
Joined: 2004-07-14 09:18:05

Post by AzaToT »

мм спасибо
но
нельзя ли както сделать так чтобы не приходилось запускатть скрипт два раза? дело в том что лайт и дарк классы юзают нормальные+свои реги а зеленые и обычные классы юзают только нормальные.
AzaToT
Posts: 13
Joined: 2004-07-14 09:18:05

Post by AzaToT »

я скрипт в общемто написал сам почти без чужой помощи,
просто не умею обращатся с массивами

как то можно циклы задавать подобным образом:
for i = 0 to 7 , a to b ?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

AzaToT wrote:мм спасибо
но
нельзя ли както сделать так чтобы не приходилось запускатть скрипт два раза? дело в том что лайт и дарк классы юзают нормальные+свои реги а зеленые и обычные классы юзают только нормальные.


Ну для Дарка подправил, а вот с лайтом сложнее. ХЗ щас мыслей ни каких нет, может попозже появятся или кто то другой предложит решение.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

AzaToT wrote:я скрипт в общемто написал сам почти без чужой помощи,
просто не умею обращатся с массивами

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


нет что бы два диапазона сразу, незя.
CuHTpoH
Posts: 287
Joined: 2007-11-01 19:09:30
Location: Moscow
Contact:

Post by CuHTpoH »

Code: Select all

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


не это ли?
**Выставляем отступы в скриптах*** ©Destruction
Feel the Power of Dark Side
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post 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
...
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post 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? что будет делать второй цикл? Или приравнять обе переменные к нулю?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

обе переменые утебя инициализируются по 0, а выход из цикла ожидания тотже, проверка на 3 слова.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Grin wrote:обе переменые утебя инициализируются по 0, а выход из цикла ожидания тотже, проверка на 3 слова.


Ну в принципе должно сработать ) :D
AzaToT
Posts: 13
Joined: 2004-07-14 09:18:05

Post 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
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post 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

пробуй
AzaToT
Posts: 13
Joined: 2004-07-14 09:18:05

Post by AzaToT »

блин затупил )) спс
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

AzaToT wrote:блин затупил )) спс


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