Page 1 of 1
Автолут рабочий но есть проблемы... помогите.
Posted: 2009-05-17 15:34:20
by felkon
Code: Select all
sub looting()
var corpse,i,j
uo.set('finddistance','4')
#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
проблема собственно такова что он не каждый раз лутает... примерно 10 раз лутае и 1 из них пропускает.... почему?
еще совсем не понял нафига нужна строчка в самом начале uo.set('distance','2') если без нее работает гораздо лучше...
Ксожалению не знаю как сделать так чтоб все что он кидает в пак складывал бы в одну сумку...
Posted: 2009-05-18 11:47:18
by Kynep
Попробуй так.
Code: Select all
sub looting()
var corpse,i
uo.set('finddistance','4')
DIM Loot[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 Text[12]
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[12]
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
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)!")
uo.useobject(corpse)
wait(500)
for i=0 to 11
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(800)
end if
until uo.findcount()==0
next
uo.ignore(corpse)
Else
uo.print("No Corpses Beside!!!")
end if
end:
wait(600)
wend
end sub
Posted: 2009-05-20 06:59:00
by felkon
и все равно тормозит.... даже если мало убиваешь и не так часто.... (раз в 30 секунд.) пробовал задержки меньше ставить на проверку трупа клиент со временем виснет...
Posted: 2009-05-20 11:23:36
by Kynep
felkon wrote:и все равно тормозит.... даже если мало убиваешь и не так часто.... (раз в 30 секунд.) пробовал задержки меньше ставить на проверку трупа клиент со временем виснет...
Я вроде все обьяснил, это природа инжи. Если хочешь чтоб работало, нужно убрать wile wend цикл и запускать скрипт после каждого убитого монстра, ну накройняк после пяти штук. Иначе краши и тормоза не избежны.
Posted: 2009-06-01 16:01:49
by Mirage
Вообще на некоторых шардах трупы можно лутать только нарасстроялии 3 тайла. А у тебя
uo.set('finddistance','4')
А крашит изза перегрузки в игнорах.
Кстати у меня скрипт на лут мобов с игнорами работает больше 500 за раз и не часто падает. Краши бывают когда ктото рядом тоже убивает и скрипт пытается слутать чужих трупов. Так что раз на раз не приходится.
В приведенном скрипте мне кажется стоит протестировать бОльшую паузу на лут предмета, сделать фильтр на "фастлутдетект", проверить можно ли лутать на расстоянии в 4 тайла и убрать этот череззабороногу... выключатель по end

Проще сделать в условии цикла проверку на перегруз, а не goto как оно используется тут.
Posted: 2009-06-01 21:34:34
by Kynep
Там в другом проблема, у автора скрипт запущен постоянно, он киляет мобов каждые 5 секунд, скрипт пытается лутать каждый труп и начинает, естественно, тупить.
Posted: 2009-06-02 08:45:10
by Mirage
Kynep wrote:Там в другом проблема, у автора скрипт запущен постоянно, он киляет мобов каждые 5 секунд, скрипт пытается лутать каждый труп и начинает, естественно, тупить.
Ну проблема не в том что он запущен постоянно

) Крафты тоже запускаются на сутки. Там игнорит трупы после лута и не трогает их больше.
Posted: 2009-06-02 12:32:58
by Kynep
Mirage wrote:Ну проблема не в том что он запущен постоянно

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