Простенький Bowcraft

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
sluntai
Posts: 66
Joined: 2008-05-13 17:04:26

Простенький Bowcraft

Post by sluntai »

Народ помогите пожалуйста,поделитесь скриптиком на Bowcraft,нужен простой без наворотов чтобы тупо брал из сундука 7 логов крафтил шафты и обратно в сундук готовые шафты бросал.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Простенький Bowcraft

Post by Mirage »

Прямо как заказывал боукрафт для шарда Forest Wars.
Как вариант вот.
Если будет чтото не так пиши, подредактируем.

PS поиск - шафты - выдал более чем достаточно примеров. ;)
sluntai
Posts: 66
Joined: 2008-05-13 17:04:26

Re: Простенький Bowcraft

Post by sluntai »

Вот этот скрипт логи из мешка берет даже шафты у меня в паке лежали он их в мешок скинул,но вот после того как логи взял встает пишет I can use столько то логов брать их постоянно по 7 штук берет а крафтить не крафтит.

Code: Select all

#####################################################################
; Bowcraft. v.1.03b (c) Edred
;
; ??? ????? ?? ??????? ????, ??????? ?? ??? ?????
; ? ?????????? ??? ????? ? ???? ?? ??????.
; ???? ???? ??????????? - ?????.
; ???? ?????? (??? ??? ?? ??? ???????????) ???????? -
; ?????? ?????? ??????????? ?? ???? ? ??????? ? ???????
; ? ????.
;
; 1.03b: ????????, ???? Kolvo = 1, ?? ????? ??? ? ?????? ??????? ???
;        ????.
;
sub bowcraft()
   VAR Sunduk = '0x400E4262'       ; ?????? ???????
   VAR Logi = '0x1BDD'          ; ??? ?????
   VAR Shafts = '0x1BD4'          ; ??? ??????
   VAR Kolvo = 7               ; ????? ????? ??? ?????? ??????
   VAR k = 0, j, dagger
   dagger = UO.ObjAtLayer( 'Rhand' )
   UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) )
   While TRUE
      UO.FindType( Logi, -1, Sunduk )   ; ???? ???? ? ???????
      If UO.FindCount() == 0 Then
         UO.Print("Logs not found, script terminated")
         return
      else
         j = UO.GetQuantity( 'finditem' )
         If j > Kolvo Then
            UO.Print( 'I can use ' + str( j ) + ' logs' )
         else
            UO.Print( "I can't use " + str( j ) + " logs" )
            return
         Endif
      Endif
      If Kolvo == 1 Then
         ; v. 1.03
         UO.Grab( '3', 'finditem' )
         wait(500)
         UO.FindType( Logi )
         UO.MoveItem( 'finditem', '2', Sunduk )
         wait(500)
      Else
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
      Endif
      ; ? ??? - ???????????? ????? ?? ???
      while UO.Count( Logi ) < Kolvo
         wait(100)
      wend
      ; ???????? ?? ??, ??? ? ????? ??-???????? ??????
      If CheckInstr() == 0 Then
         UO.Print("You don't have daggers!" )
         return
      Endif
      UO.DeleteJournal()
      UO.CancelMenu()
      UO.WaitMenu ('What do you want to carve','Shafts' )
      UO.WaitTargetType( Logi )
      UO.UseObject( dagger )
      k = 0
      while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 )
         k = k + 1
         wait(300)
      wend
      If UO.Count( Shafts ) > 0 then
         UO.FindType( Shafts, -1, -1 )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait(500)
         while UO.Count( Shafts ) > 0
            wait(100)
         wend
         UO.Print( 'Shafts moved' )
      Endif
   Wend
end sub

Sub CheckInstr()
   ; ????????, ???? ?? ? ?????? ???? ?????????? ???? ??
   ; ????, ??? ? ? ?????????? ?????????? instrtype
   ; ???? ??? - ?????? ? ??????? ????? ?????????? ?
   ; ??????? ? ?????? ????.
   VAR typ = UO.GetGlobal( 'instrtype' )
   VAR cur = UO.GetGraphic( UO.ObjAtLayer( 'Rhand' ) )
   If typ == cur Then
      return 1
   Endif
   UO.FindType( typ )
   If UO.FindCount() == 0 Then
      return 0
   Endif
   UO.Equip( 'RHand' , 'finditem' )
   wait(1000)
   return 1
endsub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Простенький Bowcraft

Post by Mirage »

Пробуй вот так. Предварительно перед запуском открой сундук с логами и кинжалами (штук 10 на всякий положи).

Code: Select all

   VAR LastTimer, itemm, timemove
   VAR Container   = '0x4042B1A1'   ; Сериал сундука
   VAR log      = '0x1BDD'   ; Тип логов
   VAR Shafts   = '0x1BD4'   ; Тип шафтов
   VAR Instrum   = '0x0F51'    ; Тип кинжалов dagger
   var item    = Shafts
   var msg    ='You put|положили|fail|не удалось|You broke|сломали'
   var menu   = "waitmenu 'What do you want to carve' 'shaft'"
   var printcolour = '1069'
sub bowcraft()
   UO.CancelMenu()
   WHILE NOT UO.Dead()
      GET(log, Container, 1, 7)
      UO.DeleteJournal()
      LastTimer=UO.Timer()
      Repeat
         UO.DeleteJournal()
         LastTimer=UO.Timer()
         UO.exec( menu )
         UO.Waittargettype ( log )
         UO.Usetype( Instrum )
         repeat
            wait( 100 )
         until UO.InJournal( msg ) or UO.Timer()>LastTimer+150
      Until UO.Count( item ) > 0
      checklag()
      PUT(item, Container)
      UO.FindType( item, -1, Container)
      uo.charprint(printcolour,'Сделано: '+Str(UO.GetQuantity('finditem'))) ; если будет ошибка - удалить строку!
   WEND
end sub
Sub GET(item, cont, min, max) ; предмет, откуда, минимум, сколько брать
   If UO.Count( item ) < min Then
      UO.FindType( item, '-1', cont )
      if UO.FindCount() > 0 Then
         uo.charprint(printcolour,'Сырья в сундуке: '+Str(UO.GetQuantity('finditem')) )  ; если будет ошибка - удалить строку!
         itemM=UO.GetSerial('finditem')
         timemove=UO.Timer()
         while UO.ContainerOf(itemM)==cont && timemove+20>UO.Timer()
            uo.moveitem('finditem', max, 'backpack')
            wait(300)
         wend
      else
         uo.charprint(printcolour, 'Полностью кончилось сырье' ) ; если будет ошибка - удалить строку!
         UO.CancelMenu()
         MyTerminate()
      endif
   Endif
end sub
Sub PUT(item, cont)
   while UO.Count( item ) > 0
      UO.FindType( item, -1, -1 )
      itemM=UO.GetSerial('finditem')
      timemove=UO.Timer()
      UO.MoveItem( 'finditem', 0, cont )
      while UO.ContainerOf(itemM)=='my' && timemove+20>UO.Timer()
         wait(300)
      wend
   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


Подредактировал. Теперь точно работает.
Post Reply