Page 1 of 1

Скрипт на боукрафт не идёт дальше после физла.

Posted: 2007-04-24 09:18:41
by Designer

Code: Select all

VAR Sunduk='0x40415859' ; ИД сундука где все логи 
VAR TDagger='0x0F51' ; Тип даггера 
VAR TLogs='0x1BDD' ; Тип логов 
VAR TTorch='0x1BD4' ; Тип торчей 
VAR TShaft='0x1BD4' ; Тип шафтов 

; В руке или паке даггер, в сундуке логи и запускаем !!! 

sub BowCraft_shaft() 
uo.useobject(Sunduk) 
wait(200) 
while 1==1 
UO.FindType(TLogs,'0x0000','backpack') 
While UO.GetQuantity('finditem')==0 
UO.FindType(TLogs,'0x0000',Sunduk) 
wait(200) 
UO.Grab('1','finditem') 
Wend 
wait(200)  

uo.WaittargetType(TLogs) 
uo.Usetype(TDagger) 
uo.WaitMenu('What do you want to carve the wood into?','shaft (1 log)') 
wait (1000) 
uo.DeleteJournal() 
while not (uo.InJournal("You put") or uo.InJournal("You fail")) 
wait(10) 
wend 

if uo.weight > 200 then 
UO.SetReceivingContainer(Sunduk) 
wait(200) 
UO.FindType(TShaft) 
if UO.GetQuantity('finditem')>0 then 
UO.Grab('0','finditem') 
wait(200) 
end if 
UO.UnSetReceivingContainer() 
end if 
wend 
end sub
Если физлит шафт, то дальше не идёт :(

Posted: 2007-04-24 09:31:17
by Designer
Работает нормально минуты две, потом пишет No item Found. Next target ... *etc*

Posted: 2007-05-09 10:38:51
by WoIF
у меня такая же хрень :(

Posted: 2007-05-09 11:36:57
by u0rypT
Скопировал, будет время разберусь, шард какой ?

Posted: 2007-05-09 12:04:45
by Destruction
Прочитал скрипт вкратце.

Code: Select all

uo.useobject(Sunduk) 
wait(200) 
Угу, а если во время World Save'а будет?

Тут лучше checklag() или сверять по lastcontainer, кароче статическая пауза не катит.

Code: Select all

while 1==1 
Тебе конечно пофиг, но инжект будет каждую итерацию цикла сравнивать 1 и 1, мелочь, но лучше написать while true.

Code: Select all

UO.FindType(TLogs,'0x0000','backpack') 
While UO.GetQuantity('finditem')==0 
Для таких целей используется uo.FindCount()

Code: Select all

UO.FindType(TLogs,'0x0000',Sunduk) 
wait(200) 
Пауза после FindType не нужна.

Code: Select all

UO.Grab('1','finditem')
Wend
А вот после мува - нужна и даже очень, причём динамечкая. Ну или хотя бы checklag().

+ не совсем логично расставлены комманды в скрипте, я бы предложил так:

Code: Select all

UO.FindType(TLogs,'0x0000','backpack') 
If Not UO.FindCount()
UO.FindType(TLogs,'0x0000',Sunduk) 
UO.Grab('1','finditem') 
checklag()
End If
Кроме того, следует учесть, что вытащить 1 лог из БОЛЬШОЙ стопки - на подавляющем большинстве шардов - не получится.

Читаем скрипт дальше )

Code: Select all

Wend 
wait(200)  
Зачем тут пауза? Может после каждой строчки паузы натолкать?)

Code: Select all

uo.WaittargetType(TLogs) 
uo.Usetype(TDagger) 
uo.WaitMenu('What do you want to carve the wood into?','shaft (1 log)') 
wait (1000) 
Сначала WaitMenu, потом остальные комманды.

Code: Select all

wait (1000) 
uo.DeleteJournal() 
Не нужна тут пазуа, вот скажи, зачем тебе СТОЛЬКО пауз?) Тебе надо, чтобы скрипт медленно работал?))

Code: Select all

while not (uo.InJournal("You put") or uo.InJournal("You fail")) 
wait(10) 
wend 
Несколько устаревшая конструкция с двумя InJournal. И repeat .. until тут использовать логичнее.
Пауза тоже маловата, тут проверять 100 раз в секунду - не надо, хватит и 20.

Вобщем лучше так (если версия Injection.dll поддерживает):

Code: Select all

repeat
   wait( 50 )
until uo.injournal( "You put|You fail" )
Читаем скрипт дальше:

Code: Select all

if uo.weight > 200 then 
UO.SetReceivingContainer(Sunduk) 
wait(200) 
UO.FindType(TShaft) 
if UO.GetQuantity('finditem')>0 then 
UO.Grab('0','finditem') 
wait(200) 
end if 
UO.UnSetReceivingContainer() 
end if 
wend 
Типа разгрузка, да?) А ведь можно и проще, да и разгружаться реже:

Code: Select all

if uo.weight >= uo.str*4 then
   while uo.count( TShaft )
      uo.MoveItem( "^" + TShaft, "0", Sunduk )
      checklag()
   wend
endif
uo.str*4 - чуть меньше максимального веса.

Касательно проблемы с тем, что после физла - не крафтит - проверь сообщение, которое выдаёт при физле:

Code: Select all

uo.InJournal("You fail")
PS: Надо бы почаще так расписывать, мб научаться люди чему-нибудь.

Posted: 2007-05-09 12:22:50
by WoIF
DRW

Posted: 2007-05-09 20:16:41
by WoIF
все разобрался я в этом,короче нужно определенные галочки поставить в инже,и логи расскладывать по кучкам в 1к
и все пошло :lol: