Page 1 of 1

помогите с бовкрафтом

Posted: 2010-02-10 22:13:46
by mafioziblood
незнаю что сделать.. логи не берет из сундука. ( вернее берет но только когда запускаешь скрипт,а как доходит до 10 или менее логов просто стоит и тупит.. помогите доделать плз..




#####################################################################
;
; Чар берет из сундука логи, крафтит луки
; и кидает их в трэш.
; Если логи закончились - выход.
;
sub bow()
VAR Musor = '0x4038A724'
VAR Sunduk = '0x4018F0BA' ; Сериал сундука
VAR Logi = '0x1BDD' ; Тип логов
VAR Instrum = '0x0F51' ; Тип ножика
VAR Bow = '0x13B1' ; Тип лука
VAR Kolvo = 200 ; Брать логов
VAR k = 0
While TRUE
if not uo.count('0x0FA0') then
uo.findtype('0x0FA0','0x0000',Sunduk)
if uo.findcount() then
uo.moveitem('finditem','200','backpack')
wait(1000)
else
uo.print('NITKI ZAKONCHILIS')
return
endif
endif
if not uo.count(Logi) then
UO.FindType(Logi,' -1',Sunduk) ; Ищем логи в сундуке
If UO.FindCount() == 0 then
UO.Print("Logs not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait( 2000 )
endif
While UO.Count( Logi ) > 10
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logs' )
UO.DeleteJournal()
uo.waitmenu('What do you want to carve','bow')
uo.waittargettype(Logi)
UO.UseType( Instrum )
repeat
wait(500)
until UO.InJournal('You put the bow in your pack.') or UO.InJournal('You fail to create the item')
if UO.Count( Bow ) > 0 then
UO.FindType( Bow, -1, -1 )
UO.MoveItem( 'finditem', 0, Musor )
wait( 1000 )
UO.Print( 'Bow moved' )
end if
Wend
Wend
end sub

Re: помогите с бовкрафтом

Posted: 2010-02-10 22:32:11
by Mirage
неправильно условие добора выставленно
While UO.Count( Logi ) > 10 делает лук пока логов больше 10- правильно НО выше

if not uo.count(Logi) then
добирает ЕСЛИ логов вообще нет. Цикл убивает себе мозг.

if uo.count(Logi)<10 then

Re: помогите с бовкрафтом

Posted: 2010-02-11 00:47:54
by mafioziblood
спасибо большое )) все работает

Re: помогите с бовкрафтом

Posted: 2010-02-11 12:16:41
by mafioziblood
ааааааа((( логи брать стал а нитки перестал (( и когда логов ровно 10 остаетьсся чар просто становиться и все ни чего не делаеть.. можно как нибудь сделать чтоб и 10 было включительно??

Re: помогите с бовкрафтом

Posted: 2010-02-11 12:27:42
by Mirage
опять же не правильное условие но теперь в
While UO.Count( Logi ) > 10
нет условия на конец ниток :)

While UO.Count( Logi ) > 10 or UO.Count( 'тип ниток' ) > 10

Re: помогите с бовкрафтом

Posted: 2010-02-11 12:43:23
by mafioziblood
вообше ничего недобирает теперь )))) незнаю мож я что то не так делаю,совсем дуб.. вобщем вот так )


