Yoko
http://forum.yoko.com.ua/

Lockpicking
http://forum.yoko.com.ua/viewtopic.php?f=20&t=3187
Page 1 of 1

Author:  Edred [ 2005-02-23 00:31:37 ]
Post subject:  Lockpicking

Опять же, настроено под Цитадель. Два сундука, в одном отмычки, другой бум ломать. В пак ключ от второго сундука. В первый сундук мед. В элементах массивов установить уровни скилла для разных типов отмычек. Работаем.

Code:
#####################################################################
; Lockpicking v.1.01b (c) Edred
;
sub Lockpicking()
   VAR SundukFrom = '0x404CF9CF'
   VAR SundukTarg = '0x401EA0CA'
   VAR KeyTarg = '0x401EA0C9'
   VAR LockType = '0x14FB'
      UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
   DIM LockColor[3], SkUp[3]
   LockColor[0] = '0x0000'      ; айрон
   LockColor[1] = '0x060A'      ; дулл купер
   LockColor[2] = '0x0488'      ; бронза
   LockColor[3] = '0x08A5'      ; золото
   SkUp[0] = 299            ; уровень скилла выше которого качать железными отмычками
   SkUp[1] = 499            ; уровень скилла выше которого качать медными отмычками   
   SkUp[2] = 499            ; уровень скилла выше которого качать бронзовыми отмычками
   SkUp[3] = 599            ; уровень скилла выше которого качать золотыми отмычками   
   VAR fizzle = "You can't open this."
   VAR success = "You open this."
   VAR locked = "You close this chest."
   VAR TimeLimit = 3000
   VAR trycount = 0, succount = 0
   VAR i, j, needcolor, k, end
   VAR SpiritTime = UO.Timer()
   UO.UseObject( SundukFrom )
   wait(1000)
   CheckLag()
   while UO.SkillVal( 'Lockpicking' ) < 1000
      If UO.Count( LockType ) == 0 Then
         EatChar( SundukFrom, 6, 2, 120 )
         j = 0
         For i = 0 To 3
            If SkUp[i] < UO.SkillVal( 'Lockpicking' ) Then
               j = i
            Endif
         Next
         needcolor = LockColor[j]
         UO.FindType( LockType, needcolor, SundukFrom )
         If UO.FindCount() == 0 Then
            UO.Print( 'Lockpicks not found. Script terminated' )
            return
         Endif
         If UO.GetQuantity( 'finditem' ) > 100 Then
            UO.Grab( '100', 'finditem' )
         Else
            UO.Grab( 'finditem' )
         Endif
         wait(1000)
         CheckLag()
      Endif
      While UO.Count( LockType ) > 0
         If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
            ; Прошло 5 минут с момента последней прокачки Spirit Speak
            SpSpeak()
            SpiritTime = UO.Timer()
         Endif
         trycount = trycount + 1
         UO.Print( 'You have ' + str( UO.Count( LockType ) ) + ' lockpicks.' )
         UO.Print( 'You have ' + str( succount ) + ' success attempt' )
         UO.Print( 'You get ' + str( trycount ) + ' attempt'  )
         DeleteJournal( fizzle )
         DeleteJournal( success )
         UO.WaitTargetObject( SundukTarg )
         UO.UseType( LockType )
         k = 0
         repeat
            wait(100)
            k = k + 1
         until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR k > TimeLimit
         If UO.InJournal( success ) Then
            DeleteJournal( locked )
            succount = succount + 1
            UO.WaitTargetObject( SundukTarg )
            UO.UseObject( KeyTarg )
            repeat
               wait(100)
            until UO.InJournal( locked )
         Endif
      Wend
   Wend
endsub

#####################################################################
; ================================================================
; Процедура подкормки чара. Параметры: сериал контейнера с медом, номер
; сообщения до которого кормить, сколько съесть меда после сообщения,
; как часто кормить чара.
; Прохождение последнего периода контролируется через глобальную переменную
; TimeProcess.
;
; ver. 1.07 (c) Edred
;
Sub EatChar( Sunduk, Nom, Add, TimeWait )
   ; сообщения при кормежке
   UO.Print( 'TEST: eat to ' + str( Nom ) + ' message and ' + str( Add ) + ' more each ' + str( TimeWait ) + ' minutes' )
   DIM Eat[8]
   Eat[0] = ''
   Eat[1] = 'You eat the food, but are still extremely hungry'
   Eat[2] = 'After eating the food, you fell much less hungry'
   Eat[3] = 'You eat the food, and begin to feel more satiated'
   Eat[4] = 'You are nearly stuffed, but manage to eat the food'
   Eat[5] = 'You fell quite full after consuming the food'
   Eat[6] = 'You are stuffed!'
   Eat[7] = 'You are simply too full to eat any more!'
   VAR Med = '0x09EC'         ; тип меда для подкормки
   VAR i, EatC, j, k, flag
   ; проверим, пора ли кормиться
   i = Val( UO.GetGlobal( 'TimeProcess' ) )
   i = ( UO.Timer() - i ) / 600
   If i < TimeWait Then
      ; рано кормиться
      UO.Print( 'Eat early! ' + str( i ) + ' from ' + str( TimeWait ) )
      return
   Endif
   If Nom > 0 AND Nom < 8 Then
      EatC = Eat[Nom]
   Else
      EatC = Eat[7]
   Endif
   UO.FindType( Med, '-1', Sunduk )
   If UO.FindCount() == 0 Then
      ; мед кончился
      UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
      return
   Endif
   UO.Grab( '60', 'finditem' )
   Wait( 1000 )
   CheckLag()
   For k = 1 To 7
      DeleteJournal( Eat[k] )
   Next
   flag = 0
   If Nom < 7 Then
      UO.UseType( Med )
      Wait( 1000 )
      CheckLag()
      For k = Nom + 1 To 7
         If UO.InJournal( Eat[k] ) Then
            flag = 1
         Endif
      Next
   Endif
   If flag == 0 Then
      repeat
         DeleteJournal( EatC )
         UO.UseType( Med )
         Wait( 1000 )
         CheckLag()
      until NOT UO.InJournal( EatC )
      If Add > 0 Then
         For j = 1 To Add
            UO.UseType( Med )
            Wait( 1000 )
            CheckLag()
         Next
      Endif
   Endif
   ; хватит кормиться
   ; выгрузим остатки меда обратно
   UO.Findtype( Med, '-1', 'backpack' )
   UO.MoveItem( 'finditem', 0, Sunduk )
   Wait( 1000 )
   CheckLag()
   ; Сбросим счетчик
   UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
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

#####################################################################
; Spirit Speak v.1.00b (c) Edred
;
; Разовая прокачка спирит спика. Предназначена для вызова из других скриптов.
;
sub SpSpeak()
   VAR mod = UO.WarMode(), num
   VAR fizzle = 'You fail your attempt'
   VAR success = 'You establish a connection'
   UO.WarMode( 0 )
   DeleteJournal( success )
   repeat
      DeleteJournal( fizzle )
      UO.UseSkill( 'Spirit Speak' )
      num = 1
      repeat
         wait(100)
         num = num + 1
      until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR num > 600
   until UO.InJournal( success )
   UO.WarMode( mod )
endsub

Author:  rambos [ 2005-07-11 10:31:05 ]
Post subject: 

ПРивет , а для ДРВ шарда у вас нету скрипта на ЛЮК ПИКИНГ?

Author:  kexwer [ 2005-07-11 10:35:07 ]
Post subject: 

rambos wrote:
ПРивет , а для ДРВ шарда у вас нету скрипта на ЛЮК ПИКИНГ?



У нас он не работает!!!!

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/