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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Designer
Posts: 6
Joined: 2007-02-22 16:41:27
Contact:

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

Post 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
Если физлит шафт, то дальше не идёт :(
Designer
Posts: 6
Joined: 2007-02-22 16:41:27
Contact:

Post by Designer »

Работает нормально минуты две, потом пишет No item Found. Next target ... *etc*
WoIF
Posts: 5
Joined: 2007-05-09 08:25:58
Contact:

Post by WoIF »

у меня такая же хрень :(
Уверенный шаг вперед,следствие хорошего пинка под зад.
u0rypT
Posts: 175
Joined: 2004-12-30 18:13:16
Location: Russia
Contact:

Post by u0rypT »

Скопировал, будет время разберусь, шард какой ?
Design, webdev, coding, c#, php, asp.net, xml, perl, sql, ajax, drawing, illustrating, restoration, photo, photoshop, schedule, pron, guitar, lead-guitar, js, jsp, java, dom, html, *nix, struts, cs, etc
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post 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: Надо бы почаще так расписывать, мб научаться люди чему-нибудь.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
WoIF
Posts: 5
Joined: 2007-05-09 08:25:58
Contact:

Post by WoIF »

DRW
Уверенный шаг вперед,следствие хорошего пинка под зад.
WoIF
Posts: 5
Joined: 2007-05-09 08:25:58
Contact:

Post by WoIF »

все разобрался я в этом,короче нужно определенные галочки поставить в инже,и логи расскладывать по кучкам в 1к
и все пошло :lol:
Уверенный шаг вперед,следствие хорошего пинка под зад.
Post Reply