Page 1 of 1
Автоматический Автолут
Posted: 2011-08-06 10:48:13
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]
и как под себя настраивать ?
Re: Автоматический Автолут
Posted: 2011-08-06 12:34:13
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 все автоматические скрипты на инжекте значительно уступают ручной игре. Будешь получать пару доль секунд выигрыша и тонны гемороя в виде крашей и зависаний.
Re: Автоматический Автолут
Posted: 2011-08-06 13:17:52
by varancovii
Ну в начале я нашёл простой скрипт для автолута, я там разобрался насчёт ,info и ID, но я его не смог никак автоматизировать, что бы он автоматический лутал, приходилось кнопкой лутать, что мне не очень удобно.
Порылся в форуме нашёл второй скрипт, который очень хорошо работает испытывал 1 час на большом кол-ве монстров. Поэтому и задал вопрос насчёт "DIM Loot[11] DIM Text[11] DIM Vars[11]" , что бы под себя его подстроить, так как в первом скрипте был один столбик вещей а тут три, как я понял тут надо менять во всех трёх столбиках ?
И ещё 1 вопрос, как указывать приоритет что первым лутать и т.д ?
PS. может у кого есть список ID всех стандартных сетов (плей;чейн;ринг;кожа)
PSS. можно как-нибудь зделать так что бы те вещи которые не находит скрипт не нисалось в окне УО : items found: 0
PSSS. что ещё в скрипте лишнего, к примеру вес меня не интересует, ну и такие лишние вещи.
Re: Автоматический Автолут
Posted: 2011-08-06 17:03:06
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+"! In All: "+STR(vars+UO.GetQuantity('finditem')))
и спокойно удалить массивы
DIM Text[11]
DIM Vars[11]
ВСЕ существующие типы можно посмотреть через программу InsideUO. Цвет вещи индивидуален серверу на котором ты играешь и тут уж только ,info в помощь (всв вариант - собрать все нужные цвета в 1 месте и переписать их скриптом
)
Чтобы не флудили системные сообщения в начале скрипта вставь UO.Set('quiet','1'). И соответственно UO.Set('quiet','0') чтобы вернуть их на место.
Что там лишнее решать только тебе
PS я бы например не стал использовать комбинацию GoTo но это твой скрипт.
Re: Автоматический Автолут
Posted: 2011-08-08 09:55:50
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
Re: Автоматический Автолут
Posted: 2011-08-08 10:41:50
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