Bowcraft для соседнего раздела

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Bowcraft для соседнего раздела

Post by Edred »

Прокачка боукрафта


1 вариант. Крафтим шафты.

Code: Select all

#####################################################################
; 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

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



2 вариант. Крафтим стрелы из шафтов.

Code: Select all

#####################################################################
; Bowcraft2. v.1.01b (c) Edred
;
; Чар берет из сундука шафты и перья, крафтит из них стрелы и
; складывает эти стрелы в этот же сундук.
; Если шафты или перья закончились - выход.
;
sub bowcraft2()
   VAR Sunduk = '0x404CFAA3'       ; Сериал сундука
   VAR Shafts = '0x1BD4'          ; Тип шафтов
   VAR Feather = '0x1BD1'         ; Тип перьев
   VAR Arrows = '0x0F3F'         ; Тип стрел
   VAR Kolvo = 1               ; Брать шафтов для одного крафта
   VAR k = 0, j
   UO.CancelMenu()
   UO.AutoMenu ('Select arrow type', 'arrow' )
   While TRUE
      If UO.Count( Shafts ) == 0 Then
         UO.FindType( Shafts, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("Shafts not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( Shafts ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      If UO.Count( Feather ) == 0 Then      
         UO.FindType( Feather, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("Feather not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( Feather ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      UO.DeleteJournal()
      UO.UseType( Shafts )
      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( Arrows ) > 0 then
         UO.FindType( Arrows, -1, -1 )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait(500)
         while UO.Count( Arrows ) > 0
            wait(100)
         wend
         UO.Print( 'Arrows moved' )
      Endif
   Wend
end sub


Описание обоих скриптов скину в личку Йоко... Хотя комментариев в начале скрипта достаточно вполне :)
Xammep
Posts: 7
Joined: 2006-06-20 17:36:48
Contact:

Post by Xammep »

Первый скрипт у меня не пашет.
Вписал свой айди сундука, тайпы логов и шафтов тут верные.
Дагер в руку. Запускаю скрипт - тишина. Просто стоит ничего не делает.
Джесси
Posts: 25
Joined: 2006-06-27 16:46:00

Post by Джесси »

Xammep wrote:Первый скрипт у меня не пашет.
Вписал свой айди сундука, тайпы логов и шафтов тут верные.
Дагер в руку. Запускаю скрипт - тишина. Просто стоит ничего не делает.

у нас на серваке есть команда .makelast
Xammep
Posts: 7
Joined: 2006-06-20 17:36:48
Contact:

Post by Xammep »

И что?
Ставить на пилот? И перетаскивать каждый раз по 100 бревен?
Скриптик нужен. Или ес ьдругие идеи по этому - в аську предложи :)
Джесси
Posts: 25
Joined: 2006-06-27 16:46:00

Post by Джесси »

Xammep wrote:И что?
Ставить на пилот? И перетаскивать каждый раз по 100 бревен?
Скриптик нужен. Или ес ьдругие идеи по этому - в аську предложи :)

в аську не могу те постучать .... идея есть .... скрипт на подбирание брёвен с пола дальше .makelast и складывание шавтов в сундук ... похожие скрипты без makelast'a есть поищи
Xammep
Posts: 7
Joined: 2006-06-20 17:36:48
Contact:

Post by Xammep »

А почему в аську не можешь?
Да пока ничего подходящег оне нашел :(
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Xammep wrote:Первый скрипт у меня не пашет.
Вписал свой айди сундука, тайпы логов и шафтов тут верные.
Дагер в руку. Запускаю скрипт - тишина. Просто стоит ничего не делает.


Телепаты в отпуске. Какой шард, какой клиент, тексты меню проверил?
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Джесси
Posts: 25
Joined: 2006-06-27 16:46:00

Post by Джесси »

Edred wrote:
Xammep wrote:Первый скрипт у меня не пашет.
Вписал свой айди сундука, тайпы логов и шафтов тут верные.
Дагер в руку. Запускаю скрипт - тишина. Просто стоит ничего не делает.


Телепаты в отпуске. Какой шард, какой клиент, тексты меню проверил?

Спасибо , Маст Дай помог ...шард Форест Варз клиент 2.0.3
Alegarh
Posts: 61
Joined: 2005-02-22 10:55:22
Location: Русский из Латвии.

Post by Alegarh »

А у меня беда. Раньше скрипт на стрелы у меня работал, а сейчас перестал :( шард ДРВ
Разобрался :)


Code: Select all

UO.AutoMenu ('Select arrow type', 'arrow (1 shaft, 1 feather)' )
Shadowdancer
Posts: 96
Joined: 2005-08-25 23:35:29

Post by Shadowdancer »

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

Code: Select all

##################################################################### 
; Bowcraft2. v.1.01b (c) Edred
;
; ×àð áåðåò èç ñóíäóêà øàôòû è ïåðüÿ, êðàôòèò èç íèõ ñòðåëû è
; ñêëàäûâàåò ýòè ñòðåëû â ýòîò æå ñóíäóê.
; Åñëè øàôòû èëè ïåðüÿ çàêîí÷èëèñü - âûõîä.
;
sub bowcraft2()
   VAR Sunduk = '0x4002A2AC'       ; Ñåðèàë ñóíäóêà
   VAR Shafts = '0x1BD4'          ; Òèï øàôòîâ
   VAR iron ingots = '0x1BEF'         ; Òèï ïåðüåâ
   VAR Arrows = '0x1BFB'         ; Òèï ñòðåë
   VAR Kolvo = 2               ; Áðàòü øàôòîâ äëÿ îäíîãî êðàôòà
   VAR k = 0, j
   UO.CancelMenu()
   UO.AutoMenu ('Select arrow type', 'crossbow bolt (1 shaft, 1 iron ingot)' )
   While TRUE
      If UO.Count( Shafts ) == 0 Then
         UO.FindType( Shafts, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("Shafts not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( Shafts ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      If UO.Count( iron ingots ) == 0 Then       
         UO.FindType( iron ingot, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("iron ingots not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( iron ingots ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      UO.DeleteJournal()
      UO.UseType( Shafts )
      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( crossbow bolt ) > 0 then
         UO.FindType( crossbow bolt, -1, -1 )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait(500)
         while UO.Count( crossbow bolt ) > 0
            wait(100)
         wend
         UO.Print( 'crossbow bolt moved' )
      Endif
   Wend
end sub

sub checklag()
deljournal("ackpack")
uo.click("backpack")
repeat
wait(50)
until uo.injournal("ackpack")
endsub
Driskill
Posts: 39
Joined: 2006-09-14 10:38:08
Contact:

Post by Driskill »

работает но нестабильно... шард тот же что и у тебя;)

Code: Select all

sub bowcraft2() 
   VAR Sunduk = '0x40D34F4D'       ; Na?eae noiaoea
   VAR Shafts = '0x1BD4'          ; Oei oaooia
   VAR ingot = '0x1BEF'         ; Oei ia?uaa
   VAR bolt = '0x1BFB'         ; Oei no?ae
   VAR Kolvo = 1               ; A?aou oaooia aey iaiiai e?aooa
   VAR k = 0, j
   UO.CancelMenu()
   UO.AutoMenu ('Select arrow type', 'crossbow bolt (1 shaft, 1 iron ingot)' )
   While TRUE
      If UO.Count( Shafts ) == 0 Then
         UO.FindType( Shafts, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("Shafts not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( Shafts ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      If UO.Count( ingot ) == 0 Then       
         UO.FindType( ingot, -1, Sunduk )
         If UO.FindCount() == 0 Then
            UO.Print("iron ingots not found, script terminated")
            return
         Endif
         UO.Grab( Str( Kolvo ), 'finditem' )
         wait(500)
         while UO.Count( ingot ) < Kolvo
            wait(100)
         wend
         CheckLag()
      Endif
      UO.DeleteJournal()
      UO.UseType( Shafts )
      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( bolt ) > 0 then
         UO.FindType( bolt, -1, -1 )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait(500)
         while UO.Count( bolt ) > 0
            wait(100)
         wend
         UO.Print( 'crossbow bolt moved' )
      Endif
   Wend
end sub

sub checklag()
uo.click("backpack")
repeat
wait(50)
until uo.injournal("backpack")
endsub
все что нас не убивает - делает нас крепче!
Syskilla
Posts: 7
Joined: 2008-10-29 15:30:24

Post by Syskilla »

вскрыв мозга ппц!
ипробывал жесть сколько вариантов с () [] [()] ([])
прочитал внемательно в хелпе на http://yoko.netroof.net/help/ в разделе крафт всё про waitmenu и automenu и ваще так и не зделал чтобы крафтил шафты из логов из сумки в моем бакпаке с логами...
берет логи из сумки(с айди логоф и сумки всё окай) по 7штук кладет в бакпак и какраз должен начаться крафт но выводит воткакую фигню...

кусок скрина из журнала

Image

что делать ппц... а с УО пилотом работать себя не уважать что корректировать подскажите ИМБЫ ))))

кстати скрипт юзаю самый верхний на крафт шафтов из логов

играю на Forgotten World(FW)...
клиент 1.26.4b

куски скрина с менюшками крафта если нид prompt'ы и choice'ы

первая менюшка:
Image

вторая менюшка:
Image


:arrow: need help :!: :idea:
Syskilla
Posts: 7
Joined: 2008-10-29 15:30:24

Post by Syskilla »

изначально в скрипте прописано shaft я и так пробывал и менял на Shafts ибо у меня на серваке шафты только по 7 минимум крафтятся...
и крафтятся из всех логов на которые юзаеш даггер(блако не на все которые вообщеесть в бакпаке)

а когда менял промты и чойсы ограничивал из скобками разными и добавлял второй чойс ничего кароче не получилось...
поидее если АвтоМеню то несколько пар промт+чойс не прокатят же...
а ВэйтМеню при любых попытках добавления чегото нового пишет
Line 58: parse error (понятное дело что строчка которую я пытаюсь изменить и есть 58ая)
Syskilla
Posts: 7
Joined: 2008-10-29 15:30:24

Post by Syskilla »

просто интересно после стольких лет фокум ктонить просматривает или все "старики" забили с концами :?:
Syskilla
Posts: 7
Joined: 2008-10-29 15:30:24

Post by Syskilla »

это какбы сам вариант крипта по правилам вроде всё правильно... мб ошибась
моему изменению подверглась лиш строка 58 которая какраз и выдает parse error

Code: Select all

      UO.WaitMenu ('What do you want to carve', 'Bowyer Items', ['Bowyer Items', 'shaft' ]) 



Code: Select all

##################################################################### 
; Bowcraft. v.1.03b (c) Edred
;
; ×àð áåðåò èç ñóíäóêà ëîãè, êðàôòèò èç íèõ øàôòû
; è ñêëàäûâàåò ýòè øàôòû â ýòîò æå ñóíäóê.
; Åñëè ëîãè çàêîí÷èëèñü - âûõîä.
; Åñëè äàããåð (èëè ÷òî âû òàì èñïîëüçóåòå) ñëîìàëñÿ -
; ñêðèïò íàéäåò àíàëîãè÷íûé ïî òèïó â áýêïàêå è âîçüìåò
; â ðóêè.
;
; 1.03b: Ïðîâåðêà, åñëè Kolvo = 1, òî áåðåì òðè è êëàäåì îáðàòíî äâà
;        ëîãà.
;
sub bowcraft()
   VAR Sunduk = '0x4001BA3D'       ; Ñåðèàë ñóíäóêà
   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', 'Bowyer Items', ['Bowyer Items', '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
Post Reply