Page 1 of 1

Помогите со скриптом

Posted: 2004-10-07 02:37:19
by Worth
Скрипт на лут вещей, когда первый раз вызываешь-просто открывает труп, второй раз-лутит. Почему? Причем, к примеру, на скелетах лутит сразу, а на зомби или личе - со второго раза. Помогите, плиз.

sub Loot()
DIM Loot[100]
Loot[0]='0x0EED'; gp
Loot[1]='0x0F7E' ; Sceleton Bones
Loot[2]='0x0F16' ; Ametist
.....
Loot[41]='0x0F20' ; Tourmaline
Loot[42]='0x0F26' ; Diamond

UO.UseObject('lastcorpse')
UO.FindType( '-1', '-1', 'lastcorpse' )
while UO.FindCount()
For i = 0 To 42
If UO.GetGraphic( 'finditem' ) == Loot[i] Then
UO.MoveItem( 'finditem' )
wait(100)
Else
wait(10)
Endif
Next
UO.Ignore( 'finditem' )
UO.FindType( '-1', '-1', 'lastcorpse' )
wend
UO.IgnoreReset()

end sub

Re: Помогите со скриптом

Posted: 2004-10-07 08:09:38
by Sfagnum
Worth wrote:

Code: Select all

sub Loot() 
DIM Loot[100]
Loot[0]='0x0EED'; gp
Loot[1]='0x0F7E' ; Sceleton Bones
Loot[2]='0x0F16' ; Ametist
.....
Loot[41]='0x0F20' ; Tourmaline
Loot[42]='0x0F26' ; Diamond

UO.UseObject('lastcorpse')   
      For i = 0 To 42
         UO.FindType(Loot[i], '-1', 'lastcorpse' )
         while UO.FindCount() > 0
              UO.MoveItem( 'finditem' )
              wait(100)               
              UO.FindType(Loot[i], '-1', 'lastcorpse' )
         wend
      Next       
end sub
так ИМХО проще.

Re: Помогите со скриптом

Posted: 2004-10-07 11:50:09
by Edred
Sfagnum wrote:
Worth wrote:

Code: Select all

sub Loot() 
DIM Loot[100]
Loot[0]='0x0EED'; gp
Loot[1]='0x0F7E' ; Sceleton Bones
Loot[2]='0x0F16' ; Ametist
.....
Loot[41]='0x0F20' ; Tourmaline
Loot[42]='0x0F26' ; Diamond

UO.UseObject('lastcorpse')   
      For i = 0 To 42
         UO.FindType(Loot[i], '-1', 'lastcorpse' )
         while UO.FindCount() > 0
              UO.MoveItem( 'finditem' )
              wait(100)               
              UO.FindType(Loot[i], '-1', 'lastcorpse' )
         wend
      Next       
end sub
так ИМХО проще.


Так проще но не быстрее. Каждый поиск занимает какое-то время. Маленькое, но занимает. Сравнение типов происходит быстрее. Поэтому если у тебя в массиве полтинник или больше типов, а ты лутишь труп, скажем, с 3-4 вещами, поиск в этом трупе 50 вещей или перебор этих трех и сравнение их с заданными 50-ью - две большие разницы. Я экспериментировал.

По поводу скрипта. У меня этот скрипт работает хорошо. Иначе бы не постил в свое время на форум. Единственное - поставь паузу и проверку на лаги после команды открытия трупа. Быстрее всего именно тут у тебя проблема. То есть:

Code: Select all

UO.UseObject('lastcorpse') 
wait(300)
CheckLag()

Re: Помогите со скриптом

Posted: 2004-10-07 12:41:25
by Sfagnum
Edred wrote:Так проще но не быстрее. Каждый поиск занимает какое-то время. Маленькое, но занимает. Сравнение типов происходит быстрее. Поэтому если у тебя в массиве полтинник или больше типов, а ты лутишь труп, скажем, с 3-4 вещами, поиск в этом трупе 50 вещей или перебор этих трех и сравнение их с заданными 50-ью - две большие разницы. Я экспериментировал.
спасибо за пояснение, буду иметь ввиду.

Posted: 2004-10-09 05:16:09
by Worth
Спасибо за ответ, теперь работает с первого раза.

Re: Помогите со скриптом

Posted: 2004-10-09 20:25:58
by Edred
Sfagnum wrote:
Edred wrote:Так проще но не быстрее. Каждый поиск занимает какое-то время. Маленькое, но занимает. Сравнение типов происходит быстрее. Поэтому если у тебя в массиве полтинник или больше типов, а ты лутишь труп, скажем, с 3-4 вещами, поиск в этом трупе 50 вещей или перебор этих трех и сравнение их с заданными 50-ью - две большие разницы. Я экспериментировал.
спасибо за пояснение, буду иметь ввиду.


Ты, кстати, сам потести у себя, потому что я уже сталкивался с ситуацией (на другом шарде) когда то, что я описал не соответствовало истине. Там почему-то быстрее было через финдтайп всего массива...