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

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