Yoko

All sides of Injection
It is currently 2025-11-23 04:23:19

All times are UTC+02:00




Post new topic  Reply to topic  [ 11 posts ] 
Author Message
 Post subject: Bowcraft
PostPosted: 2004-06-29 17:22:16 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Вот свеженький скриптец. Для соседнего топика пока не очень годится, так как процедура смены даггера (или другого инструмента) при поломке не оттестирована (на нашем шарде инструмент ломается крайне редко). Кто качает - потестите плиз. Постарался сделать скрипт максимально шардонезависимым :)

ЗЫ: Измените в переменной Kolvo количество логов на нужное вам для разового крафта шафтов. У нас, к сожалению, нужно 10 логов (и никакими багами не воспользоваться - скилл переписан)

Code:
#####################################################################
; Bowcraft. v.1.02b (c) Edred
;
; Чар берет из сундука логи, крафтит из них шафты
; и складывает эти шафты в этот же сундук.
; Если логи закончились - выход.
; Если даггер (или что вы там используете) сломался -
; скрипт найдет аналогичный по типу в бэкпаке и возьмет
; в руки.
;
sub bowcraft()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Logi = '0x1BDD'          ; Тип логов
   VAR Shafts = '0x1BD4'          ; Тип шафтов
   VAR Kolvo = 10               ; Брать логов для одного крафта
   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
      UO.Grab( Str( Kolvo ), 'finditem' )
      ; Чтобы не сблочило УНСП
      wait(500)
      ; А это - динамическая пауза на мув
      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', 'shaft' )
      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


Top
   
 Post subject:
PostPosted: 2004-06-29 21:12:27 
Offline
User avatar

Joined: 2004-06-18 09:03:31
Posts: 83
вроде как Bowcraft качается на луках
а притом в сундук токо мона положить 255 итемс а куда далше если очень много логов и на ноч ставить ?


Top
   
 Post subject:
PostPosted: 2004-06-29 22:19:40 
Offline
Junior Expert
User avatar

Joined: 2004-04-12 20:26:41
Posts: 150
ХАХАХА, логи и шафты кладутся в одну кучу и считаются одним итемом, хоть ты 50к логов клади


Top
   
 Post subject:
PostPosted: 2004-06-30 08:13:59 
Offline
User avatar

Joined: 2004-06-18 09:03:31
Posts: 83
Ex-Brodyaga wrote:
ХАХАХА, логи и шафты кладутся в одну кучу и считаются одним итемом, хоть ты 50к логов клади


ну логов то скоко хочеш вот токо не растёт на шав. на луках круче


Top
   
 Post subject:
PostPosted: 2004-06-30 09:19:29 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Mguai wrote:
вроде как Bowcraft качается на луках


И это зависит от шарда... :)

Quote:
а притом в сундук токо мона положить 255 итемс а куда далше если очень много логов и на ноч ставить ?


и логи и шафты суммируются в одни кучки. Потому сколько угодно. Хотя, хз, может на других шардах и не суммируются.


Top
   
 Post subject:
PostPosted: 2004-08-13 03:30:05 
Offline

Joined: 2004-08-13 03:21:48
Posts: 4
Хороший скрипт... А его можно переделать так, что об не в сундуке логи брал (и не в сундук шафты клал), а все делал прямо в бэкпаке?.. На нашем шарде ограничений веса бэкпака нету, поэтому тема с сундуком не нужна... и замена поломавшегося инструмента тоже не нужна.. Я бы сам переделал, да я в оэтом ничего не соображаю... ?


Top
   
 Post subject:
PostPosted: 2004-08-13 12:21:02 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Darth wrote:
Хороший скрипт... А его можно переделать так, что об не в сундуке логи брал (и не в сундук шафты клал), а все делал прямо в бэкпаке?.. На нашем шарде ограничений веса бэкпака нету, поэтому тема с сундуком не нужна... и замена поломавшегося инструмента тоже не нужна.. Я бы сам переделал, да я в оэтом ничего не соображаю... ?


Переделать можно что угодно. Вопрос только целесообразности. Я пишу скрипты только для себя. Попробуй договориться с кем-то чтобы он тебе за что-то переделал... :)


Top
   
 Post subject:
PostPosted: 2004-08-16 13:27:29 
Offline

