Автоматический Автолут

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
varancovii
Posts: 3
Joined: 2011-01-14 13:16:24

Автоматический Автолут

Post by varancovii »

Всем привет, перед тем как создовать тему я поискал на форуме но подобного ничего не нашёл,

Code: Select all

sub looting() 
var corpse,i,j
uo.set('finddistance','2')
uo.set('distance','2')
DIM Loot[11]
Loot[0] = 0x0EED; # Gold
Loot[1] = 0x0F26; # Diamond
Loot[2] = 0x0F21; # Star Sapphire
Loot[3] = 0x0F8C; # Sulfurous Ash
Loot[4] = 0x0F7B; # Blood Moss
Loot[5] = 0x0F86; # Mandrake Root
Loot[6] = 0x0F84; # Garlic
Loot[7] = 0x0F88; # Nightshade
Loot[8] = 0x0F8D; # Spiders Silk
Loot[9] = 0x0F7A; # Black Pearl
Loot[10] = 0x0F85; # Ginseng
Loot[11] = 0x0F7E; # Bone

DIM Text[11]
Text[0] = 'Gold Coins'
Text[1] = 'Diamons'
Text[2] = 'Star Sapphires'
Text[3] = 'Sulfurous Ash'
Text[4] = 'Blood Moss'
Text[5] = 'Mandrake Root'
Text[6] = 'Garlic'
Text[7] = 'Nightshade'
Text[8] = 'Spiders Silk'
Text[9] = 'Black Pearl'
Text[10] = 'Ginseng'
Text[11] = 'Bone'

DIM Vars[11]
Vars[0] = uo.gold
Vars[1] = uo.count('0x0F26')
Vars[2] = uo.count('0x0F21')
Vars[3] = uo.count('0x0F8C')
Vars[4] = uo.count('0x0F7B')
Vars[5] = uo.count('0x0F86')
Vars[6] = uo.count('0x0F84')
Vars[7] = uo.count('0x0F88')
Vars[8] = uo.count('0x0F8D')
Vars[9] = uo.count('0x0F7A')
Vars[10] = uo.count('0x0F85')
Vars[11] = uo.count('0x0F7E')

while true
while uo.countonground('0x2006') > 0
if UO.Weight > 40000 then
uo.print("Too much weight! There're "+STR(UO.Gold)+" gold coins in backpack!")
uo.waittargettype('0x0EED')
wait(1000)
uo.useobject('0x40157FBF')
wait(1000)
goto end
end if
uo.findtype('0x2006','-1','ground')
if uo.findcount() > 0 then
corpse=uo.getserial('finditem')
uo.print("Found "+str(uo.findcount())+" corpse(s)!")
for i=0 to 11
j=0
repeat
UO.FindType(Loot[i],-1,corpse)
if UO.GetQuantity('finditem') then
UO.MoveItem('finditem','0','backpack')
uo.print("Looted: "+STR(UO.GetQuantity('finditem'))+" "+Text[i]+"! In All: "+STR(vars[i]+UO.GetQuantity('finditem')))
wait(600)
end if
j = j + 1
if j > 15 then
goto stuck
end if
until uo.findcount()==0
next
stuck:
uo.ignore(corpse)
Else
uo.print("No Corpses Beside!!!")
end if
end:
wend
wait(600)
wend
end sub


ЧТо такое DIM Loot[11] DIM Text[11] DIM Vars[11]

и как под себя настраивать ?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Автоматический Автолут

Post by Mirage »

Ниже твой первый скрипт.
DIM объявления массива
DIM Loot[18] - массив из 18 элементов Loot[0]-Loot[17]. Ниже вводятся значения элементов массива.
А настраивать - смотря что тебе нужно. Впиши типы вещей (команда ,info в игре и прицелом на вещь записываешь TYPE) в массив - должен лутать.

Code: Select all

sub Loot()
   VAR i,Exit
   DIM Loot[18]
   
   Loot[0]=0x0EED ; gp
   Loot[1]=0x0F7B ; BM
   Loot[2]=0x0F7A ; BP
   Loot[3]=0x0F84 ; GA
   Loot[4]=0x0F85 ; GI
   Loot[5]=0x0F86 ; MR
   Loot[6]=0x0F88 ; NS
   Loot[7]=0x14EF ; ZATOCH
   Loot[8]=0x100E ; KLUCH
   Loot[9]=0x13FA ;two handed axe
   Loot[10]=0x1413 ;arm
   Loot[11]=0x1415 ;arm
   Loot[12]=0x1411 ;arm
   Loot[13]=0x1410 ;arm
   Loot[14]=0x1414 ;arm
   Loot[15]=0x0E21 ;ban
   Loot[16]=0x0F78 ;batw
   Loot[17]=0x0F8B ;pumise
   repeat
      if uo.getSerial('lastcontainer')<> uo.getSerial('backpack') then
         UO.SetReceivingContainer('0x4000C313') ;ID backpacka
         For i=0 to 17
            Exit=0
            repeat
               UO.FindType(Loot[i],-1,'lastcontainer')           
               if UO.GetQuantity('finditem') then
                  UO.Grab('0','finditem')
                  wait(100)
               Else
                  Exit=1
               endif
            until Exit==1 OR uo.injournal("loot")
         Next
         UO.UnSetReceivingContainer()
      endif
   wait(100)
   until uo.dead()
end sub



В твоем втором скрипте несколько ошибок

Code: Select all

DIM Loot[11] ;   запись не верна, должна стоять цифра 12.
Loot[0] = 0x0EED; # Gold
Loot[1] = 0x0F26; # Diamond
Loot[2] = 0x0F21; # Star Sapphire
Loot[3] = 0x0F8C; # Sulfurous Ash
Loot[4] = 0x0F7B; # Blood Moss
Loot[5] = 0x0F86; # Mandrake Root
Loot[6] = 0x0F84; # Garlic
Loot[7] = 0x0F88; # Nightshade
Loot[8] = 0x0F8D; # Spiders Silk
Loot[9] = 0x0F7A; # Black Pearl
Loot[10] = 0x0F85; # Ginseng
Loot[11] = 0x0F7E; # Bone



в принципе для лута достаточно DIM Loot[12]. DIM TEXT[12] и DIM VARS[12] скорее для понта.
Первый скрипт более грамотный был.
PPS все автоматические скрипты на инжекте значительно уступают ручной игре. Будешь получать пару доль секунд выигрыша и тонны гемороя в виде крашей и зависаний.
varancovii
Posts: 3
Joined: 2011-01-14 13:16:24

Re: Автоматический Автолут

Post by varancovii »

Ну в начале я нашёл простой скрипт для автолута, я там разобрался насчёт ,info и ID, но я его не смог никак автоматизировать, что бы он автоматический лутал, приходилось кнопкой лутать, что мне не очень удобно.
Порылся в форуме нашёл второй скрипт, который очень хорошо работает испытывал 1 час на большом кол-ве монстров. Поэтому и задал вопрос насчёт "DIM Loot[11] DIM Text[11] DIM Vars[11]" , что бы под себя его подстроить, так как в первом скрипте был один столбик вещей а тут три, как я понял тут надо менять во всех трёх столбиках ?

И ещё 1 вопрос, как указывать приоритет что первым лутать и т.д ?

PS. может у кого есть список ID всех стандартных сетов (плей;чейн;ринг;кожа)

PSS. можно как-нибудь зделать так что бы те вещи которые не находит скрипт не нисалось в окне УО : items found: 0

PSSS. что ещё в скрипте лишнего, к примеру вес меня не интересует, ну и такие лишние вещи.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Автоматический Автолут

Post by Mirage »

Code: Select all

Loot[0] = 0x0EED; # Gold
Loot[1] = 0x0F26; # Diamond
Loot[2] = 0x0F21; # Star Sapphire
Loot[3] = 0x0F8C; # Sulfurous Ash
Loot[4] = 0x0F7B; # Blood Moss


Это и есть очередность. Что вначале то и в приоритете.
Либо менять во всех трех столбиках либо выкинуть строку
uo.print("Looted: "+STR(UO.GetQuantity('finditem'))+" "+Text[i]+"! In All: "+STR(vars[i]+UO.GetQuantity('finditem')))
и спокойно удалить массивы
DIM Text[11]
DIM Vars[11]


ВСЕ существующие типы можно посмотреть через программу InsideUO. Цвет вещи индивидуален серверу на котором ты играешь и тут уж только ,info в помощь (всв вариант - собрать все нужные цвета в 1 месте и переписать их скриптом :) )

