Camping / Кемпинг (Лагереводство?)

Only tested and approved scripts

Moderators: Murderator+, Murderator

Post Reply
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Camping / Кемпинг (Лагереводство?)

Post by Yoko »

Discussion:______________
http://yoko.netroof.net/forum/viewtopic.php?t=1713
Author or poster:_________
Edred, tercia@spb.lanck.net
Tested on:_______________
Цитадель http://ultima.e-burg.ru
Must work:_______________
Sphere emu
Customization required:____
Yes/place (serial Sunduk, runebook, rune to town, FinalX coordinate; also check up types)
Description:______________
Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста для их разжигания (с повторами в случае физлов). Отходим назад (направление на правый нижний угол - клавиша "3" на нумпаде). Повторям последнюю операцию пока чар не придет в точку FinalX. Реколлимся на базу, добираем из ящика хворост и реги. И по кругу.
Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите координату X этой точки в FinalX (для надежности и защиты от лагов будет лучше если в этой точке чар упрется в стенку). На базе рядом с реколлкой поставьте сундук и в него положите много хвороста (можно одной "неподьъемной" кучкой и побольше регов для реколла. Занесите руну в этот город в ту же рунбуку, где и руна на базу.
Yoko comment:___________
none
________________________

Code: Select all

#===================================================================#
# CAMPING                                                           #
#===================================================================#
#   v.1.04b (с) Edred                                               #
#===================================================================#
; Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно
; жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их
; вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста
; для их разжигания (с повторами в случае физлов). Отходим назад
; (направление на правый нижний угол - клавиша "3" на нумпаде).
; Повторям последнюю операцию пока чар не придет в точку FinalX.
; Реколлимся на базу, добираем из ящика хворост и реги. И по кругу.
;
; Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов
; на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите
; координату X этой точки в FinalX (для надежности и защиты от лагов
; будет лучше если в этой точке чар упрется в стенку). На базе рядом
; с реколлкой поставьте сундук и в него положите много хвороста (можно
; одной "неподьъемной" кучкой и побольше регов для реколла.
; Занесите руну в этот город в ту же рунбуку, где и руна на базу.
;
sub camping()
   DIM Regs[3]
   Regs[0] = '0x0F7A'         ; Black Pearl
   Regs[1] = '0x0F7B'         ; Bood Moss
   Regs[2] = '0x0F86'         ; Mandrake Root
   VAR Hvorost = '0x0DE1'
   VAR flag, myx, myy, myz, fin, i
   VAR FinalX = 1350
   VAR Sunduk = '0x40591B82'
   VAR RuneToBase = '20'
   VAR RuneToFire = '30'
   ;
   ; Стартуем стоя в начале пути.
;      UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
   UO.Exec( 'set finddistance 3' )
   While UO.SkillVal( 'Camping' ) < 1000
      fin = 0
      UO.UseSkill( 'Meditation' )
      UO.FindType ( Hvorost )
      While ( UO.FindCount() > 0 ) AND ( fin == 0 )
         myx = UO.GetX()
         myy = UO.GetY()
         myz = UO.GetZ()
         UO.MoveItem('finditem', '1', 'ground', str(myx-1), str(myy), str(myz))
         wait(1000)
         CheckLag()
         UO.FindType ( Hvorost )
         UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy+1), str(myz))
         wait(1000)
         CheckLag()
         UO.FindType ( Hvorost )
         UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy-1), str(myz))
         wait(1000)
         CheckLag()
         UO.Findtype( Hvorost, -1, 1 )
         While UO.FindCount() > 0 AND NOT UO.InJournal( "You can't ignite several" )
            repeat
               flag = 1
               DeleteJournal( "You fail to ignite" )
               DeleteJournal( "You can't ignite several" )
               DeleteJournal( "You must wait" )
               UO.UseFromGround( Hvorost )
               wait(1000)
               CheckLag()
               If UO.InJournal( "You must wait" ) OR UO.InJournal( "You fail to ignite" ) Then
                  flag = 0
                  wait(1000)
               Endif
               If UO.InJournal( "You can't ignite several" ) Then
                  UO.FindType( Hvorost, -1, 1 )
                  While UO.FindCount() > 0
                     If UO.GetQuantity( 'finditem' ) > 1 Then
                        UO.Grab( str( UO.GetQuantity( 'finditem' ) - 1 ), 'finditem' )
                        wait(1000)
                        CheckLag()
                     Endif
                     UO.Ignore( 'finditem' )
                     UO.FindType( Hvorost, -1, 1 )
                  Wend
                  UO.IgnoreReset()
               Endif
            until flag
            UO.Findtype( Hvorost, -1, 1 )
         Wend
         While ( UO.GetX() < myx + 1 ) AND ( fin == 0 )
            UO.Press( 34 )
            wait(300)
            CheckLag()
            If UO.GetX() == FinalX Then
               fin = 1
            Endif
         Wend
         UO.FindType ( Hvorost )
      Wend
      ; достигли конца маршрута или кончился хворост
      Recalling( 'CommonRunbook', RuneToBase )
      UO.UseObject( Sunduk )
      wait(1000)
      CheckLag()
      for i = 0 To 2
         If UO.Count( Regs[i] ) < 6 Then
            ; этого рега меньше 6
            UO.FindType( Regs[i], '-1', Sunduk )
            UO.Grab( str( 6 - UO.Count( Regs[i] ) ), 'finditem' )
            Wait( 1000 )
            CheckLag()
         Endif
      next
      If UO.Count( Hvorost ) < 200 Then
         ; хвороста меньше 200
         UO.FindType( Hvorost, '-1', Sunduk )
         UO.Grab( str( 200 - UO.Count( Hvorost ) ), 'finditem' )
         Wait( 1000 )
         CheckLag()
      Endif
;      EatChar( Sunduk, 2, 1, 60 )
      Recalling( 'CommonRunbook', RuneToFire )
   Wend
endsub

#####################################################################
Sub CheckLag()
   DeleteJournal( 'backpack' )
   UO.Click( 'backpack' )
   repeat
      wait(100)
   until UO.InJournal( 'backpack' )
   return
end sub

#####################################################################
Sub DeleteJournal( string1 )
   VAR nom = UO.InJournal( string1 )
   If nom > 0 Then
      UO.SetJournalLine( Nom - 1, 'string replaced' )
      DeleteJournal( string1 )
   Endif
endsub

#####################################################################
Sub Recalling( Runbk, NRune )
   ; Runbk - сериал или ссылка на объект рунбуки
   ; NRune - десятичный номер (текстом) руны для реколла
   VAR myx = UO.GetX()
   VAR myy = UO.GetY()
   VAR OldMana = UO.Mana
   VAR i = 0
   DeleteJournal( 'fizzles' )
   UO.Exec("recall " + Runbk + " " + NRune)
   repeat
      CheckLag()
      wait(1000)
      i = i + 1
   until ( i > 6 ) OR ( UO.Mana < OldMana - 8 ) OR UO.InJournal( 'fizzles' )
   wait(500)
   If myx == UO.GetX() AND myy == UO.GetY() Then
      UO.WarMode( 'flip' )
      wait(100)
      UO.WarMode( 'flip' )
      Recalling( Runbk, NRune )
   Endif
endsub
Post Reply