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: