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

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