Tinkering

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Russian
Posts: 12
Joined: 2004-05-22 23:46:27

Tinkering

Post by Russian »

sub main()
repeat
UO.WaitMenu('Tinkering','Tools','Tools','tinker')
UO.Usetype('0x1EBC')
wait (200)
UO.DeleteJournal()
while not (UO.InJournal("You put") or UO.InJournal("Tinkering failed"))
wait (500)
end sub

Такой вот простенький скрипт, только почему-то не зацикливается. Делает один раз - и застывает. Почему? Ведь repeat стоит...
Russian
Posts: 12
Joined: 2004-05-22 23:46:27

Post by Russian »

Ответ увидел в следующей теме. :)
Russian
Posts: 12
Joined: 2004-05-22 23:46:27

Post by Russian »

Странно. Изменил скрипт на:

sub main()
While NOT UO.Dead()
UO.WaitMenu('Tinkering','Tools','Tools','tinker')
UO.Usetype('0x1EBC')
wait (200)
UO.DeleteJournal()
while not (UO.InJournal("You put") or UO.InJournal("Tinkering failed"))
wait (200)
wend
wait (200)
end sub

, но все равно не помогло!
Russian
Posts: 12
Joined: 2004-05-22 23:46:27

Post by Russian »

Побегав по форуму, "домутил" скрипт до такого вида, и теперь все работает:

sub main()
var i;
tinst:
uo.deletejournal()
UO.WaitMenu('Tinkering','Tools','Tools','tinker')
UO.Usetype('0x1EBC')
i=0
repeat
wait(200)
i=i+1
until uo.injournal("You put") or uo.injournal("failed") or i>50
goto tinst
end sub

Только объясните, пожалуйста, что вообще в этом скрипте означают строки с i (var i, i=0, i=i+1, i>50).
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Russian wrote:Побегав по форуму, "домутил" скрипт до такого вида, и теперь все работает:

sub main()
var i;
tinst:
uo.deletejournal()
UO.WaitMenu('Tinkering','Tools','Tools','tinker')
UO.Usetype('0x1EBC')
i=0
repeat
wait(200)
i=i+1
until uo.injournal("You put") or uo.injournal("failed") or i>50
goto tinst
end sub

Только объясните, пожалуйста, что вообще в этом скрипте означают строки с i (var i, i=0, i=i+1, i>50).


Счетчик времени. Простейший. Который прерывает цикл ожидания независимо от сообщения если прошло 50*200 миллисекунд (10 сек).
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Но ты в своем скрипте ограничен весом пака чара, потому лучше сделай так (измени крафт боттлов на то, что тебе надо):

Code: Select all

; Tinker. v.1.00b (c) Edred
;
; Чар берет из сундука инготы, крафтит из них бутылки
; и складывает эти бутылки в этот же сундук.
; Если инги закончились - выход.
;
sub tinker()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Ingi = '0x1BEF'          ; Тип ингов
   VAR Instrum = '0x1EBC'      ; Тип инструмента тинкера
   VAR Bottle = '0x0F0E'       ; Тип бутылки
   VAR Kolvo = 200          ; Брать ингов
   VAR k = 0
   While TRUE
      UO.FindType( Ingi, -1, Sunduk )   ; Ищем инги в сундуке
      If UO.FindCount() == 0 Then
         UO.Print("Iron Ingots not found, script terminated")
         return
      Endif
      UO.Grab( Str( Kolvo ), 'finditem' )
      wait( 2000 )
      While UO.Count( Ingi ) > 0
         ; Пока в паке есть инги
         UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
         UO.DeleteJournal()
         UO.CancelMenu()
         UO.WaitMenu ('Tinkering', 'Tools', 'Tools', 'empty bottle' )
         UO.UseType( Instrum )
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         if UO.Count( Bottle ) > 0 then
            UO.FindType( Bottle, -1, -1 )
            UO.MoveItem( 'finditem', 0, Sunduk )
            wait( 1000 )
            UO.Print( 'Bottle moved' )
         end if
      Wend
   Wend
end sub
ne0s
Posts: 5
Joined: 2004-05-06 21:19:19
Contact:

Post by ne0s »

Edred wrote:Но ты в своем скрипте ограничен весом пака чара, потому лучше сделай так (измени крафт боттлов на то, что тебе надо):

Code: Select all

; Tinker. v.1.00b (c) Edred
;
; Чар берет из сундука инготы, крафтит из них бутылки
; и складывает эти бутылки в этот же сундук.
; Если инги закончились - выход.
;
sub tinker()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Ingi = '0x1BEF'          ; Тип ингов
   VAR Instrum = '0x1EBC'      ; Тип инструмента тинкера
   VAR Bottle = '0x0F0E'       ; Тип бутылки
   VAR Kolvo = 200          ; Брать ингов
   VAR k = 0
   While TRUE
      UO.FindType( Ingi, -1, Sunduk )   ; Ищем инги в сундуке
      If UO.FindCount() == 0 Then
         UO.Print("Iron Ingots not found, script terminated")
         return
      Endif
      UO.Grab( Str( Kolvo ), 'finditem' )
      wait( 2000 )
      While UO.Count( Ingi ) > 0
         ; Пока в паке есть инги
         UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
         UO.DeleteJournal()
         UO.CancelMenu()
         UO.WaitMenu ('Tinkering', 'Tools', 'Tools', 'empty bottle' )
         UO.UseType( Instrum )
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         if UO.Count( Bottle ) > 0 then
            UO.FindType( Bottle, -1, -1 )
            UO.MoveItem( 'finditem', 0, Sunduk )
            wait( 1000 )
            UO.Print( 'Bottle moved' )
         end if
      Wend
   Wend
end sub

Что надо дописть , что бы чар складывал бутылки не в сундук ...
А в паки , причем разные паки .... менял бы он паки после переполнения прошлого .
Буду очень благодарен
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Что надо дописть , что бы чар складывал бутылки не в сундук ...
А в паки , причем разные паки .... менял бы он паки после переполнения прошлого .
Буду очень благодарен


Поройся тут, я кидал свои скрипты на ламбер и тейлор, там именно так и организовано... В тинкере мне такой необходимости не было, боттлы суммируются и их не надо раскладывать...
Post Reply