#####################################################################
;
; Чар берет из сундука логи, крафтит луки
; и кидает их в трэш.
; Если логи закончились - выход.
;
sub bow()
VAR Musor = '0x413C2D8D'
VAR Sunduk = '0x4018F0BA' ; Сериал сундука
VAR Logi = '0x1BDD' ; Тип логов
VAR Instrum = '0x0F51' ; Тип ножика
VAR Bow = '0x13B1' ; Тип лука
VAR Kolvo = 200 ; Брать логов
VAR k = 0
While TRUE
if not uo.count('0x0FA0') then вот же вроде на окончанее ниток...
uo.findtype('0x0FA0','0x0000',Sunduk)
if uo.findcount() then
uo.moveitem('finditem','200','backpack')
wait(1000)
else
uo.print('NITKI ZAKONCHILIS')
return
endif
endif
if uo.count(Logi)< 10 then
UO.FindType(Logi,' -1',Sunduk) ; Ищем логи в сундуке
If UO.FindCount() == 0 then
UO.Print("Logs not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait( 2000 )
endif
While UO.Count( Logi ) > 10
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logs' )
UO.DeleteJournal()
uo.waitmenu('What do you want to carve','bow')
uo.waittargettype(Logi)
UO.UseType( Instrum )
repeat
wait(500)
until UO.InJournal('You put the bow in your pack.') or UO.InJournal('You fail to create the item')
if UO.Count( Bow ) > 0 then
UO.FindType( Bow, -1, -1 )
UO.MoveItem( 'finditem', 0, Musor )
wait( 1000 )
UO.Print( 'Bow moved' )
end if
Wend
Wend
end sub

Re: помогите с бовкрафтом

Posted: 2010-02-11 14:33:46
by Mirage
алгоритм у тебя
если нет ниток то добираем (1-норазовая проверка)
если логов меньше 10 то добираем (1-норазовая проверка)
делаем луки пока ЛОГОВ больше 10... (цикл)

на последнем цикли и зависает так как обязательно условие - отсутствие ЛОГОВ а не логов или ниток. Смотри последнюю стоку в моем предыдущем сообщении.

Re: помогите с бовкрафтом

Posted: 2010-02-11 14:53:31
by mafioziblood
я так делал уже.. но все равно что то не то ( когда вставляешь это строчку. он перестает логи брать... и нитки.. только при запуске берет раз а в процессе нет ..
смотри все так?


sub bow()
VAR Musor = '0x41550379'
VAR Sunduk = '0x4018F0BA' ; Сериал сундука
VAR Logi = '0x1BDD' ; Тип логов
VAR Instrum = '0x0F51' ; Тип ножика
VAR Bow = '0x0F4F' ; Тип лука
VAR Kolvo = 200 ; Брать логов
VAR k = 0
While TRUE
if not uo.count('0x0FA0') then
uo.findtype('0x0FA0','0x0000',Sunduk)
if uo.findcount() then
uo.moveitem('finditem','200','backpack')
wait(1000)
else
uo.print('NITKI ZAKONCHILIS')
return
endif
endif
if uo.count(Logi)< =12 then
UO.FindType(Logi,' -1',Sunduk) ; Ищем логи в сундуке
If UO.FindCount() == 0 then
UO.Print("Logs not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait( 2000 )
endif
While UO.Count( Logi )>12 or UO.Count( '0x0FA0' )>12
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logs' )
UO.DeleteJournal()
uo.waitmenu('What do you want to carve','Exceptional Bows','Exceptional Bows','Superior Crossbow')
uo.waittargettype(Logi)
UO.UseType( Instrum )
repeat
wait(500)
until UO.InJournal('You put the Superior Crossbow in your pack.') or UO.InJournal('You fail to create the item')
if UO.Count( Bow ) > 0 then
UO.FindType( Bow , -1, -1 )
UO.MoveItem( 'finditem', 0, Musor )
wait( 1000 )
UO.Print( 'Bow moved' )
end if
Wend
Wend
end sub

Re: помогите с бовкрафтом

Posted: 2010-02-11 15:26:37
by Mirage
пропиши свои типы.
2 или 3 сундука. в одном пустые мешки, в другом полные с луками. Еда (рыба) логи нитки.Тесть :)

Code: Select all

VAR Container   = '0x40C0E9A6'   ;айрон, рыба, инструменты, может быть равен Sunduk 1
VAR Sunduk1   = '0x407ADC1A'   ;пустые мешки
VAR Sunduk2   = '0x407ADE6A'   ;полные
VAR log      = '0x1BDD'   
VAR Dagger   = '0x0F51'      
VAR Bow      = '0x13B1'      #лук#
VAR spool      = '0x0FA0'      #нитки#
VAR Meshok   = '0x0E76';тип мешка
VAR MeshSer, d, LastTimer
var havka      = '0x097B'
var colbow   = 50 ; количество луков в 1 мешке

###################
sub Bowcraft()
WHILE NOT UO.Dead()
UO.FindType( Meshok, '-1', Sunduk1 )
MeshSer = UO.GetSerial( 'finditem' )
UO.MoveItem( MeshSer, 0, Sunduk2 )
checklag()
uo.useobject( MeshSer )
eat()
  REPEAT
   GET(log, Container, 10, 200)
   GET(spool, Container, 5, 100)
   Repeat
     UO.DeleteJournal()
      LastTimer=UO.Timer()
       UO.WaitMenu ('What do you','Exceptional Bows','Exceptional Bows','Superior Crossbow')
       UO.waittargettype ( log )
       UO.Usetype( Dagger )
      repeat
        wait( 100 )
      until UO.InJournal("You put|положили|fail|не удалось|You broke|сломали") or UO.Timer()>LastTimer+150
   Until UO.Count( Bow )>0
checklag()
   PUT(Bow, MeshSer)
   UO.FindType( Bow, -1, MeshSer)
  UO.Print('Сделано луков: ' + Str( UO.FindCount( Bow ) ) )
  UNTIL UO.FindCount()>=colbow
  UO.Print('Берем другую сумку' )
  wait( 300 )
 WEND
end sub
###################
Sub eat()
   GET(havka, Container, 1, 20)
  REPEAT
   UO.DeleteJournal()
    LastTimer=UO.Timer()
     UO.findtype(havka,-1,'backpack')
          If UO.FindCount() > 0 Then
             UO.Useobject('finditem')
      wait(200)
              Else
             UO.Print( 'кончилась рыба' )
            return 0
          end if
  Until UO.InJournal("stuffed!|think|found|Вы ничего не можете") OR UO.Timer()>LastTimer+200
   PUT(havka, Container)
end sub

Sub GET(item, cont, min, max)          ;    предмет, откуда, минимум, сколько брать
    If UO.Count( item ) < min Then
#       UO.Print("Кончилось сырье в рукзаке")
        UO.FindType( item, '-1', cont )
          if UO.FindCount() > 0 Then
#        UO.Print('Сырья в сундуке: ' + Str( UO.FindCount( item ) ) )
             uo.moveitem('finditem', max, 'backpack')
                 checklag()
          else
           UO.Print( 'Полностью кончилось сырье' )
           UO.CancelMenu()
                MyTerminate()
          endif
    Endif
end sub
Sub PUT(item, cont)
      while UO.Count( item ) > 0
        UO.FindType( item, -1, -1 )
         UO.MoveItem( 'finditem', 0, cont )
        checklag()
      wend
end sub

Sub DeleteJournal(msg)
 While UO.InJournal(msg)
     UO.SetJournalLine(UO.InJournal(msg) - 1,'')
 wend
endsub

Sub MyTerminate()
    UO.Set('quiet','1')
    UO.CancelMenu()
    UO.IgnoreReset()
    UO.Set('quiet','0')
    UO.Exec('terminate all')
end sub

Sub checklag()
  DeleteJournal("ackpack")
  UO.Click("backpack")
  repeat
    wait(100)
  until UO.InJournal("ackpack")
end sub

Re: помогите с бовкрафтом

Posted: 2010-02-11 16:00:23
by mafioziblood
он почему то пытаеться взять все логи... и тупит пытаясь их себе в пак перекинуть

Re: помогите с бовкрафтом

Posted: 2010-02-11 16:21:46
by mafioziblood
мне бы тот скрипт первый что я кидал... он просто по проще.. вот только нитки не берет..((