Joined: 2004-06-15 00:49:22
Posts: 28
Edred
Пробывал твой скрипт на RUO шарде

Работает без перебоев, покрайне мере у меня.
С поломкой пердмета я не столкнулся (одним же ножиком уже до 77 докачал)

Вот только один минус, но думаю ето не твой скрипт

Если ложишь все логи в кучу к примеру 20к логов он неможет 1 лог взять с кучи

приходиться кучками по 1200 разлаживать ))

но и там тупик, если в какой либо кучке будет 1 лог скрипт останавливаеться ((((


Top
   
 Post subject:
PostPosted: 2004-08-16 14:06:05 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
-Time- wrote:
Edred
Пробывал твой скрипт на RUO шарде

Работает без перебоев, покрайне мере у меня.
С поломкой пердмета я не столкнулся (одним же ножиком уже до 77 докачал)

Вот только один минус, но думаю ето не твой скрипт

Если ложишь все логи в кучу к примеру 20к логов он неможет 1 лог взять с кучи

приходиться кучками по 1200 разлаживать ))

но и там тупик, если в какой либо кучке будет 1 лог скрипт останавливаеться ((((


Это стандартный глюк сферы. Вполне может присутствовать и на других эмулях. Не позволяет брать 1 штучку чего-либо из кучки, которую не может приподнять. Лечится заменой команды взять 1 шт. на команды взять 3 шт и положить 2 обратно. Мой скрипт на боукрафт в таком изменении для меня не нуждался, так как у меня надо было брать по 10 шт сразу.

Вот усовершенствованная версия с проверкой: если кол-во логов для крафта = 1, то тащить 3, а потом два класть обратно. Тестируйте (я не тестировал):

Code:
#####################################################################
; Bowcraft. v.1.03b (c) Edred
;
; Чар берет из сундука логи, крафтит из них шафты
; и складывает эти шафты в этот же сундук.
; Если логи закончились - выход.
; Если даггер (или что вы там используете) сломался -
; скрипт найдет аналогичный по типу в бэкпаке и возьмет
; в руки.
;
; 1.03b: Проверка, если Kolvo = 1, то берем три и кладем обратно два
;        лога.
;
sub bowcraft()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Logi = '0x1BDD'          ; Тип логов
   VAR Shafts = '0x1BD4'          ; Тип шафтов
   VAR Kolvo = 10               ; Брать логов для одного крафта
   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', 'shaft' )
      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


Top
   
 Post subject: Re: Bowcraft
PostPosted: 2004-10-21 02:49:15 
Offline
User avatar

Joined: 2004-10-18 22:25:21
Posts: 12
Edred wrote:
Вот свеженький скриптец. Для соседнего топика пока не очень годится, так как процедура смены даггера (или другого инструмента) при поломке не оттестирована (на нашем шарде инструмент ломается крайне редко). Кто качает - потестите плиз. Постарался сделать скрипт максимально шардонезависимым :)

ЗЫ: Измените в переменной Kolvo количество логов на нужное вам для разового крафта шафтов. У нас, к сожалению, нужно 10 логов (и никакими багами не воспользоваться - скилл переписан)

Code:
#####################################################################
; Bowcraft. v.1.02b (c) Edred
;
; Чар берет из сундука логи, крафтит из них шафты
; и складывает эти шафты в этот же сундук.
; Если логи закончились - выход.
; Если даггер (или что вы там используете) сломался -
; скрипт найдет аналогичный по типу в бэкпаке и возьмет
; в руки.
;
sub bowcraft()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Logi = '0x1BDD'          ; Тип логов
   VAR Shafts = '0x1BD4'          ; Тип шафтов
   VAR Kolvo = 10               ; Брать логов для одного крафта
   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
      UO.Grab( Str( Kolvo ), 'finditem' )
      ; Чтобы не сблочило УНСП
      wait(500)
      ; А это - динамическая пауза на мув
      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', 'shaft' )
      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





UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) -пишет что тип ошибка в етой строчке,подскажите что зделать!


Top
   
 Post subject: Re: Bowcraft
PostPosted: 2004-10-21 12:07:03 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Bio wrote:
UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) -пишет что тип ошибка в етой строчке,подскажите что зделать!


Запускать скрипт надо имея в руке даггер. Или другой инструмент, который у тебя используется для боукрафта.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 11 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited