Автолут рабочий но есть проблемы... помогите.

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
felkon
Posts: 11
Joined: 2009-02-25 21:21:04
Location: Саратов
Contact:

Автолут рабочий но есть проблемы... помогите.

Post 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') если без нее работает гораздо лучше...

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

Post 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
felkon
Posts: 11
Joined: 2009-02-25 21:21:04
Location: Саратов
Contact:

Post by felkon »

и все равно тормозит.... даже если мало убиваешь и не так часто.... (раз в 30 секунд.) пробовал задержки меньше ставить на проверку трупа клиент со временем виснет...
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

felkon wrote:и все равно тормозит.... даже если мало убиваешь и не так часто.... (раз в 30 секунд.) пробовал задержки меньше ставить на проверку трупа клиент со временем виснет...

Я вроде все обьяснил, это природа инжи. Если хочешь чтоб работало, нужно убрать wile wend цикл и запускать скрипт после каждого убитого монстра, ну накройняк после пяти штук. Иначе краши и тормоза не избежны.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

Вообще на некоторых шардах трупы можно лутать только нарасстроялии 3 тайла. А у тебя
uo.set('finddistance','4')
:roll:

А крашит изза перегрузки в игнорах.
Кстати у меня скрипт на лут мобов с игнорами работает больше 500 за раз и не часто падает. Краши бывают когда ктото рядом тоже убивает и скрипт пытается слутать чужих трупов. Так что раз на раз не приходится.

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

Post by Kynep »

Там в другом проблема, у автора скрипт запущен постоянно, он киляет мобов каждые 5 секунд, скрипт пытается лутать каждый труп и начинает, естественно, тупить.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

Kynep wrote:Там в другом проблема, у автора скрипт запущен постоянно, он киляет мобов каждые 5 секунд, скрипт пытается лутать каждый труп и начинает, естественно, тупить.

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

Post by Kynep »

Mirage wrote:Ну проблема не в том что он запущен постоянно :)) Крафты тоже запускаются на сутки. Там игнорит трупы после лута и не трогает их больше.

И что? Мы с ним общались и тестили по разному, проблема именно в большом кол-ве трупов. Все что ты сказал мы проделывали и не только. Я посоветовал не спешить, ну раз молчит значит работает. Он не крашит а тупит, половину лутает, половину нет, бывает ваще не лутает, борода кароч.
Post Reply