небольшой хелп

Anything and all.

Moderators: Murderator+, Murderator

maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

небольшой хелп

Post by maximka4 »

вобщем такая тема ,нашел я скрипт на тайлоринг и решил его переделать на карпентри, но вот проблемка: чар все замечательно берет логи> и начинает делать удочки> перелаживет в сумку> после этого он должен делать все заново,но он не делает,открывается главное окно крафта и он останавливается. дорогие скриптеры и кто шарит в скриптах помогите если сможите , а то до меня не доходит, вроде же все правельно сделано.

Code: Select all

скрипт переделан с тайлоринга на карпентри, он должен делать следующее: в одном сунуке лежат 10 мешков , в другом кучки бревен по 255 штук в каждой кучке, скрипт берет бревна и делает удочку после этого он кладет ее в сумку и начинает все заного.

Code: Select all

sub main()
sub Mycarpentry() 
   var Sunduk='0x4023BAD4' ;в этом сундуке 10 сумок
   var SundukOFclothes='0x4030408A' ;в этом сундуке лежат кучки по 255 бревен 
   var cloth='0x1BDD' ;бревна
   var SewingKit='0x40241643' ; рубанок
   var BodySash='0x0DBF' ;удочки
   var exit=0 
   var i=0 
   dim SumkaIn[20] 
   SumkaIn[0]='0x4023BDDF' 
   SumkaIn[1]='0x4023BB03' 
   SumkaIn[2]='0x4023C7AB' 
   SumkaIn[3]='0x4023C481' 
   SumkaIn[4]='0x40042DC9' 
   SumkaIn[5]='0x4023CAB1' 
   SumkaIn[6]='0x4023CAE6' 
   SumkaIn[7]='0x4023BD0A' 
   SumkaIn[8]='0x4023BE3A' 
   SumkaIn[9]='0x4023C354' 
UO.WaitMenu ('Carpentry', 'Weapons & Tools', 'Weapons & Tools', 'fishing pole' ) 
   for i=0 to 9 
   uo.setreceivingcontainer(SumkaIn[i]) 
   repeat 
      uo.DeleteJournal() 
      if STR(uo.Count(cloth))<='10' then 
         exit=1 
         uo.print('!!!!!!!!') 
      end if 
      if STR(uo.Count(cloth))>'10' then 
         uo.print('There is '+STR(uo.Count(cloth))+' clothes there') 
         uo.useobject(SewingKit) 
         uo.findtype(cloth,'-1','backpack') 
         uo.waittargetobject('finditem') 
    repeat 
            wait(100) 
         until uo.InJournal('You put') OR uo.InJournal('Tailoring failed') OR uo.InJournal('Targeting canceled') 
         if uo.InJournal('You put') then 
            uo.findtype(BodySash,'-1','backpack') 
            uo.Grab('1','finditem') 
         end if 
      end if 
   until exit==1 
   uo.setreceivingcontainer('backpack') 
   uo.findtype(cloth,'-1',SundukOFclothes) 
   uo.Grab('255','finditem') 
   wait(3000) 
   exit=0 
  next 
  uo.playvaw('C:\uo\music\death.midi') 
end sub 
 
maxim viktorovich
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

помогите скриптеры пожалуста.
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Моя карпа на удочки из раздела Scripts! не работает?
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:Моя карпа на удочки из раздела Scripts! не работает?
она работает ,но как тока наложит в один мешок 255 удочек, не берет следующий мешок, а продолжает ложить в пак к чару. вот такие пироги. (twi включен, оба сундука открыты)
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Попробуй в моем скрипте в командах Findtype все -1 и 1 написать в кавычках. Кроме того 0 в команде MoveItem тоже возьми в кавычки.

Это у меня, как оказалось, стандартный недочет. В половине скриптов в кавычках, в половине нет. А, оказывается, из-за этого может сбоить.

Отпиши о результатах. Если поможет - поправлю исходный скрипт и скажу Йоко чтобы он проапгрейдил топик.
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:Попробуй в моем скрипте в командах Findtype все -1 и 1 написать в кавычках. Кроме того 0 в команде MoveItem тоже возьми в кавычки.

Это у меня, как оказалось, стандартный недочет. В половине скриптов в кавычках, в половине нет. А, оказывается, из-за этого может сбоить.

Отпиши о результатах. Если поможет - поправлю исходный скрипт и скажу Йоко чтобы он проапгрейдил топик.
вроде все праельно поставил, но всеровно не хочет брать мешок.

Code: Select all

