Помогите со скриптом на картографию.

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Funtazer
Posts: 2
Joined: 2015-09-08 18:18:24

Помогите со скриптом на картографию.

Post by Funtazer »

Есть работающий скрипт. Всё хорошо, но после отрисовки карты он очень долго думает перед тем, как выкинуть готовую карту в треш (минуту примерно).
Помогите поправить, пожалуйста.
Строчку
Wend
UO.FindType( Map )
While UO.FindCount() > 0
UO.MoveItem( 'finditem', 0, Trash )
wait(500)
CheckLag()
UO.FindType( Map )
Wend
менял от 10000 до 100, но это не дает абсолютно никакой реакции. Есть ощущение, что перед выкидыванием карты в треш скрипт считает количество карт в исходном сундуке или что-то типо того.

Code: Select all

sub cartograph() 
   VAR Sunduk1 = '0x4009B254' ; ?????? ??????? ? ??????? ? ???????
   VAR Trash = '0x41703671' ; ?????? ????????? ?????
   VAR Meshok = '0x0E76' ; ??? ?????
   VAR Map = '0x14EB' ; ??? ?????
   VAR Fizzle = 'Вашими неумелыми дрожащими руками нарисована совершенно бесполезная карта.'
   VAR Success = 'You place a map in your backpack'
   VAR MeshSer, j, k, MapSer, flag
   UO.CancelMenu()
   UO.IgnoreReset()
   UO.AutoMenu( 'What sort of map','Regional Map' )
   UO.FindType( Meshok, -1, Sunduk1 )
   While UO.FindCount() > 0
      MeshSer = UO.GetSerial( 'finditem' )
      UO.UseObject( MeshSer )
      wait(500)
      CheckLag()
      UO.FindType( Map, -1, MeshSer )
      While UO.FindCount() > 0
         MapSer = UO.GetSerial( 'finditem' )
         UO.Grab( '1', 'finditem' )
         repeat
            wait(100)
         until UO.Count( Map ) == 1
         flag = 0
         While flag == 0
            DeleteJournal( Fizzle )
            DeleteJournal( Success )
            UO.UseObject( MapSer )
            k = 0
            repeat
               k = k + 1
               wait(100)
            until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR k > 600
            If UO.InJournal( Success ) OR k > 600 Then
               flag = 1
            Endif
         Wend
         UO.FindType( Map )
         While UO.FindCount() > 0
            UO.MoveItem( 'finditem', 0, Trash )
            wait(500)
            CheckLag()
            UO.FindType( Map )
         Wend
         UO.FindType( Map, -1, MeshSer )
      Wend
      UO.Ignore( MeshSer )
      UO.FindType( Meshok, -1, Sunduk1 )
   Wend
   UO.IgnoreReset()
   UO.CancelMenu()
endsub

Sub CheckLag()
   DeleteJournal( 'backpack' )
   UO.Click( 'backpack' )
   repeat
      wait(100)
   until UO.InJournal( 'backpack' )
   return
end sub

Sub DeleteJournal( string1 )
   VAR nom = UO.InJournal( string1 )
   If nom > 0 Then
      UO.SetJournalLine( Nom - 1, 'string replaced' )
      DeleteJournal( string1 )
   Endif


Спасибо.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Помогите со скриптом на картографию.

Post by Mirage »

Code: Select all

         While flag == 0
            DeleteJournal( Fizzle )
            DeleteJournal( Success )
            UO.UseObject( MapSer )
            k = 0
            repeat
               k = k + 1
               wait(100)
            until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR k > 600 ; <-------------  Вот тут и в следующей строке либо поправь сообщения на свои (те которые сервер шлет при открытии карты), либо уменьши 600 - это 6 секунд в данном случае.
            If UO.InJournal( Success ) OR k > 600 Then
               flag = 1
            Endif
         Wend
Funtazer
Posts: 2
Joined: 2015-09-08 18:18:24

Re: Помогите со скриптом на картографию.

Post by Funtazer »

Спасибо, помогла смена таймаута, сообщения стоят верные, но на них чего-то не реагирует скрипт.
Post Reply