Чтобы не флудили системные сообщения в начале скрипта вставь UO.Set('quiet','1'). И соответственно UO.Set('quiet','0') чтобы вернуть их на место.

Что там лишнее решать только тебе :)

PS я бы например не стал использовать комбинацию GoTo но это твой скрипт.
varancovii
Posts: 3
Joined: 2011-01-14 13:16:24

Re: Автоматический Автолут

Post by varancovii »

Code: Select all

sub looting() 
var corpse,i,j
uo.set('finddistance','2')
uo.set('distance','2')
UO.Set('quiet','1')
DIM Loot[11]
Loot[0] = 0x100E; # KLUCH
Loot[1] = 0x0EED; # ZOLOTO
Loot[2] = 0x0F21; # Star Sapphire
Loot[3] = 0x0F8C; # Sulfurous Ash
Loot[4] = 0x0F7B; # Blood Moss
Loot[5] = 0x0F86; # Mandrake Root
Loot[6] = 0x0F84; # Garlic
Loot[7] = 0x0F88; # Nightshade
Loot[8] = 0x0F8D; # Spiders Silk
Loot[9] = 0x0F7A; # Black Pearl
Loot[10] = 0x0F85; # Ginseng
Loot[11] = 0x0F7E; # Bone

while true
while uo.countonground('0x2006') > 0
if UO.Weight > 40000 then
uo.print("Too much weight! There're "+STR(UO.Gold)+" gold coins in backpack!")
uo.waittargettype('0x0EED')
wait(1000)
uo.useobject('0x40157FBF')
wait(1000)
goto end
end if
uo.findtype('0x2006','-1','ground')
if uo.findcount() > 0 then
corpse=uo.getserial('finditem')
uo.print("Found "+str(uo.findcount())+" corpse(s)!")
for i=0 to 11
j=0
repeat
UO.FindType(Loot[i],-1,corpse)
if UO.GetQuantity('finditem') then
UO.MoveItem('finditem','0','backpack')
wait(600)
end if
j = j + 1
if j > 15 then
goto stuck
end if
until uo.findcount()==0
next
stuck:
uo.ignore(corpse)
Else
uo.print("No Corpses Beside!!!")
end if
end:
wend
wait(600)
wend
end sub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Автоматический Автолут

Post by Mirage »

Code: Select all

sub looting()
var corpse,i,j
uo.set('finddistance','2')
uo.set('distance','2')
UO.Set('quiet','1')

DIM Loot[12]  ; 0+11=12!
Loot[0] = '0x100E'; # KLUCH
Loot[1] = '0x0EED'; # ZOLOTO
Loot[2] = '0x0F21'; # Star Sapphire
Loot[3] = '0x0F8C'; # Sulfurous Ash
Loot[4] = '0x0F7B'; # Blood Moss
Loot[5] = '0x0F86'; # Mandrake Root
Loot[6] = '0x0F84'; # Garlic
Loot[7] = '0x0F88'; # Nightshade
Loot[8] = '0x0F8D'; # Spiders Silk
Loot[9] = '0x0F7A'; # Black Pearl
Loot[10] = '0x0F85'; # Ginseng
Loot[11] = '0x0F7E'; # Bone

DIM color[3]
color[0] = '0x0000'
color[1] = '0x0001'
color[2] = '0x0003'

while true
   while uo.countonground('0x2006') > 0
      uo.findtype('0x2006','-1','ground')
      if uo.findcount() > 0 then
         corpse=uo.getserial('finditem')
         for i=0 to 11   ;  собирает все вещи заданного типа
            repeat
               UO.FindType(Loot[i],-1,corpse)
               if UO.GetQuantity('finditem') then
                  UO.MoveItem('finditem','0','backpack')
                  wait(600)
               end if
            until uo.findcount()==0
         next
         for j=0 to 2   ; собирает все вещи заданного цвета
            repeat
               UO.FindType(-1,color[j],corpse)
               if UO.GetQuantity('finditem') then
                  UO.MoveItem('finditem','0','backpack')
                  wait(600)
               end if
            until uo.findcount()==0
         next
         uo.ignore(corpse)
      Else
         uo.print("No Corpses Beside!!!")
      end if
      wait(300)
   wend
   wait(600)
wend
end sub
Post Reply