sub main()
sub carpentry() 
   VAR Sunduk1 = '0x4033F60E'       ;  сундук с пустыми мешками
   VAR Sunduk2 = '0x4030408A'       ;  пустой сундук
   VAR Meshok = '0x0E76'          ;  тип мешка
   VAR Logi = '0x1BDD'          ; тип логов
   VAR Rubanok = '0x1035'          ;  рубанок
   VAR Udochka = '0x0DBF'          ; удочка
   VAR Kolvo = 255          ;  
   VAR MeshSer, j, k 
   While TRUE 
      UO.FindType( Logi,'-1', '1'  )       ; ищем логи на полу
      UO.Grab( Str( Kolvo ), 'finditem' )    ; кладем логи в пак
      wait( 2000 ) 
      If UO.FindCount() == 0 Then 
         UO.Print("Logs not found, script terminated") 
         return 
      Endif 
      UO.FindType( Meshok,'-1', Sunduk1 )       ; ищем шешок в сундуке
      MeshSer = UO.GetSerial( 'finditem' ) 
      UO.Grab( '1', 'finditem' )          ; кладем его в пак
      wait( 2000 ) 
      UO.MoveItem( MeshSer,'0' , Sunduk2 ) 
      wait( 2000 ) 
      While UO.Count( Logi ) > 0 
         ; пока в паке есть логи
         UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' ) 
         UO.DeleteJournal() 
         UO.CancelMenu() 
         UO.WaitMenu ('Carpentry', 'Weapons & Tools', 'Weapons & Tools', 'fishing' ) 
         UO.UseType( Rubanok ) 
         k = 0 
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) 
            k = k + 1 
            wait(500) 
         wend 
         ; Wait( 14000 ) 
         ; скрафтили удочку
         ; перекладываем в мешок
         if UO.Count( Udochka ) > 0 then 
            UO.FindType( Udochka, '-1', 'backpack' ) 
            UO.MoveItem( 'finditem', '0', MeshSer ) 
            wait( 2000 ) 
            UO.Print( 'Udochka perelozhena' ) 
         end if 
      Wend 
   Wend 
end sub 
переделал
Last edited by maximka4 on 2005-01-17 17:57:19, edited 2 times in total.
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Кавычки это не скобки, не путай. То есть от тебя ожидалось, что ты напишешь UO.FindType( Logi, '-1', '1' ) и т. д., а не то, что ты наворотил
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:Кавычки это не скобки, не путай. То есть от тебя ожидалось, что ты напишешь UO.FindType( Logi, '-1', '1' ) и т. д., а не то, что ты наворотил
спасибо вам что мне помогаете, но все таки у меня все так же осталось.
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

maximka4 wrote:
Edred wrote:Кавычки это не скобки, не путай. То есть от тебя ожидалось, что ты напишешь UO.FindType( Logi, '-1', '1' ) и т. д., а не то, что ты наворотил
спасибо вам что мне помогаете, но все таки у меня все так же осталось.
Поэкспериментируй, уменьши кол-во с 255 до 200, есть у меня подозрение, что он у тебя не хочет последнюю удочку класть в мешок, потому и начинает их валить в пак. Вполне вероятно, что в момент запуска скрипта в паке были уже какие-то логи... Также проверь - мешки у тебя все этого типа, может там только один такой, а остальные другие? :)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Кроме того, после этой команды:

Code: Select all

      UO.FindType( Meshok,'-1', Sunduk1 )       ; ищем шешок в сундуке 
Вставь:

Code: Select all

      If UO.FindCount() == 0 Then 
         UO.Print("Bags not found, script terminated") 
         return 
      Endif 
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:Кроме того, после этой команды:

Code: Select all

      UO.FindType( Meshok,'-1', Sunduk1 )       ; ищем шешок в сундуке 
Вставь:

Code: Select all

      If UO.FindCount() == 0 Then 
         UO.Print("Bags not found, script terminated") 
         return 
      Endif 
вобщем он продолжает ложит удочки в мешок где 255 удочек. а так как туда не лезет они падают в пак.
maxim viktorovich
Ehidna
Posts: 41
Joined: 2005-01-15 14:34:26
Contact:

Post by Ehidna »

Во замарота !!
Эксперты вставьте себе его сткрипт да по эксперементиркйте
Выложите рабочий скрипт на удочки плз :)
Very Old Player
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Ehidna wrote:Во замарота !!
Эксперты вставьте себе его сткрипт да по эксперементиркйте
Выложите рабочий скрипт на удочки плз :)
ну а ты как хотел(а)? :)
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

maximka4 wrote:вобщем он продолжает ложит удочки в мешок где 255 удочек. а так как туда не лезет они падают в пак.
Ты вставки сделал которые я запостил? Не вываливается с сообщением что мешки кончились?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

maximka4 wrote:

Code: Select all

sub main()
sub carpentry() 
 
А вот это, кстати, что такое? И какой ты скрипт запускаешь? :shock:
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:
maximka4 wrote:

Code: Select all

sub main()
sub carpentry() 
 
А вот это, кстати, что такое? И какой ты скрипт запускаешь? :shock:
а разве есть разница? дело в том что если даже я уберу

Code: Select all

