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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Worth
Posts: 51
Joined: 2004-10-04 04:50:03
Location: DRW
Contact:

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

Post 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
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

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

Post 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
так ИМХО проще.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

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

Post 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()
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

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

Post by Sfagnum »

Edred wrote:Так проще но не быстрее. Каждый поиск занимает какое-то время. Маленькое, но занимает. Сравнение типов происходит быстрее. Поэтому если у тебя в массиве полтинник или больше типов, а ты лутишь труп, скажем, с 3-4 вещами, поиск в этом трупе 50 вещей или перебор этих трех и сравнение их с заданными 50-ью - две большие разницы. Я экспериментировал.
спасибо за пояснение, буду иметь ввиду.
Worth
Posts: 51
Joined: 2004-10-04 04:50:03
Location: DRW
Contact:

Post by Worth »

Спасибо за ответ, теперь работает с первого раза.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

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

Post by Edred »

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


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