sub carpentry
то ведь ничего ж не изметится.
или я не прав ?. а если я буду запускать просто

Code: Select all

sub carpentry
то у меня будет ошибка (функция main не найдена). небольшой хелп получился в прибольшой.
maxim viktorovich
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:
maximka4 wrote:вобщем он продолжает ложит удочки в мешок где 255 удочек. а так как туда не лезет они падают в пак.
Ты вставки сделал которые я запостил? Не вываливается с сообщением что мешки кончились?
вставил. вот:

Code: Select all

sub main() 
   VAR Sunduk1 = '0x4033F60E'       ;  сундук с пустыми мешками 
   VAR Sunduk2 = '0x4030408A'       ;  пустой сундук 
   VAR Meshok = '0x0E76'          ;  тип мешка 
   VAR Logi = '0x1BDD'          ; тип логов 
   VAR Rubanok = '0x1035'          ;  рубанок 
   VAR Udochka = '0x0DBF'          ; удочка 
   VAR Kolvo = 255          ;  
   VAR MeshSer, j, k 
   While TRUE 
      UO.FindType( Logi,'-1', '1'  )       ; ищем логи на полу 
      UO.Grab( Str( Kolvo ), 'finditem' )    ; кладем логи в пак 
      wait( 2000 ) 
      If UO.FindCount() == 0 Then 
         UO.Print("Logs not found, script terminated") 
         return 
      Endif 
      UO.FindType( Meshok,'-1', Sunduk1 )       ; ищем шешок в сундуке 
      If UO.FindCount() == 0 Then 
         UO.Print("Bags not found, script terminated") 
         return 
      Endif 
      MeshSer = UO.GetSerial( 'finditem' ) 
      UO.Grab( '1', 'finditem' )          ; кладем его в пак 
      wait( 2000 ) 
      UO.MoveItem( MeshSer,'0' , Sunduk2 ) 
      wait( 2000 ) 
      While UO.Count( Logi ) > 0 
         ; пока в паке есть логи 
         UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' ) 
         UO.DeleteJournal() 
         UO.CancelMenu() 
         UO.WaitMenu ('Carpentry', 'Weapons & Tools', 'Weapons & Tools', 'fishing' ) 
         UO.UseType( Rubanok ) 
         k = 0 
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) 
            k = k + 1 
            wait(500) 
         wend 
         ; Wait( 14000 ) 
         ; скрафтили удочку 
         ; перекладываем в мешок 
         if UO.Count( Udochka ) > 0 then 
            UO.FindType( Udochka, '-1', 'backpack' ) 
            UO.MoveItem( 'finditem', '0', MeshSer ) 
            wait( 2000 ) 
            UO.Print( 'Udochka perelozhena' ) 
         end if 
      Wend 
   Wend 
end sub
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Дык запусти, убедившись что ТВР включен, что сундуки хоть раз открывались, что финддистанс и дистанс выставлены в 3 например. Далее один кружок присматривай за ним, он же логи отсчитывает, а переменную на количество логов поставь в 200, проследи как он берет новую порцию, берет ли новый мешок...

Поставь перед определением MeshSer ( MeshSer = UO.GetSerial( 'finditem' ) ) команду:

Code: Select all

UO.Print( 'Old bag is ' + MeshSer )
а после определения MeshSer команду:

Code: Select all

UO.Print( 'New bag is ' + MeshSer )
и проследи, сменяется ли серийник мешка...

А потом уже пости сюда результаты тестов, разберемся. Я на этом самом скрипте вкачал себе карпу с 30 до 100.
maximka4
Posts: 147
Joined: 2004-10-13 15:08:08

Post by maximka4 »

Edred wrote:Дык запусти, убедившись что ТВР включен, что сундуки хоть раз открывались, что финддистанс и дистанс выставлены в 3 например. Далее один кружок присматривай за ним, он же логи отсчитывает, а переменную на количество логов поставь в 200, проследи как он берет новую порцию, берет ли новый мешок...

Поставь перед определением MeshSer ( MeshSer = UO.GetSerial( 'finditem' ) ) команду:

Code: Select all

UO.Print( 'Old bag is ' + MeshSer )
а после определения MeshSer команду:

Code: Select all

UO.Print( 'New bag is ' + MeshSer )
и проследи, сменяется ли серийник мешка...

А потом уже пости сюда результаты тестов, разберемся. Я на этом самом скрипте вкачал себе карпу с 30 до 100.
вобщемон берет логи и вылетает ошибка line 23: Runtime error - invalid operation for this type. тоесть ему не нравится ета строка:

Code: Select all

UO.Print( 'Old bag is ' + MeshSer )
а если ее убрать то просто показывается id мешка который берется.
maxim viktorovich
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Сорри. Не подумал о первом круге. До того как серийник первого мешка считан, переменная MeshSer не определена. Поставь в самом начале перед первым циклом):

MeshSer = '0'
Post Reply